Library Characterization - SiliconSmart ACE by Synopsys
Note
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:
Folders:
run_dir
Files:
QRC spice netlists
siliconsmart.pl
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.
Note
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 siliconsmart.pl which is present in the one directory above so you need to type
perl ../siliconsmart.pl
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 siliconmart.pl
.
Note
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