While working on industry grade EDA tools, it is important to understand the working of commands. However most important are switches used along with the commands. These switches are designed in such a way that it acquire sufficient information from the end user (user that is using the command). As a end user you can control the command also or say you can instruct the program to execute the command in a specific manner.
For Example There is a program that can extract 10 different informations from a file but may be as a user you don't want all those information at the same time. If you want that program should give you only 5 informations, than obviously you have instruct the program. A good program is the program which give flexiblity to the end user to instruct the program (even though that's your program but end user think that they are controling the program :) )
Both the above mentioned things can be easily done with the help of switches. There are 2 type of switches.
- Optional Switch
- It's user dependent
- If user define/uses these switches while runing/executing the program, respective program of task is going to perform else no need to perform task
- Mandatory Switch
- User has to provide the value of this else program is not going to work - or program will give you an error
This is the first program of Second series of TCL Scripting language. If you have done all 4 task of Series 1, It's good but in case you missed that - Complete them first (even before starting this program). TCL Practice Task 1, TCL Practice Task 2, TCL Practice Task 3, TCL Practice Task 4,
PART 1 of S2_1
Step 1: Create a input file as mentioned below.##################################################################
Startpoint: DFFPOSX1_3 (rising edge-triggered flip-flop clocked by clk)
Endpoint: out1 (output port clocked by clk)
Path Group: reg-to-out
Path Type: max
Delay Time Description
---------------------------------------------------------------
0.00 0.00 clock clk (rise edge)
1.23 1.23 clock network delay (prop)
0.16 1.39 ^ DFFPOSX1_3/CLK (DFFPOSX1)
0.27 1.66 v DFFPOSX1_3/Q (DFFPOSX1)
0.08 1.74 v BUFX2_1/Y (BUFX2)
0.13 1.87 v out1 (out)
1.87 data arrival time
1.00 1.00 clock clk (rise edge)
1.43 2.43 clock network delay (prop)
-0.25 2.18 Uncertainty
0.54 2.72 clock reconvergence pessimism
-2.50 0.22 output external delay
0.22 data required time
---------------------------------------------------------------
0.22 data required time
-1.87 data arrival time
---------------------------------------------------------------
slack -1.65 (VIOLATED)
Startpoint: DFFPOSX1_3 (rising edge-triggered flip-flop clocked by clk)
Endpoint: out1 (output port clocked by clk)
Path Group: reg-to-out
Path Type: max
Startpoint: DFFPOSX1_3 (rising edge-triggered flip-flop clocked by clk)
Endpoint: out1 (output port clocked by clk)
Path Group: reg-to-out
Path Type: max
Delay Time Description
---------------------------------------------------------------
0.00 0.00 clock clk (rise edge)
1.23 1.23 clock network delay (prop)
0.16 1.39 ^ DFFPOSX1_3/CLK (DFFPOSX1)
0.27 1.66 v DFFPOSX1_3/Q (DFFPOSX1)
0.08 1.74 v BUFX2_1/Y (BUFX2)
0.13 1.87 v out1 (out)
1.87 data arrival time
1.00 1.00 clock clk (rise edge)
1.43 2.43 clock network delay (prop)
-0.25 2.18 Uncertainty
0.54 2.72 clock reconvergence pessimism
-2.50 0.22 output external delay
0.22 data required time
---------------------------------------------------------------
0.22 data required time
-1.87 data arrival time
---------------------------------------------------------------
slack -1.65 (VIOLATED)
Startpoint: DFFPOSX1_3 (rising edge-triggered flip-flop clocked by clk)
Endpoint: out1 (output port clocked by clk)
Path Group: reg-to-out
Path Type: max
Delay Time Description
---------------------------------------------------------------
0.00 0.00 clock clk (rise edge)
1.23 1.23 clock network delay (prop)
0.16 1.39 ^ DFFPOSX1_3/CLK (DFFPOSX1)
0.27 1.66 v DFFPOSX1_3/Q (DFFPOSX1)
0.08 1.74 v BUFX2_1/Y (BUFX2)
0.13 1.87 v out1 (out)
1.87 data arrival time
1.00 1.00 clock clk (rise edge)
1.43 2.43 clock network delay (prop)
-0.25 2.18 Uncertainty
0.54 2.72 clock reconvergence pessimism
-2.50 0.22 output external delay
0.22 data required time
---------------------------------------------------------------
0.22 data required time
-1.87 data arrival time
---------------------------------------------------------------
slack -1.43 (VIOLATED)
---------------------------------------------------------------
0.00 0.00 clock clk (rise edge)
1.23 1.23 clock network delay (prop)
0.16 1.39 ^ DFFPOSX1_3/CLK (DFFPOSX1)
0.27 1.66 v DFFPOSX1_3/Q (DFFPOSX1)
0.08 1.74 v BUFX2_1/Y (BUFX2)
0.13 1.87 v out1 (out)
1.87 data arrival time
1.00 1.00 clock clk (rise edge)
1.43 2.43 clock network delay (prop)
-0.25 2.18 Uncertainty
0.54 2.72 clock reconvergence pessimism
-2.50 0.22 output external delay
0.22 data required time
---------------------------------------------------------------
0.22 data required time
-1.87 data arrival time
---------------------------------------------------------------
slack -1.43 (VIOLATED)
##################################################################
Step 2 : You have to create a command line script cum procedure, which will take the Step 1 as a input file with a switch; and other user defined switch which will output the certain values.
It should be like “report_parameter.tcl -input report.txt -dat -drt -slack -cppr -skew -path_group”
(Note: I am not specifying the switch name - you can choose yourself. Use a Switch --help which user can use to find out all the switches).
Step 3 : Output should be dumped into a csv file (Comma separated value file). This is very common file in Industry and whenever you are going to open this file using excel or libreoffice (in linux). Please find the csv file snapshot.