Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Characterizing cells with verilog-A models for components

Status
Not open for further replies.

frasheed

Junior Member level 1
Joined
Jan 30, 2017
Messages
15
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
189
Hi, I am trying to characterize the basic cells (Inverter for example) using liberate 15. The technology we are using deosn't have a PMOS transistor so the inverter is implemented using T-R logic. The component models are written verilog-A format. I have extracted the netlist from Virtuoso ADE-L (simulation->netlist->create). I am developing standard cells for this technology and I am implementing this for the first time. My netlist and characterization script is given below:

Code:
;;;;Netlist (Input.scs)

simulator lang=spectre
global 0 VSS! VDD!

subckt INV_X1 A Y
    I1 (VDD! Y) res_route w=10u res=40K rL=5.405m
    I0 (Y A VSS!) negfet_route W=200u L=40u vth=0.1763 S=12.3591 \
        gamma=2.6983 K=1.38065e-23 T=300 q=1.60218e-19 f1=1.143e-05 \
        f2=1.605 f3=6.121 f4=0.0345 Rg=10
ends INV_X1
// End of subcircuit definition.

;;;Characterization Script (char.tcl)

# Define templates for characterization.
# Delay template for 3 input slews and 3 loads
define_template -type delay \
-index_1 {0.025 0.1 0.25} \
-index_2 {0.0010 0.015 0.100} \
delay_3x3
# Power template for 3 input slews and 3 loads
define_template -type power \
-index_1 {0.025 0.1 0.25} \
-index_2 {0.0010 0.015 0.100} \
power_3x3
# Timing constraint template for 3 input slews
define_template -type constraint \
-index_1 {0.025 0.1 0.25} \
-index_2 {0.025 0.1 0.25} \
constraint_3x3
# Specify the PVT for this characterization run
set_operating_condition -voltage 1.0 -temp 25

set_var extsim_cmd "spectre"
set_var extsim_deck_header "simulator lang=spectre
ahdl_include 'res_route/veriloga/veriloga.va'
ahdl_include 'negfet_route/veriloga/veriloga.va'
simulator lang=spice\n"

define_leafcell -extsim_model -type nmos -element negfet_route
define_leafcell -extsim_model -type r -element res_route

# Read in the SPICE subckts and models
read_spice -format spectre {Iinput.scs}
# Define how to characterize each group of cells
define_cell \
-input {A} \
-output {Y} \
-delay delay_3x3 \
-power power_3x3 \
-constraint constraint_3x3 \
{INV_X1}
# Perform characterization and write out the library
char_library -ecsm -ccsn -ccsp -extsim spectre -cells {INV_X1} -thread 1

write_library Standard_Library.lib

;;;;END Char script

When I execute this script then liberate gives me error:

Code:
*Error* (char_library) : Failed to find cell 'negfet_route' for instance 'I0' in netlist/model file.
ERROR (LIB-203): (char_library): Cell 'INV_X1' is scheduled for characterization but has no netlist, has an empty subckt or has no port on the subckt. This cell will be skipped. Check the netlist and rerun.

I believe that it couldn't understand the verilog-A model or it is not supported. I tried to include the model using extsim_model_include command but it doesn't work either. Can anyone guide me how can I characterize my cells ?.
 

Hi, I am trying to characterize the basic cells (Inverter for example) using liberate 15. The technology we are using deosn't have a PMOS transistor so the inverter is implemented using T-R logic. The component models are written verilog-A format. I have extracted the netlist from Virtuoso ADE-L (simulation->netlist->create). I am developing standard cells for this technology and I am implementing this for the first time. My netlist and characterization script is given below:

Code:
;;;;Netlist (Input.scs)

simulator lang=spectre
global 0 VSS! VDD!

subckt INV_X1 A Y
    I1 (VDD! Y) res_route w=10u res=40K rL=5.405m
    I0 (Y A VSS!) negfet_route W=200u L=40u vth=0.1763 S=12.3591 \
        gamma=2.6983 K=1.38065e-23 T=300 q=1.60218e-19 f1=1.143e-05 \
        f2=1.605 f3=6.121 f4=0.0345 Rg=10
ends INV_X1
// End of subcircuit definition.

;;;Characterization Script (char.tcl)

# Define templates for characterization.
# Delay template for 3 input slews and 3 loads
define_template -type delay \
-index_1 {0.025 0.1 0.25} \
-index_2 {0.0010 0.015 0.100} \
delay_3x3
# Power template for 3 input slews and 3 loads
define_template -type power \
-index_1 {0.025 0.1 0.25} \
-index_2 {0.0010 0.015 0.100} \
power_3x3
# Timing constraint template for 3 input slews
define_template -type constraint \
-index_1 {0.025 0.1 0.25} \
-index_2 {0.025 0.1 0.25} \
constraint_3x3
# Specify the PVT for this characterization run
set_operating_condition -voltage 1.0 -temp 25

set_var extsim_cmd "spectre"
set_var extsim_deck_header "simulator lang=spectre
ahdl_include 'res_route/veriloga/veriloga.va'
ahdl_include 'negfet_route/veriloga/veriloga.va'
simulator lang=spice\n"

define_leafcell -extsim_model -type nmos -element negfet_route
define_leafcell -extsim_model -type r -element res_route

# Read in the SPICE subckts and models
read_spice -format spectre {Iinput.scs}
# Define how to characterize each group of cells
define_cell \
-input {A} \
-output {Y} \
-delay delay_3x3 \
-power power_3x3 \
-constraint constraint_3x3 \
{INV_X1}
# Perform characterization and write out the library
char_library -ecsm -ccsn -ccsp -extsim spectre -cells {INV_X1} -thread 1

write_library Standard_Library.lib

;;;;END Char script

When I execute this script then liberate gives me error:

Code:
*Error* (char_library) : Failed to find cell 'negfet_route' for instance 'I0' in netlist/model file.
ERROR (LIB-203): (char_library): Cell 'INV_X1' is scheduled for characterization but has no netlist, has an empty subckt or has no port on the subckt. This cell will be skipped. Check the netlist and rerun.

I believe that it couldn't understand the verilog-A model or it is not supported. I tried to include the model using extsim_model_include command but it doesn't work either. Can anyone guide me how can I characterize my cells ?.

make sure you can get a minimal example to work in spectre using mixed mode simulation. next step is to check that the simulation netlist and script being spit out of libero is configured just like your minimal example. I have gone through this madness with siliconsmart, it is awful to debug. good luck.
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top