Altera_Forum
Honored Contributor
8 years agoCan't close timing on one clock domain
Hi,
I've been struggling to close timing on one clock domain in my design, happens to be the one with all my control logic/ nios on it so is kind of important for getting into functional test. After reducing the system down to only the Altera IP, the problem remains, so I feel like something is fundamentally wrong with my .sdc, but I'm stumped as to what. Brief System Outline: Arria V GZ, design entirely in Qsys, main IP blocks are : JESD204B Receiver, NIOS II, DDR3 Controller. Two input clocks, 135MHz for JESD204B devclk, and 100MHz crystal for everything else. 100MHz clock drives PLL for DDR3 interface, one of the PLL outputs at 200MHz is used as the system clock (pll_afi_clk). I cannot get "pll_afi_clk" to meet setup for transfers on the same domain, and a huge number of paths are failing (see the histogram I've attached). All other clocks, both base and derived, are fine. There are a number of IP-generated sdc files, and my own .sdc file which does the basic stuff, runs "create_clock" and "derive_pll_clocks", "derive_clock_uncertainty" and then "set_clock_groups" for all the clocks generated from the PLLs. Using the TQ messages when the SDC's are read in, everything seems to have the desired outcome. Made sure to place my sdc file at the end of the list, so the IP files can get their constraints in without conflict. I've used the guidelines in http://www.alteraforum.com/alterawiki.com/uploads/3/3f/timequest_user_guide.pdf and scoured the thing for any ideas, but have not come up with anything yet. (super useful document btw.) I'm confused because according the TQ reports, all the clocks are defined as I would expect. The clocks domains have false paths set between them as I would expect, and the IO constraints aren't relevant here as this clock is internal only. And no matter how much I push the P&R engine, it makes little difference to the result. Just a large number of paths that fail setup, and the Timing Recommendation Report always says "Too much combinatorial" in the worst failing paths. Sometime the IC delay is also very large. And the worst failing paths change depending on the P&R seed, from resets to Avalon Interconnect to other glue logic stuff. If I probe the source or destination nodes in TQ, no placement constraints are reported. Device utilization with this minimum working example is pretty small, 4% routing and 15% resource. So it shouldn't be struggling. I'd really appreciate some input on better understanding the information TQ is giving me. It would seem the fitter is conflicted over how to lay out logic on this clock domain, or that my constraints are wrong and the tool is analyzing the paths incorrectly, but I don't know how to dissect the problem further. Thanks,