Forum Discussion
Altera_Forum
Honored Contributor
13 years agoJust constraining your clocks does this.
create_clock -period 10.0 -name clk_A [targetA] create_clock -period 5.0 -name clk_B [targetB] (Target is just a place hold for the port or PLL output that creates the clock. The default of create clock is a 50/50 duty cycle, so all falling edge registers are clocked halfway in the period. So rise -> fall transfers in clkA -> clkA would have a 5ns setup relationship clkB(rise) -> clkB(fall) would have a 2.5ns relationship clkA(rise) clkB(fall) would have a 2.5ns relationship. (Launch at 0, latch at 2.5) clkB(rise) -> clkA(fall) would have a 5ns relationship (launch at 0, latch at 5) There would be similar relationships with fall -> rise. If your circuit is designed to transfer over different edges, then multicycles would adjust those. Note that by just creating two clocks, 16 different relationships are created. All combinations of r/f, i.e. rise -> rise, fall -> fall, rise-> fall, fall -> rise. That's 4. These relationships occur in both directions, clkA -> clkB and clkB -> clkA, so that's 8. Then there is a setup and hold for each one. That gets it to 16. In most cases, the clocks are the same period, 50/50 duty cycle, and so most of those relationships are the repeated, but under strange relationships they can all be different too.