215 lines
6.7 KiB
Tcl
215 lines
6.7 KiB
Tcl
# Test STA variable settings for Variables.cc code coverage
|
|
# Targets: Variables.cc, Sdc.cc (variable-related paths)
|
|
read_liberty ../../test/nangate45/Nangate45_typ.lib
|
|
read_verilog sdc_test2.v
|
|
link_design sdc_test2
|
|
|
|
# Setup basic constraints
|
|
create_clock -name clk1 -period 10 [get_ports clk1]
|
|
create_clock -name clk2 -period 20 [get_ports clk2]
|
|
set_input_delay -clock clk1 2.0 [get_ports in1]
|
|
set_output_delay -clock clk1 3.0 [get_ports out1]
|
|
puts "PASS: basic setup"
|
|
|
|
############################################################
|
|
# CRPR variables
|
|
############################################################
|
|
|
|
# Enable/disable CRPR
|
|
set ::sta_crpr_enabled 1
|
|
puts "PASS: sta_crpr_enabled = $::sta_crpr_enabled"
|
|
|
|
set ::sta_crpr_enabled 0
|
|
puts "PASS: sta_crpr_enabled = $::sta_crpr_enabled"
|
|
|
|
set ::sta_crpr_enabled 1
|
|
puts "PASS: sta_crpr_enabled re-enabled"
|
|
|
|
# CRPR mode
|
|
set ::sta_crpr_mode "same_pin"
|
|
puts "PASS: sta_crpr_mode = same_pin"
|
|
|
|
set ::sta_crpr_mode "same_transition"
|
|
puts "PASS: sta_crpr_mode = same_transition"
|
|
|
|
# Read back crpr mode
|
|
set mode $::sta_crpr_mode
|
|
puts "PASS: read sta_crpr_mode = $mode"
|
|
|
|
############################################################
|
|
# Condition default arcs
|
|
############################################################
|
|
|
|
set ::sta_cond_default_arcs_enabled 1
|
|
puts "PASS: sta_cond_default_arcs_enabled = 1"
|
|
|
|
set ::sta_cond_default_arcs_enabled 0
|
|
puts "PASS: sta_cond_default_arcs_enabled = 0"
|
|
|
|
# Read back
|
|
set val $::sta_cond_default_arcs_enabled
|
|
puts "PASS: read sta_cond_default_arcs_enabled = $val"
|
|
|
|
############################################################
|
|
# Gated clock checks
|
|
############################################################
|
|
|
|
set ::sta_gated_clock_checks_enabled 1
|
|
puts "PASS: sta_gated_clock_checks_enabled = 1"
|
|
|
|
set ::sta_gated_clock_checks_enabled 0
|
|
puts "PASS: sta_gated_clock_checks_enabled = 0"
|
|
|
|
set val $::sta_gated_clock_checks_enabled
|
|
puts "PASS: read sta_gated_clock_checks_enabled = $val"
|
|
|
|
############################################################
|
|
# Bidirectional instance paths
|
|
############################################################
|
|
|
|
set ::sta_internal_bidirect_instance_paths_enabled 1
|
|
puts "PASS: sta_internal_bidirect_instance_paths_enabled = 1"
|
|
|
|
set ::sta_internal_bidirect_instance_paths_enabled 0
|
|
puts "PASS: sta_internal_bidirect_instance_paths_enabled = 0"
|
|
|
|
set val $::sta_internal_bidirect_instance_paths_enabled
|
|
puts "PASS: read sta_internal_bidirect_instance_paths_enabled = $val"
|
|
|
|
############################################################
|
|
# Bidirectional net paths
|
|
############################################################
|
|
|
|
set ::sta_bidirect_net_paths_enabled 1
|
|
puts "PASS: sta_bidirect_net_paths_enabled = 1"
|
|
|
|
set ::sta_bidirect_net_paths_enabled 0
|
|
puts "PASS: sta_bidirect_net_paths_enabled = 0"
|
|
|
|
set val $::sta_bidirect_net_paths_enabled
|
|
puts "PASS: read sta_bidirect_net_paths_enabled = $val"
|
|
|
|
############################################################
|
|
# Clock through tristate
|
|
############################################################
|
|
|
|
set ::sta_clock_through_tristate_enabled 1
|
|
puts "PASS: sta_clock_through_tristate_enabled = 1"
|
|
|
|
set ::sta_clock_through_tristate_enabled 0
|
|
puts "PASS: sta_clock_through_tristate_enabled = 0"
|
|
|
|
set val $::sta_clock_through_tristate_enabled
|
|
puts "PASS: read sta_clock_through_tristate_enabled = $val"
|
|
|
|
############################################################
|
|
# Preset/clear arcs
|
|
############################################################
|
|
|
|
set ::sta_preset_clear_arcs_enabled 1
|
|
puts "PASS: sta_preset_clear_arcs_enabled = 1"
|
|
|
|
set ::sta_preset_clear_arcs_enabled 0
|
|
puts "PASS: sta_preset_clear_arcs_enabled = 0"
|
|
|
|
set val $::sta_preset_clear_arcs_enabled
|
|
puts "PASS: read sta_preset_clear_arcs_enabled = $val"
|
|
|
|
############################################################
|
|
# Recovery/removal checks
|
|
############################################################
|
|
|
|
set ::sta_recovery_removal_checks_enabled 1
|
|
puts "PASS: sta_recovery_removal_checks_enabled = 1"
|
|
|
|
set ::sta_recovery_removal_checks_enabled 0
|
|
puts "PASS: sta_recovery_removal_checks_enabled = 0"
|
|
|
|
set val $::sta_recovery_removal_checks_enabled
|
|
puts "PASS: read sta_recovery_removal_checks_enabled = $val"
|
|
|
|
############################################################
|
|
# Dynamic loop breaking
|
|
############################################################
|
|
|
|
set ::sta_dynamic_loop_breaking 1
|
|
puts "PASS: sta_dynamic_loop_breaking = 1"
|
|
|
|
set ::sta_dynamic_loop_breaking 0
|
|
puts "PASS: sta_dynamic_loop_breaking = 0"
|
|
|
|
set val $::sta_dynamic_loop_breaking
|
|
puts "PASS: read sta_dynamic_loop_breaking = $val"
|
|
|
|
############################################################
|
|
# Input port default clock
|
|
############################################################
|
|
|
|
set ::sta_input_port_default_clock 1
|
|
puts "PASS: sta_input_port_default_clock = 1"
|
|
|
|
set ::sta_input_port_default_clock 0
|
|
puts "PASS: sta_input_port_default_clock = 0"
|
|
|
|
set val $::sta_input_port_default_clock
|
|
puts "PASS: read sta_input_port_default_clock = $val"
|
|
|
|
############################################################
|
|
# Propagate all clocks
|
|
############################################################
|
|
|
|
set ::sta_propagate_all_clocks 1
|
|
puts "PASS: sta_propagate_all_clocks = 1"
|
|
|
|
set ::sta_propagate_all_clocks 0
|
|
puts "PASS: sta_propagate_all_clocks = 0"
|
|
|
|
set val $::sta_propagate_all_clocks
|
|
puts "PASS: read sta_propagate_all_clocks = $val"
|
|
|
|
############################################################
|
|
# Propagate gated clock enable
|
|
############################################################
|
|
|
|
set ::sta_propagate_gated_clock_enable 1
|
|
puts "PASS: sta_propagate_gated_clock_enable = 1"
|
|
|
|
set ::sta_propagate_gated_clock_enable 0
|
|
puts "PASS: sta_propagate_gated_clock_enable = 0"
|
|
|
|
set val $::sta_propagate_gated_clock_enable
|
|
puts "PASS: read sta_propagate_gated_clock_enable = $val"
|
|
|
|
############################################################
|
|
# POCV enabled (may require SSTA compilation, use catch)
|
|
############################################################
|
|
|
|
catch {
|
|
set ::sta_pocv_enabled 1
|
|
puts "PASS: sta_pocv_enabled = 1"
|
|
set ::sta_pocv_enabled 0
|
|
puts "PASS: sta_pocv_enabled = 0"
|
|
set val $::sta_pocv_enabled
|
|
puts "PASS: read sta_pocv_enabled = $val"
|
|
}
|
|
puts "PASS: pocv test completed (may skip if SSTA not compiled)"
|
|
|
|
############################################################
|
|
# Report default digits
|
|
############################################################
|
|
|
|
set ::sta_report_default_digits 4
|
|
puts "PASS: sta_report_default_digits = 4"
|
|
|
|
set ::sta_report_default_digits 2
|
|
puts "PASS: sta_report_default_digits = 2 (restored)"
|
|
|
|
############################################################
|
|
# Final report to verify everything still works
|
|
############################################################
|
|
|
|
report_checks -from [get_ports in1] -to [get_ports out1]
|
|
puts "PASS: final report_checks"
|
|
|
|
puts "ALL PASSED"
|