The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl
Simulators >> Circuit Simulators >> virtuoso ADE:spectre netlist error,unknown variables
https://designers-guide.org/forum/YaBB.pl?num=1453316242

Message started by abhilash_172 on Jan 20th, 2016, 10:57am

Title: virtuoso ADE:spectre netlist error,unknown variables
Post by abhilash_172 on Jan 20th, 2016, 10:57am

hello everyone,
i am using IC615 cadence software.i am able to simulate a simple circuit using ncsu pdk in virtuoso ADE.same thing i tried with umc pdk.when i give transistor width/length directly as number in object properties,simulation is working.But when i give width or length as variables,new unknown variables(iPargers,ers,iPa....) are appearing in ade window and spectre is giving an error.can anyone suggest a solution?

the netlist file generated is below

Code:
// Generated for: spectre
// Generated on: Jan 20 04:56:26 2016
// Design library name: moschar
// Design cell name: id_vds
// Design view name: schematic
simulator lang=spectre
global 0
parameters iPargers ers iPa fingers fingers2 fifingers ngers MW gers w fin \
   iPa20n i r Ln=2u Wn=2u Vds=0 Vgs=700m

include "/opt/PDK/umc130nm/Models/Spectre/L130E_HS12_V241.lib.scs" section=tt



// Library name: moschar
// Cell name: id_vds
// View name: schematic
NM0 (net4 net3 0 0) n_12_hsl130e w=(Wn)/(1) l=Ln ad=(((Wn)/iPargers")ers")) < (160n+2*60n)) ? ((int((1) iPa.0) * ((((280.0n)+(2*(6-60n)))*)*(60n+160n+60n)) + (2*100n*Par("fingers"))))) + (((iPar("fingeriPar("fingers") / 2) - int((1) / 2) != 0) ? ((((280.0n)+*(60n-60n)))*)*(60n+160n+60n)) + (100n*((Wn)/"fingers")ers")))) : 0)) / (1) : ((int(iPar("fingers2.0) * ((Wn)/(1)*((120n-600n-60n)+(280.0n)+(1206iPar("fifingers") / 2)ngers") / 2) - int((1) / 2) != 0) ? ((Wn)/iPar("fingers"(60n-60n+iPar(r("MW")+(120n-60n))) : 0)) / (1) \
        ps=(((Wn)/iPargers")ers")) < (160n+2*60n)) ? ((2*(((280.0n)+(2*(6-60n)))+)+(60n+160n+60n)+100n)) + (int(((1) - 1) / 2) * (2*(((280.0n)+(2*(60n-60))+)+(60n+160n+6+60n))+(4*100n))) + gers") / 2) - int((1) / fingers") / 2) == 0) ? (2*(((280.0n)+(2*(60n-60n)))+(60n+160n+60n)+100n)) : 0)) / (1) : ((2*Par(r("w")/ir("fingers")+(60n-60n+(280.0n)+(120n-60n)))))) + (int((iPar("fin/ 2.0) * (2*(iPar("w (2*((Wn)/(1)+iPa20n-60n)+(280.0n)+(1n-6))))) + + ( ((((1) / 2) - int((1) / 2)  ? (2"w")ar(iPar(")/(1)+(60n-60n+iPiPar("MW")+(120n-60n)))) : 0)) / (1) \
        pd=(((Wn)/iPargers")ers")) < (160n+2*60n)) ? ((int((1) ((i.0) * (2*(((280.0n)+(2*0n-60n)))+)+(60n+160n+60n))+(4*100n)("fingers") / 2) - int(iPar("fingersPar("fingers") / 2) != 0) ? (2*(((280.0n)+(2*(60n-60n)))+(60n+160n+60n)+100n)) : 0)) / (1) : ((int((1) / 2.0) * (2*((Wn)/(1)+(202("MW")+(120n-60n))))) + (((iPar("fin((((1) / r) - int((1) / 2) !? (2*w")/r((Wn)/iPargers")ers")+(60n-60n+(280.0n)+(120n0n)))) : : 0)) / (1) \
        m=(1)*(1) nf=1 mis_flag=1 mf=(1)*(1)
V1 (net3 0) vsource dc=Vgs type=dc
V0 (net4 0) vsource dc=Vds type=dc
simulatorOptions options reltol=1e-3 vabstol=1e-6 iabstol=1e-12 temp=27 \
   tnom=27 scalem=1.0 scale=1.0 gmin=1e-12 rforce=1 maxnotes=5 maxwarns=5 \
   digits=5 cols=80 pivrel=1e-3 sensfile="../psf/sens.output" \
   checklimitdest=psf
dcOp dc write="spectre.dc" maxiters=150 maxsteps=10000 annotate=status
dcOpInfo info what=oppoint where=rawfile
dc dc param=Vds start=0 stop=1.2 step=0.01 oppoint=rawfile maxiters=150 \
   maxsteps=10000 annotate=status
modelParameter info what=models where=rawfile
element info what=inst where=rawfile
outputParameter info what=output where=rawfile
designParamVals info what=parameters where=rawfile
primitives info what=primitives where=rawfile
subckts info what=subckts  where=rawfile
save NM0:d
saveOptions options save=allpub

Title: Re: virtuoso ADE:spectre netlist error,unknown variables
Post by abhilash_172 on Jan 20th, 2016, 11:01am

After pressing the run button in ade window ,there are new variables in ade window

Title: Re: virtuoso ADE:spectre netlist error,unknown variables
Post by AMS_ei on Jan 19th, 2017, 6:13am

Hi,

In my opinion, these are design variables which are included in the schematic. You have to provide some valid values to these variables.

Thank you.

Kind regards,

Title: Re: virtuoso ADE:spectre netlist error,unknown variables
Post by Geoffrey_Coram on Jan 26th, 2017, 12:12pm

It looks to me like there are some callbacks that can't handle variables for length and width.  You might try un-checking the box that says "Calc Diff Params" (and perhaps specifying values for Source diffusion area, etc.).

Title: Re: virtuoso ADE:spectre netlist error,unknown variables
Post by Andrew Beckett on Jan 29th, 2017, 2:08am

At a wild guess, you might be seeing some symptoms of lack of RHEL6 support in 64-bit Virtuoso until IC615 ISR12 (might have been ISR13 - can't remember precisely as it was a while ago). It doesn't look like a callback issue to me because the edit properties form is showing what looks like a properly formed expression for the source/drain area and perimeter parameters.

Can you report what getVersion(t) returns?

Then can you try running "virtuoso -32" and do a Simulation->Netlist->Recreate and see if that fixes it? If it does, then using a version later than (for safety) IC615 ISR13 should solve the problem and will work in both 32-bit and 64-bit virtuoso. At the time, it was clearly shown on the downloads.cadence.com site that Virtuoso was not supported on RHEL6 until ISR12/ISR13 time.

There was a problem where the 64-bit C libraries on RHEL6 changed the behaviour of strcpy when copying within a string. This was something that was warned against for many years, but empirically had worked on every platform for the preceding 20 years or more. Given that the netlister replaces the calls to iPar("var") with var it's probably doing a strcpy to shuffle the characters further up the string.

Regards,

Andrew.

The Designer's Guide Community Forum » Powered by YaBB 2.2.2!
YaBB © 2000-2008. All Rights Reserved.