알겠습니다. 이게 뭡니까?
이 페이지는 SDC timing constraints에서 set_input_delay 및 set_output_delay 의 의미를 설명하는 다른 게시물 의 예제 부분입니다 .
TimeQuest (Quartus의 timing analyzer)는 4개의 corners (최대 및 최소 전압과 결합된 최대 및 최소 온도)에서 timing analysis를 수행합니다. 각 path에 대해 TimeQuest는 최악의 slack을 가진 corner 의 결과를 선택합니다. 아래 예에서는 이 4개의 corners 중 최악의 경우를 보여줍니다. 따라서 FPGA logic elements의 delays 에 대해 나타나는 숫자는 timing report 마다 다릅니다.
내 다른 게시물은 아래와 같이 timing reports 의 생성에 대해 설명합니다.
다른 게시물에 따르면 아래 예제 뒤에 있는 timing constraints는 다음과 같습니다.
create_clock -name theclk -period 20 [get_ports test_clk] set_output_delay -clock theclk -max 8 [get_ports test_out] set_output_delay -clock theclk -min -3 [get_ports test_out] set_input_delay -clock theclk -max 4 [get_ports test_in] set_input_delay -clock theclk -min 2 [get_ports test_in]
set_input_delay -max (setup) 분석
Delay Model: Slow 1100mV 0C Model +------------------------------------------------------------------------------------------------------+ ; Summary of Paths ; +--------+-----------+-----------+--------------+-------------+--------------+------------+------------+ ; Slack ; From Node ; To Node ; Launch Clock ; Latch Clock ; Relationship ; Clock Skew ; Data Delay ; +--------+-----------+-----------+--------------+-------------+--------------+------------+------------+ ; 12.341 ; test_in ; test_samp ; theclk ; theclk ; 20.000 ; 3.940 ; 7.499 ; +--------+-----------+-----------+--------------+-------------+--------------+------------+------------+ Path #1: Setup slack is 12.341 =============================================================================== +--------------------------------+ ; Path Summary ; +--------------------+-----------+ ; Property ; Value ; +--------------------+-----------+ ; From Node ; test_in ; ; To Node ; test_samp ; ; Launch Clock ; theclk ; ; Latch Clock ; theclk ; ; Data Arrival Time ; 11.499 ; ; Data Required Time ; 23.840 ; ; Slack ; 12.341 ; +--------------------+-----------+ +---------------------------------------------------------------------------------------+ ; Statistics ; +---------------------------+--------+-------+-------------+------------+-------+-------+ ; Property ; Value ; Count ; Total Delay ; % of Total ; Min ; Max ; +---------------------------+--------+-------+-------------+------------+-------+-------+ ; Setup Relationship ; 20.000 ; ; ; ; ; ; ; Clock Skew ; 3.940 ; ; ; ; ; ; ; Data Delay ; 7.499 ; ; ; ; ; ; ; Number of Logic Levels ; ; 1 ; ; ; ; ; ; Physical Delays ; ; ; ; ; ; ; ; Arrival Path ; ; ; ; ; ; ; ; Clock ; ; ; ; ; ; ; ; Clock Network (Lumped) ; ; 1 ; 0.000 ; ; 0.000 ; 0.000 ; ; Data ; ; ; ; ; ; ; ; IC ; ; 2 ; 2.447 ; 33 ; 0.000 ; 2.447 ; ; Cell ; ; 2 ; 5.052 ; 67 ; 0.652 ; 4.400 ; ; Required Path ; ; ; ; ; ; ; ; Clock ; ; ; ; ; ; ; ; Clock Network (Lumped) ; ; 1 ; 3.940 ; 100 ; 3.940 ; 3.940 ; +---------------------------+--------+-------+-------------+------------+-------+-------+ Note: Negative delays are omitted from totals when calculating percentages +-----------------------------------------------------------------------------------+ ; Data Arrival Path ; +----------+---------+----+------+--------+-------------------+---------------------+ ; Total ; Incr ; RF ; Type ; Fanout ; Location ; Element ; +----------+---------+----+------+--------+-------------------+---------------------+ ; 0.000 ; 0.000 ; ; ; ; ; launch edge time ; ; 0.000 ; 0.000 ; ; ; ; ; clock path ; ; 0.000 ; 0.000 ; R ; ; ; ; clock network delay ; ; 4.000 ; 4.000 ; F ; iExt ; 1 ; PIN_AP17 ; test_in ; ; 11.499 ; 7.499 ; ; ; ; ; data path ; ; 4.000 ; 0.000 ; FF ; IC ; 1 ; IOIBUF_X48_Y0_N58 ; test_in~input|i ; ; 8.400 ; 4.400 ; FF ; CELL ; 1 ; IOIBUF_X48_Y0_N58 ; test_in~input|o ; ; 10.847 ; 2.447 ; FF ; IC ; 1 ; FF_X48_Y2_N40 ; test_samp|asdata ; ; 11.499 ; 0.652 ; FF ; CELL ; 1 ; FF_X48_Y2_N40 ; test_samp ; +----------+---------+----+------+--------+-------------------+---------------------+ +-------------------------------------------------------------------------------+ ; Data Required Path ; +----------+---------+----+------+--------+---------------+---------------------+ ; Total ; Incr ; RF ; Type ; Fanout ; Location ; Element ; +----------+---------+----+------+--------+---------------+---------------------+ ; 20.000 ; 20.000 ; ; ; ; ; latch edge time ; ; 23.940 ; 3.940 ; ; ; ; ; clock path ; ; 23.940 ; 3.940 ; R ; ; ; ; clock network delay ; ; 23.840 ; -0.100 ; ; ; ; ; clock uncertainty ; ; 23.840 ; 0.000 ; ; uTsu ; 1 ; FF_X48_Y2_N40 ; test_samp ; +----------+---------+----+------+--------+---------------+---------------------+
이 분석은 max input delay constraint에 지정된 대로 input port (test_in)를 4 ns 로 설정하여 "Data Arrival Path"에서 시작하여 해당 data path를 계속합니다. FPGA의 자체 data path delay (7.499 ns)와 함께 총 data path delay은 11.499 ns에 해당합니다.
그런 다음 20 ns의 다음 clock 에서 시작하여 "Data Required Path"에서 clock path가 계산됩니다. clock은 input pin 에서 flip-flop 로 이동합니다( PLL이 포함되지 않으므로 clock network delay에 대한 보상 없음). 이 계산은 추정된 jitter 도 고려합니다("clock uncertainty" 덕분에). 전체적으로 clock path는 23.840 ns에서 끝납니다. data가 flip-flop에 도착한 후의 12.341 ns 입니다. constraint의 slack입니다.
이 분석은 set_input_delay -max constraint 에 넣을 숫자가 input pin을 구동하는 외부 장치의 최대 clock-to-output ( + 보드의 trace delay )임을 보여줍니다. 이 결론은 숫자가 data path의 시작 시간으로 사용되기 때문입니다.
set_input_delay -min (hold) 분석
Delay Model: Slow 1100mV 85C Model +-----------------------------------------------------------------------------------------------------+ ; Summary of Paths ; +-------+-----------+-----------+--------------+-------------+--------------+------------+------------+ ; Slack ; From Node ; To Node ; Launch Clock ; Latch Clock ; Relationship ; Clock Skew ; Data Delay ; +-------+-----------+-----------+--------------+-------------+--------------+------------+------------+ ; 0.770 ; test_in ; test_samp ; theclk ; theclk ; 0.000 ; 4.287 ; 3.057 ; +-------+-----------+-----------+--------------+-------------+--------------+------------+------------+ Path #1: Hold slack is 0.770 =============================================================================== +--------------------------------+ ; Path Summary ; +--------------------+-----------+ ; Property ; Value ; +--------------------+-----------+ ; From Node ; test_in ; ; To Node ; test_samp ; ; Launch Clock ; theclk ; ; Latch Clock ; theclk ; ; Data Arrival Time ; 5.057 ; ; Data Required Time ; 4.287 ; ; Slack ; 0.770 ; +--------------------+-----------+ +--------------------------------------------------------------------------------------+ ; Statistics ; +---------------------------+-------+-------+-------------+------------+-------+-------+ ; Property ; Value ; Count ; Total Delay ; % of Total ; Min ; Max ; +---------------------------+-------+-------+-------------+------------+-------+-------+ ; Hold Relationship ; 0.000 ; ; ; ; ; ; ; Clock Skew ; 4.287 ; ; ; ; ; ; ; Data Delay ; 3.057 ; ; ; ; ; ; ; Number of Logic Levels ; ; 1 ; ; ; ; ; ; Physical Delays ; ; ; ; ; ; ; ; Arrival Path ; ; ; ; ; ; ; ; Clock ; ; ; ; ; ; ; ; Clock Network (Lumped) ; ; 1 ; 0.000 ; ; 0.000 ; 0.000 ; ; Data ; ; ; ; ; ; ; ; IC ; ; 2 ; 2.028 ; 66 ; 0.000 ; 2.028 ; ; Cell ; ; 2 ; 1.029 ; 34 ; 0.290 ; 0.739 ; ; Required Path ; ; ; ; ; ; ; ; Clock ; ; ; ; ; ; ; ; Clock Network (Lumped) ; ; 1 ; 4.287 ; 100 ; 4.287 ; 4.287 ; +---------------------------+-------+-------+-------------+------------+-------+-------+ Note: Negative delays are omitted from totals when calculating percentages +----------------------------------------------------------------------------------+ ; Data Arrival Path ; +---------+---------+----+------+--------+-------------------+---------------------+ ; Total ; Incr ; RF ; Type ; Fanout ; Location ; Element ; +---------+---------+----+------+--------+-------------------+---------------------+ ; 0.000 ; 0.000 ; ; ; ; ; launch edge time ; ; 0.000 ; 0.000 ; ; ; ; ; clock path ; ; 0.000 ; 0.000 ; R ; ; ; ; clock network delay ; ; 2.000 ; 2.000 ; R ; iExt ; 1 ; PIN_AP17 ; test_in ; ; 5.057 ; 3.057 ; ; ; ; ; data path ; ; 2.000 ; 0.000 ; RR ; IC ; 1 ; IOIBUF_X48_Y0_N58 ; test_in~input|i ; ; 2.739 ; 0.739 ; RR ; CELL ; 1 ; IOIBUF_X48_Y0_N58 ; test_in~input|o ; ; 4.767 ; 2.028 ; RR ; IC ; 1 ; FF_X48_Y2_N40 ; test_samp|asdata ; ; 5.057 ; 0.290 ; RR ; CELL ; 1 ; FF_X48_Y2_N40 ; test_samp ; +---------+---------+----+------+--------+-------------------+---------------------+ +------------------------------------------------------------------------------+ ; Data Required Path ; +---------+---------+----+------+--------+---------------+---------------------+ ; Total ; Incr ; RF ; Type ; Fanout ; Location ; Element ; +---------+---------+----+------+--------+---------------+---------------------+ ; 0.000 ; 0.000 ; ; ; ; ; latch edge time ; ; 4.287 ; 4.287 ; ; ; ; ; clock path ; ; 4.287 ; 4.287 ; R ; ; ; ; clock network delay ; ; 4.287 ; 0.000 ; ; ; ; ; clock uncertainty ; ; 4.287 ; 0.000 ; ; uTh ; 1 ; FF_X48_Y2_N40 ; test_samp ; +---------+---------+----+------+--------+---------------+---------------------+
이 분석은 min input delay constraint에 지정된 대로 input port (test_in)를 2 ns로 설정하여 "Data Arrival Path"에서 시작하여 해당 data path를 계속합니다. FPGA의 자체 data path delay (3.057 ns)와 함께 총 data path delay은 5.057 ns에 해당합니다.
그런 다음 clock path는 0 ns의 동일한 clock edge 에서 시작하여 "Data Required Path"에서 계산됩니다. 결국 이것은 hold timing의 계산이므로 문제는 데이터를 샘플링하기 전에 flip-flop 의 input 에서 데이터가 변경되지 않았는지 여부입니다.
clock은 input pin 에서 flip-flop 로 이동합니다( PLL이 관련되어 있지 않기 때문에 clock network delay에 대한 보상 없음). 이 계산은 추정된 jitter 도 고려하지만("clock uncertainty" 덕분에) 그 값은 0입니다. 전체적으로 clock path는 data의 변경보다 빠른 0.770 ns 인 4.287 ns에서 끝납니다. 따라서 이 숫자는 slack입니다.
이 분석은 set_input_delay -min constraint 에 장착할 숫자가 input pin을 구동하는 외부 장치의 최소 clock-to-output 임을 보여줍니다. 이 결론은 숫자가 data path의 시작 시간으로 사용되기 때문입니다.
set_output_delay -max (setup) 분석
Delay Model: Slow 1100mV 85C Model +--------------------------------------------------------------------------------------------------------+ ; Summary of Paths ; +-------+---------------+----------+--------------+-------------+--------------+------------+------------+ ; Slack ; From Node ; To Node ; Launch Clock ; Latch Clock ; Relationship ; Clock Skew ; Data Delay ; +-------+---------------+----------+--------------+-------------+--------------+------------+------------+ ; 2.651 ; test_out~reg0 ; test_out ; theclk ; theclk ; 20.000 ; -5.320 ; 3.929 ; +-------+---------------+----------+--------------+-------------+--------------+------------+------------+ Path #1: Setup slack is 2.651 =============================================================================== +------------------------------------+ ; Path Summary ; +--------------------+---------------+ ; Property ; Value ; +--------------------+---------------+ ; From Node ; test_out~reg0 ; ; To Node ; test_out ; ; Launch Clock ; theclk ; ; Latch Clock ; theclk ; ; Data Arrival Time ; 9.249 ; ; Data Required Time ; 11.900 ; ; Slack ; 2.651 ; +--------------------+---------------+ +---------------------------------------------------------------------------------------+ ; Statistics ; +---------------------------+--------+-------+-------------+------------+-------+-------+ ; Property ; Value ; Count ; Total Delay ; % of Total ; Min ; Max ; +---------------------------+--------+-------+-------------+------------+-------+-------+ ; Setup Relationship ; 20.000 ; ; ; ; ; ; ; Clock Skew ; -5.320 ; ; ; ; ; ; ; Data Delay ; 3.929 ; ; ; ; ; ; ; Number of Logic Levels ; ; 0 ; ; ; ; ; ; Physical Delays ; ; ; ; ; ; ; ; Arrival Path ; ; ; ; ; ; ; ; Clock ; ; ; ; ; ; ; ; Clock Network (Lumped) ; ; 1 ; 5.320 ; 100 ; 5.320 ; 5.320 ; ; Data ; ; ; ; ; ; ; ; IC ; ; 1 ; 0.000 ; 0 ; 0.000 ; 0.000 ; ; Cell ; ; 3 ; 3.929 ; 100 ; 0.000 ; 2.150 ; ; uTco ; ; 1 ; 0.000 ; 0 ; 0.000 ; 0.000 ; ; Required Path ; ; ; ; ; ; ; ; Clock ; ; ; ; ; ; ; ; Clock Network (Lumped) ; ; 1 ; 0.000 ; ; 0.000 ; 0.000 ; +---------------------------+--------+-------+-------------+------------+-------+-------+ Note: Negative delays are omitted from totals when calculating percentages +---------------------------------------------------------------------------------------+ ; Data Arrival Path ; +---------+---------+----+------+--------+------------------------+---------------------+ ; Total ; Incr ; RF ; Type ; Fanout ; Location ; Element ; +---------+---------+----+------+--------+------------------------+---------------------+ ; 0.000 ; 0.000 ; ; ; ; ; launch edge time ; ; 5.320 ; 5.320 ; ; ; ; ; clock path ; ; 5.320 ; 5.320 ; R ; ; ; ; clock network delay ; ; 9.249 ; 3.929 ; ; ; ; ; data path ; ; 5.320 ; 0.000 ; ; uTco ; 1 ; DDIOOUTCELL_X48_Y0_N50 ; test_out~reg0 ; ; 7.099 ; 1.779 ; FF ; CELL ; 1 ; DDIOOUTCELL_X48_Y0_N50 ; test_out~reg0|q ; ; 7.099 ; 0.000 ; FF ; IC ; 1 ; IOOBUF_X48_Y0_N42 ; test_out~output|i ; ; 9.249 ; 2.150 ; FF ; CELL ; 1 ; IOOBUF_X48_Y0_N42 ; test_out~output|o ; ; 9.249 ; 0.000 ; FF ; CELL ; 0 ; PIN_AN17 ; test_out ; +---------+---------+----+------+--------+------------------------+---------------------+ +--------------------------------------------------------------------------+ ; Data Required Path ; +----------+---------+----+------+--------+----------+---------------------+ ; Total ; Incr ; RF ; Type ; Fanout ; Location ; Element ; +----------+---------+----+------+--------+----------+---------------------+ ; 20.000 ; 20.000 ; ; ; ; ; latch edge time ; ; 20.000 ; 0.000 ; ; ; ; ; clock path ; ; 20.000 ; 0.000 ; R ; ; ; ; clock network delay ; ; 19.900 ; -0.100 ; ; ; ; ; clock uncertainty ; ; 11.900 ; -8.000 ; F ; oExt ; 0 ; PIN_AN17 ; test_out ; +----------+---------+----+------+--------+----------+---------------------+
이 분석의 목적은 output delay을 측정하는 것이므로 "Data Arrival Path"에서 clock edge ( 0 ns)에서 시작하여 clock network delay을 flip-flop에 추가합니다. 거기에서 output이 안정적인 logic state에 도달할 때까지 data path를 따라갑니다. 이에 대한 계산은 9.249 ns를 산출했습니다.
이것은 20 ns에서 output delay을 뺀 다음 clock 의 시간과 비교됩니다. 추정 jitter를 뺀 값(위의 경우0.1 ns ). data는 9.249 ns에서 안정적인 것으로 계산되었습니다. 이것은 안정적이어야 하는 시간인 11.9 ns와 비교하므로 slack은 2.651 ns입니다.
이것은 set_output_delay -max 에 사용되는 번호가 외부 장치의 input 에 대해 지정된 setup time 여야 하는 이유를 보여줍니다. 이 timing constraint는 output에서 유효한 data 까지의 총 delay 와 다음 clock의 시간 위치 간의 차이를 계산하여 검증됩니다. 이 차이가 달성 목표입니다. 이것이 바로 setup time의 정의입니다. 다음 clock전에 data가 얼마나 오래 안정적이어야 하는지.
set_output_delay -min (hold) 분석
Delay Model: Fast 1100mV 0C Model +--------------------------------------------------------------------------------------------------------+ ; Summary of Paths ; +-------+---------------+----------+--------------+-------------+--------------+------------+------------+ ; Slack ; From Node ; To Node ; Launch Clock ; Latch Clock ; Relationship ; Clock Skew ; Data Delay ; +-------+---------------+----------+--------------+-------------+--------------+------------+------------+ ; 1.275 ; test_out~reg0 ; test_out ; theclk ; theclk ; 0.000 ; -2.255 ; 2.020 ; +-------+---------------+----------+--------------+-------------+--------------+------------+------------+ Path #1: Hold slack is 1.275 =============================================================================== +------------------------------------+ ; Path Summary ; +--------------------+---------------+ ; Property ; Value ; +--------------------+---------------+ ; From Node ; test_out~reg0 ; ; To Node ; test_out ; ; Launch Clock ; theclk ; ; Latch Clock ; theclk ; ; Data Arrival Time ; 4.275 ; ; Data Required Time ; 3.000 ; ; Slack ; 1.275 ; +--------------------+---------------+ +---------------------------------------------------------------------------------------+ ; Statistics ; +---------------------------+--------+-------+-------------+------------+-------+-------+ ; Property ; Value ; Count ; Total Delay ; % of Total ; Min ; Max ; +---------------------------+--------+-------+-------------+------------+-------+-------+ ; Hold Relationship ; 0.000 ; ; ; ; ; ; ; Clock Skew ; -2.255 ; ; ; ; ; ; ; Data Delay ; 2.020 ; ; ; ; ; ; ; Number of Logic Levels ; ; 0 ; ; ; ; ; ; Physical Delays ; ; ; ; ; ; ; ; Arrival Path ; ; ; ; ; ; ; ; Clock ; ; ; ; ; ; ; ; Clock Network (Lumped) ; ; 1 ; 2.255 ; 100 ; 2.255 ; 2.255 ; ; Data ; ; ; ; ; ; ; ; IC ; ; 1 ; 0.000 ; 0 ; 0.000 ; 0.000 ; ; Cell ; ; 3 ; 2.020 ; 100 ; 0.000 ; 1.296 ; ; uTco ; ; 1 ; 0.000 ; 0 ; 0.000 ; 0.000 ; ; Required Path ; ; ; ; ; ; ; ; Clock ; ; ; ; ; ; ; ; Clock Network (Lumped) ; ; 1 ; 0.000 ; ; 0.000 ; 0.000 ; +---------------------------+--------+-------+-------------+------------+-------+-------+ Note: Negative delays are omitted from totals when calculating percentages +---------------------------------------------------------------------------------------+ ; Data Arrival Path ; +---------+---------+----+------+--------+------------------------+---------------------+ ; Total ; Incr ; RF ; Type ; Fanout ; Location ; Element ; +---------+---------+----+------+--------+------------------------+---------------------+ ; 0.000 ; 0.000 ; ; ; ; ; launch edge time ; ; 2.255 ; 2.255 ; ; ; ; ; clock path ; ; 2.255 ; 2.255 ; R ; ; ; ; clock network delay ; ; 4.275 ; 2.020 ; ; ; ; ; data path ; ; 2.255 ; 0.000 ; ; uTco ; 1 ; DDIOOUTCELL_X48_Y0_N50 ; test_out~reg0 ; ; 2.979 ; 0.724 ; RR ; CELL ; 1 ; DDIOOUTCELL_X48_Y0_N50 ; test_out~reg0|q ; ; 2.979 ; 0.000 ; RR ; IC ; 1 ; IOOBUF_X48_Y0_N42 ; test_out~output|i ; ; 4.275 ; 1.296 ; RR ; CELL ; 1 ; IOOBUF_X48_Y0_N42 ; test_out~output|o ; ; 4.275 ; 0.000 ; RR ; CELL ; 0 ; PIN_AN17 ; test_out ; +---------+---------+----+------+--------+------------------------+---------------------+ +-------------------------------------------------------------------------+ ; Data Required Path ; +---------+---------+----+------+--------+----------+---------------------+ ; Total ; Incr ; RF ; Type ; Fanout ; Location ; Element ; +---------+---------+----+------+--------+----------+---------------------+ ; 0.000 ; 0.000 ; ; ; ; ; latch edge time ; ; 0.000 ; 0.000 ; ; ; ; ; clock path ; ; 0.000 ; 0.000 ; R ; ; ; ; clock network delay ; ; 0.000 ; 0.000 ; ; ; ; ; clock uncertainty ; ; 3.000 ; 3.000 ; R ; oExt ; 0 ; PIN_AN17 ; test_out ; +---------+---------+----+------+--------+----------+---------------------+
이 분석은 max output delay와 유사하지만 동일한 clock edge 에 대해 계산된 것뿐입니다(다음은 아님).
이전과 마찬가지로 data path는 output이 안정될 때까지 clock path를 계속합니다. 이에 대한 계산은 4.275 ns를 산출했습니다.
이것은 0 ns에서 동일한 clock 에서 output delay을 뺀 시간과 비교됩니다. timing constraint 의 min output delay은 음수(-3 ns)이므로 계산에서 양수로 표시됩니다.
결론: data는 4.275 ns까지 안정적이었고 3 ns까지 안정적이어야 합니다. 1.275 ns를 slack로 사용하면 괜찮습니다.
이것은 set_output_delay -min 에 사용되는 번호가 외부 장치의 input 에 대해 지정된 hold time이 고 부호가 반대인 이유를 보여줍니다. 이 timing constraint는 총 delay 가 이 주어진 수보다 커야 함을 요구함으로써 검증됩니다. 다시 말해, data는 clock이후 그 오랜 시간 동안 안정적이어야 합니다. 이것은 hold time의 정의입니다.