File tree Expand file tree Collapse file tree 2 files changed +16
-9
lines changed Expand file tree Collapse file tree 2 files changed +16
-9
lines changed Original file line number Diff line number Diff line change 2
2
create_clock -name clk_scan_in -period 5 [get_ports {clk_in}]
3
3
create_generated_clock -name clk_scan_out -source clk_in -combinational [get_ports {clk_out}]
4
4
5
- # Scan chain input 1.9 ns setup time, -0.1 ns hold time
6
- set_input_delay -min -0.1 -clock [get_clocks clk_scan_in] [get_ports {data_in}]
7
- set_input_delay -max 1.9 -clock [get_clocks clk_scan_in] [get_ports {data_in}]
5
+ # Scan chain input 0.5 ns setup time, 0.5 ns hold time
6
+ set_input_delay -min 0.5 -clock [get_clocks clk_scan_in] [get_ports {data_in}]
7
+ set_input_delay -max 0.5 -clock [get_clocks clk_scan_in] [get_ports {data_in}]
8
8
9
- # Scan chain output 2.1 ns setup time, 0.1 ns hold time
10
- set_output_delay -min -0.1 -clock [get_clocks clk_scan_out] [get_ports {data_out}]
11
- set_output_delay -max 2.1 -clock [get_clocks clk_scan_out] [get_ports {data_out}]
9
+ # Scan chain output 1.5 ns setup time, 1.5 ns hold time
10
+ set_output_delay -min -1.5 -clock [get_clocks clk_scan_out] [get_ports {data_out}]
11
+ set_output_delay -max 1.5 -clock [get_clocks clk_scan_out] [get_ports {data_out}]
12
12
13
13
# Misc
14
14
set_max_fanout $::env(SYNTH_MAX_FANOUT) [current_design]
Original file line number Diff line number Diff line change @@ -45,9 +45,16 @@ module scan_wrapper_USER_MODULE_ID (
45
45
46
46
// scan chain - link all the flops, with data coming from data_in
47
47
assign scan_data_in = {scan_data_out[NUM_IOS- 2 :0 ], data_in};
48
-
49
- // end of the chain is the last scan flop's out
50
- assign data_out = scan_data_out[NUM_IOS- 1 ];
48
+
49
+ // end of the chain is a negedge FF to increase hold margin between blocks
50
+ sky130_fd_sc_hd__dfrtn_1 out_flop (
51
+ .RESET_B (1'b1 ),
52
+ .CLK_N (clk),
53
+ .D (scan_data_out[NUM_IOS-1 ]),
54
+ .Q (data_out),
55
+ .VPWR (1'b1 ),
56
+ .VGND (1'b0 )
57
+ );
51
58
52
59
// scan flops have a mux on their inputs to choose either data from the user module or the previous flop's output
53
60
// https://antmicro-skywater-pdk-docs.readthedocs.io/en/test-submodules-in-rtd/contents/libraries/sky130_fd_sc_ls/cells/sdfxtp/README.html
You can’t perform that action at this time.
0 commit comments