Skip to content

Library Characterization - SiliconSmart ACE by Synopsys


1: You would need to use the .lib file generated by Siliconsmart in project 6.

2: You may use Siliconsmart to characterize the cells one by one, then combine all the output .lib files.

Siliconsmart ACE is a software tool that generates a library in Liberty (.lib) format from a set of SPICE models, cell functional descriptions and associated netlists. The generated library can be used for timing, power and noise analysis with compatible tools such as Library Compiler, IC Compiler, Design Compiler and PrimeTime.

Running the tool is slightly complex but it has been greatly simplified with script.

Before you begin you should have finished the DRC/LVS/PEX/HSPICE simulation of the cells in your library. You need to verify the hspice results, if they are incorrect, this tool will fail.

Go to your SiliconSmart working directory first.

cd ~/cad/siliconsmart

This is your working directory for Siliconsmart ACE.

Copy the spice netlist files you want to characterize into the siliconsmart folder.

Now you should have the following folders and files in the silcionsmart folder:

    QRC spice netlists

Above is an example where I have three cells ready for characterization: inverter, nand2 and DFF.

Once you have done this now you need to open the cell netlists file (.sp) using any of the text editors.


Make sure that you change all "vdd!" into "VDD" and all "gnd!" into "VSS".

Please comment the Diodes card in your spice netlists, if it exists.

A sample netlist is shown below:

Source the synopsys profile for running Siliconsmart by typing:

. /proj/cad/startup/profile.synopsys_2018

Now you are ready to run the script

You need to now cd to the run_dir, then type:

cd run_dir

Running the script

Now you need to run the which is present in the one directory above so you need to type

perl ../

The script will now print the following prompt on the terminal

Please enter the total number of cells :

You should enter here the total number of cells that you have in the library and hit enter (My example I have 3, inv, nand2,dff)

Please enter a cell name or enter dff for Flip-Flop data :

You should enter here the name of the cell or gate. Eg: inv, nand2 or enter dff if you want to enter data for D flip-flop.

If you enter dff you will get the following prompt

Enter the DFF name :

Please enter the name of spice netlist file <filename.sp> of the DFF cell :

Please enter the data pin name :

Please enter the Reset pin name :

Please enter RESET sensitivity if #ACTIVE HIGH enter 1 else #ACTIVE LOW Enter 0 :

please enter the Clock pin name :

Please enter clock edge sensitivity if #FALLING EDGE TRIGGERED enter 1 else #RISING EDGE Enter 0 :

Please enter the Q output pin name :

Please enter The output type if #Q enter 1 else #Qbar Enter 0 :

Please enter the cell area :

Enter all the required fields. Here area is (Height * Width) of the cell. Once you done this it will again ask for

Please enter a cell name or enter dff for Flip-Flop data :

Please enter the name of spice netlist file <filename.sp> of the cell :

Please enter the input pin name separated by spaces :

You should enter here input pin names of the cell that you entered earlier

Please enter the output(s) pin name(s) separated by spaces:

You should enter here output pin name(s) of the cell that you entered earlier

Please enter the cell area:

You should enter here total area of the cell that you have entered earlier (Height * Width)

Please enter the cell function:

You should enter the function of the cell, Enter the blue part only. Don't copy & paste, please type.

Please look below for the functions.

Here a,b,c,d are the name of input pins of the cell you have entered

1) inv = !a

2) nand2 = !(a&b)

3) nand3 = !(a&b&c)

4) nor2 = !(a+b)

5) oai22 = !((a+b)&(c+d))

6) oai12 = !(a&(b+c))

7) aoi22 = !(a&b+c&d)

8) mux2:1 = (!so)&a+so&b

9) xor2 = (!a)&b+(!b)&a

Below I have the snapshot of my attempt to characterize the 3 cells.

Run Details: The Tool should run and print out the tasks its performing as shown below.

You should only see Infos and Warnings, IF you see any errors, try to rerun the


The script clears the contents in the run_dir everytime you run.

The library will be stored under the folder run_dir/char_dir/models/liberty/.

It should be called liberty_op_cond.lib.

Now you can use Library Compiler tutorial to convert the .lib to .db

Last update: September 1, 2022 13:15:33