알겠습니다. 이게 뭡니까?
이 페이지는 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로 좁히는 방법을 보여줍니다.