3762 lines
157 KiB
Plaintext

#@ #
#@ # Running dc_shell Version J-2014.09-SP3 for amd64 -- Jan 19, 2015
#@ # Date: Mon Mar 12 15:38:31 2018
#@ # Run by: xian001@ic01
#@
source /tools/synopsys/dc/J-2014.09-SP3//admin/setup/.synopsys_dc.setup
#@ # -- Starting source /tools/synopsys/dc/J-2014.09-SP3//admin/setup/.synopsys_dc.setup
#@ #
#@ # ".synopsys_dc.setup" Initialization File for
#@ #
#@ # Dc_Shell and Design_Analyzer
#@ #
#@ # The variables in this file define the behavior of many parts
#@ # of the Synopsys Synthesis Tools. Upon installation, they should
#@ # be reviewed and modified to fit your site's needs. Each engineer
#@ # can have a .synopsys file in his/her home directory or current
#@ # directory to override variable settings in this file.
#@ #
#@ # Each logical grouping of variables is commented as to their
#@ # nature and effect on the Synthesis Commands. Examples of
#@ # variable groups are the Compile Variable Group, which affects
#@ # the designs produced by the COMPILE command, and the Schematic
#@ # Variable Group, which affects the output of the create_schematic
#@ # command.
#@ #
#@ # You can type "man <group_name>_variables" in dc_shell or
#@ # design_analyzer to get help about a group of variables.
#@ # For instance, to get help about the "system" variable group,
#@ # type "help system_variables". You can also type
#@ # "man <variable name>", to get help on the that variable's
#@ # group.
#@ #
#@
#@ # System variables
#@ set sh_command_abbrev_mode "Anywhere"
#@ set sh_continue_on_error "true"
#@ update_app_var -default true sh_continue_on_error
#@ set sh_enable_page_mode "true"
#@ update_app_var -default true sh_enable_page_mode
#@ set sh_source_uses_search_path "true"
#@ update_app_var -default true sh_source_uses_search_path
#@ if {$synopsys_program_name == "dc_shell" || $synopsys_program_name == "de_shell" || $synopsys_program_name == "dc_sms_shell" } {
#@ set sh_new_variable_message "false"
#@ update_app_var -default false sh_new_variable_message
#@ } else {
#@ set sh_new_variable_message "true"
#@ update_app_var -default true sh_new_variable_message
#@ }
#@
#@ if {$synopsys_program_name == "dc_shell"} {
#@ set html_log_enable "false"
#@ set html_log_filename "default.html"
#@ }
#@
#@ if {$synopsys_program_name == "de_shell"} {
#@ set de_log_html_filename "default.html"
#@ }
#@
#@ if { [string compare $dc_shell_mode "tcl"] == 0 } {
#@ set sh_enable_line_editing "true"
#@ set sh_line_editing_mode "emacs"
#@ }
#@
#@ if {$synopsys_program_name == "icc_shell"} {
#@ if {"$sh_output_log_file" == ""} {
#@ set sh_output_log_file "icc_output.txt"
#@ }
#@
#@ ## the variable sh_redirect_progress_messages only makes it possible
#@ ## for some commands to redirect progress messages to the log file,thereby
#@ ## bypassing the console and reducing the volume of messages on the console.
#@ set sh_redirect_progress_messages true
#@ }
#@
#@
#@ # Suppress new variable messages for the following variables
#@ array set auto_index {}
#@ set auto_oldpath ""
#@
#@ # Enable customer support banner on fatal
#@ if { $sh_arch == "linux" || $sh_arch == "amd64" || $sh_arch == "suse32" || $sh_arch == "suse64" || $sh_arch == "sparcOS5" || $sh_arch == "sparc64" || $sh_arch == "x86sol32" || $sh_arch == "x86sol64" || $sh_arch == "rs6000" || $sh_arch == "aix64" } {
#@ setenv SYNOPSYS_TRACE ""
#@ }
#@
#@ #
#@ # Load the procedures which make up part of the user interface.
#@ #
#@ if { [string compare $dc_shell_mode "tcl"] == 0 } {
#@ source $synopsys_root/auxx/syn/.dc_common_procs.tcl
#@ if {$synopsys_program_name != "dc_sms_shell"} {
#@ source $synopsys_root/auxx/syn/.dc_procs.tcl
#@ }
#@ alias list_commands help
#@ }
#@ # -- Starting source /tools/synopsys/dc/J-2014.09-SP3//auxx/syn/.dc_common_procs.tcl
#@ ##############################################################################
#@ #
#@ #
#@ # FILE: auxx/syn/.dc_common_procs.tcl
#@ #
#@ # ABSTRACT: These procedures are part of the PrimeTime and DC
#@ # user interface.
#@ # They are loaded by .synopsys_pt.setup and .synopsys_dc.setup.
#@ #
#@ ##############################################################################
#@ #
#@ #
#@
#@
#@ ##############################################################################
#@ #
#@ #
#@ # PROCEDURE: group_variable
#@ #
#@ # ABSTRACT: Add a variable to the specified variable group.
#@ # This command is typically used by the system
#@ # administrator only.
#@ #
#@ # Below the proc is the command which creates the command
#@ # help information and semantic data for the argument.
#@ #
#@ # RETURNS: 1 if it is successful.
#@ # error code if the variable does not exist.
#@ # error code of the variable is already in the group.
#@ #
#@ # SYNTAX: group_variable group_name variable_name
#@ #
#@ ##############################################################################
#@ #
#@
#@
#@ proc group_variable { args } {
#@ global _Variable_Groups
#@
#@ parse_proc_arguments -args $args resarr
#@ set group $resarr(group)
#@ set var $resarr(variable_name)
#@
#@ if { ![info exists _Variable_Groups($group)] } {
#@ set _Variable_Groups($group) ""
#@ }
#@
#@ # Verify that var exists as a global variable
#@
#@ set cmd "uplevel #0 \{info exists $var\}"
#@ if { ![eval $cmd] } {
#@ return -code error "Variable '$var' is not defined."
#@ }
#@
#@ # Only add it if it's not already there
#@
#@ if { [lsearch $_Variable_Groups($group) $var] == -1 } {
#@ lappend _Variable_Groups($group) $var
#@ }
#@
#@ return 1
#@ }
#@
#@ define_proc_attributes group_variable -info "Add a variable to a variable group" -command_group "Builtins" -permanent -dont_abbrev -define_args {
#@ {group "Variable group name" group}
#@ {variable_name "Variable name" variable_name}}
#@
#@ ##############################################################################
#@ #
#@ #
#@ # PROCEDURE: print_variable_group
#@ #
#@ # ABSTRACT: Shows variables and their values defined in the given group.
#@
#@ #
#@ # Below the proc is the command which creates the command
#@ # help information and semantic data for the argument.
#@ #
#@ # RETURNS: 1 if it is successful.
#@ # error code of the variable group does not exist.
#@ #
#@ # SYNTAX: print_variable_group group_name
#@ #
#@ ##############################################################################
#@ #
#@
#@ proc print_variable_group { args } {
#@ global _Variable_Groups
#@
#@ parse_proc_arguments -args $args resarr
#@ set group $resarr(group)
#@
#@ if { [string compare $group "all"] == 0 } {
#@ set cmd "uplevel #0 \{printvar\}"
#@ return [eval $cmd]
#@ }
#@
#@ if { ![info exists _Variable_Groups($group)] } {
#@ return -code error "Variable group '$group' does not exist."
#@ }
#@
#@ # Print out each global variable in the list. To be totally bulletproof,
#@ # test that each variable in the group is still defined. If not, remove
#@ # it from the list.
#@
#@ foreach var [lsort $_Variable_Groups($group)] {
#@ set cmd "uplevel #0 \{info exists $var\}"
#@ if { ![eval $cmd] } {
#@ # Remove it
#@ set n [lsearch $_Variable_Groups($group) $var]
#@ set $_Variable_Groups($group) [lreplace $_Variable_Groups($group) $n $n]
#@ } else {
#@ # Print it.
#@ set cmd "uplevel #0 \{set $var\}"
#@ set val [eval $cmd]
#@ echo [format "%-25s = \"%s\"" $var $val]
#@ }
#@ }
#@
#@ return 1
#@ }
#@
#@ define_proc_attributes print_variable_group -info "Print the contents of a variable group" -command_group "Builtins" -permanent -define_args {{group "Variable group name" group}}
#@
#@
#@
#@ ##############################################################################
#@ #
#@ #
#@ # PROCEDURE: _Variable_Groups_Get_Groups
#@ #
#@ # ABSTRACT: Return a list of all variable groups. This command is hidden
#@ # and is used by Design Vision.
#@ #
#@ # RETURNS: Tcl list of all variable groups including group all
#@ #
#@ # SYNTAX: _Variable_Groups_Get_Groups
#@ ##############################################################################
#@ #
#@
#@ proc _Variable_Groups_Get_Groups { } {
#@ global _Variable_Groups
#@
#@ set groups [array names _Variable_Groups]
#@ append groups " all"
#@ return $groups
#@ }
#@ define_proc_attributes _Variable_Groups_Get_Groups -hidden
#@
#@
#@ ##############################################################################
#@ #
#@ #
#@ # PROCEDURE: _Variable_Groups_Get_Variables_Of_Group
#@ #
#@ # ABSTRACT: Return a list of all variables of a variable group.
#@ # It also works for pseudo group all.
#@ #
#@ # RETURNS: Tcl list of all variables of a variable group including
#@ # pseudo group all
#@ #
#@ # SYNTAX: _Variable_Groups_Get_Groups
#@ ##############################################################################
#@ #
#@
#@ proc _Variable_Groups_Get_Variables_Of_Group { group } {
#@ global _Variable_Groups
#@
#@ if { [string compare $group "all"] == 0 } {
#@ set itr [array startsearch _Variable_Groups]
#@ for { } { [array anymore _Variable_Groups $itr]} { } {
#@ set index [array nextelement _Variable_Groups $itr]
#@ append vars $_Variable_Groups($index)
#@ }
#@ array donesearch _Variable_Groups $itr
#@ return $vars
#@ }
#@
#@ if { ![info exists _Variable_Groups($group)] } {
#@ return -code error "Variable group '$group' does not exist."
#@ }
#@
#@ # Test if all variables in the list of variables are still defined.
#@ # Remove not existing variables.
#@ foreach var [lsort $_Variable_Groups($group)] {
#@ set cmd "uplevel #0 \{info exists $var\}"
#@ if { ![eval $cmd] } {
#@ # Remove it
#@ set n [lsearch $_Variable_Groups($group) $var]
#@ set $_Variable_Groups($group) [lreplace $_Variable_Groups($group) $n $n]
#@ }
#@ }
#@ return $_Variable_Groups($group)
#@ }
#@ define_proc_attributes _Variable_Groups_Get_Variables_Of_Group -hidden
#@
#@ # -- End source /tools/synopsys/dc/J-2014.09-SP3//auxx/syn/.dc_common_procs.tcl
#@ # -- Starting source /tools/synopsys/dc/J-2014.09-SP3//auxx/syn/.dc_procs.tcl
#@ ##############################################################################
#@ #
#@ #
#@ # FILE: auxx/syn/.dc_procs.tcl
#@ #
#@ # ABSTRACT: These procedures are part of the Design Compiler Tcl
#@ # user interface.
#@ # They are loaded by .synopsys_dc.setup.
#@ #
#@ ##############################################################################
#@ #
#@ #
#@
#@ ##############################################################################
#@ #
#@ #
#@ # PROCEDURE: read_verilog
#@ #
#@ # ABSTRACT: Emulate PT's read_verilog command in DC:
#@ #
#@ # Usage: read_verilog # Read one or more verilog files
#@ # *[-hdl_compiler] (Use HDL Compiler (ignored))
#@ # file_names (Files to read)
#@ #
#@ # Modified: Bharat 11/17/99. Use uplevel to ensure that the command
#@ # sees user/hidden variables from the top level. Star 92970.
#@ #
#@ # Modified: Evan Rosser, 12/5/01. Support -netlist and -rtl flags.
#@ #
#@ ##############################################################################
#@ #
#@
#@ if { $synopsys_program_name != "icc_shell" } {
#@ proc read_verilog { args } {
#@ parse_proc_arguments -args $args ra
#@
#@ set cmd [format {read_file -format verilog %s %s [list %s]} [array names ra -rtl] [array names ra -netlist] $ra(file_names)]
#@ return [uplevel #0 $cmd]
#@ }
#@
#@ define_proc_attributes read_verilog -info " Read one or more verilog files" -permanent -define_args {
#@ {file_names "Files to read" file_names list required}
#@ {-netlist "Use structural Verilog netlist reader" "" boolean optional}
#@ {-rtl "Use RTL Verilog compiler (Presto or HDLC)" "" boolean optional}
#@ {-hdl_compiler "Use HDL Compiler (ignored)" "" boolean {hidden optional}}
#@ }
#@ }
#@
#@ ##############################################################################
#@ #
#@ #
#@ # PROCEDURE: read_sverilog
#@ #
#@ # ABSTRACT: Emulate PT's read_sverilog command in DC:
#@ #
#@ # Usage: read_sverilog # Read one or more systemverilog files
#@ # *[-hdl_compiler] (Use HDL Compiler (ignored))
#@ # file_names (Files to read)
#@ #
#@ # Modified: Yong Xiao, 01/31/2003: Copied from read_verilog to support
#@ # systemverilog input.
#@ #
#@ ##############################################################################
#@ #
#@
#@ proc read_sverilog { args } {
#@ parse_proc_arguments -args $args ra
#@
#@ set cmd [format {read_file -format sverilog %s %s [list %s]} [array names ra -rtl] [array names ra -netlist] $ra(file_names)]
#@ return [uplevel #0 $cmd]
#@ }
#@
#@ define_proc_attributes read_sverilog -info " Read one or more systemverilog files" -permanent -define_args {
#@ {file_names "Files to read" file_names list required}
#@ {-netlist "Use structural Verilog netlist reader" "" boolean optional}
#@ {-rtl "Use RTL Systemverilog compiler (Presto or HDLC)" "" boolean optional}
#@ {-hdl_compiler "Use HDL Compiler (ignored)" "" boolean {hidden optional}}
#@ }
#@
#@ ##############################################################################
#@ #
#@ #
#@ # PROCEDURE: read_vhdl
#@ #
#@ # ABSTRACT: Emulate PT's read_vhdl command in DC:
#@ #
#@ # Usage: read_vhdl # Read one or more vhdl files
#@ # file_names (Files to read)
#@ #
#@ #
#@ ##############################################################################
#@ #
#@
#@ proc read_vhdl { args } {
#@ parse_proc_arguments -args $args ra
#@
#@ set cmd [format {read_file -format vhdl %s [list %s]} [array names ra -netlist] $ra(file_names)]
#@ return [uplevel #0 $cmd]
#@ }
#@
#@ define_proc_attributes read_vhdl -info " Read one or more vhdl files" -permanent -define_args {
#@ {file_names "Files to read" file_names list required}
#@ {-netlist "Use structural VHDL netlist reader" "" boolean optional}
#@ }
#@
#@ ##############################################################################
#@ #
#@ #
#@ # PROCEDURE: read_db
#@ #
#@ # ABSTRACT: Emulate PT's read_db command in DC:
#@ #
#@ # Usage:
#@ # read_db # Read one or more db files
#@ # *[-netlist_only] (Do not read any attributes from db (ignored))
#@ # *[-library] (File is a library DB (ignored))
#@ # file_names (Files to read)
#@ #
#@ #
#@ ##############################################################################
#@ #
#@
#@ proc read_db { args } {
#@ parse_proc_arguments -args $args ra
#@
#@ set cmd [format {read_file -format db [list %s]} $ra(file_names)]
#@ return [uplevel #0 $cmd]
#@ }
#@
#@ define_proc_attributes read_db -info " Read one or more db files" -permanent -define_args {
#@ {file_names "Files to read" file_names list required}
#@ {-netlist_only "Do not read any attributes from db (ignored)" "" boolean {hidden optional}}
#@ {-library "File is a library DB (ignored)" "" boolean {hidden optional}}
#@ }
#@
#@ ##############################################################################
#@ #
#@ #
#@ # PROCEDURE: read_edif
#@ #
#@ # ABSTRACT: Emulate PT's read_edif command in DC:
#@ #
#@ # Usage:
#@ # read_edif # Read one or more edif files
#@ # *[-complete_language] (Use ptxr to read the file (ignored))
#@ # file_names (Files to read)
#@ #
#@ #
#@ ##############################################################################
#@ #
#@ proc read_edif { args } {
#@ parse_proc_arguments -args $args ra
#@
#@ set cmd [format {read_file -format edif [list %s]} $ra(file_names)]
#@ return [uplevel #0 $cmd]
#@ }
#@
#@ define_proc_attributes read_edif -info " Read one or more edif files" -permanent -define_args {
#@ {file_names "Files to read" file_names list required}
#@ {-complete_language "Use ptxr to read the file (ignored)" "" boolean {hidden optional}}
#@ }
#@
#@
#@ ##############################################################################
#@ #
#@ #
#@ # PROCEDURE: read_ddc
#@ #
#@ # ABSTRACT: Shorthand for "read_file -format ddc":
#@ #
#@ # Usage:
#@ # read_ddc # Read one or more ddc files
#@ # *[-scenarios] only read constraints for specified scenarios
#@ # *[-active_scenarios] only activate the specified scenarios
#@ # file_names (Files to read)
#@ #
#@ #
#@ ##############################################################################
#@ #
#@
#@ proc read_ddc { args } {
#@ parse_proc_arguments -args $args ra
#@
#@ set cmd "read_file -format ddc"
#@ if { [ info exists ra(-scenarios) ] } {
#@ set cmd "$cmd -scenarios { $ra(-scenarios) }"
#@ }
#@ if { [ info exists ra(-active_scenarios) ] } {
#@ set cmd "$cmd -active_scenarios { $ra(-active_scenarios) }"
#@ }
#@ set cmd "$cmd { $ra(file_names) }"
#@ return [uplevel \#0 $cmd]
#@ }
#@
#@ define_proc_attributes read_ddc -info "Read one or more ddc files" -permanent -define_args {
#@ {file_names "Files to read" file_names list required}
#@ {-scenarios "list of scenarios to be read from ddc file"
#@ scenario_list list optional}
#@ {-active_scenarios "list of scenarios to be made active"
#@ active_scenario_list list optional}}
#@
#@
#@
#@ ##############################################################################
#@ #
#@ # PROCEDURE: source_tcl_file
#@ #
#@ # ABSTRACT: generic procedure to source another tcl file
#@ #
#@ # Arguments:
#@ # filename tcl filename
#@ # dir directory to check for file
#@ # msg verbose message
#@ # verbose verbose mode
#@ #
#@ # Usage:
#@ #
#@ ##############################################################################
#@ #
#@ proc source_tcl_file { filename dir msg {verbose 1} } {
#@ set __qual_pref_file [file join $dir $filename]
#@ if {[file exists $__qual_pref_file]} {
#@ if { $verbose } {
#@ echo $msg $__qual_pref_file
#@ }
#@ # use catch to recover from errors in the pref file
#@ echo_trace "Sourcing " $__qual_pref_file
#@ # to speed up sourcing use read and eval
#@ set f [open $__qual_pref_file]
#@ if {[catch {namespace eval :: [read -nonewline $f]} __msg]} {
#@ echo Error: Error during sourcing of $__qual_pref_file
#@ if {$__msg != ""} { echo $__msg }
#@ # actually, it looks like $__msg is always null after
#@ # source fails
#@ }
#@ close $f
#@ } else {
#@ echo_trace "Info: File '" $__qual_pref_file "' does not exist!"
#@ }
#@ }
#@ define_proc_attributes source_tcl_file -hidden
#@
#@
#@
#@ ##############################################################################
#@ #
#@ # PROCEDURE: echo_trace
#@ #
#@ # ABSTRACT: echo only in trace modus
#@ #
#@ ##############################################################################
#@ #
#@ proc echo_trace { args } {
#@ if { [info exists ::env(TCL_TRACE)] } {
#@ echo TRACE\> [join $args "" ]
#@ }
#@ }
#@ define_proc_attributes echo_trace -hidden
#@
#@ #############################################################################
#@ #
#@ # Following procedures added for PC write_script
#@ #
#@ #
#@ #
#@ ############################################################################
#@
#@ proc set_cell_restriction { args } {
#@ parse_proc_arguments -args $args ra
#@
#@ set cmd [format {set_attribute %s -type integer restrictions %s } $ra(cell) $ra(value)]
#@ return [uplevel #0 $cmd]
#@
#@ }
#@ define_proc_attributes set_cell_restriction -hidden -define_args { {cell "cell_name" cell string required} {value "value" value string required} }
#@
#@
#@ proc set_cell_soft_keepout {args} {
#@ parse_proc_arguments -args $args ra
#@
#@ set cmd [format {set_keepout_margin -type soft -outer {%d %d %d %d} [list %s] } $ra(llx) $ra(lly) $ra(urx) $ra(ury) $ra(objects)]
#@ return [uplevel #0 $cmd]
#@
#@
#@ }
#@
#@ define_proc_attributes set_cell_soft_keepout -hidden -define_args { {llx "llx" llx float required} {lly "lly" lly float required} {urx "urx" urx float required} {ury "ury" ury float required} {objects "objects" objects list required} }
#@
#@ proc set_cell_hard_keepout {args} {
#@ parse_proc_arguments -args $args ra
#@
#@ set cmd [format {set_keepout_margin -type soft -outer {%d %d %d %d} [list %s] } $ra(llx) $ra(lly) $ra(urx) $ra(ury) $ra(objects)]
#@ return [uplevel #0 $cmd]
#@
#@
#@ }
#@
#@ define_proc_attributes set_cell_hard_keepout -hidden -define_args { {llx "llx" llx float required} {lly "lly" lly float required} {urx "urx" urx float required} {ury "ury" ury float required} {objects "objects" objects list required} }
#@
#@ set mw_use_pdb_lib_format false
#@
#@ ##############################################################################
#@ #
#@ # PROCEDURE: write_milkyway
#@ #
#@ # ABSTRACT: wrapper around save_mw_cel to support original write_milkyway
#@ # interface
#@ # if { [info commands open_mw_cel] == "open_mw_cel" } {}
#@ #
#@ ##############################################################################
#@
#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } {
#@
#@ proc write_milkyway args {
#@
#@ parse_proc_arguments -args $args ra
#@
#@ set cmd [format {save_mw_cel -as %s %s %s %s %s} $ra(-output) [array names ra -overwrite] [array names ra -create] [array names ra -all] [array names ra -dps]]
#@ return [uplevel #0 $cmd]
#@ }
#@
#@ define_proc_attributes write_milkyway -hidden -info " Saves the design as milkyway CEL" -define_args {{-output fileName "Name" string {optional}} {-overwrite "Overwrite the current version" "" boolean {optional}} {-create "Create from scratch" "" boolean {hidden optional}} {-all "Save all modified cells" "" boolean {hidden optional}} {-dps "Save internal DPS design" "" boolean {hidden optional}}}
#@
#@ ##############################################################################
#@ #
#@ # PROCEDURE: read_milkyway
#@ #
#@ # ABSTRACT: wrapper around open_mw_cel to support original read_milkyway
#@ # interface
#@ # MODIFIED: To support DPS in Galileo we need to pass the filtering
#@ # parameters to the DPS command. (Pankaj Goswami, Mar09 2005)
#@ #
#@ ##############################################################################
#@
#@ proc read_milkyway args {
#@
#@ parse_proc_arguments -args $args ra
#@
#@ set cmd [format {open_mw_cel %s} $ra() ]
#@
#@ if {[info exists ra(-library)]} {
#@ set cmd [concat [concat $cmd " -library " ] " $ra(-library) "]
#@ }
#@
#@ if {[info exists ra(-read_only)]} {
#@ lappend cmd {-readonly}
#@ }
#@
#@ # DPS specific stuff
#@ set dps_cmd "vh_set_current_partition "
#@ set read_mw_with_dps_filter false
#@
#@ if {[info exists ra(-vh_module_only)]} {
#@ append dps_cmd "-vh_module_only "
#@ set read_mw_with_dps_filter true
#@ }
#@
#@ if {[info exists ra(-vh_include)]} {
#@ append dps_cmd [concat " -vh_include " " \{ $ra(-vh_include) \}"]
#@ append dps_cmd " "
#@ set read_mw_with_dps_filter true
#@ }
#@
#@ if {[info exists ra(-vh_exclude)]} {
#@ append dps_cmd [concat " -vh_exclude" " \{ $ra(-vh_exclude) \}"]
#@ set read_mw_with_dps_filter true
#@ }
#@
#@ if { $read_mw_with_dps_filter == true } {
#@ # Call the DPS command to store the DPS filtering params.
#@ uplevel #0 $dps_cmd
#@ } else {
#@ # If there is no DPS filtering params, then we need to reset the
#@ # params which might have been stored from the provious command.
#@ append dps_cmd " -vh_reset_partition"
#@ uplevel #0 $dps_cmd
#@ }
#@ # End of DPS stuff
#@
#@ return [uplevel #0 $cmd]
#@ }
#@
#@ define_proc_attributes read_milkyway -hidden -info " Read milkyway CEL from disk" -define_args {{-library "library name" "lib_name" string {optional}} {-read_only "open design in read only mode" "" boolean {optional}} {-version "version number of the CEL" "number" string {optional}} {-vh_module_only "open design for DPS module only partition" "" boolean {hidden optional}} {-vh_include "list of designs to be included in the DPS partition" "include_designs" list {hidden optional}} {-vh_exclude "list of designs to be excluded in the DPS partition" "exclude_designs" list {hidden optional}} {"" fileName "CEL name" string {required}}}
#@
#@ }
#@
#@ ##############################################################################
#@ #
#@ # PROCEDURE: set_mw_technology_file
#@ #
#@ # ABSTRACT: wrapper around update_mw_lib
#@ #
#@ # HISTORY : 2009/6/21, yunz, support ALF reader in ICC
#@ #
#@ ##############################################################################
#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] ||
#@ ([string match -nocase {*d[ce]_shell*} $synopsys_program_name] && [shell_is_mwlib_enabled]) } {
#@
#@ proc set_mw_technology_file args {
#@
#@ parse_proc_arguments -args $args ra
#@
#@ set cmd ""
#@ set lib_name ""
#@ set pdb_file "tech.pdb"
#@ set log_file "log_file"
#@ set alf_file ""
#@
#@ if {[info exists ra(-technology)] && [info exists ra(-plib)]} {
#@ echo "Error: the $ra(-technology) and $ra(-plib) options are mutually exclusive."
#@ return [uplevel #0 $cmd]
#@ } elseif {[info exists ra(-technology)] && [info exists ra(-alf)]} {
#@ echo "Error: the $ra(-technology) and $ra(-alf) options are mutually exclusive."
#@ return [uplevel #0 $cmd]
#@ } elseif {[info exists ra(-plib)] && [info exists ra(-alf)]} {
#@ echo "Error: the $ra(-plib) and $ra(-alf) options are mutually exclusive."
#@ return [uplevel #0 $cmd]
#@ }
#@
#@ if {[info exists ra(-technology)]} {
#@
#@ set cmd [format {update_mw_lib -technology %s %s} $ra(-technology) $ra() ]
#@ }
#@
#@ if {[info exists ra(-plib)]} {
#@
#@ set cmd [format {update_mw_lib %s} $ra() ]
#@
#@ if {[string match -nocase {*.pdb} $ra(-plib) ] } {
#@ set cmd [concat [concat $cmd " -plib " ] " $ra(-plib) "]
#@ }
#@ if {[string match -nocase {*.plib} $ra(-plib) ] } {
#@ set subcmd [format {set lc_enable_legacy_library_compiler true;read_lib %s} $ra(-plib)]
#@ redirect -file log_file {uplevel #0 $subcmd}
#@ set f1 [open $log_file]
#@ while {[gets $f1 line] >= 0} {
#@ set msg1 [lindex $line 3]
#@ set msg2 [lindex $line 4]
#@ if {[string match {read} $msg1] &&
#@ [string match {successfully} $msg2] } {
#@ set msg [lindex $line 2]
#@ set len [string length $msg]
#@ set lib_name [string range $msg 1 [expr $len-2] ]
#@ break
#@ }
#@ if {[string match {old} $msg1] &&
#@ [string match {technology} $msg2] } {
#@ set msg [lindex $line 6]
#@ set len [string length $msg]
#@ set path [string range $msg 1 [expr $len-2] ]
#@ set name1 [lindex [split $path {/}] end]
#@ regexp {(.+?).pdb} $name1 match lib_name
#@ break
#@ }
#@ }
#@ if {$lib_name != ""} {
#@ set subcmd [format {write_lib %s -output %s} $lib_name $pdb_file]
#@ uplevel #0 $subcmd
#@
#@ echo "Command is : "
#@ echo $cmd
#@
#@ set cmd [concat [concat $cmd " -plib " ] " $pdb_file "]
#@
#@ echo "Command is : "
#@ echo $cmd
#@
#@ } else {
#@ echo "Error: Can not compile $ra(-plib) to pdb successfully"
#@ return 0;
#@ }
#@ }
#@ }
#@ if {[info exists ra(-alf)]} {
#@
#@ set cmd [format {update_mw_lib %s} $ra() ]
#@
#@ set cmd [concat [concat $cmd " -alf " ] " $ra(-alf) "]
#@ }
#@
#@ return [uplevel #0 $cmd]
#@ }
#@
#@ define_proc_attributes set_mw_technology_file -hide_body -info " Set technology file for the library " -define_args {{-technology "Technology file name" "tech_file" string {optional}} {-plib "Plib file name" "file_name" string {optional}} {-alf "alf file name" "file_name" string {optional}} {"" "Library name" "libName" string {required}}}
#@
#@ ##############################################################################
#@ #
#@ # PROCEDURE: rebuild_mw_lib
#@ #
#@ # ABSTRACT: wrapper around update_mw_lib
#@ #
#@ ##############################################################################
#@
#@ proc rebuild_mw_lib args {
#@
#@ parse_proc_arguments -args $args ra
#@
#@ set cmd [format {update_mw_lib -rebuild %s} $ra() ]
#@
#@ return [uplevel #0 $cmd]
#@ }
#@
#@ define_proc_attributes rebuild_mw_lib -hide_body -info " Rebuild the library " -define_args {{"" "Library name" "libName" string {required}}}
#@
#@ ##############################################################################
#@ #
#@ # PROCEDURE: set_mw_lib_reference
#@ #
#@ # ABSTRACT: Procedure to set ref lib list or ref ctrl file
#@ #
#@ ##############################################################################
#@
#@ proc set_mw_lib_reference args {
#@
#@ parse_proc_arguments -args $args ra
#@
#@ set cmd ""
#@
#@ if {[info exists ra(-mw_reference_library)]} {
#@ set cmd [format {set_reference_control_file -reference_libraries {%s} %s} $ra(-mw_reference_library) $ra() ]
#@ }
#@
#@ if {[info exists ra(-reference_control_file)]} {
#@ set cmd [format {set_reference_control_file -file %s %s} $ra(-reference_control_file) $ra() ]
#@ }
#@ return [uplevel #0 $cmd]
#@ }
#@
#@ define_proc_attributes set_mw_lib_reference -hide_body -info " Set reference for the library " -define_args {{-mw_reference_library "List of reference libraries" "lib_list" list {optional}} {-reference_control_file "Reference control file" "file_name" string {optional}} {"" "Library name" "libName" string {required}}}
#@
#@ #
#@ ##############################################################################
#@ #
#@ # PROCEDURE: create_mw_lib
#@ #
#@ # ABSTRACT: wrapper around MWUI create_mw_lib
#@ #
#@ ##############################################################################
#@
#@ proc create_mw_lib args {
#@
#@ parse_proc_arguments -args $args ra
#@
#@ set cmd ""
#@ set lib_name ""
#@ set pdb_file "tech.pdb"
#@ set log_file "log_file"
#@
#@ if {[info exists ra(-ignore_case)]} {
#@ set cmd [format {org_create_mw_lib %s} $ra() ]
#@ } else {
#@ set cmd [format {org_create_mw_lib -case_sensitive %s} $ra() ]
#@ }
#@
#@ if {[info exists ra(-technology)]} {
#@ set cmd [concat [concat $cmd " -technology " ] " $ra(-technology) "]
#@ }
#@
#@ if {[info exists ra(-ignore_tf_error)]} {
#@ set cmd [concat $cmd " -ignore_tf_error " ]
#@ }
#@
#@ if {[info exists ra(-hier_separator)]} {
#@ set cmd [concat [concat $cmd " -hier_seperator " ] " $ra(-hier_separator) "]
#@ }
#@
#@ if {[info exists ra(-bus_naming_style)]} {
#@ set cmd [concat [concat $cmd " -bus_naming_style " ] " {$ra(-bus_naming_style)} "]
#@ }
#@
#@
#@ if {[info exists ra(-reference_control_file)]} {
#@ set cmd [concat [concat $cmd " -reference_control_file " ] " $ra(-reference_control_file) "]
#@ }
#@
#@ if {[info exists ra(-mw_reference_library)]} {
#@ set cmd [concat [concat [concat $cmd " -mw_reference_library {" ] " $ra(-mw_reference_library) "] "}"]
#@ }
#@
#@ if {[info exists ra(-plib)]} {
#@ if {[string match -nocase {*.pdb} $ra(-plib) ] } {
#@ set cmd [concat [concat $cmd " -plib " ] " $ra(-plib) "]
#@ }
#@ if {[string match -nocase {*.plib} $ra(-plib) ] } {
#@ set subcmd [format {set lc_enable_legacy_library_compiler true; read_lib %s} $ra(-plib)]
#@ redirect -file log_file {uplevel #0 $subcmd}
#@ set f1 [open $log_file]
#@ while {[gets $f1 line] >= 0} {
#@ set msg1 [lindex $line 3]
#@ set msg2 [lindex $line 4]
#@ if {[string match {read} $msg1] &&
#@ [string match {successfully} $msg2] } {
#@ set msg [lindex $line 2]
#@ set len [string length $msg]
#@ set lib_name [string range $msg 1 [expr $len-2] ]
#@ break
#@ }
#@ if {[string match {old} $msg1] &&
#@ [string match {technology} $msg2] } {
#@ set msg [lindex $line 6]
#@ set len [string length $msg]
#@ set path [string range $msg 1 [expr $len-2] ]
#@ set name1 [lindex [split $path {/}] end]
#@ regexp {(.+?).pdb} $name1 match lib_name
#@ break
#@ }
#@ }
#@ if {$lib_name != ""} {
#@ set subcmd [format {write_lib %s -output %s} $lib_name $pdb_file]
#@ uplevel #0 $subcmd
#@ set cmd [concat [concat $cmd " -plib " ] " $pdb_file "]
#@ } else {
#@ echo "Error: Can not compile $ra(-plib) to pdb successfully"
#@ return 0;
#@ }
#@ }
#@ }
#@
#@ if { ![uplevel #0 $cmd] } {
#@ return 0
#@ }
#@
#@ set cmd ""
#@
#@ if {[info exists ra(-open)]} {
#@ uplevel #0 $cmd
#@ set cmd [format {open_mw_lib %s} $ra() ]
#@ }
#@
#@ return [uplevel #0 $cmd]
#@ }
#@
#@ define_proc_attributes create_mw_lib -hide_body -info " Create a milkyway library " -define_args {{-technology "Technology file name" "file_name" string {optional}} {-ignore_tf_error "Ignore the error in technology file" "" boolean {hidden optional}} {-plib "Plib file name" "file_name" string {optional}} {-hier_separator "Hierarchical separator, default is backslash / " "separator" string {hidden optional}} {-bus_naming_style "Bus naming style" "bus_naming_style" string {optional}} {-ignore_case "Make case insensitive" "" boolean {hidden optional}} {-case_sensitive "Make case sensitive" "" boolean {hidden optional}} {-mw_reference_library "List of reference libraries" "lib_list" list {optional}} {-reference_control_file "Reference control file" "file_name" string {optional}} {-open "Open the library after creation" "" boolean {optional}} {"" "Library name to create" "libName" string {required}}}
#@
#@ #
#@ ##############################################################################
#@ #
#@ # PROCEDURE: report_mw_lib
#@ #
#@ # ABSTRACT: wrapper around MWUI report_mw_lib
#@ #
#@ ##############################################################################
#@
#@ proc report_mw_lib args {
#@
#@ parse_proc_arguments -args $args ra
#@
#@ set cmd ""
#@
#@ if {[info exists ra(-mw_reference_library)]} {
#@ if {[info exists ra()]} {
#@ set cmd [format {org_report_mw_lib -mw_reference_library %s} $ra() ]
#@ } else {
#@ set cmd [format {org_report_mw_lib -mw_reference_library} ]
#@ }
#@ return [uplevel #0 $cmd]
#@ }
#@
#@ if {[info exists ra(-unit_range)]} {
#@ if {[info exists ra()]} {
#@ set cmd [format {org_report_mw_lib -unit_range %s} $ra() ]
#@ } else {
#@ echo "Error : Library name must be specified when using this option"
#@ return 0;
#@ }
#@ return [uplevel #0 $cmd]
#@ }
#@
#@ }
#@
#@ define_proc_attributes report_mw_lib -hide_body -info " Report information about the library " -define_args {{-unit_range "Report unit range of library" "" boolean {optional}} {-mw_reference_library "Report list of reference libraries" "" boolean {optional}} {"" "Library to be reported" "libName" string {optional}}}
#@
#@ ##############################################################################
#@ #
#@ # PROCEDURE: close_mw_lib
#@ #
#@ # ABSTRACT: Wrapper around close_mw_lib to handle -save option properly
#@ # - save_mw_cel to save current cel with dc_netlist
#@ # - close_mw_cel to close current cel
#@ # - save_open_cels to save other open cels before closing library
#@ #
#@ ##############################################################################
#@
#@ proc close_mw_lib args {
#@
#@ parse_proc_arguments -args $args ra
#@
#@ if {$args == ""} {
#@ set cmd [format {icc_is_dc_up} ]
#@ if {[uplevel #0 $cmd]} {
#@ set cmd [format {remove_design -quiet -designs} ]
#@ if {[uplevel #0 $cmd]} {
#@ set cmd [format {org_close_mw_lib } ]
#@ return [uplevel #0 $cmd]
#@ } else {
#@ return 0
#@ }
#@ } else {
#@ set cmd [format {org_close_mw_lib } ]
#@ return [uplevel #0 $cmd]
#@ }
#@ }
#@
#@ if {[info exists ra(-save)]} {
#@
#@ set cmd [format {save_mw_cel} ]
#@ if {![uplevel #0 $cmd]} {
#@ return
#@ }
#@
#@ set cmd [format {close_mw_cel} ]
#@ if {![uplevel #0 $cmd]} {
#@ return
#@ }
#@
#@ set cmd [format {save_open_cels} ]
#@ if {![uplevel #0 $cmd]} {
#@ return
#@ }
#@ }
#@
#@ set cmd [format {org_close_mw_lib} ]
#@ return [uplevel #0 $cmd]
#@ }
#@
#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } {
#@ define_proc_attributes close_mw_lib -hide_body -info " Closes the milkyway library " -define_args {{-save "Save open cels" "" boolean {optional}} {"" "libraries to be closed" "lib list" list {hidden optional}}}
#@ } else {
#@ define_proc_attributes close_mw_lib -hide_body -info " Closes the milkyway library " -define_args {{-no_save "Don't save open cels" "" boolean {hidden optional}} {"" "libraries to be closed" "lib list" list {hidden optional}}}
#@ }
#@ ##############################################################################
#@ #
#@ # PROCEDURE: write_mw_lib_files
#@ #
#@ # ABSTRACT: Write technology or reference control file
#@ # History: Yun Zhang 2012/12/11, public option -stream_layer_map_file
#@ # History: Yun Zhang 2012/9/5. support new hidden option -vt_cell_placement_properties
#@ # History: Yun Zhang 2011/12/5. add new hidden option -stream_layer_map_file
#@ #
#@ ##############################################################################
#@ proc write_mw_lib_files args {
#@
#@ parse_proc_arguments -args $args ra
#@
#@ set cmd ""
#@
#@ if {[info exists ra(-reference_control_file)]} {
#@ #Option -reference_contrl_file, -plib and -technology are exclusive.
#@ # If both of them are set at the same time, error reported.
#@ # 9000273455, by xqsun, 2009/2/4
#@ if {[info exists ra(-technology)]} {
#@ echo "Error: Cannot specify '-reference_control_file' with '-technology'.(CMD-001)"
#@ return 0
#@ } elseif {[info exists ra(-plib)]} {
#@ echo "Error: Cannot specify '-reference_control_file' with '-plib'.(CMD-001)"
#@ return 0
#@ } elseif {[info exists ra(-vt_cell_placement_properties)]} {
#@ echo "Error: Cannot specify '-reference_control_file' with '-vt_cell_placement_properties'.(CMD-001)"
#@ return 0
#@ } elseif {[info exists ra(-stream_layer_map_file)]} {
#@ echo "Error: Cannot specify '-reference_control_file' with '-stream_layer_map_file'.(CMD-001)"
#@ return 0
#@ } else {
#@ set cmd [format {report_mw_lib_ref_ctrl_file -output %s %s} $ra(-output) $ra() ]
#@ return [uplevel #0 $cmd]
#@ }
#@ }
#@
#@ if {[info exists ra(-technology)]} {
#@ if {[info exists ra(-plib)]} {
#@ echo "Error: Cannot specify '-technology' with '-plib'.(CMD-001)"
#@ return 0
#@ } elseif {[info exists ra(-vt_cell_placement_properties)]} {
#@ echo "Error: Cannot specify '-technology' with '-vt_cell_placement_properties'.(CMD-001)"
#@ return 0
#@ } elseif {[info exists ra(-stream_layer_map_file)]} {
#@ echo "Error: Cannot specify '-technology' with '-stream_layer_map_file'.(CMD-001)"
#@ return 0
#@ } else {
#@ set cmd [format {org_report_mw_lib -output %s %s} $ra(-output) $ra() ]
#@ return [uplevel #0 $cmd]
#@ }
#@ }
#@
#@ if {[info exists ra(-plib)]} {
#@ if {[info exists ra(-stream_layer_map_file)]} {
#@ echo "Error: Cannot specify '-plib' with '-stream_layer_map_file'.(CMD-001)"
#@ return 0
#@ } elseif {[info exists ra(-vt_cell_placement_properties)]} {
#@ echo "Error: Cannot specify '-plib' with '-vt_cell_placement_properties'.(CMD-001)"
#@ return 0
#@ } else {
#@ set cmd [format {write_plib -lib_name %s %s} $ra() $ra(-output) ]
#@ return [uplevel #0 $cmd]
#@ }
#@ }
#@
#@ if {[info exists ra(-vt_cell_placement_properties)]} {
#@ if {[info exists ra(-stream_layer_map_file)]} {
#@ echo "Error: Cannot specify '-vt_cell_placement_properties' with '-stream_layer_map_file'.(CMD-001)"
#@ return 0
#@ } else {
#@ set cmd [format {org_report_mw_lib -vt_cell_placement_properties -output %s %s} $ra(-output) $ra() ]
#@ return [uplevel #0 $cmd]
#@ }
#@ }
#@
#@ if {[info exists ra(-stream_layer_map_file)]} {
#@ set cmd [format {org_report_mw_lib -stream_layer_map_file %s -output %s %s} $ra(-stream_layer_map_file) $ra(-output) $ra() ]
#@ return [uplevel #0 $cmd]
#@ }
#@
#@ }
#@
#@ define_proc_attributes write_mw_lib_files -hide_body -info " Write technology or reference control file " -define_args {{-technology "Dump technology file" "" boolean {optional}} {-plib "Dump plib file" "" boolean {optional}} {-vt_cell_placement_properties "Dump multi-VT cells' implant layer information of library" "" boolean {optional hidden}} {-reference_control_file "Dump reference control file" "" boolean {optional}} {-stream_layer_map_file "Dump layer map file during stream in/out" "" string {optional}} {-output "Output file" "file_name" string {required}} {"" "Library to be reported" "libName" string {required}}}
#@ }
#@ ##############################################################################
#@ #
#@ # PROCEDURE: close_mw_cel
#@ #
#@ # ABSTRACT: Wrapper around close_mw_cel to add -save option
#@ # remove_timing_design is the command to shutdown dc netlist
#@ #
#@ ##############################################################################
#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } {
#@
#@ proc close_mw_cel args {
#@
#@ parse_proc_arguments -args $args ra
#@
#@ global mw_is_all_views
#@ set cmd [format {icc_is_dc_up} ]
#@ set dc_is_up [uplevel #0 $cmd]
#@
#@ set cmd_close [format {org_close_mw_cel} ]
#@
#@ if {[info exists ra(-all_views)]} {
#@ set cmd_close [format {%s -all_views} $cmd_close]
#@ set mw_is_all_views 1
#@ }
#@ if {[info exists ra(-all_versions)]} {
#@ set cmd_close [format {%s -all_versions} $cmd_close]
#@ }
#@ if {[info exists ra(-save)]} {
#@ set cmd_close [format {%s -save} $cmd_close]
#@ }
#@ if {[info exists ra(-verbose)]} {
#@ set cmd_close [format {%s -verbose} $cmd_close]
#@ }
#@ if {[info exists ra(-hierarchy)]} {
#@ set cmd_close [format {%s -hierarchy} $cmd_close]
#@ }
#@
#@ ui_util_clean_saved_lib_attr $args
#@
#@ set cmd ""
#@ set lcels ""
#@ set is_current_closed 1
#@
#@ if {[info exists ra()]} {
#@ set lcels $ra()
#@ }
#@ set len [string length $lcels]
#@ if {$len > 0} {
#@ set is_current_closed [is_current_mw_cel $lcels]
#@ set cmd_close [format {%s {%s}} $cmd_close $lcels]
#@ }
#@ if {[uplevel #0 $cmd_close]} {
#@ set mw_is_all_views 0
#@ if {$dc_is_up == 1} {
#@ if {$is_current_closed == 1} {
#@ set cmd [format {remove_design -quiet -designs} ]
#@ return [uplevel #0 $cmd]
#@ }
#@ return 1
#@ } else {
#@ return 1
#@ }
#@ } else {
#@ set mw_is_all_views 0
#@ return 0
#@ }
#@ }
#@
#@ define_proc_attributes close_mw_cel -hide_body -info " Closes the design " -define_args {{-save "Save the design" "" boolean {optional}} {-discard "Discard any changes" "" boolean {optional hidden}} {-verbose "Print out debugging messages" "" boolean {optional hidden}} {-hierarchy "Close top design and its child designs" "" boolean {optional}} {-all_views "Close all views of the design" "" boolean {optional}} {-all_versions "Close all versions of the design" "" boolean {optional}} {"" "designs to be closed" "design list" list {optional}}}
#@
#@ ##############################################################################
#@ #
#@ # PROCEDURE: save_all_mw_cel
#@ #
#@ # ABSTRACT: Wrapper around save_mw_cel to save all the open cels. Needed for Black box flow.
#@ #
#@ ##############################################################################
#@
#@ proc save_all_mw_cels { } {
#@ set top_cel [get_attribute [current_mw_cel] name]
#@
#@ set cels [fp_get_open_cells]
#@
#@ foreach cel $cels {
#@ if {$cel != $top_cel} {
#@ current_mw_cel $cel
#@
#@ save_mw_cel
#@ }
#@ }
#@
#@ current_mw_cel $top_cel
#@
#@ save_mw_cel
#@ }
#@
#@ icc_hide_cmd save_all_mw_cels
#@
#@ ##############################################################################
#@ # PROCEDURE: execute_command_and_create_cel_from_scratch
#@ # ABSTRACT: This procedure executes the given command and creates the CEL
#@ # from scratch after executing this command.
#@ ##############################################################################
#@ proc execute_command_and_create_cel_from_scratch {org_cmd_name args} {
#@ global mw_create_cel_force
#@ global mw_enable_auto_cel
#@ global mw_force_auto_cel
#@
#@ set lib [current_mw_lib]
#@
#@ # If no MW lib, design is not from MW. Execute the original command
#@ # and return.
#@ if {$lib == ""} {
#@ return [eval $org_cmd_name $args]
#@ }
#@
#@ # Get values of few variables.
#@ set incr_mode $mw_create_cel_force
#@ set mw_create_cel_force TRUE
#@
#@ # Get auto cel mode, disable it temporarily if enabled.
#@ set auto_cel_mode $mw_enable_auto_cel
#@ set mw_enable_auto_cel FALSE
#@
#@ # Check if the already existing CEL is auto-CEL.
#@ set auto_cel 0
#@ if {[is_cel_auto_cel]} {
#@ set auto_cel 1
#@ } elseif {![get_top_cel_mwid]} {
#@ set auto_cel 1
#@ }
#@
#@
#@ # Run the original command, if not successful restore the incr_mode
#@ # variable and return. No CEL is created.
#@ if {![eval $org_cmd_name $args]} {
#@ set mw_create_cel_force $incr_mode
#@ set mw_enable_auto_cel $auto_cel_mode
#@ return 0
#@ }
#@
#@ # Restore auto_cel mode
#@ set mw_enable_auto_cel $auto_cel_mode
#@
#@ # Now create auto or real CEL depending on what the original CEL was.
#@ if {$auto_cel == "1"} {
#@ # Force creation of auto-CEL, since commands other than read_def/pdef
#@ # do not decouple CEL from DC.
#@
#@ set mw_force_auto_cel TRUE
#@ set cmd [format {save_mw_cel -auto}]
#@ } else {
#@ if [get_top_cel_mwid] {
#@ set cmd [format {save_mw_cel -create}]
#@ echo "Information: Command not supported by incr. update or write-thru."
#@ echo " Creating new CEL from scratch, old CEL will be closed."
#@ }
#@ }
#@
#@ # Create the Auto CEL or normal CEL from scratch.
#@ if {![uplevel #0 $cmd]} {
#@ set mw_create_cel_force $incr_mode
#@ set mw_force_auto_cel FALSE
#@ return 0
#@ }
#@
#@ set mw_create_cel_force $incr_mode
#@ set mw_force_auto_cel FALSE
#@ return 1
#@ }
#@
#@ define_proc_attributes execute_command_and_create_cel_from_scratch -hidden -hide_body
#@
#@ ##############################################################################
#@ # PROCEDURE: read_def
#@ # ABSTRACT: Wrapper around read_def to handle incremental update properly
#@ # if MW based read_def is used, bypass the wrapper
#@ # enable_milkyway_def_reader_writer must be TRUE and use_pdb_lib_format must
#@ # be false for MW read_Def to be run, use wrapper if either condition fails
#@ ##############################################################################
#@ rename -force dc_read_def org_read_def
#@ icc_hide_cmd org_read_def
#@ proc dc_read_def args {
#@ parse_proc_arguments -args $args ra
#@
#@ return [eval execute_command_and_create_cel_from_scratch "org_read_def" $args]
#@ }
#@
#@ define_proc_attributes dc_read_def -hide_body -info " Read a def file " -define_args {{-design "name of design for which clusters are to be read" "" string {optional}} {-quiet "do not print out any warnings" "" boolean {optional}} {-verbose "print out more warnings" "" boolean {optional}} {-allow_physical_cells "allow physical cells" "" boolean {optional}} {-allow_physical_ports "allow physical ports" "" boolean {optional}} {-allow_physical_nets "allow physical nets" "" boolean {optional}} {-skip_signal_nets "skip signal nets" "" boolean {optional}} {-incremental "incremental" "" boolean {optional}} {-enforce_scaling "enforce_scaling" "" boolean {optional}} {-move_bounds "move bounds" "" boolean {optional}} {"" "input def file names" "input_def_file_name" string {required}}}
#@
#@
#@ ##############################################################################
#@ # PROCEDURE: group
#@ # ABSTRACT: Wrapper around group to handle incremental update properly
#@ ##############################################################################
#@ rename -force group org_group
#@ icc_hide_cmd org_group
#@ proc group args {
#@ parse_proc_arguments -args $args ra
#@ return [eval execute_command_and_create_cel_from_scratch "org_group" $args]
#@ }
#@
#@ define_proc_attributes group -hide_body -info " create new hierarchy" -define_args {{-except "cells not to be included in the group" "exclude_list" list {optional}}
#@ {-design_name "name of design created for new hierarchy" "design_name" string {optional}}
#@ {-cell_name "name of cell created for new hierarchy" "cell_name" string {optional}}
#@ {-logic "group any combinational elements" "" boolean {optional}}
#@ {-pla "group any PLA elements" "" boolean {optional}}
#@ {-fsm "group all elements part of a finite state machine" "" boolean {optional}}
#@ {-hdl_block "name of hdl_block to group" "" string {optional}}
#@ {-hdl_bussed "group all bussed gates under this block" "" boolean {optional}}
#@ {-hdl_all_blocks "group all hdl blocks under this block" "" boolean {optional}}
#@ {-soft "set the group_name attribute" "" boolean {optional}}
#@ {"" "cells to be included in the group" "cell_list" list {optional}}}
#@
#@ ##############################################################################
#@ # PROCEDURE: copy_design
#@ # ABSTRACT: Wrapper around copy_design to handle incremental update properly
#@ ##############################################################################
#@ rename -force copy_design org_copy_design
#@ icc_hide_cmd org_copy_design
#@ proc copy_design args {
#@ parse_proc_arguments -args $args ra
#@ return [eval execute_command_and_create_cel_from_scratch "org_copy_design" $args]
#@ }
#@
#@ define_proc_attributes copy_design -hide_body -info " copy_design" -define_args {{"" "List of designs to be copied" "design_list" list {required}}
#@ {"" "Name of new design or target file" "target_name" string {required}}}
#@
#@ ##############################################################################
#@ # PROCEDURE: create_design
#@ # ABSTRACT: Wrapper around create_design to handle incremental update properly
#@ ##############################################################################
#@ rename -force create_design org_create_design
#@ icc_hide_cmd org_create_design
#@ proc create_design args {
#@ parse_proc_arguments -args $args ra
#@ return [eval execute_command_and_create_cel_from_scratch "org_create_design" $args]
#@ }
#@
#@ define_proc_attributes create_design -hide_body -info " Creates a design in dc_shell memory" -define_args {{"" "name of the design to create" "<design_name>" string {required}}
#@ {"" "name of file for design; optional" "<file_name>" string {optional}}}
#@
#@ ##############################################################################
#@ # PROCEDURE: reset_design
#@ # ABSTRACT: Wrapper around reset_design to handle incremental update properly
#@ ##############################################################################
#@ #rename -force reset_design org_reset_design
#@ #icc_hide_cmd org_reset_design
#@ #proc reset_design args {
#@ # parse_proc_arguments -args $args ra
#@ # return [eval execute_command_and_create_cel_from_scratch "org_reset_design" $args]
#@ #}
#@
#@ ##############################################################################
#@ # PROCEDURE: rename_design
#@ # ABSTRACT: Wrapper around rename_design to handle incremental update properly
#@ ##############################################################################
#@ rename -force rename_design org_rename_design
#@ icc_hide_cmd org_rename_design
#@ proc rename_design args {
#@ parse_proc_arguments -args $args ra
#@ return [eval execute_command_and_create_cel_from_scratch "org_rename_design" $args]
#@ }
#@
#@ define_proc_attributes rename_design -hide_body -info " rename_design" -define_args {{"" "List of designs to be renamed" "design_list" list {required}}
#@ {"" "Name of new design or target file" "target_name" string {required}}}
#@
#@ }
#@
#@ ##############################################################################
#@ # If we are in icc_shell (i.e. Galileo) then
#@ # load the procedures to switch between DC and Milkyway collections.
#@ # Set the default to MW collection unless otherwise specified.
#@ ##############################################################################
#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } {
#@ # load the procedures that switch between DC and MW collections
#@ source $synopsys_root/auxx/syn/collection_procs.tcl
#@
#@ set CS mw
#@
#@ # see if the user wants DC
#@ if {! [catch {getenv USE_DC_COLLECTIONS_ONLY}] &&
#@ [getenv USE_DC_COLLECTIONS_ONLY] } {
#@ set CS dc
#@ }
#@
#@ # set the collection source now
#@ redirect /dev/null {
#@ if {[catch {set_collection_mode -handle $CS}]} {
#@ catch {set_collection_option -handle $CS}
#@ }
#@ }
#@
#@ unset CS
#@ }
#@
#@ ##############################################################################
#@ # procedure for route command
#@ # echo the command to a temp tcl file for seperate process to pick up
#@ ##############################################################################
#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } {
#@ rename -force route org_route
#@ icc_hide_cmd org_route
#@ proc route args {
#@ set route_cmd_file_name ".route_cmd.tcl"
#@ set route_cmd_temp_file_name ".route_cmd.tcl.temp"
#@ set fp [open $route_cmd_file_name "w"]
#@ set route_cmd [concat "sep_proc_route " $args " -child"]
#@ puts $fp $route_cmd
#@ close $fp
#@
#@ uplevel #0 rename -force route route_temp_proc
#@ uplevel #0 rename -force org_route route
#@ set status [ uplevel #0 route $args ]
#@ uplevel #0 rename -force route org_route
#@ uplevel #0 rename -force route_temp_proc route
#@
#@ if { [info exist status ] == 1 } {
#@ return $status
#@ }
#@ return
#@ }
#@ }
#@
#@ ##############################################################################
#@ # Tcl Command: set_ignore_cell
#@ # Description: Load the command only in IC Compiler (icc_shell)
#@ ##############################################################################
#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } {
#@ source $synopsys_root/auxx/syn/psyn/ideal_cell.tcl.e
#@ }
#@
#@ ##############################################################################
#@ # Tcl Command: check_physical_design
#@ # Description: Load the command only in IC Compiler (icc_shell)
#@ ##############################################################################
#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } {
#@ # Load the compiled Tcl byte-code:
#@ # 9000784997: Do not log to command.log when sourcing .tbc files
#@ set prev_sh_source_logging [get_app_var sh_source_logging]
#@ set_app_var sh_source_logging 0
#@ source $synopsys_root/auxx/syn/psyn/check_physical_design_core.tbc
#@ source $synopsys_root/auxx/syn/psyn/check_physical_design_utils.tbc
#@ source $synopsys_root/auxx/syn/psyn/check_physical_design_flows.tbc
#@ source $synopsys_root/auxx/syn/psyn/check_physical_design_reports.tbc
#@ source $synopsys_root/auxx/syn/psyn/check_physical_design_ui.tbc
#@ source $synopsys_root/auxx/syn/psyn/create_qor_snapshot.tbc
#@ source $synopsys_root/auxx/syn/psyn/report_qor_snapshot.tbc
#@ source $synopsys_root/auxx/syn/psyn/msgParser.tbc
#@ source $synopsys_root/auxx/syn/psyn/displacement_gui.tbc
#@ source $synopsys_root/auxx/syn/psyn/categorize_timing_gui.tbc
#@ set_app_var sh_source_logging $prev_sh_source_logging
#@
#@ source $synopsys_root/auxx/syn/psyn/mcmm_utils.tcl.e
#@ source $synopsys_root/auxx/syn/psyn/propagate_all_clocks.tcl.e
#@ }
#@
#@ if { [string match -nocase {*dc_shell*} $synopsys_program_name] && [shell_is_in_topographical_mode] } {
#@ # 9000784997: Do not log to command.log when sourcing .tbc files
#@ set prev_sh_source_logging [get_app_var sh_source_logging]
#@ set_app_var sh_source_logging 0
#@ source $synopsys_root/auxx/syn/psyn/create_qor_snapshot.tbc
#@ source $synopsys_root/auxx/syn/psyn/report_qor_snapshot.tbc
#@ set_app_var sh_source_logging $prev_sh_source_logging
#@
#@ source $synopsys_root/auxx/syn/psyn/mcmm_utils.tcl.e
#@ }
#@
#@ if { $synopsys_program_name == "de_shell" } {
#@ # 9000784997: Do not log to command.log when sourcing .tbc files
#@ set prev_sh_source_logging [get_app_var sh_source_logging]
#@ set_app_var sh_source_logging 0
#@ source $synopsys_root/auxx/syn/psyn/create_qor_snapshot.tbc
#@ source $synopsys_root/auxx/syn/psyn/report_qor_snapshot.tbc
#@ set_app_var sh_source_logging $prev_sh_source_logging
#@
#@ source $synopsys_root/auxx/syn/psyn/mcmm_utils.tcl.e
#@ }
#@
#@ ##############################################################################
#@ # ICC setup and hiding commands/procs etc
#@ ##############################################################################
#@
#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } {
#@ #set save_mw_cel_lib_setup TRUE
#@ #set auto_restore_mw_cel_lib_setup FALSE
#@
#@ alias create_wiring_keepout create_wiring_keepouts
#@ alias get_wiring_keepout get_wiring_keepouts
#@ alias get_placement_keepout get_placement_keepouts
#@ alias create_placement_keepout create_placement_keepouts
#@
#@ icc_hide_cmd execute_command_and_create_cel_from_scratch
#@ icc_hide_cmd dc_read_def
#@ icc_hide_cmd read_edif
#@ icc_hide_cmd read_sverilog
#@ icc_hide_cmd read_vhdl
#@ icc_hide_cmd set_collection_mode
#@ icc_hide_cmd return_dc_collection
#@ icc_hide_cmd return_mw_collection
#@ set mw_use_pdb_lib_format true
#@ }
#@
#@
#@ ##############################################################################
#@ # Tcl Command: get_dont_touch_nets
#@ # Description: wrapper of "get_nets -filter dont_touch_reason==mv"
#@ ##############################################################################
#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } {
#@
#@ proc get_dont_touch_nets args {
#@
#@ parse_proc_arguments -args $args ra
#@
#@ set cmd [format {get_nets}]
#@
#@ if {[info exists ra()]} {
#@ set cmd [format {%s {%s}} $cmd $ra()]
#@ }
#@ if {[info exists ra(-type)]} {
#@ set cmd [format {%s -filter dont_touch_reasons=~*%s*} $cmd $ra(-type)]
#@ }
#@ if {[info exists ra(-hierarchical)]} {
#@ set cmd [format {%s -hierarchical} $cmd]
#@ }
#@ if {[info exists ra(-quiet)]} {
#@ set cmd [format {%s -quiet} $cmd]
#@ }
#@ if {[info exists ra(-regexp)]} {
#@ set cmd [format {%s -regexp} $cmd]
#@ }
#@ if {[info exists ra(-nocase)]} {
#@ set cmd [format {%s -nocase} $cmd]
#@ }
#@ if {[info exists ra(-exact)]} {
#@ set cmd [format {%s -exact} $cmd]
#@ }
#@
#@ return [uplevel #0 $cmd]
#@ }
#@
#@ define_proc_attributes get_dont_touch_nets -info " Get dont_touch nets " -permanent -define_args { {"" "Match net names against patterns" "patterns" list {optional}} {-type "Match net dont_touch reasons" "reasons" list {required}} {-hierarchical "Search level-by-level in current instance" "" boolean {optional}} {-quiet "Suppress all messages" "" boolean {optional hidden}} {-regexp "Patterns are full regular expressions" "" boolean {optional hidden}} {-nocase "With -regexp, matches are case-insensitive" "" boolean {optional hidden}} {-exact "Wildcards are considered as plain characters" "" boolean {optional hidden}} }
#@
#@ alias get_dont_touch_net get_dont_touch_nets
#@ }
#@
#@
#@ ##############################################################################
#@ # return the first {index value} pair in Tcl array ary.
#@ ##############################################################################
#@ proc _snps_array_peek { level ary } {
#@ upvar #$level $ary loc_ary
#@ set ret [list]
#@ set token [array startsearch loc_ary]
#@ while {[array anymore loc_ary $token]} {
#@ set k [array nextelement loc_ary $token]
#@ set v $loc_ary($k)
#@ set ret [list $k $v]
#@ break
#@ }
#@ array donesearch loc_ary $token
#@ return $ret;
#@ }
#@ define_proc_attributes _snps_array_peek -hidden
#@ # -- End source /tools/synopsys/dc/J-2014.09-SP3//auxx/syn/.dc_procs.tcl
#@
#@ # Temporary fix for the LMC_HOME variable- set it to an empty string
#@
#@ if { [catch {getenv LMC_HOME } __err ] != 0 } {
#@ setenv LMC_HOME ""
#@ }
#@
#@
#@ #
#@ #
#@ # Site-Specific Variables
#@ #
#@ # These are the variables that are most commonly changed at a
#@ # specific site, either upon installation of the Synopsys software,
#@ # or by specific engineers in their local .synopsys files.
#@ #
#@ #
#@
#@ # from the System Variable Group
#@ set link_library { * your_library.db }
#@
#@ set search_path [list . ${synopsys_root}/libraries/syn ${synopsys_root}/minpower/syn ${synopsys_root}/dw/syn_ver ${synopsys_root}/dw/sim_ver]
#@ set target_library your_library.db
#@ set synthetic_library ""
#@ set command_log_file "./command.log"
#@ set designer ""
#@ set company ""
#@ set find_converts_name_lists "false"
#@
#@ set symbol_library your_library.sdb
#@
#@ # Turn on Formality SVF recording
#@ if { $synopsys_program_name == "dc_shell" || $synopsys_program_name == "de_shell" || $synopsys_program_name == "design_vision" } {
#@ set_svf -default default.svf
#@ }
#@
#@ # from the Schematic Variable Group
#@
#@ # from the Plot Variable Group
#@ # [froi] 07/06/2012: Remove old Design Analyzer plot_command variable
#@ #if { $sh_arch == "hp700" } {
#@ # set plot_command "lp -d"
#@ #} else {
#@ # set plot_command "lpr -Plw"
#@ #}
#@
#@ set view_command_log_file "./view_command.log"
#@
#@ # from the View Variable group
#@ if { $sh_arch == "hp700" } {
#@ set text_print_command "lp -d"
#@ } else {
#@ set text_print_command "lpr -Plw"
#@ }
#@ #
#@ # System Variable Group:
#@ #
#@ # These variables are system-wide variables.
#@ #
#@ set arch_init_path ${synopsys_root}/${sh_arch}/motif/syn/uid
#@ set auto_link_disable "false"
#@ set auto_link_options "-all"
#@ set uniquify_naming_style "%s_%d"
#@ set verbose_messages "true"
#@ set echo_include_commands "true"
#@ set svf_file_records_change_names_changes "true"
#@ set change_names_update_inst_tree "true"
#@ set change_names_dont_change_bus_members false
#@ set default_name_rules ""
#@ #set tdrc_enable_clock_table_creation "true"
#@
#@ #
#@ # Compile Variable Group:
#@ #
#@ # These variables affect the designs created by the COMPILE command.
#@ #
#@ set compile_assume_fully_decoded_three_state_busses "false"
#@ set compile_no_new_cells_at_top_level "false"
#@ set compile_dont_touch_annotated_cell_during_inplace_opt "false"
#@ set compile_update_annotated_delays_during_inplace_opt "true"
#@ set compile_instance_name_prefix "U"
#@ set compile_instance_name_suffix ""
#@ set compile_negative_logic_methodology "false"
#@ set compile_disable_hierarchical_inverter_opt "false"
#@ set compile_use_low_timing_effort "false"
#@ set compile_fix_cell_degradation "false"
#@ set compile_preserve_subdesign_interfaces "false"
#@ set compile_enable_constant_propagation_with_no_boundary_opt "true"
#@ set port_complement_naming_style "%s_BAR"
#@ set compile_implementation_selection "true"
#@ set compile_delete_unloaded_sequential_cells "true"
#@ set reoptimize_design_changed_list_file_name ""
#@ set compile_checkpoint_phases "false"
#@ set compile_cpu_limit 0.0
#@ set compile_log_format " %elap_time %area %wns %tns %drc %endpoint";
#@ set compile_top_all_paths "false"
#@ set compile_top_acs_partition "false"
#@ set default_port_connection_class "universal"
#@ set compile_hold_reduce_cell_count "false"
#@ set compile_retime_license_behavior "wait"
#@ set dont_touch_nets_with_size_only_cells "false"
#@ if { $synopsys_program_name == "dc_shell" && [shell_is_in_topographical_mode] } {
#@ set dct_prioritize_area_correlation "false"
#@ set compile_error_on_missing_physical_cells "false"
#@ }
#@
#@ set ldd_return_val 0
#@ if { [string compare $dc_shell_mode "default"] == 0 } {
#@ set ldd_script ${synopsys_root}/auxx/syn/scripts/list_duplicate_designs.dcsh
#@ alias list_duplicate_designs "include -quiet ldd_script; dc_shell_status = ldd_return_val "
#@
#@ }
#@ if { [string compare $dc_shell_mode "tcl"] == 0 } {
#@ if {$synopsys_program_name != "dc_sms_shell"} {
#@ source ${synopsys_root}/auxx/syn/scripts/list_duplicate_designs.tcl
#@ # 9000784997: Do not log to command.log when sourcing .tbc files
#@ set prev_sh_source_logging [get_app_var sh_source_logging]
#@ set_app_var sh_source_logging 0
#@ source ${synopsys_root}/auxx/syn/scripts/analyze_datapath.tbc
#@ set_app_var sh_source_logging $prev_sh_source_logging
#@ }
#@ }
#@ # -- Starting source /tools/synopsys/dc/J-2014.09-SP3//auxx/syn/scripts/list_duplicate_designs.tcl
#@ #######################################################################
#@ #
#@ # list_duplicate_designs.tcl 21 Sept. 2006
#@ #
#@ # List designs in dc_shell memory that have the same design name
#@ #
#@ # COPYRIGHT (C) 2006, SYNOPSYS INC., ALL RIGHTS RESERVED.
#@ #
#@ #######################################################################
#@
#@ proc list_duplicate_designs { args } {
#@ parse_proc_arguments -args $args ra
#@
#@ # Get the list of duplicate designs
#@ set the_pid [pid]
#@ set rand_1 [expr int(rand() * 100000)]
#@ set temp_file_1 [format "/tmp/ldd_design_%s_%s" $the_pid $rand_1]
#@
#@ redirect $temp_file_1 { foreach_in_collection ldd_design [find design "*"] {
#@ echo [get_object_name $ldd_design]
#@ } }
#@
#@ set rand_2 [expr int(rand() * 100000)]
#@ set temp_file_2 [format "/tmp/ldd_design_%s_%s" $the_pid $rand_2]
#@
#@ sh sort $temp_file_1 | uniq -d | tee $temp_file_2
#@ file delete $temp_file_1
#@
#@ # Report duplicates
#@ if { ! [file size $temp_file_2] } {
#@ echo [concat {No duplicate designs found.}]
#@ set ldd_return_val 0
#@ } else {
#@ set rand_3 [expr int(rand() * 100000)]
#@ set temp_file_3 [format "/tmp/ldd_design_%s_%s" $the_pid $rand_3]
#@ echo {Warning: Multiple designs in memory with the same design name.}
#@ echo {}
#@ echo { Design File Path}
#@ echo { ------ ---- ----}
#@ list_designs -table > $temp_file_3
#@ echo [sh fgrep -f $temp_file_2 $temp_file_3 | sort | grep -v 'Design.*File.*Path']
#@ file delete $temp_file_3
#@ set ldd_return_val 1
#@ }
#@
#@ # Clean up
#@ file delete $temp_file_2
#@
#@ set list_duplicate_designs1 $ldd_return_val
#@ }
#@
#@ define_proc_attributes list_duplicate_designs -info " List designs of same names" -permanent -define_args {
#@ }
#@ # -- End source /tools/synopsys/dc/J-2014.09-SP3//auxx/syn/scripts/list_duplicate_designs.tcl
#@
#@
#@ set compile_log_format " %elap_time %area %wns %tns %drc %endpoint";
#@
#@ set compile_top_all_paths "false"
#@ alias compile_inplace_changed_list_file_name reoptimize_design_changed_list_file_name
#@
#@ #
#@ # These variables affects compile, report_timing and report_constraints
#@ # commands.
#@ #
#@ set enable_recovery_removal_arcs "false"
#@ set timing_report_attributes {dont_touch dont_use map_only size_only ideal_net infeasible_paths}
#@
#@ #
#@ # Multibit Variable Group:
#@ #
#@ # These variables affect the multibit mapping functionality
#@ #
#@
#@ set bus_multiple_separator_style ","
#@
#@ #
#@ # ILM Variable Group:
#@ #
#@ # These variables affect Interface Logic Model functionality
#@ #
#@
#@ set ilm_ignore_percentage 25
#@
#@ #
#@ # Estimator Variable Group:
#@ #
#@ # These variables affect the designs created by the ESTIMATE command.
#@ #
#@ set estimate_resource_preference "fast"
#@ alias est_resource_preference estimate_resource_preference
#@ set lbo_lfo_enable_at_pin_count 3
#@ set lbo_cells_in_regions "false"
#@
#@ # Synthetic Library Group:
#@ #
#@ # These variable affect synthetic library processing.
#@ #
#@ set cache_dir_chmod_octal "777"
#@ set cache_file_chmod_octal "666"
#@ set cache_read "~"
#@ set cache_read_info "false"
#@ set cache_write "~"
#@ set cache_write_info "false"
#@ set synlib_dont_get_license {}
#@ set synlib_library_list {DW01 DW02 DW03 DW04 DW05 DW06 DW07}
#@ set synlib_wait_for_design_license {}
#@ set synlib_dwhomeip {}
#@
#@ #
#@ # Insert_DFT Variable Group:
#@ #
#@ #set test_default_client_order [list]
#@ set insert_dft_clean_up "true"
#@ set insert_test_design_naming_style "%s_test_%d"
#@ # /*insert_test_scan_chain_only_one_clock = "false"
#@ # Replace by command line option (star 17215) -- Denis Martin 28-Jan-93*/
#@ set test_clock_port_naming_style "test_c%s"
#@ set test_scan_clock_a_port_naming_style "test_sca%s"
#@ set test_scan_clock_b_port_naming_style "test_scb%s"
#@ set test_scan_clock_port_naming_style "test_sc%s"
#@ set test_scan_enable_inverted_port_naming_style "test_sei%s"
#@ set test_scan_enable_port_naming_style "test_se%s"
#@ set test_scan_in_port_naming_style "test_si%s%s"
#@ set test_scan_out_port_naming_style "test_so%s%s"
#@ set test_non_scan_clock_port_naming_style "test_nsc_%s"
#@ set test_default_min_fault_coverage 95
#@ set test_dedicated_subdesign_scan_outs "false"
#@ set test_disable_find_best_scan_out "false"
#@ set test_dont_fix_constraint_violations "false"
#@ set test_isolate_hier_scan_out 0
#@ set test_mode_port_naming_style "test_mode%s"
#@ set test_mode_port_inverted_naming_style "test_mode_i%s"
#@ set compile_dont_use_dedicated_scanout 1
#@ set test_mux_constant_si "false"
#@
#@ #
#@ # Analyze_Scan Variable Group:
#@ #
#@ # These variables affect the designs created by the PREVIEW_SCAN command.
#@ #
#@ set test_preview_scan_shows_cell_types "false"
#@ set test_scan_link_so_lockup_key "l"
#@ set test_scan_link_wire_key "w"
#@ set test_scan_segment_key "s"
#@ set test_scan_true_key "t"
#@
#@ #
#@ # bsd Variable Group:
#@
#@ # These variables affect the report generated by the check_bsd command
#@ # and the BSDLout generated by the write_bsdl command.
#@ #
#@ set test_user_test_data_register_naming_style "UTDR%d"
#@
#@ set test_user_defined_instruction_naming_style "USER%d"
#@
#@ set test_bsdl_default_suffix_name "bsdl"
#@
#@ set test_bsdl_max_line_length 80
#@
#@ set test_cc_ir_masked_bits 0
#@
#@ set test_cc_ir_value_of_masked_bits 0
#@
#@ set test_bsd_allow_tolerable_violations "false"
#@ set test_bsd_optimize_control_cell "false"
#@ set test_bsd_control_cell_drive_limit 0
#@ set test_bsd_manufacturer_id 0
#@ set test_bsd_part_number 0
#@ set test_bsd_version_number 0
#@ set bsd_max_in_switching_limit 60000
#@ set bsd_max_out_switching_limit 60000
#@
#@ #
#@ # TestManager Variable Group:
#@ #
#@ # These variables affect the TestManager methodology.
#@ #
#@ set multi_pass_test_generation "false"
#@
#@ #
#@ # TestSim Variable Group:
#@ #
#@ # These variables affect the TestSim behavior.
#@ #
#@ # set testsim_print_stats_file "true"
#@
#@ # Test DRC Variable Group:
#@ #
#@ # These variables affect the check_test command.
#@ #
#@ set test_capture_clock_skew "small_skew"
#@ set test_allow_clock_reconvergence "true"
#@ set test_check_port_changes_in_capture "true"
#@ set test_infer_slave_clock_pulse_after_capture "infer"
#@
#@ #
#@ # Test Variable Group:
#@ #
#@ # These variables affect the rtldrc, check_test, write_test_protocol
#@ # and write_test command.
#@ #
#@ set test_default_delay 0.0
#@ set test_default_bidir_delay 0.0
#@ set test_default_strobe 40.0
#@ set test_default_strobe_width 0.0
#@ set test_default_period 100.0
#@ set test_stil_max_line_length 72
#@
#@ #added for B-2008.09-place_opt-004 to disable this option in ICC
#@
#@ if { $synopsys_program_name != "icc_shell"} {
#@ set test_write_four_cycle_stil_protocol "false"
#@ set test_protocol_add_cycle "true"
#@ set test_stil_multiclock_capture_procedures "false"
#@ set write_test_new_translation_engine "false"
#@ set test_default_scan_style "multiplexed_flip_flop"
#@ set test_jump_over_bufs_invs "true"
#@ set test_point_keep_hierarchy "false"
#@ set test_mux_constant_so "false"
#@ set test_use_test_models "false"
#@ set test_stil_netlist_format "db"
#@ group_variable test "test_protocol_add_cycle"
#@ group_variable test "test_write_four_cycle_stil_protocol"
#@ group_variable test "test_stil_multiclock_capture_procedures"
#@ group_variable test "test_default_scan_style"
#@ group_variable preview_scan "test_jump_over_bufs_invs"
#@ group_variable insert_dft "test_point_keep_hierarchy"
#@ group_variable insert_dft "test_mux_constant_so"
#@ group_variable test "test_stil_netlist_format"
#@ }
#@ set test_rtldrc_latch_check_style "default"
#@ set test_enable_capture_checks "true"
#@ set ctldb_use_old_prot_flow "false"
#@ set test_bsd_default_delay 0.0
#@ set test_bsd_default_bidir_delay 0.0
#@ set test_bsd_default_strobe 95.0
#@ set test_bsd_default_strobe_width 0.0
#@
#@ #
#@ # Test Variable Group:
#@ #
#@ # These variables affects the set_scan_state command.
#@ #
#@
#@ set compile_seqmap_identify_shift_registers_with_synchronous_logic_ascii false
#@
#@ #
#@ # Write_Test Variable Group:
#@ #
#@ # These variables affect output of the WRITE_TEST command.
#@ #
#@ set write_test_input_dont_care_value "X"
#@ set write_test_vector_file_naming_style "%s_%d.%s"
#@ set write_test_scan_check_file_naming_style "%s_schk.%s"
#@ set write_test_pattern_set_naming_style "TC_Syn_%d"
#@ set write_test_max_cycles 0
#@ set write_test_max_scan_patterns 0
#@ # /*retain "tssi_ascii" (equivalent to "tds") for backward compatability */
#@ set write_test_formats {synopsys tssi_ascii tds verilog vhdl wgl}
#@ set write_test_include_scan_cell_info "true"
#@ set write_test_round_timing_values "true"
#@
#@
#@ #
#@ # Schematic and EDIF and Hdl Variable Groups:
#@ #
#@ # These variables affect the schematics created by the
#@ # create_schematic command, define the behavior of the
#@ # DC system EDIF interface, and are for controlling hdl
#@ # reading.
#@ #
#@ set bus_dimension_separator_style {][}
#@ set bus_naming_style {%s[%d]}
#@
#@
#@ #
#@ # Schematic and EDIF Variable Groups:
#@ #
#@ # These variables affect the schematics created by the
#@ # create_schematic command and define the behavior of
#@ # the DC system EDIF interface.
#@ #
#@ set bus_range_separator_style ":"
#@
#@
#@ #
#@ # EDIF and Io Variable Groups:
#@ #
#@ # These variables define the behavior of the DC system EDIF interface and
#@ # define the behavior of the DC system interfaces, i.e. LSI, Mentor, TDL, SGE,# etc.
#@
#@ set bus_inference_descending_sort "true"
#@ set bus_inference_style ""
#@ set write_name_nets_same_as_ports "false"
#@ #
#@ # Schematic Variable Group:
#@ #
#@ # These variables affect the schematics created by the
#@ # create_schematic command.
#@ #
#@ set font_library "1_25.font"
#@ set generic_symbol_library "generic.sdb"
#@
#@ #
#@ # Io Variable Group:
#@ #
#@ # These variables define the behavior of the DC system
#@ # interfaces, i.e. LSI, Mentor, TDL, SGE, etc.
#@ #
#@ #set db2sge_output_directory ""
#@ #set db2sge_scale "2"
#@ #set db2sge_overwrite "true"
#@ #set db2sge_display_symbol_names "false"
#@
#@
#@ #set db2sge_display_pin_names "false"
#@ #set db2sge_display_instance_names "false"
#@ #set db2sge_use_bustaps "false"
#@ #set db2sge_use_compound_names "true"
#@ #set db2sge_bit_type "std_logic"
#@ #set db2sge_bit_vector_type "std_logic_vector"
#@ #set db2sge_one_name "'1'"
#@ #set db2sge_zero_name "'0'"
#@ #set db2sge_unknown_name "'X'"
#@ #set db2sge_target_xp "false"
#@ #set db2sge_tcf_package_file "synopsys_tcf.vhd"
#@ #set db2sge_use_lib_section ""
#@ #set db2sge_script ""
#@ #set db2sge_command ""
#@
#@ # set equationout_and_sign "*"
#@ # set equationout_or_sign "+"
#@ # set equationout_postfix_negation "true"
#@
#@ # # [wjchen] 2006/08/14: The following variables are obsoleted for DC simpilification.
#@ #set lsiin_net_name_prefix "NET_"
#@ #set lsiout_inverter_cell ""
#@ #set lsiout_upcase "true"
#@
#@ #set mentor_bidirect_value "INOUT"
#@ #set mentor_do_path ""
#@ #set mentor_input_output_property_name "PINTYPE"
#@ #set mentor_input_value "IN"
#@ #set mentor_logic_one_value "1SF"
#@ #set mentor_logic_zero_one_property_name "INIT"
#@ #set mentor_logic_zero_value "0SF"
#@ #set mentor_output_value "OUT"
#@ #set mentor_primitive_property_name "PRIMITIVE"
#@ #set mentor_primitive_property_value "MODULE"
#@ #set mentor_reference_property_name "COMP"
#@ #set mentor_search_path ""
#@ #set mentor_write_symbols "true"
#@
#@ ## [wjchen] 0606_simp
#@ #set pla_read_create_flip_flop "false"
#@ #set tdlout_upcase "true"
#@
#@ # # [wjchen] 2006/08/14: The following4 variables are obsoleted for DC simpilification.
#@ # set xnfout_constraints_per_endpoint "50"
#@ # set xnfout_default_time_constraints true
#@ # set xnfout_clock_attribute_style "CLK_ONLY"
#@ # set xnfout_library_version ""
#@
#@ # # [wjchen] 2006/08/11: The following 8 variables are obsoleted for DC simpilification.
#@ # set xnfin_family "4000"
#@ # set xnfin_ignore_pins "GTS GSR GR"
#@ # set xnfin_dff_reset_pin_name "RD"
#@ # set xnfin_dff_set_pin_name "SD"
#@ # set xnfin_dff_clock_enable_pin_name "CE"
#@ # set xnfin_dff_data_pin_name "D"
#@ # set xnfin_dff_clock_pin_name "C"
#@ # set xnfin_dff_q_pin_name "Q"
#@ #
#@
#@ #
#@ # EDIF Variable Group:
#@ #
#@ # These variables define the behavior of the DC system
#@ # EDIF interface.
#@ #
#@
#@ ##[wjchen] 2006/08/24
#@
#@ # set bus_extraction_style {%s[%d:%d]}
#@
#@ ##[wjchen] 2006/08/24
#@ #set edifin_autoconnect_offpageconnectors "false"
#@ #set edifin_autoconnect_ports "false"
#@ #set edifin_dc_script_flag ""
#@ #set edifin_delete_empty_cells "true"
#@ #set edifin_delete_ripper_cells "true"
#@ #set edifin_ground_net_name ""
#@ #set edifin_ground_net_property_name ""
#@ #set edifin_ground_net_property_value ""
#@ #set edifin_ground_port_name ""
#@ #set edifin_instance_property_name ""
#@ #set edifin_portinstance_disabled_property_name ""
#@ #set edifin_portinstance_disabled_property_value ""
#@ #set edifin_portinstance_property_name ""
#@ #set edifin_power_net_name ""
#@ #set edifin_power_net_property_name ""
#@ #set edifin_power_net_property_value ""
#@ #set edifin_power_port_name ""
#@ #set edifin_use_identifier_in_rename "false"
#@ #set edifin_view_identifier_property_name ""
#@ #set edifin_lib_logic_1_symbol ""
#@ #set edifin_lib_logic_0_symbol ""
#@ #set edifin_lib_in_port_symbol ""
#@ #set edifin_lib_out_port_symbol ""
#@ #set edifin_lib_inout_port_symbol ""
#@ #set edifin_lib_in_osc_symbol ""
#@ #set edifin_lib_out_osc_symbol ""
#@ #set edifin_lib_inout_osc_symbol ""
#@ #set edifin_lib_mentor_netcon_symbol ""
#@ #set edifin_lib_ripper_bits_property ""
#@ #set edifin_lib_ripper_bus_end ""
#@ #set edifin_lib_ripper_cell_name ""
#@ #set edifin_lib_ripper_view_name ""
#@ #set edifin_lib_route_grid 1024
#@ #set edifin_lib_templates {}
#@ #set edifout_dc_script_flag ""
#@ #set edifout_design_name "Synopsys_edif"
#@ #set edifout_designs_library_name "DESIGNS"
#@ #set edifout_display_instance_names "false"
#@ #set edifout_display_net_names "false"
#@ #set edifout_external "true"
#@ #set edifout_external_graphic_view_name "Graphic_representation"
#@ #set edifout_external_netlist_view_name "Netlist_representation"
#@ #set edifout_external_schematic_view_name "Schematic_representation"
#@ #set edifout_ground_name "logic_0"
#@ #set edifout_ground_net_name ""
#@ #set edifout_ground_net_property_name ""
#@ #set edifout_ground_net_property_value ""
#@ #set edifout_ground_pin_name "logic_0_pin"
#@ #set edifout_ground_port_name "GND"
#@ #set edifout_instance_property_name ""
#@ #set edifout_instantiate_ports "false"
#@ #set edifout_library_graphic_view_name "Graphic_representation"
#@ #set edifout_library_netlist_view_name "Netlist_representation"
#@ #set edifout_library_schematic_view_name "Schematic_representation"
#@ #set edifout_merge_libraries "false"
#@ #set edifout_multidimension_arrays "false"
#@ #set edifout_name_oscs_different_from_ports "false"
#@ #set edifout_name_rippers_same_as_wires "false"
#@ #set edifout_netlist_only "false"
#@ #set edifout_no_array "false"
#@ #set edifout_numerical_array_members "false"
#@ #set edifout_pin_direction_in_value ""
#@ #set edifout_pin_direction_inout_value ""
#@ #set edifout_pin_direction_out_value ""
#@ #set edifout_pin_direction_property_name ""
#@ #set edifout_pin_name_property_name ""
#@ #set edifout_portinstance_disabled_property_name ""
#@ #set edifout_portinstance_disabled_property_value ""
#@ #set edifout_portinstance_property_name ""
#@ #set edifout_power_and_ground_representation "cell"
#@ #set edifout_power_name "logic_1"
#@ #set edifout_power_net_name ""
#@ #set edifout_power_net_property_name ""
#@ #set edifout_power_net_property_value ""
#@ #set edifout_power_pin_name "logic_1_pin"
#@ #set edifout_power_port_name "VDD"
#@ #set edifout_skip_port_implementations "false"
#@ #set edifout_target_system ""
#@ #set edifout_top_level_symbol "true"
#@ #set edifout_translate_origin ""
#@ #set edifout_unused_property_value ""
#@ #set edifout_write_attributes "false"
#@ #set edifout_write_constraints "false"
#@ #set edifout_write_properties_list {}
#@ #set read_name_mapping_nowarn_libraries {}
#@ #set write_name_mapping_nowarn_libraries {}
#@
#@ #
#@ # Hdl and Vhdlio Variable Groups:
#@ #
#@ # These variables are for controlling hdl reading, writing,
#@ # and optimizing.
#@ #
#@ set hdlin_enable_upf_compatible_naming "FALSE"
#@ set hdlin_auto_save_templates "FALSE"
#@ set hdlin_generate_naming_style "%s_%d"
#@ set hdlin_enable_relative_placement "rb"
#@ set hdlin_mux_rp_limit "128x4"
#@ set hdlin_generate_separator_style "_"
#@ set hdlin_ignore_textio_constructs "TRUE"
#@ set hdlin_infer_function_local_latches "FALSE"
#@ set hdlin_keep_signal_name "all_driving"
#@ set hdlin_module_arch_name_splitting "FALSE"
#@ set hdlin_preserve_sequential "none"
#@ set hdlin_presto_net_name_prefix "N"
#@ set hdlin_presto_cell_name_prefix "C"
#@ set hdlin_strict_verilog_reader "FALSE"
#@ set hdlin_prohibit_nontri_multiple_drivers "TRUE"
#@ if { $synopsys_program_name == "de_shell" } {
#@ set hdlin_elab_errors_deep "TRUE"
#@ } else {
#@ set hdlin_elab_errors_deep "FALSE"
#@ }
#@ set hdlin_mux_size_min 2
#@ set hdlin_subprogram_default_values "FALSE"
#@ set hdlin_field_naming_style ""
#@ set hdlin_upcase_names "FALSE"
#@ set hdlin_sv_union_member_naming "FALSE"
#@ set hdlin_vhdl_std 2008
#@ set hdlin_vhdl93_concat "TRUE"
#@ set hdlin_vhdl_syntax_extensions "FALSE"
#@ set hdlin_analyze_verbose_mode 0
#@ set hdlin_report_sequential_pruning "FALSE"
#@ set hdlin_vrlg_std 2005
#@ set hdlin_sverilog_std 2012
#@ set hdlin_while_loop_iterations 4096
#@ set hdlin_reporting_level "basic"
#@ set hdlin_autoread_verilog_extensions ".v"
#@ set hdlin_autoread_sverilog_extensions ".sv .sverilog"
#@ set hdlin_autoread_vhdl_extensions ".vhd .vhdl"
#@ set hdlin_autoread_exclude_extensions ""
#@
#@ set bus_minus_style "-%d"
#@ set hdlin_latch_always_async_set_reset FALSE
#@ set hdlin_ff_always_sync_set_reset FALSE
#@ set hdlin_ff_always_async_set_reset TRUE
#@ set hdlin_check_input_netlist FALSE
#@ set hdlin_check_no_latch FALSE
#@ set hdlin_mux_for_array_read_sparseness_limit 90
#@ set hdlin_infer_mux "default"
#@ set hdlin_mux_oversize_ratio 100
#@ set hdlin_mux_size_limit 32
#@ set hdlin_mux_size_only 1
#@ set hdlin_infer_multibit "default_none"
#@ set hdlin_enable_rtldrc_info "false"
#@ set hdlin_interface_port_ABI 3
#@ set hdlin_shorten_long_module_name "false"
#@ set hdlin_module_name_limit 256
#@ set hdlin_enable_assertions "FALSE"
#@ set hdlin_enable_configurations "FALSE"
#@ set hdlin_sv_blackbox_modules ""
#@ set hdlin_sv_tokens "FALSE"
#@ set hdlin_sv_packages "enable"
#@ set hdlin_verification_priority "FALSE"
#@ set hdlin_enable_elaborate_ref_linking "FALSE"
#@ set hdlin_enable_hier_naming "FALSE"
#@ set hdlin_vhdl_mixed_language_instantiation "FALSE"
#@ set hdl_preferred_license ""
#@ set hdl_keep_licenses "true"
#@ set hlo_resource_allocation "constraint_driven"
#@ set sdfout_top_instance_name ""
#@ set sdfout_time_scale 1.0
#@ set sdfout_min_rise_net_delay 0.
#@ set sdfout_min_fall_net_delay 0.
#@ set sdfout_min_rise_cell_delay 0.
#@ set sdfout_min_fall_cell_delay 0.
#@ set sdfout_write_to_output "false"
#@ set sdfout_allow_non_positive_constraints "false"
#@ set sdfin_top_instance_name ""
#@ set sdfin_min_rise_net_delay 0.
#@ set sdfin_min_fall_net_delay 0.
#@ set sdfin_min_rise_cell_delay 0.
#@ set sdfin_min_fall_cell_delay 0.
#@ set sdfin_rise_net_delay_type "maximum"
#@ set sdfin_fall_net_delay_type "maximum"
#@ set sdfin_rise_cell_delay_type "maximum"
#@ set sdfin_fall_cell_delay_type "maximum"
#@ set site_info_file ${synopsys_root}/admin/license/site_info
#@ if { [string compare $dc_shell_mode "tcl"] == 0 } {
#@ alias site_info sh cat $site_info_file
#@ } else {
#@ alias site_info "sh cat site_info_file"
#@ }
#@ set template_naming_style "%s_%p"
#@ set template_parameter_style "%s%d"
#@ set template_separator_style "_"
#@ set verilogout_equation "false"
#@ set verilogout_ignore_case "false"
#@ set verilogout_no_tri "false"
#@ set verilogout_inout_is_in "false"
#@ set verilogout_single_bit "false"
#@ set verilogout_higher_designs_first "FALSE"
#@ # set verilogout_levelize "FALSE"
#@ set verilogout_include_files {}
#@ set verilogout_unconnected_prefix "SYNOPSYS_UNCONNECTED_"
#@ set verilogout_show_unconnected_pins "FALSE"
#@ set verilogout_no_negative_index "FALSE"
#@ #set enable_2003.03_verilog_reader TRUE
#@ # to have a net instead of 1'b0 and 1'b1 in inouts:
#@ set verilogout_indirect_inout_connection "FALSE"
#@
#@ # set vhdlout_architecture_name "SYN_%a_%u"
#@ set vhdlout_bit_type "std_logic"
#@ # set vhdlout_bit_type_resolved "TRUE"
#@ set vhdlout_bit_vector_type "std_logic_vector"
#@ # set vhdlout_conversion_functions {}
#@ # set vhdlout_dont_write_types "FALSE"
#@ set vhdlout_equations "FALSE"
#@ set vhdlout_one_name "'1'"
#@ set vhdlout_package_naming_style "CONV_PACK_%d"
#@ set vhdlout_preserve_hierarchical_types "VECTOR"
#@ set vhdlout_separate_scan_in "FALSE"
#@ set vhdlout_single_bit "USER"
#@ set vhdlout_target_simulator ""
#@ set vhdlout_three_state_name "'Z'"
#@ set vhdlout_three_state_res_func ""
#@ # set vhdlout_time_scale 1.0
#@ set vhdlout_top_configuration_arch_name "A"
#@ set vhdlout_top_configuration_entity_name "E"
#@ set vhdlout_top_configuration_name "CFG_TB_E"
#@ set vhdlout_unknown_name "'X'"
#@ set vhdlout_upcase "FALSE"
#@ set vhdlout_use_packages {IEEE.std_logic_1164}
#@ set vhdlout_wired_and_res_func ""
#@ set vhdlout_wired_or_res_func ""
#@ set vhdlout_write_architecture "TRUE"
#@ set vhdlout_write_components "TRUE"
#@ set vhdlout_write_entity "TRUE"
#@ set vhdlout_write_top_configuration "FALSE"
#@ # set vhdlout_synthesis_off "TRUE"
#@ set vhdlout_zero_name "'0'"
#@ #set vhdlout_levelize "FALSE"
#@ set vhdlout_dont_create_dummy_nets "FALSE"
#@ set vhdlout_follow_vector_direction "TRUE"
#@
#@
#@ # vhdl netlist reader variables
#@ set enable_vhdl_netlist_reader "FALSE"
#@
#@ # variables pertaining to VHDL library generation
#@ set vhdllib_timing_mesg "true"
#@ set vhdllib_timing_xgen "false"
#@ set vhdllib_timing_checks "true"
#@ set vhdllib_negative_constraint "false"
#@ set vhdllib_glitch_handle "true"
#@ set vhdllib_pulse_handle "use_vhdllib_glitch_handle"
#@ # /*vhdllib_architecture = {FTBM, UDSM, FTSM, FTGS, VITAL}; */
#@ set vhdllib_architecture {VITAL}
#@ set vhdllib_tb_compare 0
#@ set vhdllib_tb_x_eq_dontcare FALSE
#@ set vhdllib_logic_system "ieee-1164"
#@ set vhdllib_logical_name ""
#@
#@ # variables pertaining to technology library processing
#@ set read_db_lib_warnings FALSE
#@ set read_translate_msff TRUE
#@ set libgen_max_differences -1
#@
#@ #
#@ # Gui Variable Group
#@ # used for design_vision and psyn_gui
#@ #
#@ set gui_auto_start 0
#@ set gui_start_option_no_windows 0
#@ group_variable gui_variables "gui_auto_start"
#@ group_variable gui_variables "gui_start_option_no_windows"
#@
#@ #
#@ # If you like emacs, uncomment the next line
#@ # set text_editor_command "emacs -fn 8x13 %s &" ;
#@
#@ # You can delete pairs from this list, but you can't add new ones
#@ # unless you also update the UIL files. So, customers can not add
#@ # dialogs to this list, only Synopsys can do that.
#@ #
#@ set view_independent_dialogs { "test_report" " Test Reports " "report_print" " Report " "report_options" " Report Options " "report_win" " Report Output " "manual_page" " Manual Page " }
#@
#@ # if color Silicon Graphics workstation
#@ if { [info exists x11_vendor_string] && [info exists x11_is_color]} {
#@ if { $x11_vendor_string == "Silicon" && $x11_is_color == "true" } {
#@ set x11_set_cursor_foreground "magenta"
#@ set view_use_small_cursor "true"
#@ set view_set_selecting_color "white"
#@ }
#@ }
#@
#@ # if running on an Apollo machine
#@ set found_x11_vendor_string_apollo 0
#@ set found_arch_apollo 0
#@ if { [info exists x11_vendor_string]} {
#@ if { $x11_vendor_string == "Apollo "} {
#@ set found_x11_vendor_string_apollo 1
#@ }
#@ }
#@ if { [info exists arch]} {
#@ if { $arch == "apollo"} {
#@ set found_arch_apollo 1
#@ }
#@ }
#@ if { $found_x11_vendor_string_apollo == 1 || $found_arch_apollo == 1} {
#@ set enable_page_mode "false"
#@ } else {
#@ set enable_page_mode "true"
#@ }
#@
#@ # don't work around this bug on the Apollo
#@ if { $found_x11_vendor_string_apollo == 1} {
#@ set view_extend_thick_lines "false"
#@ } else {
#@ set view_extend_thick_lines "true"
#@ }
#@
#@ #
#@ # Suffix Variable Group:
#@ #
#@ # Suffixes recognized by the Design Analyzer menu in file choices
#@ #
#@ if { $synopsys_program_name == "design_vision" || $synopsys_program_name == "psyn_gui" } {
#@ # For star 93040 do NOT include NET in list, 108991 : pdb suffix added
#@ set view_read_file_suffix {db gdb sdb pdb edif eqn fnc lsi mif pla st tdl v vhd vhdl xnf}
#@ } else {
#@ set view_read_file_suffix {db gdb sdb edif eqn fnc lsi mif NET pla st tdl v vhd vhdl xnf}
#@ }
#@
#@ set view_analyze_file_suffix {v vhd vhdl}
#@ set view_write_file_suffix {gdb db sdb do edif eqn fnc lsi NET neted pla st tdl v vhd vhdl xnf}
#@ set view_execute_script_suffix {.script .scr .dcs .dcv .dc .con}
#@ set view_arch_types {sparcOS5 hpux10 rs6000 sgimips}
#@
#@ #
#@ # links_to_layout Variable Group:
#@ #
#@ # These variables affect the read_timing, write_timing
#@ # set_annotated_delay, compile, create_wire_load and reoptimize_design
#@ # commands.
#@ #
#@ if {$synopsys_program_name != "dc_sms_shell"} {
#@ set auto_wire_load_selection "true"
#@ set compile_create_wire_load_table "false"
#@ }
#@ set rtl_load_resistance_factor 0.0
#@
#@ # power Variable Group:
#@ #
#@ # These variables affect the behavior of power optimization and analysis.
#@ #
#@
#@ set power_keep_license_after_power_commands "false"
#@ set power_rtl_saif_file "power_rtl.saif"
#@ set power_sdpd_saif_file "power_sdpd.saif"
#@ set power_preserve_rtl_hier_names "false"
#@ set power_do_not_size_icg_cells "true"
#@ set power_hdlc_do_not_split_cg_cells "false"
#@ set power_cg_flatten "false"
#@ set power_opto_extra_high_dynamic_power_effort "false"
#@ set power_default_static_probability 0.5
#@ set power_default_toggle_rate 0.1
#@ set power_default_toggle_rate_type "fastest_clock"
#@ set power_model_preference "nlpm"
#@ set power_sa_propagation_effort "low"
#@ set power_sa_propagation_verbose "false"
#@ set power_fix_sdpd_annotation "true"
#@ set power_fix_sdpd_annotation_verbose "false"
#@ set power_sdpd_message_tolerance 0.00001
#@ set do_operand_isolation "false"
#@ set power_cg_module_naming_style ""
#@ set power_cg_cell_naming_style ""
#@ set power_cg_gated_clock_net_naming_style ""
#@ set power_rclock_use_asynch_inputs "false"
#@ set power_rclock_inputs_use_clocks_fanout "true"
#@ set power_rclock_unrelated_use_fastest "true"
#@ set power_lib2saif_rise_fall_pd "false"
#@ set power_min_internal_power_threshold ""
#@
#@
#@ # SystemC related variables
#@ set systemcout_levelize "true"
#@ set systemcout_debug_mode "false"
#@
#@ # ACS Variables
#@ if { [info exists acs_work_dir] } {
#@ set acs_area_report_suffix "area"
#@ set acs_autopart_max_area "0.0"
#@ set acs_autopart_max_percent "0.0"
#@ set acs_budgeted_cstr_suffix "con"
#@ set acs_compile_script_suffix "autoscr"
#@ set acs_constraint_file_suffix "con"
#@ set acs_cstr_report_suffix "cstr"
#@ set acs_db_suffix "db"
#@ set acs_dc_exec ""
#@ set acs_default_pass_name "pass"
#@ set acs_exclude_extensions {}
#@ set acs_exclude_list [list $synopsys_root]
#@ set acs_global_user_compile_strategy_script "default"
#@ set acs_hdl_verilog_define_list {}
#@ set acs_hdl_source {}
#@ set acs_lic_wait 0
#@ set acs_log_file_suffix "log"
#@ set acs_make_args "set acs_make_args"
#@ set acs_make_exec "gmake"
#@ set acs_makefile_name "Makefile"
#@ set acs_num_parallel_jobs 1
#@ set acs_override_report_suffix "report"
#@ set acs_override_script_suffix "scr"
#@ set acs_qor_report_suffix "qor"
#@ set acs_timing_report_suffix "tim"
#@ set acs_use_autopartition "false"
#@ set acs_use_default_delays "false"
#@ set acs_user_budgeting_script "budget.scr"
#@ set acs_user_compile_strategy_script_suffix "compile"
#@ set acs_verilog_extensions {.v}
#@ set acs_vhdl_extensions {.vhd}
#@ set acs_work_dir [pwd]
#@ set check_error_list [list CMD-004 CMD-006 CMD-007 CMD-008 CMD-009 CMD-010 CMD-011 CMD-012 CMD-014 CMD-015 CMD-016 CMD-019 CMD-026 CMD-031 CMD-037 DB-1 DCSH-11 DES-001 ACS-193 FILE-1 FILE-2 FILE-3 FILE-4 LINK-7 LINT-7 LINT-20 LNK-023 OPT-100 OPT-101 OPT-102 OPT-114 OPT-124 OPT-127 OPT-128 OPT-155 OPT-157 OPT-181 OPT-462 UI-11 UI-14 UI-15 UI-16 UI-17 UI-19 UI-20 UI-21 UI-22 UI-23 UI-40 UI-41 UID-4 UID-6 UID-7 UID-8 UID-9 UID-13 UID-14 UID-15 UID-19 UID-20 UID-25 UID-27 UID-28 UID-29 UID-30 UID-32 UID-58 UID-87 UID-103 UID-109 UID-270 UID-272 UID-403 UID-440 UID-444 UIO-2 UIO-3 UIO-4 UIO-25 UIO-65 UIO-66 UIO-75 UIO-94 UIO-95 EQN-6 EQN-11 EQN-15 EQN-16 EQN-18 EQN-20 ]
#@ set ilm_preserve_core_constraints "false"
#@ }
#@
#@ #
#@ #
#@ # DesignTime Variable Group
#@ #
#@ # The variables which affect the DesignTime timing engine
#@ #
#@
#@ set case_analysis_log_file ""
#@ set case_analysis_sequential_propagate "false"
#@ set create_clock_no_input_delay "false"
#@ set disable_auto_time_borrow "false"
#@ set disable_case_analysis "false"
#@ set disable_conditional_mode_analysis "false"
#@ set disable_library_transition_degradation "false"
#@ set dont_bind_unused_pins_to_logic_constant "false"
#@ set enable_slew_degradation "true"
#@ set high_fanout_net_pin_capacitance 1.000000
#@ set high_fanout_net_threshold 1000
#@ set lib_thresholds_per_lib "true"
#@ set rc_adjust_rd_when_less_than_rnet "true"
#@ set rc_ceff_delay_min_diff_ps 0.250000
#@ set rc_degrade_min_slew_when_rd_less_than_rnet "false"
#@ set rc_driver_model_max_error_pct 0.160000
#@ set rc_filter_rd_less_than_rnet "true"
#@ set rc_input_threshold_pct_fall 50.000000
#@ set rc_input_threshold_pct_rise 50.000000
#@ set rc_output_threshold_pct_fall 50.000000
#@ set rc_output_threshold_pct_rise 50.000000
#@ set rc_rd_less_than_rnet_threshold 0.450000
#@ set rc_slew_derate_from_library 1.000000
#@ set rc_slew_lower_threshold_pct_fall 20.000000
#@ set rc_slew_lower_threshold_pct_rise 20.000000
#@ set rc_slew_upper_threshold_pct_fall 80.000000
#@ set rc_slew_upper_threshold_pct_rise 80.000000
#@ set timing_disable_cond_default_arcs "false"
#@ #timing_enable_multiple_clocks_per_reg is on by default
#@ #set timing_enable_multiple_clocks_per_reg "false"
#@ set timing_report_attributes {dont_touch dont_use map_only size_only ideal_net infeasible_paths}
#@ set timing_self_loops_no_skew "false"
#@ set when_analysis_permitted "true"
#@ set when_analysis_without_case_analysis "false"
#@
#@
#@ #
#@ # Variable Group Definitions:
#@ #
#@ # The group_variable() command groups variables for display
#@ # in the "File/Defaults" dialog and defines groups of variables
#@ # for the list() command.
#@ #
#@
#@ set enable_instances_in_report_net "true"
#@ # Set report options env variables
#@ set view_report_interactive "true"
#@ set view_report_output2file "false"
#@ set view_report_append "true"
#@
#@ if { $synopsys_program_name != "ptxr" } {
#@
#@ group_variable report_variables "enable_instances_in_report_net"
#@ group_variable report_variables "view_report_interactive"
#@ group_variable report_variables "view_report_output2file"
#@ group_variable report_variables "view_report_append"
#@
#@ # "links_to_layout" variables are used by multiple commands
#@ # auto_wire_load_selection is also in the "compile" variable group.
#@ group_variable links_to_layout "auto_wire_load_selection"
#@
#@ # variables starting with "compile" are also in the compile variable group
#@ group_variable links_to_layout "compile_dont_touch_annotated_cell_during_inplace_opt"
#@
#@ group_variable links_to_layout "compile_update_annotated_delays_during_inplace_opt"
#@ group_variable links_to_layout "compile_create_wire_load_table"
#@
#@ group_variable links_to_layout "reoptimize_design_changed_list_file_name"
#@ group_variable links_to_layout "sdfout_allow_non_positive_constraints"
#@
#@ } ;# $synopsys_program_name != "ptxr"
#@
#@ #
#@ # to find the XErrorDB and XKeySymDB for X11 file
#@ set motif_files ${synopsys_root}/admin/setup
#@ # set filename for logging input file
#@ set filename_log_file "filenames.log"
#@ # whether to delete the filename log after the normal exits
#@ set exit_delete_filename_log_file "true"
#@
#@ # executable to fire off RTLA/BCV
#@ set xterm_executable "xterm"
#@
#@ if { $synopsys_program_name != "ptxr" } {
#@
#@ # "system" variables are used by multiple commands
#@ group_variable system auto_link_disable
#@ group_variable system auto_link_options
#@ group_variable system command_log_file
#@ group_variable system company
#@ group_variable system compatibility_version
#@
#@ if { [string compare $dc_shell_mode "default"] == 0 } {
#@ group_variable system "current_design"
#@ group_variable system "current_instance"
#@ group_variable system "dc_shell_status"
#@ } else {
#@ set current_design ""
#@ set current_instance ""
#@ group_variable system "current_design"
#@ group_variable system "current_instance"
#@ }
#@
#@ group_variable system "designer"
#@ group_variable system "echo_include_commands"
#@ group_variable system "enable_page_mode"
#@ group_variable system "change_names_update_inst_tree"
#@ group_variable system "change_names_dont_change_bus_members"
#@ group_variable system "default_name_rules"
#@ group_variable system "verbose_messages"
#@ group_variable system "link_library"
#@ group_variable system "link_force_case"
#@ group_variable system "search_path"
#@ group_variable system "synthetic_library"
#@ group_variable system "target_library"
#@ group_variable system "uniquify_naming_style"
#@ group_variable system "suppress_errors"
#@ group_variable system "find_converts_name_lists"
#@ group_variable system "filename_log_file"
#@ group_variable system "exit_delete_filename_log_file"
#@ group_variable system "syntax_check_status"
#@ group_variable system "context_check_status"
#@
#@ #/* "compile" variables are used by the compile command */
#@ group_variable compile "compile_assume_fully_decoded_three_state_busses"
#@ group_variable compile "compile_no_new_cells_at_top_level"
#@ group_variable compile "compile_dont_touch_annotated_cell_during_inplace_opt"
#@ group_variable compile "reoptimize_design_changed_list_file_name"
#@ group_variable compile "compile_create_wire_load_table"
#@ group_variable compile "compile_update_annotated_delays_during_inplace_opt"
#@ group_variable compile "compile_instance_name_prefix"
#@ group_variable compile "compile_instance_name_suffix"
#@ group_variable compile "compile_negative_logic_methodology"
#@ group_variable compile "compile_disable_hierarchical_inverter_opt"
#@
#@ group_variable compile "port_complement_naming_style"
#@ group_variable compile "auto_wire_load_selection"
#@ group_variable compile "rtl_load_resistance_factor"
#@ group_variable compile "compile_implementation_selection"
#@ group_variable compile "compile_use_low_timing_effort"
#@ group_variable compile "compile_fix_cell_degradation"
#@ group_variable compile "compile_preserve_subdesign_interfaces"
#@ group_variable compile "compile_enable_constant_propagation_with_no_boundary_opt"
#@ group_variable compile "compile_delete_unloaded_sequential_cells"
#@ group_variable compile "enable_recovery_removal_arcs"
#@ group_variable compile "compile_checkpoint_phases"
#@ group_variable compile "compile_cpu_limit"
#@ group_variable compile "compile_top_all_paths"
#@ group_variable compile "compile_top_all_paths"
#@ group_variable compile "compile_top_acs_partition"
#@ group_variable compile "default_port_connection_class"
#@ group_variable compile "compile_retime_license_behavior"
#@ group_variable compile "dont_touch_nets_with_size_only_cells"
#@ group_variable compile "compile_seqmap_no_scan_cell"
#@
#@ if { $synopsys_program_name == "dc_shell" && [shell_is_in_topographical_mode] } {
#@ group_variable compile "dct_prioritize_area_correlation"
#@ group_variable compile "compile_error_on_missing_physical_cells"
#@ }
#@
#@ # "multibit" variables are used by the the multibit mapping functionality
#@
#@ group_variable multibit "bus_multiple_separator_style"
#@
#@ # "ilm" variables are used by Interface Logic Model functionality
#@
#@ group_variable ilm "ilm_ignore_percentage"
#@
#@ # "estimate" variables are used by the estimate command
#@ # The estimate command also recognizes the "compile" variables.
#@ group_variable estimate "estimate_resource_preference"
#@
#@ # "synthetic_library" variables
#@ group_variable synlib "cache_dir_chmod_octal"
#@ group_variable synlib "cache_file_chmod_octal"
#@ group_variable synlib "cache_read"
#@ group_variable synlib "cache_read_info"
#@ group_variable synlib "cache_write"
#@ group_variable synlib "cache_write_info"
#@ group_variable synlib "synlib_dont_get_license"
#@ group_variable synlib "synlib_wait_for_design_license"
#@ group_variable synlib "synthetic_library"
#@
#@ # "insert_dft" variables are used by the insert_dft and preview_dft commands
#@ #group_variable insert_dft "test_default_client_order"
#@ group_variable insert_dft "insert_dft_clean_up"
#@ group_variable insert_dft "insert_test_design_naming_style"
#@ group_variable insert_dft "test_clock_port_naming_style"
#@ group_variable insert_dft "test_default_min_fault_coverage"
#@ group_variable insert_dft "test_scan_clock_a_port_naming_style"
#@ group_variable insert_dft "test_scan_clock_b_port_naming_style"
#@ group_variable insert_dft "test_scan_clock_port_naming_style"
#@ group_variable insert_dft "test_scan_enable_inverted_port_naming_style"
#@ group_variable insert_dft "test_scan_enable_port_naming_style"
#@ group_variable insert_dft "test_scan_in_port_naming_style"
#@ group_variable insert_dft "test_scan_out_port_naming_style"
#@ group_variable insert_dft "test_non_scan_clock_port_naming_style"
#@ group_variable insert_dft "test_dedicated_subdesign_scan_outs"
#@ group_variable insert_dft "test_disable_find_best_scan_out"
#@ group_variable insert_dft "test_dont_fix_constraint_violations"
#@ group_variable insert_dft "test_isolate_hier_scan_out"
#@ group_variable insert_dft "test_mode_port_naming_style"
#@ group_variable insert_dft "test_mode_port_inverted_naming_style"
#@ group_variable insert_dft "compile_dont_use_dedicated_scanout"
#@ group_variable insert_dft "test_mux_constant_si"
#@
#@ # "preview_scan" variables are used by the preview_scan command
#@ group_variable preview_scan "test_preview_scan_shows_cell_types"
#@ group_variable preview_scan "test_scan_link_so_lockup_key"
#@ group_variable preview_scan "test_scan_link_wire_key"
#@ group_variable preview_scan "test_scan_segment_key"
#@ group_variable preview_scan "test_scan_true_key"
#@
#@ # "bsd" variables are used by the check_bsd and write_bsdl commands
#@ group_variable bsd "test_user_test_data_register_naming_style"
#@ group_variable bsd "test_user_defined_instruction_naming_style"
#@ group_variable bsd "test_bsdl_default_suffix_name"
#@ group_variable bsd "test_bsdl_max_line_length"
#@ group_variable bsd "test_cc_ir_masked_bits"
#@ group_variable bsd "test_cc_ir_value_of_masked_bits"
#@
#@ group_variable bsd "test_bsd_allow_tolerable_violations"
#@ group_variable bsd "test_bsd_optimize_control_cell"
#@ group_variable bsd "test_bsd_control_cell_drive_limit"
#@ group_variable bsd "test_bsd_manufacturer_id"
#@ group_variable bsd "test_bsd_part_number"
#@ group_variable bsd "test_bsd_version_number"
#@ group_variable bsd "bsd_max_in_switching_limit"
#@ group_variable bsd "bsd_max_out_switching_limit"
#@
#@ # testmanager variables
#@ group_variable testmanager "multi_pass_test_generation"
#@
#@ # "testsim" variables
#@ # group_variable testsim "testsim_print_stats_file"
#@
#@ # "test" variables
#@ group_variable test "test_default_bidir_delay"
#@ group_variable test "test_default_delay"
#@ group_variable test "test_default_period"
#@ group_variable test "test_default_strobe"
#@ group_variable test "test_default_strobe_width"
#@ group_variable test "test_capture_clock_skew"
#@ group_variable test "test_allow_clock_reconvergence"
#@ group_variable test "test_check_port_changes_in_capture"
#@ group_variable test "test_stil_max_line_length"
#@ group_variable test "test_infer_slave_clock_pulse_after_capture"
#@ group_variable test "test_rtldrc_latch_check_style"
#@ group_variable test "test_enable_capture_checks"
#@
#@ # "write_test" variables are used by the write_test command
#@ group_variable write_test "write_test_formats"
#@ group_variable write_test "write_test_include_scan_cell_info"
#@ group_variable write_test "write_test_input_dont_care_value"
#@ group_variable write_test "write_test_max_cycles"
#@ group_variable write_test "write_test_max_scan_patterns"
#@ group_variable write_test "write_test_pattern_set_naming_style"
#@ group_variable write_test "write_test_scan_check_file_naming_style"
#@ group_variable write_test "write_test_vector_file_naming_style"
#@ group_variable write_test "write_test_round_timing_values"
#@
#@ group_variable view "test_design_analyzer_uses_insert_scan"
#@
#@ # "io" variables are used by the read, read_lib, db2sge and write commands
#@ group_variable io "bus_inference_descending_sort"
#@ group_variable io "bus_inference_style"
#@ #group_variable io "db2sge_output_directory"
#@ #group_variable io "db2sge_scale"
#@ #group_variable io "db2sge_overwrite"
#@ #group_variable io "db2sge_display_symbol_names"
#@ #group_variable io "db2sge_display_pin_names"
#@ #group_variable io "db2sge_display_instance_names"
#@ #group_variable io "db2sge_use_bustaps"
#@ #group_variable io "db2sge_use_compound_names"
#@ #group_variable io "db2sge_bit_type"
#@ #group_variable io "db2sge_bit_vector_type"
#@ #group_variable io "db2sge_one_name"
#@ #group_variable io "db2sge_zero_name"
#@ #group_variable io "db2sge_unknown_name"
#@ #group_variable io "db2sge_target_xp"
#@ #group_variable io "db2sge_tcf_package_file"
#@ #group_variable io "db2sge_use_lib_section"
#@ #group_variable io "db2sge_script"
#@ #group_variable io "db2sge_command"
#@
#@ # group_variable io "equationout_and_sign"
#@ # group_variable io "equationout_or_sign"
#@ # group_variable io "equationout_postfix_negation"
#@
#@ # group_variable io "lsiin_net_name_prefix"
#@ # group_variable io "lsiout_inverter_cell"
#@ # group_variable io "lsiout_upcase"
#@
#@ #group_variable io "mentor_bidirect_value"
#@ #group_variable io "mentor_do_path"
#@ #group_variable io "mentor_input_output_property_name"
#@ #group_variable io "mentor_input_value"
#@ #group_variable io "mentor_logic_one_value"
#@ #group_variable io "mentor_logic_zero_one_property_name"
#@ #group_variable io "mentor_logic_zero_value"
#@ #group_variable io "mentor_output_value"
#@ #group_variable io "mentor_primitive_property_name"
#@ #group_variable io "mentor_primitive_property_value"
#@ #group_variable io "mentor_reference_property_name"
#@ #group_variable io "mentor_search_path"
#@ #group_variable io "mentor_write_symbols"
#@ # group_variable io "pla_read_create_flip_flop"
#@ # group_variable io "tdlout_upcase"
#@ group_variable io "write_name_nets_same_as_ports"
#@
#@ # # [wjchen] 2006/08/14: The following 4 variables are obsoleted for DC simpilification.
#@
#@ # group_variable io "xnfout_constraints_per_endpoint"
#@ # group_variable io "xnfout_default_time_constraints"
#@ # group_variable io "xnfout_clock_attribute_style"
#@ # group_variable io "xnfout_library_version"
#@
#@ # # [wjchen] 2006/08/11: The following 8 variables are obsoleted for DC simpilification.
#@ # group_variable io "xnfin_family"
#@ # group_variable io "xnfin_ignore_pins"
#@ # group_variable io "xnfin_dff_reset_pin_name"
#@ # group_variable io "xnfin_dff_set_pin_name"
#@ # group_variable io "xnfin_dff_clock_enable_pin_name"
#@ # group_variable io "xnfin_dff_data_pin_name"
#@ # group_variable io "xnfin_dff_clock_pin_name" ;
#@ # group_variable io "xnfin_dff_q_pin_name";
#@
#@ group_variable io "sdfin_min_rise_net_delay" ;
#@ group_variable io "sdfin_min_fall_net_delay" ;
#@ group_variable io "sdfin_min_rise_cell_delay" ;
#@ group_variable io "sdfin_min_fall_cell_delay" ;
#@ group_variable io "sdfin_rise_net_delay_type" ;
#@ group_variable io "sdfin_fall_net_delay_type" ;
#@ group_variable io "sdfin_rise_cell_delay_type" ;
#@ group_variable io "sdfin_fall_cell_delay_type" ;
#@ group_variable io "sdfin_top_instance_name" ;
#@ group_variable io "sdfout_time_scale" ;
#@ group_variable io "sdfout_write_to_output" ;
#@ group_variable io "sdfout_top_instance_name" ;
#@ group_variable io "sdfout_min_rise_net_delay" ;
#@ group_variable io "sdfout_min_fall_net_delay" ;
#@ group_variable io "sdfout_min_rise_cell_delay" ;
#@ group_variable io "sdfout_min_fall_cell_delay" ;
#@ group_variable io "read_db_lib_warnings" ;
#@ group_variable io "read_translate_msff" ;
#@ group_variable io "libgen_max_differences" ;
#@
#@ # #[wjchen] 2006/08/22: The following variables are hidden for XG mode for DC simpilification.
#@ # group_variable io "read_name_mapping_nowarn_libraries" ;
#@ # group_variable io "write_name_mapping_nowarn_libraries" ;
#@
#@
#@ # "edif" variables are used by the EDIF format read, read_lib, write,
#@ # and write_lib commands
#@ # group_variable edif "bus_dimension_separator_style" ;
#@ # group_variable edif "bus_extraction_style" ;
#@ group_variable edif "bus_inference_descending_sort" ;
#@ group_variable edif "bus_inference_style" ;
#@ group_variable edif "bus_naming_style" ;
#@ group_variable edif "bus_range_separator_style" ;
#@ # group_variable edif "edifin_autoconnect_offpageconnectors" ;
#@ # group_variable edif "edifin_autoconnect_ports" ;
#@ # group_variable edif "edifin_delete_empty_cells" ;
#@ # group_variable edif "edifin_delete_ripper_cells" ;
#@ # group_variable edif "edifin_ground_net_name" ;
#@ # group_variable edif "edifin_ground_net_property_name" ;
#@ # group_variable edif "edifin_ground_net_property_value" ;
#@ # group_variable edif "edifin_ground_port_name" ;
#@ # group_variable edif "edifin_instance_property_name" ;
#@ # group_variable edif "edifin_portinstance_disabled_property_name" ;
#@ # group_variable edif "edifin_portinstance_disabled_property_value" ;
#@ # group_variable edif "edifin_portinstance_property_name" ;
#@ # group_variable edif "edifin_power_net_name" ;
#@ # group_variable edif "edifin_power_net_property_name" ;
#@ # group_variable edif "edifin_power_net_property_value" ;
#@ # group_variable edif "edifin_power_port_name" ;
#@ # group_variable edif "edifin_use_identifier_in_rename" ;
#@ # group_variable edif "edifin_view_identifier_property_name" ;
#@ # group_variable edif "edifin_dc_script_flag" ;
#@ # group_variable edif "edifin_lib_logic_1_symbol" ;
#@ # group_variable edif "edifin_lib_logic_0_symbol" ;
#@ # group_variable edif "edifin_lib_in_port_symbol" ;
#@ # group_variable edif "edifin_lib_out_port_symbol" ;
#@ # group_variable edif "edifin_lib_inout_port_symbol" ;
#@ # group_variable edif "edifin_lib_in_osc_symbol" ;
#@ # group_variable edif "edifin_lib_out_osc_symbol" ;
#@ # group_variable edif "edifin_lib_inout_osc_symbol" ;
#@ # group_variable edif "edifin_lib_mentor_netcon_symbol" ;
#@ # group_variable edif "edifin_lib_ripper_bits_property" ;
#@ # group_variable edif "edifin_lib_ripper_bus_end" ;
#@ # group_variable edif "edifin_lib_ripper_cell_name" ;
#@ # group_variable edif "edifin_lib_ripper_view_name" ;
#@ # group_variable edif "edifin_lib_route_grid" ;
#@ # group_variable edif "edifin_lib_templates" ;
#@ # group_variable edif "edifout_dc_script_flag" ;
#@ # group_variable edif "edifout_design_name" ;
#@ # group_variable edif "edifout_designs_library_name" ;
#@ # group_variable edif "edifout_display_instance_names" ;
#@ # group_variable edif "edifout_display_net_names" ;
#@ # group_variable edif "edifout_external" ;
#@ # group_variable edif "edifout_external_graphic_view_name" ;
#@ # group_variable edif "edifout_external_netlist_view_name" ;
#@ # group_variable edif "edifout_external_schematic_view_name" ;
#@ # group_variable edif "edifout_ground_name" ;
#@ # group_variable edif "edifout_ground_net_name" ;
#@ # group_variable edif "edifout_ground_net_property_name" ;
#@ # group_variable edif "edifout_ground_net_property_value" ;
#@ # group_variable edif "edifout_ground_pin_name" ;
#@ # group_variable edif "edifout_ground_port_name" ;
#@ # group_variable edif "edifout_instance_property_name" ;
#@ # group_variable edif "edifout_instantiate_ports" ;
#@ # group_variable edif "edifout_library_graphic_view_name" ;
#@ # group_variable edif "edifout_library_netlist_view_name" ;
#@ # group_variable edif "edifout_library_schematic_view_name" ;
#@ # group_variable edif "edifout_merge_libraries" ;
#@ # group_variable edif "edifout_multidimension_arrays" ;
#@ # group_variable edif "edifout_name_oscs_different_from_ports" ;
#@ # group_variable edif "edifout_name_rippers_same_as_wires" ;
#@ # group_variable edif "edifout_netlist_only" ;
#@ # group_variable edif "edifout_no_array" ;
#@ # group_variable edif "edifout_numerical_array_members" ;
#@ # group_variable edif "edifout_pin_direction_property_name" ;
#@ # group_variable edif "edifout_pin_direction_in_value" ;
#@ # group_variable edif "edifout_pin_direction_inout_value" ;
#@ # group_variable edif "edifout_pin_direction_out_value" ;
#@ # group_variable edif "edifout_pin_name_property_name" ;
#@ # group_variable edif "edifout_portinstance_disabled_property_name" ;
#@ # group_variable edif "edifout_portinstance_disabled_property_value" ;
#@ # group_variable edif "edifout_portinstance_property_name"
#@ # group_variable edif "edifout_power_and_ground_representation"
#@ # group_variable edif "edifout_power_name"
#@ # group_variable edif "edifout_power_net_name"
#@ # group_variable edif "edifout_power_net_property_name"
#@ # group_variable edif "edifout_power_net_property_value"
#@ # group_variable edif "edifout_power_pin_name"
#@ # group_variable edif "edifout_power_port_name"
#@ # group_variable edif "edifout_skip_port_implementations"
#@ # group_variable edif "edifout_target_system"
#@ # group_variable edif "edifout_top_level_symbol"
#@ # group_variable edif "edifout_translate_origin"
#@ # group_variable edif "edifout_unused_property_value"
#@ # group_variable edif "edifout_write_attributes"
#@ # group_variable edif "edifout_write_constraints"
#@ # group_variable edif "edifout_write_properties_list"
#@ # group_variable edif "write_name_nets_same_as_ports"
#@
#@ # "hdl" variables are variables pertaining to hdl reading and optimizing
#@ group_variable hdl "bus_dimension_separator_style"
#@ group_variable hdl "bus_minus_style"
#@ group_variable hdl "bus_naming_style"
#@ group_variable hdl "hdlin_ignore_textio_constructs"
#@ group_variable hdl "hdlin_latch_always_async_set_reset"
#@ group_variable hdl "hdlin_ff_always_sync_set_reset"
#@ group_variable hdl "hdlin_ff_always_async_set_reset"
#@ group_variable hdl "hdlin_check_input_netlist"
#@ group_variable hdl "hdlin_check_no_latch"
#@ group_variable hdl "hdlin_reporting_level"
#@ group_variable hdl "hdlin_infer_mux"
#@ group_variable hdl "hdlin_mux_oversize_ratio"
#@ group_variable hdl "hdlin_mux_size_limit"
#@ group_variable hdl "hdlin_infer_multibit"
#@ group_variable hdl "hdl_preferred_license"
#@ group_variable hdl "hdl_keep_licenses"
#@ group_variable hdl "hlo_resource_allocation"
#@ group_variable hdl "template_naming_style"
#@ group_variable hdl "template_parameter_style"
#@ group_variable hdl "template_separator_style"
#@ group_variable hdl "verilogout_equation"
#@ group_variable hdl "verilogout_ignore_case"
#@ group_variable hdl "verilogout_no_tri"
#@ group_variable hdl "verilogout_inout_is_in"
#@ group_variable hdl "verilogout_single_bit"
#@ group_variable hdl "verilogout_higher_designs_first"
#@ # group_variable hdl "verilogout_levelize"
#@ group_variable hdl "verilogout_include_files"
#@ group_variable hdl "verilogout_unconnected_prefix"
#@ group_variable hdl "verilogout_show_unconnected_pins"
#@ group_variable hdl "verilogout_no_negative_index"
#@ group_variable hdl "hdlin_enable_rtldrc_info"
#@ group_variable hdl "hdlin_sv_blackbox_modules"
#@ group_variable hdl "hdlin_infer_function_local_latches"
#@ group_variable hdl "hdlin_module_arch_name_splitting"
#@ group_variable hdl "hdlin_mux_size_min"
#@ group_variable hdl "hdlin_prohibit_nontri_multiple_drivers"
#@ group_variable hdl "hdlin_subprogram_default_values"
#@ group_variable hdl "hdlin_upcase_names"
#@ group_variable hdl "hdlin_vhdl_std"
#@ group_variable hdl "hdlin_vhdl93_concat"
#@ group_variable hdl "hdlin_vhdl_syntax_extensions"
#@ group_variable hdl "hdlin_vrlg_std"
#@ group_variable hdl "hdlin_while_loop_iterations"
#@ group_variable hdl "hdlin_auto_save_templates"
#@ group_variable hdl "hdlin_elab_errors_deep"
#@ group_variable hdl "hdlin_enable_assertions"
#@ group_variable hdl "hdlin_enable_configurations"
#@ group_variable hdl "hdlin_field_naming_style"
#@ group_variable hdl "hdlin_generate_naming_style"
#@ group_variable hdl "hdlin_generate_separator_style"
#@ group_variable hdl "hdlin_enable_relative_placement"
#@ group_variable hdl "hdlin_mux_rp_limit"
#@ group_variable hdl "hdlin_keep_signal_name"
#@ group_variable hdl "hdlin_module_name_limit"
#@ group_variable hdl "hdlin_mux_size_only"
#@ group_variable hdl "hdlin_preserve_sequential"
#@ group_variable hdl "hdlin_presto_cell_name_prefix"
#@ group_variable hdl "hdlin_presto_net_name_prefix"
#@ group_variable hdl "hdlin_strict_verilog_reader"
#@ group_variable hdl "hdlin_shorten_long_module_name"
#@ group_variable hdl "hdlin_sv_packages"
#@ group_variable hdl "hdlin_sv_tokens"
#@ group_variable hdl "hdlin_enable_elaborate_ref_linking"
#@ group_variable hdl "hdlin_enable_hier_naming"
#@ group_variable hdl "hdlin_autoread_verilog_extensions"
#@ group_variable hdl "hdlin_autoread_sverilog_extensions"
#@ group_variable hdl "hdlin_autoread_vhdl_extensions"
#@ group_variable hdl "hdlin_autoread_exclude_extensions"
#@ group_variable hdl "hdlin_enable_upf_compatible_naming"
#@ group_variable hdl "hdlin_report_sequential_pruning"
#@ group_variable hdl "hdlin_analyze_verbose_mode"
#@
#@ # "vhdlio" variables are variables pertaining to VHDL generation
#@ group_variable vhdlio "vhdllib_timing_mesg"
#@ group_variable vhdlio "vhdllib_timing_xgen"
#@ group_variable vhdlio "vhdllib_timing_checks"
#@ group_variable vhdlio "vhdllib_negative_constraint"
#@ group_variable vhdlio "vhdllib_pulse_handle"
#@ group_variable vhdlio "vhdllib_glitch_handle"
#@ group_variable vhdlio "vhdllib_architecture"
#@ group_variable vhdlio "vhdllib_tb_compare"
#@ group_variable vhdlio "vhdllib_tb_x_eq_dontcare"
#@ group_variable vhdlio "vhdllib_logic_system"
#@ group_variable vhdlio "vhdllib_logical_name"
#@
#@ # group_variable vhdlio "vhdlout_architecture_name"
#@ group_variable vhdlio "vhdlout_bit_type"
#@ # group_variable vhdlio "vhdlout_bit_type_resolved"
#@ group_variable vhdlio "vhdlout_bit_vector_type"
#@ # group_variable vhdlio "vhdlout_conversion_functions"
#@ # group_variable vhdlio "vhdlout_dont_write_types"
#@ group_variable vhdlio "vhdlout_equations"
#@ group_variable vhdlio "vhdlout_one_name"
#@ group_variable vhdlio "vhdlout_package_naming_style"
#@ group_variable vhdlio "vhdlout_preserve_hierarchical_types"
#@ group_variable vhdlio "vhdlout_separate_scan_in"
#@ group_variable vhdlio "vhdlout_single_bit"
#@ group_variable vhdlio "vhdlout_target_simulator"
#@ group_variable vhdlio "vhdlout_top_configuration_arch_name"
#@ group_variable vhdlio "vhdlout_top_configuration_entity_name"
#@ group_variable vhdlio "vhdlout_top_configuration_name"
#@ group_variable vhdlio "vhdlout_three_state_name"
#@ group_variable vhdlio "vhdlout_three_state_res_func"
#@ # group_variable vhdlio "vhdlout_time_scale"
#@ group_variable vhdlio "vhdlout_unknown_name"
#@ group_variable vhdlio "vhdlout_use_packages"
#@ group_variable vhdlio "vhdlout_wired_and_res_func"
#@ group_variable vhdlio "vhdlout_wired_or_res_func"
#@ group_variable vhdlio "vhdlout_write_architecture"
#@ group_variable vhdlio "vhdlout_write_entity"
#@ group_variable vhdlio "vhdlout_write_top_configuration"
#@ # group_variable vhdlio "vhdlout_synthesis_off"
#@ group_variable vhdlio "vhdlout_write_components"
#@ group_variable vhdlio "vhdlout_zero_name"
#@ # group_variable vhdlio "vhdlout_levelize"
#@ group_variable vhdlio "vhdlout_dont_create_dummy_nets"
#@ group_variable vhdlio "vhdlout_follow_vector_direction"
#@
#@ # "suffix" variables are used to find the suffixes of different file types
#@ group_variable suffix "view_execute_script_suffix"
#@ group_variable suffix "view_read_file_suffix"
#@ group_variable suffix "view_analyze_file_suffix"
#@ group_variable suffix "view_write_file_suffix"
#@
#@ # Meenakshi: Added new group scc (for SystemC compiler)
#@ group_variable scc {systemcout_levelize}
#@ group_variable scc {systemcout_debug_mode}
#@
#@ # "power" variables are for power-analysis.
#@ group_variable power {power_keep_license_after_power_commands}
#@ group_variable power {power_preserve_rtl_hier_names}
#@ group_variable power {power_do_not_size_icg_cells}
#@ group_variable power {power_hdlc_do_not_split_cg_cells}
#@ group_variable power {power_rtl_saif_file}
#@ group_variable power {power_sdpd_saif_file}
#@ group_variable power {power_cg_flatten}
#@ group_variable power {power_opto_extra_high_dynamic_power_effort}
#@ group_variable power {power_default_static_probability}
#@ group_variable power {power_default_toggle_rate}
#@ group_variable power {power_default_toggle_rate_type}
#@ group_variable power {power_model_preference}
#@ group_variable power {power_sa_propagation_effort}
#@ group_variable power {power_sa_propagation_verbose}
#@ group_variable power {power_fix_sdpd_annotation}
#@ group_variable power {power_fix_sdpd_annotation_verbose}
#@ group_variable power {power_sdpd_message_tolerance}
#@ group_variable power {power_rclock_use_asynch_inputs}
#@ group_variable power {power_rclock_inputs_use_clocks_fanout}
#@ group_variable power {power_rclock_unrelated_use_fastest}
#@ group_variable power {power_lib2saif_rise_fall_pd}
#@ group_variable power {power_min_internal_power_threshold}
#@ group_variable power {power_cg_module_naming_style}
#@ group_variable power {power_cg_cell_naming_style}
#@ group_variable power {power_cg_gated_clock_net_naming_style}
#@ group_variable power {do_operand_isolation}
#@
#@ # dpcm variables are used by DPCM lib and controllong DC when using DPCM
#@
#@ if { [info exists dpcm_debuglevel] } {
#@ group_variable dpcm "dpcm_debuglevel"
#@ group_variable dpcm "dpcm_rulespath"
#@ group_variable dpcm "dpcm_rulepath"
#@ group_variable dpcm "dpcm_tablepath"
#@ group_variable dpcm "dpcm_libraries"
#@ group_variable dpcm "dpcm_version"
#@ group_variable dpcm "dpcm_level"
#@ group_variable dpcm "dpcm_temperaturescope"
#@ group_variable dpcm "dpcm_voltagescope"
#@ group_variable dpcm "dpcm_functionscope"
#@ group_variable dpcm "dpcm_wireloadscope"
#@ group_variable dpcm "dpcm_slewlimit"
#@ group_variable dpcm "dpcm_arc_sense_mapping"
#@
#@ }
#@
#@ set dpcm_slewlimit "TRUE"
#@
#@ # executable to fire off RTLA/BCV
#@ group_variable hdl {xterm_executable}
#@
#@ # Variable group for Chip Compiler
#@ if {[info exists acs_work_dir]} {
#@ group_variable acs acs_area_report_suffix
#@ group_variable acs acs_autopart_max_area
#@ group_variable acs acs_autopart_max_percent
#@ group_variable acs acs_budgeted_cstr_suffix
#@ group_variable acs acs_compile_script_suffix
#@ group_variable acs acs_constraint_file_suffix
#@ group_variable acs acs_cstr_report_suffix
#@ group_variable acs acs_db_suffix
#@ group_variable acs acs_dc_exec
#@ group_variable acs acs_default_pass_name
#@ group_variable acs acs_exclude_extensions
#@ group_variable acs acs_exclude_list
#@ group_variable acs acs_global_user_compile_strategy_script
#@ group_variable acs acs_hdl_verilog_define_list
#@ group_variable acs acs_hdl_source
#@ group_variable acs acs_lic_wait
#@ group_variable acs acs_log_file_suffix
#@ group_variable acs acs_make_args
#@ group_variable acs acs_make_exec
#@ group_variable acs acs_makefile_name
#@ group_variable acs acs_num_parallel_jobs
#@ group_variable acs acs_override_report_suffix
#@ group_variable acs acs_override_script_suffix
#@ group_variable acs acs_qor_report_suffix
#@ group_variable acs acs_timing_report_suffix
#@ group_variable acs acs_use_autopartition
#@ group_variable acs acs_use_default_delays
#@ group_variable acs acs_user_budgeting_script
#@ group_variable acs acs_user_compile_strategy_script_suffix
#@ group_variable acs acs_verilog_extensions
#@ group_variable acs acs_vhdl_extensions
#@ group_variable acs acs_work_dir
#@ group_variable acs check_error_list
#@ group_variable acs ilm_preserve_core_constraints
#@
#@ }
#@
#@ #
#@ # DesignTime Variable Group timing
#@ #
#@
#@ group_variable timing case_analysis_log_file
#@ group_variable timing case_analysis_sequential_propagate
#@ group_variable timing case_analysis_with_logic_constants
#@ group_variable timing create_clock_no_input_delay
#@ group_variable timing disable_auto_time_borrow
#@ group_variable timing disable_case_analysis
#@ group_variable timing disable_conditional_mode_analysis
#@ group_variable timing disable_library_transition_degradation
#@ group_variable timing dont_bind_unused_pins_to_logic_constant
#@ group_variable timing enable_slew_degradation
#@ group_variable timing high_fanout_net_pin_capacitance
#@ group_variable timing high_fanout_net_threshold
#@ group_variable timing lib_thresholds_per_lib
#@ group_variable timing rc_adjust_rd_when_less_than_rnet
#@ group_variable timing rc_ceff_delay_min_diff_ps
#@ group_variable timing rc_degrade_min_slew_when_rd_less_than_rnet
#@ group_variable timing rc_driver_model_max_error_pct
#@ group_variable timing rc_filter_rd_less_than_rnet
#@ group_variable timing rc_input_threshold_pct_fall
#@ group_variable timing rc_input_threshold_pct_rise
#@ group_variable timing rc_output_threshold_pct_fall
#@ group_variable timing rc_output_threshold_pct_rise
#@ group_variable timing rc_rd_less_than_rnet_threshold
#@ group_variable timing rc_slew_derate_from_library
#@ group_variable timing rc_slew_lower_threshold_pct_fall
#@ group_variable timing rc_slew_lower_threshold_pct_rise
#@ group_variable timing rc_slew_upper_threshold_pct_fall
#@ group_variable timing rc_slew_upper_threshold_pct_rise
#@ group_variable timing timing_disable_cond_default_arcs
#@ # group_variable timing timing_enable_multiple_clocks_per_reg
#@ group_variable timing timing_report_attributes
#@ group_variable timing timing_self_loops_no_skew
#@ group_variable timing when_analysis_permitted
#@ group_variable timing when_analysis_without_case_analysis
#@
#@ } ;# $synopsys_program_name != "ptxr"
#@
#@ if { $synopsys_program_name == "icc_shell"} {
#@ #
#@ # IC Compile Variable Group:
#@ #
#@ # These variables affect the designs created by the route_opt command.
#@ #
#@ group_variable routeopt routeopt_checkpoint
#@ group_variable routeopt routeopt_disable_cpulimit
#@ }
#@
#@ if { $synopsys_program_name == "icc_shell"} {
#@ #
#@ # IC Compiler Variable Group: MCMM
#@ #
#@ # These variables affect Multi-Corner/Multi-Mode. Currently, MCMM is
#@ # only supported in ICC--hence the "icc_shell" qualification, above
#@ #
#@ group_variable MCMM mcmm_enable_high_capacity_flow
#@ }
#@
#@ # Aliases for backwards compatibility or other reasons
#@ group_variable compile {compile_log_format}
#@ alias view_cursor_number x11_set_cursor_number
#@ alias set_internal_load set_load
#@ alias set_internal_arrival set_arrival
#@ alias set_connect_delay "set_annotated_delay -net"
#@ alias create_test_vectors create_test_patterns
#@ alias compile_test insert_test
#@ alias check_clocks check_timing
#@ alias lint check_design
#@ # gen removed; alias gen create_schematic
#@ alias free remove_design
#@ alias group_bus create_bus
#@ alias ungroup_bus remove_bus
#@ alias groupvar group_variable
#@ alias report_constraints report_constraint
#@ alias report_attributes report_attribute
#@ alias fsm_reduce reduce_fsm
#@ alias fsm_minimize minimize_fsm
#@ alias disable_timing set_disable_timing
#@ alias dont_touch set_dont_touch
#@ alias dont_touch_network set_dont_touch_network
#@ alias dont_use set_dont_use
#@ alias fix_hold set_fix_hold
#@ alias prefer set_prefer
#@ alias remove_package "echo remove_package command is obsolete: packages are stored on disk not in-memory:"
#@ alias analyze_scan preview_scan
#@ alias get_clock get_clocks
#@ alias dc_shell_is_in_incr_mode shell_is_in_xg_mode
#@ alias set_vh_module_options set_dps_module_options
#@ alias set_vh_physopt_options set_dps_options
#@ alias update_vh_design update_dps_design
#@ alias vh_start dps_start
#@ alias vh_end dps_end
#@ alias all_vh_modules all_dps_modules
#@ alias all_designs_of_vh all_designs_of_dps
#@ alias vh_use_auto_partitioning dps_auto_partitioning
#@ alias vh_write_changes dps_write_changes
#@ alias vh_read_changes dps_read_changes
#@ alias vh_write_module_clock dps_write_module_clock
#@ alias get_lib get_libs
#@
#@ # Enable unsupported psyn commands
#@ if { $synopsys_program_name == "psyn_shell" || $synopsys_program_name == "icc_shell"} {
#@ proc enable_unsupported_commands { { arg "default" } } {
#@ global cgpi_use_new_wire_factors
#@ global cgpi_use_relative_wire_factors
#@ global cgpi_use_new_path_factors
#@ global pwlm_use_new_wire_factors
#@ global pwlm_use_relative_wire_factors
#@ global pwlm_use_new_path_factors
#@ global psyn_unsupported_commands_dir
#@ global synopsys_root
#@ if {![info exists psyn_unsupported_commands_dir]} {
#@ set psyn_unsupported_commands_dir $synopsys_root/auxx/syn/psyn/unsupported_commands
#@ }
#@ set psyn_unsupported_commands_option1 $arg
#@ if {[file readable $psyn_unsupported_commands_dir/setup.tcl]} {
#@ source $psyn_unsupported_commands_dir/setup.tcl
#@ } else {
#@ source -encrypted $psyn_unsupported_commands_dir/setup.tcl.e
#@ }
#@ }
#@ }
#@ # For Intel
#@ if { $synopsys_program_name == "icc_shell"} {
#@ set psyn_unsupported_commands_dir $synopsys_root/auxx/syn/psyn/unsupported_commands
#@ source -encrypted $psyn_unsupported_commands_dir/max_dist.tcl.e
#@ }
#@
#@
#@ if { $synopsys_program_name == "icc_shell"} {
#@ # to enable CLE readline-ish terminal by default for ICC
#@ set sh_enable_line_editing true
#@
#@ # Astro forms create an enormous number of new variables which are
#@ # very annoying for users to see, so the default of this variable
#@ # for ICC is false
#@ set sh_new_variable_message false
#@ }
#@
#@ if { $synopsys_program_name == "icc_shell" || (($synopsys_program_name == "dc_shell") && ([shell_is_in_topographical_mode])) } {
#@ source $synopsys_root/auxx/syn/psyn/verify_ilm.tcl
#@ }
#@
#@ # Enable vh psyn commands
#@ if { $synopsys_program_name == "psyn_shell" } {
#@ proc enable_vh_flow { } {
#@ global VH_SCRIPT_FILE
#@ global synopsys_root
#@ global suppress_errors
#@ set suppress_errors "$suppress_errors CMD-041 UID-95 SEL-003 SEL-005"
#@ if {![info exists VH_SCRIPT_FILE]} {
#@ set VH_SCRIPT_FILE $synopsys_root/auxx/syn/psyn/vh_pc.tcl.e
#@ }
#@ if {[file readable $VH_SCRIPT_FILE]} {
#@ if {[string match *.tcl $VH_SCRIPT_FILE]} {
#@ source $VH_SCRIPT_FILE
#@ } else {
#@ source -encrypted $VH_SCRIPT_FILE
#@ }
#@ } else {
#@ puts "Error: VH script file $VH_SCRIPT_FILE not found."
#@ }
#@ }
#@ }
#@
#@
#@ #Turn on enable_netl_view to true by default.
#@ set enable_netl_view "TRUE"
#@
#@
#@ #Turn on physopt_bypass_multiple_plib_check by default
#@ if { $synopsys_program_name == "psyn_shell" } {
#@ set physopt_bypass_multiple_plib_check TRUE
#@ }
#@
#@ # The ls command is gone, now it is just an alias for dc_shell eqn mode
#@
#@ if { [string compare $dc_shell_mode "default"] == 0 } {
#@ if { ( $sh_arch == {mips}) && ( ( $synopsys_program_name == {design_analyzer}) || ( $isatty == 0)) } {
#@ alias ls "sh ls -a "
#@ } else {
#@ if { ( $sh_arch == {mips}) || ( $sh_arch == {necmips}) } {
#@ alias ls "sh ls -aC "
#@ } else {
#@ alias ls "sh ls -aC "
#@ }
#@ }
#@ }
#@
#@ # Aliases for RouteCompiler
#@ alias run_rodeo_router route66
#@
#@ # Removing route_global from the code. Earlier it was hidden. --Mukesh
#@ #proc route_global {} {
#@ # global route_global_keep_tmp_data
#@ # global rt66_dont_lock_dir
#@ #
#@ # set rt66_dont_lock_dir TRUE
#@ #
#@ # for { set i 0} {1==1} {incr i} {
#@ # set wdir [file join [pwd] ".route_global.$i"]
#@ # if {[file exist $wdir] == 0} {
#@ # break;
#@ # }
#@ # }
#@ #
#@ # set_routing_options -cut_out_covered_port CORE_ONLY
#@ # set_routing_options -internal_routing FALSE
#@ # set_routing_options -stick_routing FALSE
#@ #
#@ # ###puts "wdir = $wdir"
#@ #
#@ # set success [route66 -global -dontstop -dir $wdir]
#@ #
#@ # #clean tmp data if required:
#@ # if { $success == 1 } {
#@ # if [catch {string toupper $route_global_keep_tmp_data} result] {
#@ # #variable is not defined
#@ # ###puts "result_1 = $result => removing dir ..."
#@ # catch { file delete -force $wdir }
#@ # } else {
#@ # #variable is set to FALSE
#@ # if { [string compare $result "TRUE"] != 0} {
#@ # ###puts "result_2 = $result => removing dir ..."
#@ # catch { file delete -force $wdir }
#@ # }
#@ # }
#@ # }
#@ #
#@ # set rt66_dont_lock_dir FALSE
#@ # return 1
#@ #}
#@ #define_proc_attributes route_global -hidden
#@
#@ #/* Aliases added for report command */
#@ alias report_clock_constraint "report_timing -path end -to all_registers(-data_pins)"
#@ alias report_clock_fanout "report_transitive_fanout -clock_tree"
#@ alias report_clocks report_clock
#@ alias report_synthetic report_cell
#@
#@ # Alias added for Ultra backward compatibility mode
#@ alias set_ultra_mode set_ultra_optimization
#@
#@ # alias for write_sge and menu item in DA for db2sge
#@
#@ #if { [string compare $dc_shell_mode "tcl"] == 0 } {
#@ # set db2sge_script ${synopsys_root}/admin/setup/.dc_write_sge.tcl
#@ #} else {
#@ # set db2sge_script ${synopsys_root}/admin/setup/.dc_write_sge
#@ #}
#@
#@ #set db2sge_command ${synopsys_root}/${sh_arch}/syn/bin/db2sge
#@ set view_script_submenu_items "\"DA to SGE Transfer\" write_sge"
#@
#@
#@ if { $synopsys_program_name != "lc_shell"} {
#@ # read schematic annotation setup file
#@ #source ${synopsys_root}/admin/setup/.dc_annotate
#@
#@ # setup the default layer settings
#@ #source ${synopsys_root}/admin/setup/.dc_layers
#@
#@ if {$synopsys_program_name != "dc_sms_shell"} {
#@ source ${synopsys_root}/admin/setup/.dc_name_rules
#@ }
#@ } else {
#@ #for read_lib -html
#@ source ${synopsys_root}/auxx/syn/lc/read_lib_html_msg_list.tcl
#@ }
#@ # -- Starting source /tools/synopsys/dc/J-2014.09-SP3//admin/setup/.dc_name_rules
#@ #
#@
#@ # .dc_name_rules Initialization file for
#@
#@ # Dc_Shell and Design_Analyzer
#@
#@ # This files defines name rules for target systems. Change_names
#@ # will use this rules to fix the object names.
#@
#@ #*/
#@
#@
#@ define_name_rules sverilog -type net -allow "a-z A-Z 0-9 _ " -first_restrict "_ 0-9"
#@
#@ define_name_rules sverilog -type port -allow "a-z A-Z 0-9 _ " -first_restrict "_ 0-9"
#@
#@ define_name_rules sverilog -type cell -allow "a-z A-Z 0-9 _ " -first_restrict "_ 0-9"
#@ define_name_rules sverilog -reserved { "always" "always_comb" "always_ff" "always_latch" "and" "assert" "assert_strobe" "assign" "automatic" "begin" "bit" "break" "buf" "bufif0" "bufif1" "byte" "case" "casex" "casez" "cell" "changed" "char" "cmos" "config" "const" "continue" "deassign" "default" "defparam" "design" "disable" "do" "edge" "else" "end" "endcase" "endconfig" "endfunction" "endgenerate" "endinterface" "endmodule" "endprimitive" "endspecify" "endtable" "endtask" "endtransition" "enum" "event" "export" "extern" "for" "force" "forever" "fork" "forkjoin" "function" "generate" "genvar" "highz0" "highz1" "if" "iff" "ifnone" "import" "incdir" "include" "initial" "inout" "input" "instance" "int" "integer" "interface" "join" "large" "liblist" "library" "localparam" "logic" "longint" "longreal" "macromodule" "medium" "modport" "module" "nand" "negedge" "nmos" "nor" "noshowcancelled" "not" "notif0" "notif1" "or" "output" "packed" "parameter" "pmos" "posedge" "primitive" "process" "priority" "pull0" "pull1" "pullup" "pulldown" "pulsestyle_onevent" "pulsestyle_ondetect" "rcmos" "real" "realtime" "reg" "release" "repeat" "return" "rnmos" "rpmos" "rtran" "rtranif0" "rtranif1" "scalared" "shortint" "shortreal" "showcancelled" "signed" "small" "specify" "specparam" "static" "strong0" "strong1" "struct" "supply0" "supply1" "table" "task" "time" "timeprecision" "timeunit" "tran" "tranif0" "tranif1" "transition" "tri" "tri0" "tri1" "triand" "trior" "trireg" "type" "typedef" "union" "unique" "use" "unsigned" "vectored" "void" "wait" "wand" "weak0" "weak1" "while" "wire" "wor" "xor" "xnor" } -special verilog -target_bus_naming_style {%s[%d]} -flatten_multi_dimension_busses -check_internal_net_name -check_bus_indexing
#@
#@ define_name_rules verilog -type net -allow "a-z A-Z 0-9 _ " -first_restrict "_ 0-9"
#@
#@ define_name_rules verilog -type port -allow "a-z A-Z 0-9 _ " -first_restrict "_ 0-9"
#@
#@ define_name_rules verilog -type cell -allow "a-z A-Z 0-9 _ " -first_restrict "_ 0-9"
#@ define_name_rules verilog -reserved { "always" "and" "assign" "automatic" "begin" "buf" "bufif0" "bufif1" "case" "casex" "casez" "cell" "cmos" "config" "deassign" "default" "defparam" "design" "disable" "edge" "else" "end" "endcase" "endconfig" "endfunction" "endgenerate" "endmodule" "endprimitive" "endspecify" "endtable" "endtask" "event" "for" "force" "forever" "fork" "function" "generate" "genvar" "highz0" "highz1" "if" "ifnone" "incdir" "include" "initial" "inout" "input" "instance" "integer" "join" "large" "liblist" "library" "localparam" "macromodule" "medium" "module" "nand" "negedge" "nmos" "nor" "noshowcancelled" "not" "notif0" "notif1" "or" "output" "parameter" "pmos" "posedge" "primitive" "pull0" "pull1" "pullup" "pulldown" "pulsestyle_onevent" "pulsestyle_ondetect" "rcmos" "real" "realtime" "reg" "release" "repeat" "rnmos" "rpmos" "rtran" "rtranif0" "rtranif1" "scalared" "showcancelled" "signed" "small" "specify" "specparam" "strong0" "strong1" "supply0" "supply1" "table" "task" "time" "tran" "tranif0" "tranif1" "tri" "tri0" "tri1" "triand" "trior" "trireg" "unsigned" "use" "vectored" "wait" "wand" "weak0" "weak1" "while" "wire" "wor" "xor" "xnor" } -special verilog -target_bus_naming_style {%s[%d]} -flatten_multi_dimension_busses -check_internal_net_name -check_bus_indexing
#@
#@ define_name_rules verilog_1995 -type net -allow "a-z A-Z 0-9 _ " -first_restrict "_ 0-9"
#@
#@ define_name_rules verilog_1995 -type port -allow "a-z A-Z 0-9 _ " -first_restrict "_ 0-9"
#@
#@ define_name_rules verilog_1995 -type cell -allow "a-z A-Z 0-9 _ " -first_restrict "_ 0-9"
#@ define_name_rules verilog_1995 -reserved { "always" "and" "assign" "begin" "buf" "bufif0" "bufif1" "case" "casex" "casez" "cell" "cmos" "deassign" "default" "defparam" "design" "disable" "edge" "else" "end" "endcase" "endfunction" "endmodule" "endprimitive" "endspecify" "endtable" "endtask" "event" "for" "force" "forever" "fork" "function" "highz0" "highz1" "if" "ifnone" "initial" "inout" "input" "integer" "join" "large" "macromodule" "medium" "module" "nand" "negedge" "nmos" "nor" "notif0" "notif1" "or" "output" "parameter" "pmos" "posedge" "primitive" "pull0" "pull1" "pullup" "pulldown" "rcmos" "real" "realtime" "reg" "release" "repeat" "rnmos" "rpmos" "rtran" "rtranif0" "rtranif1" "scalared" "small" "specify" "specparam" "strong0" "strong1" "supply0" "supply1" "table" "task" "time" "tran" "tranif0" "tranif1" "tri" "tri0" "tri1" "triand" "trior" "trireg" "vectored" "wait" "wand" "weak0" "weak1" "while" "wire" "wor" "xor" "xnor" } -special verilog -target_bus_naming_style {%s[%d]} -flatten_multi_dimension_busses -check_internal_net_name -check_bus_indexing
#@
#@
#@ ####/* Name rule for VHDL */
#@
#@ ####/* Name rule for VHDL */
#@
#@ ####/* Name rule for VHDL */
#@
#@ define_name_rules vhdl -reserved_words { "abs" "access" "after" "alias" "all" "and" "architecture" "array" "assert" "attribute" \
#@ "begin" "block" "body" "buffer" "bus" "case" "component" "configuration" "constant" "disconnect" "downto" "else" "elsif" "end" "entity" "exit" "file" "for" "function" "generate" "generic" "group" "guarded" "if" "impure" "in" "inertial" "inout" "is" "label" "library" "linkage" "literal" "loop" "map" "mod" "nand" "new" "next" "nor" "not" "null" "of" "on" "open" "or" "others" "out" "package" "port" "postponed" "procedure" "process" "pure" "range" "record" "register" "reject" "rem" "report" "return" "rol" "ror" "select" "severity" "signal" "shared" "sla" "sll" "sra" "srl" "subtype" "then" "to" "transport" "type" "unaffected" "units" "until" "use" "variable" "wait" "when" "while" "with" "xnor" "xor"} -case_insensitive -target_bus_naming_style "%s(%d)" -replacement_char "x" -special vhdl
#@ define_name_rules vhdl -type net -allowed "A-Z a-z _ 0-9 " -first_restricted "0-9 _" -last_restricted "_"
#@ define_name_rules vhdl -type port -allowed "A-Z a-z _ 0-9 " -first_restricted "0-9 _" -last_restricted "_"
#@ define_name_rules vhdl -type cell -allowed "A-Z a-z _ 0-9" -first_restricted "0-9 _" -last_restricted "_"
#@ define_name_rules vhdl -map { {{"__","_"},{"_$",""}} }
#@
#@ ####/* Name rule for VHDL */
#@ # -- End source /tools/synopsys/dc/J-2014.09-SP3//admin/setup/.dc_name_rules
#@
#@ if { $synopsys_program_name == "psyn_gui"} {
#@ # read RouteCompiler GUI file for timing critical pathes.
#@ source ${synopsys_root}/auxx/syn/route_gui/write_route_timing_path.tcl
#@ }
#@
#@ # Set physopt_dw_opto to false
#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } {
#@ set physopt_dw_opto FALSE
#@ }
#@
#@ #/* Read budgeting setup script */
#@
#@ if { [string compare $dc_shell_mode "default"] == 0 } {
#@
#@ # Need a encrypted file in Tcl format for budget.setup.et
#@ if { $sh_arch != "msvc50" && $sh_arch != "alpha_nt" } {
#@ # source -e synopsys_root + "/admin/setup/budget.setup.et"
#@ }
#@ }
#@
#@ if { $synopsys_program_name == "icc_shell"} {
#@ source $synopsys_root/auxx/syn/.icc_procs.tcl
#@ source -encrypted $synopsys_root/auxx/syn/cts/fast_atomic_cts.tcl.e
#@ }
#@
#@ if { $synopsys_program_name == "icc_shell"} {
#@ alias report_scenario report_scenarios
#@ }
#@
#@ # floorplanning preferences globals
#@ global fp_snap_type
#@
#@ set fp_snap_type(port) wiretrack
#@ set fp_snap_type(cell) litho
#@ set fp_snap_type(pin) wiretrack
#@ set fp_snap_type(movebound) litho
#@ set fp_snap_type(port_shape) wiretrack
#@ set fp_snap_type(wiring_keepout) wiretrack
#@ set fp_snap_type(placement_keepout) litho
#@ set fp_snap_type(net_shape) wiretrack
#@ set fp_snap_type(route_shape) wiretrack
#@ set fp_snap_type(none) litho
#@
#@ # STAR 9000615813. PWR-18 is no longer internally suppressed.
#@ # Instead call tcl suppress_message so that it can be unsuppressed by users in
#@ # command line if needed
#@ suppress_message PWR-18
#@
#@ # alias for write_sge is always the last line of the setup file
#@ #if { [string compare $dc_shell_mode "tcl"] == 0 } {
#@ # alias write_sge "source db2sge_script"
#@ #} else {
#@ # alias write_sge "include db2sge_script"
#@ #}
#@
#@ if { $dc_shell_mode == "tcl" } {
#@ # Configure Execute script dialog to display .tcl files
#@ set view_execute_script_suffix "$view_execute_script_suffix .tcl"
#@ }
#@
#@ #
#@ # Shirley Lu 5/15/2007
#@ #
#@ # Invoke NCX validation/correlation/fomatter from lc_shell:
#@ #
#@ # UNIX shell:
#@ # setenv SYNOPSYS_NCX_ROOT /mydisk/ncx_2007.06
#@ #
#@
#@ if {[info exists env(SYNOPSYS_NCX_ROOT)]} {
#@
#@ set ncx_path $env(SYNOPSYS_NCX_ROOT)/ncx/${sh_arch}/bin
#@
#@ #
#@ # check_ccs_lib
#@ # use libchecker under $ncx_path defined above
#@ # Disable this command since 2010.12-SP3 (should be done in 2010.12 release)
#@ #proc check_ccs_lib {args} {
#@ # global ncx_path
#@ # set cmdStr [linsert $args 0 ${ncx_path}/libchecker -lc_shell]
#@ # set cmd [open "| $cmdStr 2>@ stdout"]
#@ # catch {
#@ # while {[gets $cmd info] >= 0} {
#@ # echo $info
#@ # }
#@ # }
#@ # if {[catch {close $cmd} msg]} {
#@ # }
#@ #}
#@
#@ #
#@ # format_lib
#@ # use ncx under $ncx_path defined above
#@ # Disable format_lib command in 2014.09 release -- xwwang, 7/25/2014
#@ #proc format_lib {args} {
#@ # global ncx_path
#@ # echo "Warning: format_lib command is scheduled to become obsolete in a future production release."
#@ # set cmdStr [linsert $args 0 ${ncx_path}/ncx -lc_shell]
#@ # set cmd [open "| $cmdStr 2>@ stdout"]
#@ # catch {
#@ # while {[gets $cmd info] >= 0} {
#@ # echo $info
#@ # }
#@ # }
#@ # if {[catch {close $cmd} msg]} {
#@ # }
#@ #}
#@
#@ }
#@
#@ proc get_nglc_search_path { } {
#@ set exec_path "invalid"
#@ if {[info exists ::env(SYNOPSYS_LC_ROOT)] && [file exists $::env(SYNOPSYS_LC_ROOT)/$::sh_arch/lc/bin/lc_shell_exec]} {
#@ set exec_path $::env(SYNOPSYS_LC_ROOT)/$::sh_arch/lc/bin/lc_shell_exec
#@ }
#@
#@ return $exec_path
#@ }
#@
#@ proc get_libra_synopsys_root { } {
#@ return [file dirname [file dirname [file dirname [file dirname $::nglc_search_path] ] ] ]
#@ }
#@
#@ proc valias {v_orig v_alias} {
#@ uplevel 1 "upvar 0 $v_orig $v_alias"
#@ }
#@
#@ set nglc_result_path "/tmp"
#@ set nglc_replay_tcl_file "nglc_shell_command.tcl"
#@ set nglc_search_path [get_nglc_search_path]
#@ set lc_run_from_legacy_library_compiler "true"
#@ set nglc_is_none_tech_file "false"
#@ set nglc_keep_nglc_temp_files "false"
#@ set nglc_intermediate_db_files ""
#@ set nglc_log_path ""
#@ set lc_enable_legacy_library_compiler "false"
#@
#@ valias lc_enable_legacy_library_compiler lc_enable_common_shell_lc
#@
#@ proc nglc_read_lib { args } {
#@ common_shell_read_lib $args
#@ }
#@
#@
#@ proc common_shell_read_lib {args } {
#@ set_folder_var
#@ set tcl_file "$::nglc_result_path/$::nglc_log_path/$::nglc_replay_tcl_file"
#@ set chan [open $tcl_file a]
#@ export_tcl_var $chan
#@ gen_nglc_read_lib_procedure $chan $args
#@ close $chan
#@ run_libra_with_echo $tcl_file
#@ common_shell_read_dbs
#@ set_none_tech_file
#@ }
#@
#@ # create the unique folder under tmp
#@ proc set_folder_var { } {
#@ set fileName [pid]
#@ set ::nglc_log_path [append fileName "_" [clock microseconds]]
#@ file delete -force $::nglc_result_path/$::nglc_log_path
#@ file mkdir $::nglc_result_path/$::nglc_log_path
#@ }
#@
#@ # export all the vars
#@ proc export_tcl_var { fileName } {
#@ foreach var [info vars ::* ] {
#@ if [array exists $var] {
#@ continue;
#@ }
#@ puts $fileName "set $var \[list [set $var]\]"
#@ }
#@ }
#@
#@ # excuted by libra shell to read the dbs generated by common_shell
#@ proc common_shell_read_dbs { } {
#@ set dbNames ""
#@ foreach var [glob -nocomplain -directory $::nglc_result_path/$::nglc_log_path *.db] {
#@ append dbNames " " $var
#@ }
#@ set ::nglc_intermediate_db_files $dbNames
#@ }
#@
#@ # display the log file genrated by common_shell in Libra and then remove the unique folder
#@ proc common_shell_clean_up { } {
#@ if { $::nglc_keep_nglc_temp_files == "false" } {
#@ file delete -force $::nglc_result_path/$::nglc_log_path
#@ }
#@ }
#@
#@ proc gen_nglc_read_lib_procedure { fileName args} {
#@ puts $fileName "##@@@## gen_common_shell_read_lib"
#@ puts $fileName "eval [lindex [lindex $args 0] 0]"
#@ puts $fileName "##@@@##"
#@ puts $fileName "set lc_write_view_db_file false"
#@ puts $fileName "set librs \[get_libs\]"
#@ puts $fileName "for {set i 0} {\$i < \[ sizeof \$librs \]} {incr i 1} {"
#@ puts $fileName " set lib \[index_collection \$librs \$i]"
#@ puts $fileName " redirect -var a \"query_object \$lib\" "
#@ puts $fileName " if \[regexp {{(\")?(gtech)(\")?}} \$a\] { "
#@ puts $fileName " } elseif \[regexp {{(\")?(standard.sldb)(\")?}} \$a] { "
#@ puts $fileName " } else {"
#@ puts $fileName " regexp {{(\")?(\[^\"\]*)(\")?}} \$a b c d e "
#@ puts $fileName " write_lib \$d -o \$nglc_result_path/\$nglc_log_path/\$d.db"
#@ puts $fileName " }"
#@ puts $fileName "}"
#@ puts $fileName "exit"
#@ }
#@
#@ proc set_none_tech_file { } {
#@ if { [file exists $::nglc_result_path/$::nglc_log_path/is_non_tech_file] } {
#@ set ::nglc_is_none_tech_file true;
#@ } else {
#@ set ::nglc_is_none_tech_file false;
#@ }
#@ }
#@
#@ proc run_libra_with_echo {tcl_file} {
#@ set chan [open "|$::nglc_search_path -r [get_libra_synopsys_root] -f $tcl_file" r]
#@ # things to do: In debug mode, we want copy the whole output (beginning to end)
#@ # to a file
#@ if {$::nglc_keep_nglc_temp_files} {
#@ set log [open $::nglc_result_path/$::nglc_log_path/libra.log w]
#@ }
#@ set echo 0
#@ set firstLine true
#@ while {[gets $chan line] >= 0} {
#@ if {$::nglc_keep_nglc_temp_files} { puts $log $line }
#@ if {[string equal -length 7 $line "##@@@##"]} {
#@ set echo [expr ! $echo]
#@ continue;
#@ }
#@ if {$echo} {
#@ if { $firstLine } {
#@ set firstLine false
#@ continue;
#@ } else {
#@ puts $line
#@ }
#@ }
#@ }
#@ close $chan
#@ if {$::nglc_keep_nglc_temp_files} {
#@ close $log
#@ }
#@ }
#@
#@ # -- End source /tools/synopsys/dc/J-2014.09-SP3//admin/setup/.synopsys_dc.setup
man report_constraint
man report_constraint > report_constraint
exit