nvidia-stack / mfma-core /asic /scripts /signoff_sta.tcl
SNAPKITTYWEST's picture
chore: push from SNAPKITTYWEST local build
e92f76f verified
Raw History Blame Contribute Delete
1.25 kB
# signoff_sta.tcl — PrimeTime Static Timing Analysis Sign-Off
# Target: 300 MHz (3.33 ns clock period) on TSMC N6
set search_path ". /opt/foundry/tsmc/n6/lib/typ /opt/foundry/tsmc/n6/lib/bc /opt/foundry/tsmc/n6/lib/wc"
set link_path "* tsmc_n6_typ.db tsmc_n6_wc.db tsmc_n6_bc.db"
read_verilog mfma_core_gated.v
current_design fpga_mfma_accelerator
link_design
read_parasitics -format spef mfma_core_post_route.spef
create_clock -name clk -period 3.33 [get_ports clk]
set_clock_uncertainty 0.15 [get_clocks clk]
set_clock_transition 0.08 [get_clocks clk]
set_operating_conditions -max WC_TYP -min BC_TYP
set_wire_load_mode enclosed
check_timing
update_timing -full
redirect -file reports/setup_violations.rpt { report_timing -delay_type max -max_paths 50 -path_type full_clock_expanded }
redirect -file reports/hold_violations.rpt { report_timing -delay_type min -max_paths 50 -path_type full_clock_expanded }
redirect -file reports/summary_qor.rpt { report_qor }
set worst_slack [get_attribute [get_timing_paths -delay_type max] slack]
if {$worst_slack < 0.0} {
puts "ERROR: Timing violation detected! Worst negative slack: $worst_slack ns"
exit 1
} else {
puts "SUCCESS: Timing closure achieved. Worst slack: $worst_slack ns"
}