Forum Discussion
SDC for ALTCLKCTRL
Hello,
I have an ALTCLKCTRL component implemented in my design targeting a Cyclone V FPGA. The ALTCLKCTRL has 4 of its inputs occupied: 1. Clock_1 driven by an FPGA pin. 2. Clock_2 driven by an FPGA pin. 3. Clock_3 coming from a pll_a. 4. Clock_4 coming from a pll_b. All of the above are from the same bank and connected correctly - the design passes fitting without issue and last but not least - it works. However, I do have some trouble with timing analysis: I use the "create_clock" SDC command for creating Clock_1 and Clock_2 and then the "derive_pll_clocks" macro to generate Clock_3 , Clock_4 and the output of ALTCLKCTRL. The result: Clock_1, Clock_2, Clock_3, Clock_4 get recognized as clocks by the tool but the output of ALTCLKCTRL doesn't. From all I read the "derive_pll_clocks" macro should apply to ANY clock sourcing element...So why doesn't it work for ALTCLKCTRL ?13 Replies
- Altera_Forum
Honored Contributor
It does have delay, but you don't need to define the delay since the tool knows about internal resource delays. Clock creation is for creating essentially reference points for timing analysis, not defining delays. You can define delays if you want, but it's not necessary for internal paths. Using set_clock_groups will tell TimeQuest that only one clock is active at a time, the way your design is supposed to work.
- Altera_Forum
Honored Contributor
Suppose only one of the clocks is active at a given time.
Why "set_clock_groups" is enough ? Shouldn't I also apply the "create_generated_clock" for the ALTCLKCTRL's output ? Surely the ALTCLKCTRL component has some delay from input to output. - Altera_Forum
Honored Contributor
No. derive_pll_clocks, as the name implies, only works for PLL clock outputs. Is only 1 of the 4 clocks active in the design at a time? If so, you also need a set_clock_groups timing exception because only one of the 4 clocks will be active on the output of the mux at a time. It would look something like:
set_clock_groups -exclusive -group clock_1 -group clock_2 -group clock_3 -group clock_4 If any of the clocks bypass ALTCLKCTRL and are used in the design when a clock from the mux is active, you may need to add additional generated clock commands targeted to the output of the mux and then add set_clock_groups exceptions between them. Steve