Forum Discussion
Altera_Forum
Honored Contributor
14 years agoconstaint timing and ouput
Hi all, I want to test contraints timing to understand TimeQuest and to verify the consequenses of using the tool . For that I have created a simple two ouputs PWM. The ouputs are similar and ...
Altera_Forum
Honored Contributor
14 years agoI think the words "maximum" and "minimum" in the definition of output delay are quite confusing, or even misleading.
I use the following figure on slide 94 of Altera TimeQuest Timing Analyzer Online Training video to derive the output delay formulars: http://www.alteraforum.com/forum/attachment.php?attachmentid=4932&stc=1&d=1319537862 (1) max output delay: http://www.alteraforum.com/forum/attachment.php?attachmentid=4933&stc=1&d=1319537932 based on the above waveform, we have: (B-A) - (C-A) = (D-C) - (D-B ) i.e., (B-A) - (C-A) + (D-B ) = (D-C) (B-A) : output delay (C-A): Board Data delay (Tdata_PCB ) (D-B ) : Board Clock Skew (Tclk2-Tclk1ext) For ASSP.DIN to be captured by ASSP.CLK, (D-C) must >= Tsu of ASSP Therefore, output delay - board data delay + board clock skew >= Tsu output delay >= board data delay - board clock skew + Tsu output delay max >= board delay (max) - board clock skew (min) + Tsu From the above derivation, we can see: (i) the so called "max" output delay is actually the minimum output delay we can set under the worst case (i.e., max board delay and min board clock skew) while still maintain the setup requrement. We can even set a larger value as the max output delay, just that it is a kind of over-constraint. Because by doing so, we move the data valid window further left, and Quartus will work harder to make Tco smaller. (ii) the max output delay defined by the above formular is actually referenced to fpga.clk (delay from fpga.clk to fpga.dout). So why should we still use the virtual clock (ASSP.CLK) when specifying the max output delay? (2) min output delay can be derived from the same waveform: http://www.alteraforum.com/forum/attachment.php?attachmentid=4934&stc=1&d=1319539681 we have: (A-B ) - (D-B ) = (C-D)-(C-A) i.e., (A-B ) - (D-B ) + (C-A)= (C-D) (A-B ) : -output_delay (NOTE : by definition, output_delay is always latch clock edge - data arrival point. So it should always be B-A in the above waveform, even if data arrives after the latch edge) (D-B ): Board Clock Skew (Tclk2-Tclk1ext) (C-A): Board Data delay (Tdata_PCB ) For correct operation, current data (ASSP.DIN) should not be captured by current latch edge (ASSP.CLK). Therefore (C-D) must >= Th. -output_delay - Board clock skew + board data delay >= Th output_delay <= board data delay - board clock skew - Th output delay min <= board data delay (min) - board clock skew(max) - Th Again, the same question: (i) the so called "min" output delay is actually the maximum output delay we can set under the worst case (i.e., min board delay and max board clock skew) while still maintain the hold requrement. We can even set a smaller value, just that it is a kind of over-constraint. (ii) the min output delay defined by the above formular is also referenced to FPGA.CLK. So do we still need use the virtual clock (ASSP.CLK) when using the above formular to specify the min output delay? These are my personal opinions. Welcome any further discussion.