Forum Discussion
117 Replies
- Altera_Forum
Honored Contributor
Hello Dave,
I have a Total Negative Slack of 1646 [reduced from 17000 after adding pipeline stages in Qsys]. I have reached maximum pipeline and cannot go any further. The Latch clock and the Launch clocks are the same. How do I solve this problem without using "set_false_path" [This basically does tells TQA not to analyse that particular path and does not solve the problem right?] I can get rid of this error by adding "set_multicyle_path" and relaxing the timing, but is this the right way? And also I don't get a right estimate of the Fmax unless I use the right timing exceptions right? Addition to Above Post: I have found that the failing path is between within the Nios and there is a huge combinational logic between the input and output. Thanks, Aditya - Altera_Forum
Honored Contributor
Look at:
http://www.altera.com/literature/hb/nios2/edh_ed51007.pdf You're probably well beyond what can be done in Quartus/TimeQuest. You have a design and with all the options switched it only runs so fast due to lots of logic. You may need to optimize the design. (And note that designs only run fast, so you're requirement may be too high for your design...) - Altera_Forum
Honored Contributor
Thanks I will take a look at it. Does this manual hold good for Qsys also?
- Altera_Forum
Honored Contributor
Yes. (I'm not sure if it's 100% 1:1, but the principles are the same, and it shoudl be very close)
- Altera_Forum
Honored Contributor
I can get rid of this error by adding "set_multicyle_path" and relax the timing, but is this the right way?
- Altera_Forum
Honored Contributor
No. Never add multicycles to someone else's code(i.e. IP) unless you're certain it was designed to be a multicycle. Most likely it is real and is a real problem.
- Altera_Forum
Honored Contributor
So, "set_multicycle_path" is not a "timing relaxation tool" and should be only used if the design actually has multicycle setup right?.
And if a Path has two cloks of different frequencies [if this difference is INTEGER multiple then it becomes "multicycle" right?] then i can consider these clocks a asynchronous and i can either set this path is "false path" or " separate those two clocks using "set_clock_group -asynchronous" [each clock will be in different groups] right? Thanks, AA - Altera_Forum
Honored Contributor
I'm not sure what a "timing relaxation tool" is? If the period is 10ns and the setup is 10ns, then that's what it needs to meet. If you're design runs where it sends data every other clock cycle or something like that, then two multicycles can be added to make it a 20ns setup and 0ns hold.
For paths between clocks, false paths are valid if your design treats it asynchronously. For example, you might have two 10ns clocks with data going between them through an asynchronous FIFO. That would allow you to cut timing between them. If you pass data directly and need it to get there in a cycle, then you can't cut timing. Obviously if the clocks are truly asynchronous, there is no way to pass data synchronously regardless of what your design expects, so the false path needs to be there and the design needs to handle the asynchronous nature. But multicycles and false paths are telling TimeQuest "what you designed for". - Altera_Forum
Honored Contributor
Thanks that clears some of my doubts.
- Altera_Forum
Honored Contributor
what do you mean by "if your design treats it asynchronously" ?
"you might have two 10ns clocks with data going between them through an asynchronous FIFO. That would allow you to cut timing between them" [now if I set false path between the two clocks then about about other places where these two clocks are used ? (I am not able to visualize the problem) can you explain "Obviously if the clocks are truly asynchronous, there is no way to pass data synchronously"