Friday, December 24, 2021

TCL Practice Task S2_1 (Scripting Language)


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
So, I am back here to help you in developing that skill along with automation which will create a background of understanding that how industry tools works.

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 1TCL Practice Task 2, TCL Practice Task 3TCL 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

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)

##################################################################

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.

Parameters, Report 
slack,-1.65
ext_delay,3.00
uncertainty,0.25
cppr,0.54
data path delay,1.87
Skew,0.20




PART 2 of S2_1


Repeat all the steps with the help of attached file - which is bigger in size and as per Industry requirement.

STEP 1 Full report_file

I am sure this article will help you to prepare for TCL scripting. I have few more such programs which I will try to capture later sometime.


-By Rajat Bansal
(Btech-EC:- 2019 Passout)
https://www.linkedin.com/in/rajat-bansal-3400009b/


-Supervised By Puneet Mittal
(Founder & Director)
(VLSI Expert Private Limited)

No comments:

Post a Comment