74 lines
2.4 KiB
Tcl
74 lines
2.4 KiB
Tcl
# Test Crpr.cc - Clock Reconvergence Pessimism Removal
|
|
read_liberty ../../test/nangate45/Nangate45_typ.lib
|
|
read_verilog search_crpr.v
|
|
link_design search_crpr
|
|
|
|
create_clock -name clk -period 10 [get_ports clk]
|
|
set_propagated_clock [get_clocks clk]
|
|
set_input_delay -clock clk 1.0 [get_ports in1]
|
|
set_input_delay -clock clk 1.0 [get_ports in2]
|
|
set_output_delay -clock clk 2.0 [get_ports out1]
|
|
|
|
# Add clock uncertainty to trigger CRPR paths
|
|
set_clock_uncertainty 0.5 -setup [get_clocks clk]
|
|
set_clock_uncertainty 0.3 -hold [get_clocks clk]
|
|
|
|
# Add timing derate for early/late
|
|
set_timing_derate -early 0.95
|
|
set_timing_derate -late 1.05
|
|
|
|
puts "--- CRPR with propagated clock, setup ---"
|
|
report_checks -path_delay max -format full_clock_expanded
|
|
|
|
puts "--- CRPR with propagated clock, hold ---"
|
|
report_checks -path_delay min -format full_clock_expanded
|
|
|
|
puts "--- report_checks full_clock ---"
|
|
report_checks -path_delay max -format full_clock
|
|
|
|
puts "--- report_checks between reg1 and reg2 ---"
|
|
report_checks -from [get_pins reg1/CK] -to [get_pins reg2/D] -path_delay max -format full_clock_expanded
|
|
|
|
puts "--- report_checks min between reg1 and reg2 ---"
|
|
report_checks -from [get_pins reg1/CK] -to [get_pins reg2/D] -path_delay min -format full_clock_expanded
|
|
|
|
puts "--- report_clock_skew ---"
|
|
report_clock_skew -setup
|
|
report_clock_skew -hold
|
|
|
|
puts "--- report_clock_latency ---"
|
|
report_clock_latency
|
|
|
|
puts "--- check CRPR mode settings ---"
|
|
puts "CRPR enabled: [sta::crpr_enabled]"
|
|
sta::set_crpr_enabled 1
|
|
puts "CRPR mode: [sta::crpr_mode]"
|
|
sta::set_crpr_mode "same_pin"
|
|
puts "CRPR mode after set: [sta::crpr_mode]"
|
|
report_checks -path_delay max -format full_clock_expanded
|
|
sta::set_crpr_mode "same_transition"
|
|
puts "CRPR mode after set: [sta::crpr_mode]"
|
|
report_checks -path_delay max -format full_clock_expanded
|
|
|
|
puts "--- CRPR disabled ---"
|
|
sta::set_crpr_enabled 0
|
|
report_checks -path_delay max -format full_clock_expanded
|
|
sta::set_crpr_enabled 1
|
|
|
|
puts "--- find_timing_paths with CRPR ---"
|
|
set paths [find_timing_paths -path_delay max -endpoint_count 3]
|
|
puts "Found [llength $paths] paths with CRPR"
|
|
foreach pe $paths {
|
|
puts " slack=[$pe slack]"
|
|
}
|
|
|
|
puts "--- find_timing_paths min with CRPR ---"
|
|
set paths_min [find_timing_paths -path_delay min -endpoint_count 3]
|
|
puts "Found [llength $paths_min] hold paths with CRPR"
|
|
foreach pe $paths_min {
|
|
puts " slack=[$pe slack]"
|
|
}
|
|
|
|
puts "--- report_check_types ---"
|
|
report_check_types -verbose
|