Forum Discussion
Altera_Forum
Honored Contributor
8 years agoFalse path question - internal counter bit vs FSM state bit
Dear Altera Forum members...
This is my first post here :) I have a sub-circuit that consists of a binary up-counter (LPM_counter) with asynchronous reset and count enable, and a comparator (LPM_compare). The sub-circuit compares an input 5-bit vector to the count value and sets an output flag if the count value is greater-or-equal to the input data value. This flag is used as a control bit to a finite state machine. When running the TimeQuest timing analyzer tool in Quartus, I get setup timing violations with worst-case timing paths that involve the q[1]-bit and states of the FSM. My question is whether or not I can set these as false paths https://alteraforum.com/forum/attachment.php?attachmentid=14298&stc=1 The figure shows how the TimeQuest labels the nodes that violate the setup timing. I was thinking that since the timing violations does not involve the flag used to control the state transitions, I can set the shown paths as false paths... Please comment. Regards Ronny12 Replies
- Altera_Forum
Honored Contributor
--- Quote Start --- Dear Altera Forum members... This is my first post here :) I have a sub-circuit that consists of a binary up-counter (LPM_counter) with asynchronous reset and count enable, and a comparator (LPM_compare). The sub-circuit compares an input 5-bit vector to the count value and sets an output flag if the count value is greater-or-equal to the input data value. This flag is used as a control bit to a finite state machine. When running the TimeQuest timing analyzer tool in Quartus, I get setup timing violations with worst-case timing paths that involve the q[1]-bit and states of the FSM. My question is whether or not I can set these as false paths https://alteraforum.com/forum/attachment.php?attachmentid=14298&stc=1 The figure shows how the TimeQuest labels the nodes that violate the setup timing. I was thinking that since the timing violations does not involve the flag used to control the state transitions, I can set the shown paths as false paths... Please comment. Regards Ronny --- Quote End --- Every path is relevant unless you the designer knows that it is not. Your clock is 50 MHz and in a modern fpga you shouldn't fail timing. likely you are clocking wrong. Or too long comb section - Altera_Forum
Honored Contributor
The chip is a MAX V 5M80ZM64I5 CPLD, not an FPGA.
- Altera_Forum
Honored Contributor
Max v devices are really just FPGAs. They work basically the same.
As for this problem, you cannot set false paths as all are relevant. - Altera_Forum
Honored Contributor
Thanks for responding
- Altera_Forum
Honored Contributor
Hi kaz.
In your comment "likely you are clocking wrong", will you please elaborate what that means ? The clock is generated externally. It is defined using the "create_clock"-command in the sdc file... In another example, using a max V CPLD with vhld code of a circuit that involves an LPM_counter and an LPM_compare - connected to a very basic FSM, I still cannot close timing for a 100 MHz clock (Fmax = ~97 MHz)... Do you think my code is faulty ? - Altera_Forum
Honored Contributor
Can you post code and your .sdc file?
- Altera_Forum
Honored Contributor
Yes sure. Should I append text-files ?
- Altera_Forum
Honored Contributor
why not post the code along with the .SDC file?
- Altera_Forum
Honored Contributor
The project uses the MAX V 5M80ZM64I5 device.
There are three auto-generated VHDL files: lpmcompare.vhd, lpmcounter.vhd and lpmzerotimeflag.vhd. The lpmcountandcompare.vhd, connects them together as a subcircuit. The toplevel entity is the timingtest_lpmcc_minifsm.vhd. The .sdc file is called timingTest_LPMcc_miniFSM (there is only one constraint, the "create_clock"...) Recall that Quartus by default uses 3-space wide tabs, such that the text-files may not look that nice in other text-editors... - Altera_Forum
Honored Contributor
--- Quote Start --- why not post the code along with the .SDC file? --- Quote End --- Would you rather that I copy-paste them into "reply"-fields, in the browser ? This will look messy...