20 February

VLSI EDA Companies in India | Top EDA Companies

In any modern electronic chip, there are multimillion logic gates inside it. To handle the design part of any such chips engineers need to take the help of CAD tools. The CAD tools used for ASIC development is called Electronic Design and Automation (EDA) tools. 

In the ecosystem of the semiconductor industry, EDA companies play a vital role. All the service/product companies take support from these EDA companies to develop any chip. The EDA companies are very specialized to solve new challenges especially related to a new technology node. Some EDA companies also work on the IP development side also along with tools development and support. 



In this article, we have listed the top 10 EDA companies along with their basic details like their offices and India and offshore, their LinkedIn page and their website. Hope this article will help you to explore the EDA sector.




S.N Company name Inception Offices in India Offices Outside India LinkedIn Website
1 Cadence Design Systems 1988 Noida, Bengaluru
Pune, Ahmedabad
USA, Europe,
China,Japan,
Malaysia, Singapore,
Korea, Taiwan
LinkedIn Website
2 Synopsys Inc 1986 Bengaluru, Noida
Hyderabad, Pune
Mumbai
USA, Canada
Europe, China
Singapore, Korea
Taiwan, Japan
LinkedIn Website
3 Mentor Graphics
Acuired by
Siemens EDA
In 2017
1981 Noida Bengaluru
Hyderabad
USA, Canada
Europe, Taiwan
Japan Rusia
LinkedIn Website
4 Xilinx 1984 Hyderabad, Bengaluru USA, Europe,
China, Japan
Singapore, Korea
LinkedIn Website
5 Ansys 1970 Mulshi (Maharastra)
Bengaluru, Pune
Hyderabad, Noida
Canada, USA
Europe, China
Singapore, Japan
Korea Taiwan
LinkedIn Website
6 Keysight Technologies 2014 Bengaluru, Kolkata
Gurugram
USA, Europe,
China, Malaysia
Taiwan, Singapore,
Korea, Japan
LinkedIn Website
7 Silvaco Inc 1984 Bengaluru USA, Brazil
Japan, Taiwan
Korea, China
Singapore, Europe
LinkedIn Website
8 Dorado Design Automation
Acquired by
Synopsys
2003 Bengaluru USA, China LinkedIn Website
9 Agnisys Inc. 2007 Noida USA, Europe,
China, Taiwan
Korea, Japan
LinkedIn Website
10 Aldec 1984 Bengaluru USA, Europe,
Japan
LinkedIn Website

Your suggestions are most welcome in the comment section.

Thank you!

07 February

VLSI Product Companies in India | Top 30 Semiconductor Product Companies

The electronics devices which we use on daily basis either come directly from a Semiconductor product company or the final chip developed by the product company is sold to some other company and they use the chip and make the final product and market it. Example: A Samsung mobile phone or a laptop of HP which is powered by an AMD processor. That's the reason why common people also know the name of a semiconductor product company whereas the name of a service company is not known to common people. Whereas the role of service companies is limited to supporting product/IP companies, they are the best solution provider in the industry and have expertise in a particular type of work.

So most of the semiconductor professionals want to join a product company, its not true for all but it's true for most. These product companies could be either a fabless company that takes support from a pure-play foundry to build their chip or they have their own foundries like Intel and Samsung. 


In this article, we have listed out the product companies especially those working in India along with some basic details like offices in India and offices outside India, their LinkedIn page, their website and provided the hyperlink in the list. We believe this will be very helpful to you to know the industry in a better way and also will help you to select a good company if you are looking for a job change or wanted to enter into the industry first time. 



S.N Company name Inception Offices in India Offices Outside India LinkedIn Website
1 Intel Corporation 1968 Bengaluru, Hyderabad USA, Europe, China,
Israel, Japan,
Malaysia, Singapore,
S. Korea, Taiwan
LinkedIn Website
2 Samsung Electronics 1938 Bengaluru S. Korea, USA,
Singapore, Bangkok,
LinkedIn Website
3 Nvidia 1993 Bengaluru, Pune,
Hyderabad, New Delhi
USA, Brazil, Europe,
Israel, China,
Japan, Korea,
Taiwan, Singapore
LinkedIn Website
4 AMD 1969 Bengaluru, Hyderabad,
Mumbai, Gurugram
USA, Europe,
China, Korea,
Singapore, Taiwan,
Japan
LinkedIn Website
5 Google 1998 Bengaluru, Mumbai,
Hyderabad, Gurugram
USA, Europe,
China, Australia,
Korea, Singapore
LinkedIn Website
6 MediaTek 1997 Bengaluru, Mumbai,
Noida
USA, Europe,
China, Dubai,
Taiwan, Singapore,
Korea, Japan
LinkedIn Website
7 Qualcomm 1985 Bengaluru, Chennai,
Hyderabad, Mumbai,
Noida, Gurugram
USA, Europe,
Canada, Israel,
Russia, Korea,
Singapore
LinkedIn Website
8 Apple 1976 Bengaluru, Hyderabad,
Chennai, Gurugram,
Mumbai
USA, Canada,
Europe, Australia,
China, Singapore,
Japan, Russia,
Korea
LinkedIn Website
9 NXP 2006 Bengaluru, Hyderabad,
Noida, Pune
USA, Canada, Europe,
China, Japan,
Korea, Singapore,
LinkedIn Website
10 Texas Instruments 1951 Bengaluru USA, Europe,
China, Japan,
Korea, Malaysia,
Taiwan
LinkedIn Website



S.N Company name Inception Offices in India Offices Outside India LinkedIn Website
11 Cisco 1984 Bengaluru, Pune,
Hyderabad
USA, Europe,
China, Singapore,
Australia
LinkedIn Website
12 Broadcom Inc.
Acquired by Avago Technology in 2016
1991 Bengaluru, Hyderabad,
Pune
USA, Canada,
Europe, China,
Australia, Japan,
Korea, Singapore
LinkedIn Website
13 Micron Technology 1978 Bengaluru, Hyderabad USA, Europe,
Singapore, China,
Taiwan
LinkedIn Website
14 Arm
Acquesition in progress
by Nvidia
1990 Bengaluru, Noida USA, Europe,
China, Korea
LinkedIn Website
15 Analog Devices 1965 Bengaluru, Hyderabad USA, Canada,
Europe, Australia,
China , Israel,
Japan, Taiwan,
Turkey
LinkedIn Website
16 STMicroelectronics 1987 Noida, Bengaluru Europe, USA,
China, Australia,
Korea, Japan,
Singapore
LinkedIn Website
17 Juniper Networks 1996 Bengaluru USA, Europe,
China, Israel
LinkedIn Website
18 Xilinx 1984 Hyderabad USA, Europe,
China, Singapore,
Japan
LinkedIn Website
19 ON Semiconductor
Now Onsemi
1999 Bengaluru USA, Europe,
China, Taiwan,
Japan, S.Korea
LinkedIn Website
20 Applied materials 1967 Bengaluru, Chennai,
Mumbai, Noida,
Coimbatore
USA, Canada,
Europe, Israel,
China, Japan,
Korea, Taiwan
LinkedIn Website



S.N Company name Inception Offices in India Offices Outside India LinkedIn Website
21 Nordic Semiconductor 1983 Hyderabad USA, Europe,
China, Taiwan,
Korea
LinkedIn Website
22 Microchip 1989 Bengaluru, Chennai,
Pune, New Delhi
USA, Europe,
China, Singapore,
Australia, Taiwan,
Korea, Japan
LinkedIn Website
23 Redpine Lab 2001 Hyderabad USA LinkedIn Website
24 Marvel Technology 1995 Pune, Bengaluru USA, Europe,
China, Singapore,
Taiwan, Korea,
Japan
LinkedIn Website
25 Silicon Labs 1996 Hyderabad USA, Canada,
Europe, Singapore,
China, Japan,
Korea, Taiwan
LinkedIn Website
26 Ceremorphic 2020 Hyderabad USA LinkedIn Website
27 Rambus 1990 Bengaluru USA, Holand LinkedIn Website
28 Fungible Inc. 2015 Bengaluru USA LinkedIn Website
29 Seagate Technology 1979 Pune USA, Europe
Singapore
LinkedIn Website
30 Western Digital
Acquired: SanDisk
in 2016
1970 Bengaluru USA LinkedIn Website



We tried to list out all the known product companies here, but if we missed some, please help us to add them here by your comment in the comment box below this article.

Thank You.

04 February

VLSI Service Companies in India | Top 40 VLSI Service companies

 If you are looking for a job change or you are a fresher and wanted to enter the VLSI Industry, then this article will help you a lot. It is difficult to find the company details or even a list of VLSI companies working in India. In this article, we have tried to prepare a list of all the well-known service companies working in India. We have also included the basic details of all the companies like the year of inception of the company, the City where the company has offices, the LinkedIn page link, and the website of companies.

Let me explain how this article could be useful to find the companies where should you apply. First I would like to recommend you make a decent LinkedIn profile and let's connect to people of your domain.  You will find the official LinkedIn page of each company, you can go to the company's official LinkedIn page by just clicking the hyperlink provided in the list. You are suggested to follow the company so that you will get the feed when those companies post any opening on LinkedIn. By following the company on LinkedIn you will get updates on the job posts by the company. 

You can also follow/connect to the recruiters of those companies where you want to join. You can make connections to the people of those companies. Further, you can also ask for a reference if you know someone on LinkedIn and working where you want to apply. Believe me, reference has a very good impact and If you have matching experience or skills set, you can easily get the interview call.




S.No company name Inception office in India Offices outside India LinkedIn Website
1 eInfochips
Acquired by Arrow Electronics
in 2018
1994 Ahmedabad, Bangalore,
Pune, Hyderabad, Noida,
Kolkata, Bhubneshwar
USA, Japan LinkedIn Website
2 Eximius Design
Acquired by Wipro
in 2020
2013 Bangalore, Ahmedabad, USA, Malaysia LinkedIn Website
3 OpenFive
(Formerly Open-Silicon)
Acquired by SiFive in 2020
2003 Bangalore, Pune USA, Israel
France, China
Korea, Taiwan
Japan
LinkedIn Website
4 Sankalp Semiconductor
Acquired by HCL Technologies
in 2019
2005 Bangalore, Kolkata USA LinkedIn Website
5 Synapse Design Inc.
Acquired by QuEST Global
in 2021
2003 Bangalore, Ahmedabad USA, China
Europe, Japan
Malaysia, Vietnam
LinkedIn Website
6 Cerium Systems
Acquired by Tech Mahindra
in 2020
2013 Bangalore, Cochin,
Vizag
USA, Malaysia LinkedIn Website
7 SeviTech Systems
Acquired by UST Global
in 2018
2013 Bangalore, Hyderabad LinkedIn Website
8 Altran Technology
Acquired by Capgemini Engineering
in 2019
1982 Bangalore France, China, LinkedIn Website
9 Cypress Semiconductor Crop
Acquired by Infinion Technology
in 2020
1982 Bangalore, Chennai,
Noida, Mumbai
USA, Japan,
China, Europe
LinkedIn Website
10 Graphene Semiconductor
Acquired by L&T Technology Service
in 2018
2013 Bangalore USA, Europe,
Israel, China
Singapore, Taiwan
LinkedIn Website
11 wafer Space
Acquired by ALTEN Calsoft Labs,
in 2019
2011 Bangalore USA LinkedIn Website
12 Mirafra Technologies 2004 Bangalore, Hyderabad USA, Singapore LinkedIn Website
13 Insemi Technology 2013 Bangalore NA LinkedIn Website
14 Moschip 1999 Hyderabad, Bangalore USA LinkedIn Website
15 Digicomm Semiconductor 2012 Bangalore, Pune,
Hyderabad, Noida
USA LinkedIn Website


S.No company name Inception office in India Offices outside India LinkedIn Website
16 SignOff Semiconductors 2015 Bangalore USA LinkedIn Website
17 PerfactVIP 2010 Bangalore, Bhubaneswar
Ahmedabad, Noida
USA LinkedIn Website
18 TrueChip 2008 Noida, Bangalore USA LinkedIn Website
19 Infineon Technologie 1999 Bangalore, Chennai,
Noida, Mumbai
USA, Japan,
China, Europe
LinkedIn Website
20 Smart SOC 2016 Bangalore USA, Europe,
Singapore, Malaysia,
South Koria
LinkedIn Website
21 Ensilica 2001 Bangalore USA, Europe LinkedIn Website
22 ASM Technologies 1968 Bangalore USA, Singapore,
UK, Canada,
Mexico, Japan
LinkedIn Website
23 SPEL 1988 Chennai
USA, Europe,
Singapore
LinkedIn Website
24 Spicaworks 2018 Bangalore, Noida,
Hyderabad
USA LinkedIn Website
25 DXCorr Design Inc 2005 Bangalore USA, Japan LinkedIn Website
26 SkandySys 2017 Bangalore NA LinkedIn Website
27 Igniterium 2012 Bangalore, Kochi USA LinkedIn Website
28 Adept Chip Services 2011 Bangalore USA LinkedIn Website
29 Chip logic 2018 Bangalore UK LinkedIn Website
30 Incise Infotech 2010 Noida, Bangalore LinkedIn Website


S.No company name Inception office in India Offices outside India LinkedIn Website
31 ChipOn Time Technologies 2019 Bangalore NA LinkedIn Website
32 Marquee Semiconductor 2019 Bhubaneswar USA, Singapore,
Philippines
LinkedIn Website
33 Pozibility Technologies 2016 Bangalore USA LinkedIn Website
34 BitSilica 2019 Hyderabad LinkedIn Website
35 Laksh Semiconductors 2016 Bangalore, Hyderabad LinkedIn Website
36 NikSperri Technologies 2020 Bangalore LinkedIn Website
37 Soctronics Hyderabad, Bangalore USA LinkedIn Website
38 Alpha-Numero Bangalore, Ahmedabad,
Hyderabad
USA LinkedIn Website
39 Masamb 2007 Noida, Bangalore LinkedIn Website
40 Blueberry Semiconductors 2017 Bangalore LinkedIn Website
41 BloomConn 2021 Ahmedabad LinkedIn Website
42 Excel VLSI Technology 2017 Bangalore LinkedIn Website
43 Siliconus Technologies 2016 Bangalore LinkedIn Website
44 Sivaltech 2016 Bangalore USA LinkedIn Website
45 Cientra Bangalore USA, Europe LinkedIn Website
46 Pronesis Technologies 2014 Ahmedabad Singapore LinkedIn Website
47 Sibridge Technologies 2007 Ahmedabad USA LinkedIn Website

There are many more companies and I might miss their name in this list. I am requesting my readers if you find any name is missing, you may add their name in comment section, I will add them to the list.


Thank you.

05 November

Input Files Required for PnR and Signoff Stages

In this article, we are going to discuss the input files required in various stages of pnr and signoff. We can categories the set of inputs into two parts, one is mandatory and the other is an optional set of inputs.



A. Place and Route stages:

 

I. Pre Placement Stage

    • Gate level netlist 
    • Logical Library
    • Physical Library
    • SDC file
        Optional inputs
    • Block partition def
    • Pin def
    • Power plan script
    • Welltap placement rule
    • Macro placement guidelines
    • MMMC Setup file
    • EndCap, Decap cell list
    • Spare Cell module definition and rule
Note:  (i) Logical Library, Physical Library and SDC file will be required in each stage.
            (ii) Netlist will get modified in each stage and an updated netlist will be used in the next stage. 


II. Placement

    • Preplace database
        Optional Inputs
    • Placement blockage script
    • Path groups script
    • Placement setting script 
    • Timing and Congestion Optimization scripts
    • Clock tree constraints (In case of Early Clock Flow)

III. CTS

    • Placement database
    • Clock tree constraints

IV. Route

    • CTS database

V. Chip Finish

    • Route database
    • Filler cell list

B. Metal Fill

    • OASIS/GDS of Chip finish stage

C. RC Extraction

    • ICT File / Quantus Techfile (qrcTechFile)
    • MMMC setup file
    • LEF
    • DEF
    • Merged OASIS/GDS file


D. IR Analysis


Technology/Library Data

    • LEF file (.lef)
    • LIB file (.lib)
    • Technology file (.tech)
    • GDS file of standard cells (.gds)
    • GDS Layer map file
    • Device model file*
    • SPICE Netlist of Standard cells* 

Design Data

    • DEF file
    • Netlist file
    • SPEF file
    • STA File*  (Timing Window, slew, instance frequency, clock domain info)
    • VCD file*
    • PLOC file*
* Files required only for dynamic analysis 

Types of Analysis:

I. Static IR Analysis

II. Dynamic IR Analysis

III. EM Analysis

 



E. Static Timing Analysis

  • Design Netlist 
  • SDC
  • LIB
  • SPEF
  • MMMC view definition file

Optional inputs:

  1. Instance-based IR drop file
  2. SI library
  3. Base/Incr Delay annotation file

F. Physical Verification

I. DRC

    • Merged GDS file
    • DRC RuleDeck file 

II. Antenna

    • Merged GDS file
    • Antenna RuleDeck file

III. Layout Vs Schematic Check (LVS)

    • PD Netlist
    • Merged GDS file 

IV. Logic Equivelence Check (LEC)

    • Golden Netlist
    • PD Netlist
    • LEC Constraints (if any) 

 In case you find anything missing or need a correction, please let me know in the comment section.


Thank You!

25 September

TSMC 7nm, 16nm and 28nm Technology node comparisons

Before starting this article, I would like to say this topic is highly sensitive and we are not supposed to reveal any foundry data. So Instead of making comments on any data which you know and I have not given here, you may mail me along with the reference link. The purpose of writing this article is only to make aware to new people who are preparing to enter into VLSI industry in an easy way. 

Kindly note that none of the data is being added from our side in this article which is not available in the public domain. You will notice that many fields I have left blank intentionally, which you may know but the foundry has not reviled those data in the public domain. 

So this article is just a collection of various data available on different websites instead of any data from my side. I will provide all the references at the end of this article, from where I have collected this information. I took all the care to maintain confidentiality but if anything you found is not appropriate to publish, please let us know through email.

Below image may help you to understand various parameters of FinFET. This image is taken from https://fuse.wikichip.org/news/2408/tsmc-7nm-hd-and-hp-cells-2nd-gen-7nm-and-the-snapdragon-855-dtco/

Figure: FinFET structure and dimensions









S.N Parameters 7nm 16nm 28nm

A. Transistor wise

1 Transistors 4th Gen FinFET FinFET Planner MOSFET

2 Gate Length (Lg) 16 nm 34 nm 24 nm

3 Fin Width (Wfin) 6 nm NA

4 Fin Heigth (Hfin) 52 nm 37 nm NA

5 Fin Pitch (Pfin) 30 nm 48 nm NA

6 Contacted Poly Pitch (CPP) 57 nm (HD)
64 nm (HP)
90 nm 117 nm

7 W effective 3.66

8 Minimum Metal Pitch (MMP) 40 nm 64 nm 90 nm

9 Standard Cell Height 240 nm (6T)

10 Transistor Density 91.2 M/mm2 28.9 M/mm2

11 6T SRAM bit cell size 0.027 um2 0.074 um2 0.127 um2 (HD)

12 Contact Trench Fill Cobalt Tungsten

13 Opertating Voltage 750 mV 800mv and 1V

B Metal wise

14 Total Metal Layers 17 10

15 Double Patern Layers 7 (Fin, Poly, M0, M1, M2, M3, M4)

16 Patterning Fins (SAQP)
Poly to M4 (SADP)
Rest Single
DP

17 DUV/EUV 193nm DUV + 13.5nm EUV 193nm DUV 193nm DUV

18 Via Pillers Yes No

19 PG Routing Dual M1 PG Structure

C General

20 Mass Production Year Q2 2018 2015 Q4 2011

21 Speed Improvement 30%, comapre 16nm with same power

40% , compare to 28nm with same power

22 Power Reduction -55% compare to 16nm with same speed

-55% compare to 28nm with same speed

23 Density 3.3X compare to 16nm


24 Cut metal Area reduction through
Cut metal layers.
Routers are cut metal aware

Reference

https://en.wikichip.org/wiki/7_nm_lithography_process
https://fuse.wikichip.org/news/2408/tsmc-7nm-hd-and-hp-cells-2nd-gen-7nm-and-the-snapdragon-855-dtco/
https://en.wikichip.org/wiki/16_nm_lithography_process
https://www.tsmc.com/english/dedicatedFoundry/technology/logic/l_28nm
https://en.wikichip.org/wiki/28_nm_lithography_process
https://community.cadence.com/cadence_blogs_8/b/breakfast-bytes/posts/tsmc2

24 September

Top 20 TCL syntax helpful to improve TCL scripting skill for VLSI Engineers

One scripting language without which it will be very difficult to survive in VLSI Industry, that would definitely  be TCL (Tool Command Language). TCL is widely used everywhere in the VLSI industry because many tools are based on the tcl. We can directly interact with the tool using tcl CLI (Command Line Interpreter). 

It has been observed that many beginners initially hesitate to start the TCL scripting. Most of the cases user know the basic tcl commands but how to connect all them and create a script is the only problem. I would say even you know some basic tcl commands you can start writing your own script for your day to day requirements. Most important this is BEGIN the process of writing the script. Here I am presenting 20 common tcl syntax which I use frequently in my tcl scripting and hope it will help you to break the ice. Improvement and prefection will come as you practice but start is the most important. These 20 syntax will definitely help you lot to start and improve your tcl scripting a lot. 



1. foreach loop

Use:
Where we have to iterate on each element on a list of elements and have to perform some operation on each element.
Syntax:
foreach var $Var_list {
//operations for each $var
}
Example:
Supposed we want to print all the macros instance name, reference name and total count of macro in a block.
set macros [dbGet [dbGet top.insts.cell.baseClass block -p2].name]
set i 0
foreach macro $macros {
set refName [dbGet top.insts.name $macro -p].cell.name
puts "$macro - $refName "
incr i
}
puts total macro count = $i

2. Nested foreach loop

Use: 
If we have to iterate on each element of a list and then further we need to iterate on each parameters associated with the element.
Syntax:
foreach i $list1 {
    //list2 is derived based on $i
    foreach j $list2 {
        //operations on $j
    }
}
Example:
Suppose we have to find the list of feedthrough pins and the total numbers of feedthrough pins in each edge of a rectilinear block. A script can be written like this for that.

set edges [dbget top.terms.edge -u]
set i 0
foreach edge $edges {
    set j 0
    foreach pin [dbget [dbget top.terms.edge $edge -p].name ft* ] {
        puts "$edge $pin"
        incr j
    }
    puts "$edge : total ft pin count = $j"
    incr i
}
puts "Toal edge of block = $i"

3. for loop

Use: 
Where we want to repeat a loop in between a certain start and endpoint with a certain increment
Syntax:
for {initialization}{condition}{increment} {
statements
}
Example:
Suppose we want to know the metal layer's width and pitch of all metal from M5 to M10 in innovus tool.

for {set i 5}{$i <= 10}{incr i}{
    set width [dbGet [dbGet top.head.layers.name M{$i} -p].minWidth]
    set pitch [dbGet [dbGet top.head.layers.name M{$i} -p].pitchX]
    puts "M{$i} $width $pitch"
}



4. Nested for loop

Same as above example only syntax change and one loop in running inside another loop.
Syntax:
for {initialization}{condition}{increment} {
    for {initialization}{condition}{increment} {
        statements
    }
}

5. while loop

Use: 
When we need to repeat a loop until a particular condition is true.
Syntax:
while {condition} {
    //statements
}
Example:
Suppose we need to read all the lines of a file one by one and store is a variable dynamically.

set fp [open my_report.tcl r]
while {[gets $fp data] >= 0} {
    if {[regexp "VIOLATED" $data]} {
        //desired statement for operation
    }
}
    

6. if-else conditions

Use:
When we want to do something if certain condition is true. We can either put else statement or skip it.
Syntax:
if {bolean_condition} {
    //statements
} else {
    //Statements
}

Example:
Suppose we need to convert SVT cell to ULVT cell.

if {[regexp SVT $cell_ref]} {
    set eco_ref [regsub {SVT} $cell_ref "ULVT"]
}

7. if-elseif... else condition

Use: 
When we want to check another if condition if one prior if condition is not true.
Syntax:
if {bolean_condition} {
    //statements
} elseif {bolean_condition} {
    //Statements
} else {
    //statement
}

Example:
Suppose we need to read a report file inside a script and generate an eco file in which if there is Weak Driver then need to upsize the driver from D1--> D3, D2-->D4 and D3-->D5. We can write script as follow.

set fp [open existing.rpt r ]
set fp1 [open new_ecofile w+]
while {[gets $fp data] >= 0 } {
    if {[regexp "Weak Driver" $data]} {
        set inst [lindex $data 7]
        set cell [lindex $data 8]
        if {[regexp D1BWP $cell]} {
            regsub "D1BWP" $cell "D3BWP" newCell
        } elseif {[regexp D2BWP $cell]} {
            regsub "D2BWP" $cell "D4BWP" newCell
        } elseif {[regexp D3BWP $cell]} {
            regsub "D3BWP" $cell "D5BWP" newCell
        }
        if { [ info exists newCell ]} {
        puts $fp1 "ecoChangeCell -inst {$inst} -cell $newCell"
    }
}
close $fp
close $fp1




8. Arithmetic operations

Use:
When we need to add/subract/multiply/devide some numbers

Syntax:
set s [expr $a + $b + $c]
set d [expr $a - $b ]
set m [expr $a * $b]
set d1 [expr $a / $b ]

Example:

If we need to know, how much space will take a 4X, a 8X and a 16X decap cell together.

set cell4X [dbget [dbget head.libCells.name $decap4 -p].size_x -u]
set cell8X [dbget [dbget head.libCells.name $decap8 -p].size_x -u]
set cell16X [dbget [dbget head.libCells.name $decap16 -p].size_x -u]
set distX [expr $cell16X + $cell16X + $cell4X]
puts $distX


Note: Be careful like in the following cases

like:
>expr 3/2
>1

>expr 3/2.0
>1.5


9. regexp

Use:
To match the regular expression. Regular expression has a wide list, we will see only few which we use mostly.
Syntax :
regexp {pattern} $string
Example: 
Suppose we want to change the D1, SVT cell to D2, LVT we can check the cell with regexp and then we can perform regsub for substitution and generate an eco file.

if {[regexp {D1BWP240H11.*PDSVT} $clock_cell_ref]} {
    regsub {D1BWP240H11} $clock_cell_ref {D2BWP240H8} new_clock_cell_ref
    regsub {PDSVT} $new_clock_cell_ref {PDLVT} new_clock_cell_ref
    puts $fp_w "ecoChangeCell -inst $clock_cell -cell $new_clock_cell_ref"
}

10. regsub

Use:
To substitute the regular expression
Syntax:
regsub {old_pattern} $string {new_pattern} new_string_name
Example:
As explained in the regexp section

11. Reading a file

Use:
Many times we have to read a report file inside the tcl scripting to make some fixes based on the violation reported. We read the file line by line and store the data in a file pointer variable dynamically.
Syntax:
set fp [open existing_file_name r]

Example:

we can read a file line by line in a variable like this.

    set fp1 [open $old r]
    while {[gets $fp1 data] >= 0 } { 
         // $data variable will get string line by line of old file
     }
    close $fp1




12. Writing a file

Example:
We can write a file and close that as follow.

set fp2 [open $new w+]
puts $fp2 "Whatever we want to write in file will go line by line"
close $fp2


13. proc

Use: 
If we need to use a few lines of code, again and again, we can make a proc using those codes and can call easily by the proc name. No need to write code every time.
Syntax:
proc proc_name {} {
// lines of code
}
proc_name

Example: 
If we need to find the basic details of a block, we can write a proc something like this.

proc blockInfo {} {
    puts "Block name: [dbget top.name]"
    puts "All Layers: [dbget head.layers.name]"
    puts "Block Area: [dbget top.fPlan.area]"
    puts "Box size: [dbget top.fPlan.box_size]"
    puts "Boxes: [dbget top.fPlan.boxes]"
    puts "Toatl pins: [dbget top.numTerms], Inputs - [dbget top.numInputs], Outputs -                    [llength [dbget top.terms.isOutput 1 -p]]"
    puts "Macro Count: [llength [dbget top.insts.cell.baseClass block -p2]]"
    // Many more parameters can be added
}


We just need to source above file and call the proc blockInfo proc, it will display all the above info of block.

14. proc with arguments

Use: 
Sometimes we need to pass some arguments in proc and we want the result of proc based on user argument.
Syntax:
proc proc_name { arg1 arg2 arg3 ...} {
    // lines of code
}
proc_name arg1 arg2 arg3

Example:
Suppose we want to write a general proc in which if we pass the net_name, it should return the net_length of that particular net. We can write that as follow.

proc netLength {net_name} {
    set net_length 0
    set net_wires_length [dbget [dbget top.nets.name $net_name -p].wires.length]
    foreach i $net_wires_length {
        set net_length [expr $net_length + $i]
    }
    puts $net_length
}



Note: 
 We can also set a default value of the proc argument. So in case the user does not pass the argument value, proc will take the default value.
Syntax:
proc proc_name {{arg1 10} {arg2 20}} {
set a $arg1
set b $arg2
// More statements
}

So if we call the proc like
proc_name
it will take the default value of arg1 and arg2 and will set a 10 and set b 20.

But if we call this proc like
proc_name 50 
It will set a 50 and b 20

we can also call like
proc_name 50 45 
In the above way  proc will set a 50 and b 45



15. exec

Use: 
To use bash command inside tcl script
Syntax:
exec date

Example:
set timestamp_prefix [exec date +%m%d_%H_%M]

16. dbGet/dbSet/dbQuery

Use:
These are the innovus tool-specific commands, and widely used in innovus tool related scripting.
Syntax and Examples will be discussed in a separate article.

The link will made available here [Not now].

17. list operations

Use: 
There are various list operations, all are important in various way and frequently used.
Syntax:
llenght, lappend, lindex, lreplace, lset, lsort etc.

Example: 
Kindly do the man command for more details

18. alias

Use: 
To shorten a long command or a command with its switches to a short command.
Syntax:
alias short_commad "original_commad"

Example:
alias si "selectInst"
alias sn "selectNet"

19. grep

Use: 
To find the particular pattern
Syntax:
exec grep "pattern" $file_name
egrep and zgrep are also used in place of grep.

Example: 
Will discuss in details in a separate article
Link [Not now]



20. sed

Use: 
sed is called stream editor, it can do lots of tasks. we use generally sed to replace or delete a particular pattern in a file or string.
Syntax:
exec sed 

Example-1: 
If we want to replace a line having particular unique pattern completely by another line . We can do that like folow.

exec sed -i "s|Pattern .*|$new_line|" $file_name

Example 2:
If we want to write some lines of code which are stored in a file just after a line having some uniqe pattern. we can do that as follow

set num [exec sed -n "/^Source Script.*/=" $file_name ]
incr num
exec sed -i "$num r $script_file" $file_name

Example 3:
If we want to delete all lines having a unique pattern

exec sed -i "/DEL*/d" $file_name

Note: grep, sed and awk is a very handy command for various operations, these commands has explained in more details in the following article.
Link [Not available now]


Thank You.