I am trying to pinpoint a layout error mechanism by modifying the av_extracred view netlist and resimulating the testbench. I have managed to create a manually written netlist as a spectre view before by following this tutorial:
But it was just a single resistors, and the library binding as I understand was by default analogLib, so it was relatively simple.
This time, I want to modify a netlist with mosfets from TSMC and capacitors from analogLib (C extraction of a switch architecture I'm trying out). I got the netlist exported from CIW---> File ---> Export ---> CDL ---> choose the library/cell/view name and left all other options at default. Here is the output: http://www.pastebin.ca/2519207
When I try to simulate this block using the technique in the tutorial I linked above, (CIW ---> CDF ---> Edit ---> ...) I get the following error:
Notice from spectre in `sw3_and_constantvgs_1_editable', during circuit
159: Use subckt `PD' as the master of `MI8|M0'
160: Use subckt `PD' as the master of `MM28'
161: Use subckt `PD' as the master of `MM27'
162: Use subckt `PD' as the master of `MI7|M0'
163: Use subckt `PD' as the master of `MM25'
Further occurrences of this notice will be suppressed (except in log
Error found by spectre in `sw3_and_constantvgs_1_editable', during circuit
159: The instance `MI8|M0' does not have a valid master.
160: The instance `MM28' does not have a valid master.
161: The instance `MM27' does not have a valid master.
162: The instance `MI7|M0' does not have a valid master.
As far as I understand, capacitors in my netlists are taken from analogLib by default, so no problem there, just as it worked with my single resistor attempt. But the simulator is confused about how to handle the pchannel and nchannel mosfets.
If my understanding of the problem is correct, my question is: How can I bind these mosfets to the tsmc mosfet models? Do I have to do this during my netlist export? Do I have to do this during my CDF edit?
Thank you very much,
First of all, I wouldn't use a CDL netlist to simulate with (unless it really was your only choice). CDL is a format that is SPICE-like, but is intended for physical verification. As a result, the model names are typically there to recognize a particular device, rather than matching the model name for simulation. Also, it won't have all the extracted parameters for each device, because LVS typically is not concerned with source/drain area & perimeter, LOD/STI/WPE parameters and so on. This is why you are getting lots of problems because the model names (subtypes in CDL) don't match the model names in your spectre models.
So, what I would do is either get QRC to write out a SPICE file (rather than an extracted view), or I would produce a spectre netlist of the av_extracted view and take that as the source to modify. Whilst QRC does have the choice to output a spectre netlist directly, it does so by using an obsolete SPICE to spectre translator, and this flow is really not supported any more. Since many foundry PDKs only validate the extracted view flow, I would go for netlisting the av_extracted view.
From IC616 ISR3 onwards, there is an option in ADE to include the subckt header for the top cellView - so if using that version you could open your extracted view, start ADE, and then turn on the top subckt option on the Setup->Environment form. Then do Simulation->Netlist->Create and then take your netlist for later modification.
In earlier versions, use the hierarchy editor (or switch list in ADE) to include the av_extracted view in your normal testbench simulation. Then do a simulation->netlist->create and take the resulting netlist and chop out the subckt you are interested in.
Hack this subckt to your heart's content, and then you can include it back in simulation using the approach suggested in Tawna's blog - the way you've been doing it so far.