알겠습니다. 이게 뭡니까?
이 페이지는 I/O timing constraints로 사용될 때 set_max_delay 와 set_min_delay 의 의미를 설명하는 다른 게시물 의 예제 부분입니다 .
이 예제에서 사용된 Verilog 코드:
module top(
input test_clk,
input test_in,
(* IOB = "TRUE" *) output reg test_out
);
(* IOB = "TRUE" *) reg test_samp;
always @(posedge test_clk)
begin
test_samp <= test_in;
test_out <= test_samp;
end
endmodule
implementation은 Kintex Ultrascale용으로 실행되었습니다.
output port용 timing reports
다른 게시물에 따르면 아래 예제 뒤에 있는 timing constraints는 다음과 같습니다.
create_clock -name theclk -period 20 [get_ports test_clk] set_max_delay -to [get_ports test_out] 7 set_min_delay -to [get_ports test_out] 0 set_max_delay -from [get_ports test_in] 1 set_min_delay -from [get_ports test_in] -3
set_max_delay에 대응하는 output port 용 timing report :
Slack (MET) : 1.260ns (required time - arrival time) Source: test_out_reg/C (rising edge-triggered cell FDRE clocked by theclk {rise@0.000ns fall@10.000ns period=20.000ns}) Destination: test_out Path Group: **default** Path Type: Max at Slow Process Corner Requirement: 7.000ns (MaxDelay Path 7.000ns) Data Path Delay: 2.626ns (logic 2.201ns (83.817%) route 0.425ns (16.183%)) Logic Levels: 1 (OBUF=1) Output Delay: 0.000ns Clock Path Skew: -3.114ns (DCD - SCD + CPR) Destination Clock Delay (DCD): 0.000ns Source Clock Delay (SCD): 3.114ns Clock Pessimism Removal (CPR): 0.000ns Clock Net Delay (Source): 1.282ns (routing 0.002ns, distribution 1.280ns) Timing Exception: MaxDelay Path 7.000ns Location Delay type Incr(ns) Path(ns) Netlist Resource(s) ------------------------------------------------------------------- ------------------- (clock theclk rise edge) 0.000 0.000 r AG12 0.000 0.000 r test_clk (IN) net (fo=0) 0.000 0.000 test_clk_IBUF_inst/I AG12 INBUF (Prop_INBUF_HRIO_PAD_O) 0.738 0.738 r test_clk_IBUF_inst/INBUF_INST/O net (fo=1, routed) 0.105 0.843 test_clk_IBUF_inst/OUT AG12 IBUFCTRL (Prop_IBUFCTRL_HRIO_I_O) 0.049 0.892 r test_clk_IBUF_inst/IBUFCTRL_INST/O net (fo=1, routed) 0.839 1.731 test_clk_IBUF BUFGCE_X1Y0 BUFGCE (Prop_BUFCE_BUFGCE_I_O) 0.101 1.832 r test_clk_IBUF_BUFG_inst/O X2Y0 (CLOCK_ROOT) net (fo=2, routed) 1.282 3.114 test_clk_IBUF_BUFG BITSLICE_RX_TX_X1Y50 FDRE r test_out_reg/C ------------------------------------------------------------------- ------------------- BITSLICE_RX_TX_X1Y50 FDRE (Prop_OUT_FF_BITSLICE_COMPONENT_RX_TX_C_Q) 0.734 3.848 r test_out_reg/Q net (fo=1, routed) 0.425 4.273 test_out_OBUF AL8 OBUF (Prop_OUTBUF_HRIO_I_O) 1.467 5.740 r test_out_OBUF_inst/O net (fo=0) 0.000 5.740 test_out AL8 r test_out (OUT) ------------------------------------------------------------------- ------------------- max delay 7.000 7.000 clock pessimism 0.000 7.000 output delay -0.000 7.000 ------------------------------------------------------------------- required time 7.000 arrival time -5.740 ------------------------------------------------------------------- slack 1.260
이미 설명했듯이 이것은 clock pin 에서 output pin까지의 clock-to-output 계산입니다.
set_min_delay에 대응하는 output port 용 timing report :
Slack (MET) : 2.242ns (arrival time - required time) Source: test_out_reg/C (rising edge-triggered cell FDRE clocked by theclk {rise@0.000ns fall@10.000ns period=20.000ns}) Destination: test_out Path Group: **default** Path Type: Min at Fast Process Corner Requirement: 0.000ns (MinDelay Path 0.000ns) Data Path Delay: 1.009ns (logic 0.848ns (84.050%) route 0.161ns (15.950%)) Logic Levels: 1 (OBUF=1) Output Delay: 0.000ns Clock Path Skew: -1.233ns (DCD - SCD - CPR) Destination Clock Delay (DCD): 0.000ns Source Clock Delay (SCD): 1.233ns Clock Pessimism Removal (CPR): -0.000ns Clock Net Delay (Source): 0.477ns (routing 0.002ns, distribution 0.475ns) Timing Exception: MinDelay Path 0.000ns Location Delay type Incr(ns) Path(ns) Netlist Resource(s) ------------------------------------------------------------------- ------------------- (clock theclk rise edge) 0.000 0.000 r AG12 0.000 0.000 r test_clk (IN) net (fo=0) 0.000 0.000 test_clk_IBUF_inst/I AG12 INBUF (Prop_INBUF_HRIO_PAD_O) 0.339 0.339 r test_clk_IBUF_inst/INBUF_INST/O net (fo=1, routed) 0.025 0.364 test_clk_IBUF_inst/OUT AG12 IBUFCTRL (Prop_IBUFCTRL_HRIO_I_O) 0.015 0.379 r test_clk_IBUF_inst/IBUFCTRL_INST/O net (fo=1, routed) 0.350 0.729 test_clk_IBUF BUFGCE_X1Y0 BUFGCE (Prop_BUFCE_BUFGCE_I_O) 0.027 0.756 r test_clk_IBUF_BUFG_inst/O X2Y0 (CLOCK_ROOT) net (fo=2, routed) 0.477 1.233 test_clk_IBUF_BUFG BITSLICE_RX_TX_X1Y50 FDRE r test_out_reg/C ------------------------------------------------------------------- ------------------- BITSLICE_RX_TX_X1Y50 FDRE (Prop_OUT_FF_BITSLICE_COMPONENT_RX_TX_C_Q) 0.264 1.497 r test_out_reg/Q net (fo=1, routed) 0.161 1.658 test_out_OBUF AL8 OBUF (Prop_OUTBUF_HRIO_I_O) 0.584 2.242 r test_out_OBUF_inst/O net (fo=0) 0.000 2.242 test_out AL8 r test_out (OUT) ------------------------------------------------------------------- ------------------- min delay 0.000 0.000 clock pessimism 0.000 0.000 output delay -0.000 0.000 ------------------------------------------------------------------- required time -0.000 arrival time 2.242 ------------------------------------------------------------------- slack 2.242
본질적으로 이것은 동일한 계산입니다. 차이점은 각 logic element에 대해 minimal delays가 고려된다는 것입니다. 또한 요구 사항은 0 ns입니다.
input port용 timing reports
set_max_delay에 대응하는 input port 용 timing report :
Slack (MET) : 1.317ns (required time - arrival time) Source: test_in (input port) Destination: test_samp_reg/D (rising edge-triggered cell FDRE clocked by theclk {rise@0.000ns fall@10.000ns period=20.000ns}) Path Group: theclk Path Type: Setup (Max at Fast Process Corner) Requirement: 1.000ns (MaxDelay Path 1.000ns) Data Path Delay: 0.851ns (logic 0.686ns (80.600%) route 0.165ns (19.400%)) Logic Levels: 2 (IBUFCTRL=1 INBUF=1) Clock Path Skew: 1.217ns (DCD - SCD + CPR) Destination Clock Delay (DCD): 1.217ns Source Clock Delay (SCD): 0.000ns Clock Pessimism Removal (CPR): 0.000ns Clock Uncertainty: 0.025ns ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE Total System Jitter (TSJ): 0.050ns Total Input Jitter (TIJ): 0.000ns Discrete Jitter (DJ): 0.000ns Phase Error (PE): 0.000ns Clock Net Delay (Destination): 0.461ns (routing 0.002ns, distribution 0.459ns) Timing Exception: MaxDelay Path 1.000ns Location Delay type Incr(ns) Path(ns) Netlist Resource(s) ------------------------------------------------------------------- ------------------- AK8 0.000 0.000 r test_in (IN) net (fo=0) 0.000 0.000 test_in_IBUF_inst/I AK8 INBUF (Prop_INBUF_HRIO_PAD_O) 0.664 0.664 r test_in_IBUF_inst/INBUF_INST/O net (fo=1, routed) 0.042 0.706 test_in_IBUF_inst/OUT AK8 IBUFCTRL (Prop_IBUFCTRL_HRIO_I_O) 0.022 0.728 r test_in_IBUF_inst/IBUFCTRL_INST/O net (fo=1, routed) 0.123 0.851 test_in_IBUF BITSLICE_RX_TX_X1Y49 FDRE r test_samp_reg/D ------------------------------------------------------------------- ------------------- max delay 1.000 1.000 AG12 0.000 1.000 r test_clk (IN) net (fo=0) 0.000 1.000 test_clk_IBUF_inst/I AG12 INBUF (Prop_INBUF_HRIO_PAD_O) 0.339 1.339 r test_clk_IBUF_inst/INBUF_INST/O net (fo=1, routed) 0.025 1.364 test_clk_IBUF_inst/OUT AG12 IBUFCTRL (Prop_IBUFCTRL_HRIO_I_O) 0.015 1.379 r test_clk_IBUF_inst/IBUFCTRL_INST/O net (fo=1, routed) 0.350 1.729 test_clk_IBUF BUFGCE_X1Y0 BUFGCE (Prop_BUFCE_BUFGCE_I_O) 0.027 1.756 r test_clk_IBUF_BUFG_inst/O X2Y0 (CLOCK_ROOT) net (fo=2, routed) 0.461 2.217 test_clk_IBUF_BUFG BITSLICE_RX_TX_X1Y49 FDRE r test_samp_reg/C clock pessimism 0.000 2.217 clock uncertainty -0.025 2.192 BITSLICE_RX_TX_X1Y49 FDRE (Setup_IN_FF_BITSLICE_COMPONENT_RX_TX_C_D) -0.024 2.168 test_samp_reg ------------------------------------------------------------------- required time 2.168 arrival time -0.851 ------------------------------------------------------------------- slack 1.317
이미 언급했듯이 이 계산에 대한 직관적인 설명은 없습니다. set_min_delay에 대한 응답으로 input port 용 timing report 에 대해 할 말이 많지 않습니다.
Slack (MET) : 0.700ns (arrival time - required time) Source: test_in (input port) Destination: test_samp_reg/D (rising edge-triggered cell FDRE clocked by theclk {rise@0.000ns fall@10.000ns period=20.000ns}) Path Group: theclk Path Type: Hold (Min at Slow Process Corner) Requirement: -3.000ns (MinDelay Path -3.000ns) Data Path Delay: 0.850ns (logic 0.617ns (72.583%) route 0.233ns (27.417%)) Logic Levels: 2 (IBUFCTRL=1 INBUF=1) Clock Path Skew: 3.077ns (DCD - SCD - CPR) Destination Clock Delay (DCD): 3.077ns Source Clock Delay (SCD): 0.000ns Clock Pessimism Removal (CPR): -0.000ns Clock Uncertainty: 0.025ns ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE Total System Jitter (TSJ): 0.050ns Total Input Jitter (TIJ): 0.000ns Discrete Jitter (DJ): 0.000ns Phase Error (PE): 0.000ns Clock Net Delay (Destination): 1.245ns (routing 0.002ns, distribution 1.243ns) Timing Exception: MinDelay Path -3.000ns Location Delay type Incr(ns) Path(ns) Netlist Resource(s) ------------------------------------------------------------------- ------------------- AK8 0.000 0.000 r test_in (IN) net (fo=0) 0.000 0.000 test_in_IBUF_inst/I AK8 INBUF (Prop_INBUF_HRIO_PAD_O) 0.583 0.583 r test_in_IBUF_inst/INBUF_INST/O net (fo=1, routed) 0.066 0.649 test_in_IBUF_inst/OUT AK8 IBUFCTRL (Prop_IBUFCTRL_HRIO_I_O) 0.034 0.683 r test_in_IBUF_inst/IBUFCTRL_INST/O net (fo=1, routed) 0.167 0.850 test_in_IBUF BITSLICE_RX_TX_X1Y49 FDRE r test_samp_reg/D ------------------------------------------------------------------- ------------------- min delay -3.000 -3.000 AG12 0.000 -3.000 r test_clk (IN) net (fo=0) 0.000 -3.000 test_clk_IBUF_inst/I AG12 INBUF (Prop_INBUF_HRIO_PAD_O) 0.738 -2.262 r test_clk_IBUF_inst/INBUF_INST/O net (fo=1, routed) 0.105 -2.157 test_clk_IBUF_inst/OUT AG12 IBUFCTRL (Prop_IBUFCTRL_HRIO_I_O) 0.049 -2.108 r test_clk_IBUF_inst/IBUFCTRL_INST/O net (fo=1, routed) 0.839 -1.269 test_clk_IBUF BUFGCE_X1Y0 BUFGCE (Prop_BUFCE_BUFGCE_I_O) 0.101 -1.168 r test_clk_IBUF_BUFG_inst/O X2Y0 (CLOCK_ROOT) net (fo=2, routed) 1.245 0.077 test_clk_IBUF_BUFG BITSLICE_RX_TX_X1Y49 FDRE r test_samp_reg/C clock pessimism 0.000 0.077 clock uncertainty 0.025 0.102 BITSLICE_RX_TX_X1Y49 FDRE (Hold_IN_FF_BITSLICE_COMPONENT_RX_TX_C_D) 0.048 0.150 test_samp_reg ------------------------------------------------------------------- required time -0.150 arrival time 0.850 ------------------------------------------------------------------- slack 0.700
-datapath_only가 장착된 timing reports
다른 게시물 에 따르면 아래 예제 뒤에 있는 timing constraints는 다음과 같습니다.
create_clock -name theclk -period 20 [get_ports test_clk] set_max_delay -datapath_only -from [get_ports test_in] 2 set_max_delay -datapath_only -from [all_registers] \ -to [get_ports test_out] 3
output port용 timing report :
Slack (MET) : 0.374ns (required time - arrival time) Source: test_out_reg/C (rising edge-triggered cell FDRE clocked by theclk {rise@0.000ns fall@10.000ns period=20.000ns}) Destination: test_out Path Group: **default** Path Type: Max at Slow Process Corner Requirement: 3.000ns (MaxDelay Path 3.000ns) Data Path Delay: 2.626ns (logic 2.201ns (83.817%) route 0.425ns (16.183%)) Logic Levels: 1 (OBUF=1) Output Delay: 0.000ns Timing Exception: MaxDelay Path 3.000ns -datapath_only Location Delay type Incr(ns) Path(ns) Netlist Resource(s) ------------------------------------------------------------------- ------------------- BITSLICE_RX_TX_X1Y50 0.000 0.000 r test_out_reg/C BITSLICE_RX_TX_X1Y50 FDRE (Prop_OUT_FF_BITSLICE_COMPONENT_RX_TX_C_Q) 0.734 0.734 r test_out_reg/Q net (fo=1, routed) 0.425 1.159 test_out_OBUF AL8 OBUF (Prop_OUTBUF_HRIO_I_O) 1.467 2.626 r test_out_OBUF_inst/O net (fo=0) 0.000 2.626 test_out AL8 r test_out (OUT) ------------------------------------------------------------------- ------------------- max delay 3.000 3.000 output delay -0.000 3.000 ------------------------------------------------------------------- required time 3.000 arrival time -2.626 ------------------------------------------------------------------- slack 0.374
input port용 timing report :
Slack (MET) : 0.757ns (required time - arrival time) Source: test_in (input port) Destination: test_samp_reg/D (rising edge-triggered cell FDRE clocked by theclk {rise@0.000ns fall@10.000ns period=20.000ns}) Path Group: theclk Path Type: Setup (Max at Slow Process Corner) Requirement: 2.000ns (MaxDelay Path 2.000ns) Data Path Delay: 1.136ns (logic 0.856ns (75.342%) route 0.280ns (24.658%)) Logic Levels: 2 (IBUFCTRL=1 INBUF=1) Timing Exception: MaxDelay Path 2.000ns -datapath_only Location Delay type Incr(ns) Path(ns) Netlist Resource(s) ------------------------------------------------------------------- ------------------- AK8 0.000 0.000 r test_in (IN) net (fo=0) 0.000 0.000 test_in_IBUF_inst/I AK8 INBUF (Prop_INBUF_HRIO_PAD_O) 0.807 0.807 r test_in_IBUF_inst/INBUF_INST/O net (fo=1, routed) 0.105 0.912 test_in_IBUF_inst/OUT AK8 IBUFCTRL (Prop_IBUFCTRL_HRIO_I_O) 0.049 0.961 r test_in_IBUF_inst/IBUFCTRL_INST/O net (fo=1, routed) 0.175 1.136 test_in_IBUF BITSLICE_RX_TX_X1Y49 FDRE r test_samp_reg/D ------------------------------------------------------------------- ------------------- max delay 2.000 2.000 BITSLICE_RX_TX_X1Y49 FDRE (Setup_IN_FF_BITSLICE_COMPONENT_RX_TX_C_D) -0.107 1.893 test_samp_reg ------------------------------------------------------------------- required time 1.893 arrival time -1.136 ------------------------------------------------------------------- slack 0.757
이 timing reports는 datapath_only가 포함된 set_max_delay이 계산 범위를 data path로 좁히는 방법을 보여줍니다.