TCL Symposium A scripts makes our job lot easier ASIC Backend TCL Scripting Outcome of the TCL Symposium ● ● ● ● ● ● You have come up with how to tackle the problem statement At which stage which all tcl packages used to solve the issues Importance of syntax and its attribute, switches, arguments etc Examples that build your skills to solve any kind of problems in the real time project Formats/ templates that simplified to write the tcl code, and develop the decipline It helps, Systematic approach to learn from beginner to advance level Steps to follow the format ● Copy the table and express the same Name Your name 1 Problem Statement Here you can express which all tcl commands trying to explore 2 Tcl Packages Mention that at which stage you were trying to use the commands for your script, for example At design/sta/pnr/sdc/eco/drc etc ? 3 Syntax Here you need to mention all the syntax used 4 Arguments Give brief explanation about syntax ,attributes, switches, etc 5 Syntax and argument Descriptions Describe briefly about syntax, attributes, switches 6 Unix commands usage Mention unix commands used in your scripts, if any 7 Examples Usage Mention your tcl scripts 8 Script Explaination Give the simple explanation about the problem statement, script discipline, script body, and its logic Here are some examples Name Naveen AS 1 Problem Statement Find a net called "reg" using case insensitive search 2 Tcl Packages Tcl SDC PNR flow.. The following table displays information for the get_nets Tcl command 3 Syntax get_nets [-h | -help] [-long_help] [-no_duplicates] [-nocase] [-nowarn] [ ] 4 Arguments -h | -help Short help -long_help Long help with examples and possible return values -no_duplicates Do not match duplicated net names -nocase Specifies case-insensitive node name matching -nowarn Do not issue warning messages about unmatched patterns <filter> Valid destinations (string patterns are matched using Tcl string matching) 5 Syntax and argument Descriptions Returns a collection of nets in the design. All net names in the collection match the specified pattern. Wildcards can be used to select multiple nets at once. The default matching scheme returns nets whose names match the specified filter and nets that are automatically generated by the Quartus Prime software from these nets. Use the -no_duplicates option to exclude duplicated nets. The filter for the collection is a Tcl list of wildcards, and must follow standard Tcl or Timing Analyzer-extension substitution rules. See help for the use_timing_analyzer_style_escaping command for details. 6 Examples Usage # Find a net called "reg" using case insensitive search get_nets -nocase reg # Create a collection of all nets whose names start with "reg" get_nets reg* # Create a collection of all nets in the design set mycollection [get_nets *] # Output net names. foreach_in_collection net $mycollection { puts [get_net_info -name $net] } 7 Script Explaination Name Naveen AS 1 Problem Statement reporting the worst-case slack if a path is found 2 Tcl Packages Tcl STA/PNR flow Information for the report_timing Tcl command 3 Syntax report_timing [-h | -help] [-long_help] [-append] [-data_delay] [-detail ] [-extra_info ] [- fall_from ] [-fall_from_clock ] [-fall_through ] [- fall_to ] [-fall_to_clock ] [-false_path] [-file ] [- from ] [-from_clock ] [-hold] [-intra_clock] [-less_than_slack ] [-npaths ] [-nworst ] [-pairs_only] [-panel_name ] [-recovery] [-removal] [-rise_from ] [-rise_from_clock ] [-rise_through ] [-rise_to ] [-rise_to_clock ] [-setup] [-show_routing] [-split_by_corner] [-stdout] [-through ] [-to ] [-to_clock ] 4 Arguments -h | -help Short help -long_help Long help with examples and possible return values -append If output is sent to a file, this option appends the result to that file. Otherwise, the file will be overwritten. This option is not supported for HTML files. -data_delay -detail Report only paths that are covered by a data delay assignment Option to determine how much detail should be shown in the path report -extra_info Option to determine how much detail should be shown in the Extra Info report -fall_from Valid sources (string patterns are matched using Tcl string matching) and so on 5 Syntax and argument Descriptions Reports the worst-case paths and associated slack. Use the "-setup", "-hold", "-recovery", or "- removal" options to specify which kind of analysis should be performed. The report can be directed to the Tcl console ("-stdout", default), a file ("-file"), the Timing Analyzer graphical user interface ("- panel_name"), or any combination of the three. You can limit the analysis performed by this command to specific start and end points, using the "-from" and "-to" options. Use the "-rise_from" and "-fall_from" options to limit the analysis to endpoints with established high or low starting states. Use the "-rise_to" and "-fall_to" options to limit the analysis to destination points with high or low ending states. The analysis can be further limited to clocks using the "-from_clock" and "-to_clock" options, or to specific edges of the clock using the "-rise_from_clock", "-fall_from_clock", "rise_to_clock", and "-fall_to_clock" options. Additionally, the "-through" option can be used to restrict analysis to paths which go through specified pins or nets. 6 Examples Usage reporting the worst-case slack if a path is found. project_open my_project # reporting the worst-case slack if a path is found. set my_list [report_timing -from foo -to bar] set num_paths [lindex $my_list 0] set wc_slack [lindex $my_list 1] if { $num_paths > 0 } { puts "Worst case slack -from foo -to bar is $wc_slack" } # The following command is optional delete_timing_netlist project_close 7 Example : Script Explaination ● ● ● ● ● ● Here in this example, reporting the worst case slack from the timing report by tcl script Setting the user variable by user name my_list to get the report timing information and saved it into my_list Now listing the num of paths by setting variable Now listing all worst case slack by setting the variable Now using the if conditions to find worst slack in the list, if there are any no of the paths are greater than zero then if condition met then show the worst case slack Else show there is no worst slack in the list