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.

Ocean Script for differential amplifier

Status
Not open for further replies.

Narakiran

Junior Member level 2
Joined
Jun 20, 2017
Messages
21
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
161
Hi,
I'm writing Ocean Script for Differential amplifier(single ended).
I have to give 3-variables point (I,W,L) as input.
Suppose my points are (150u, 0.5u, 10u), (155u, 0.8u, 15u), (170u, 0.9, 17u), (180u, 1u, 22u )
can anyone help how i should give 4 different points as inputs?

My Ocean Code for which i have to give different inputs.
--------------------------------------------------------------------------


Code dot - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
prt=outfile("/home/15vl21f/current_bias.csv" "w")
simulator( 'spectre )
design(  "/home/15vl21f/simulation/Current_bias/spectre/schematic/netlist/netlist")
resultsDir( "/home/15vl21f/simulation/Current_bias/spectre/schematic" )
openResults( "/home/15vl21f/simulation/Current_bias/spectre/schematic" )
 
modelFile( 
    '("/opt/cad/cad/FOUNDRY/analog/180nm/models/spectre/gpdk.scs" "stat")
)
analysis('dc ?saveOppoint t  )
analysis('ac ?start "10"  ?stop "100G"  )
 
fprintf(prt "I, W, L, Gain, Bandwidth, overdrive, tail_current\n")
 
 
desVar(   "I"   )
desVar(  "W"    )
desVar(   "L"       )
envOption(
    'analysisOrder  list("dc" "ac") 
)
temp( 27 ) 
run()
 
reg_0=pv("NM0" "region" ?result "dcOpInfo")
reg_1=pv("NM2" "region" ?result "dcOpInfo")
reg_2=pv("PM0" "region" ?result "dcOpInfo")
 
when(((reg_0==2) && (reg_1==2) && (reg_2==2))
 
x = ymax(db20(VF("/vout")))
y = bandwidth(VF("/vout") 3 "low")
vth = pv("NM0" "vth" ?result "dcOpInfo")
vgs = pv("NM0" "vgs" ?result "dcOpInfo")
overdrive = vgs - vth
tail_current = 2 * pv("NM0" "id" ?result "dcOpInfo")
 
Gain = x
Bandwidth = y
fprintf(prt "%d, %f m, %f m,%f dB, %f Hz, %f V, %f A\n", I, W, L,  x, y, overdrive, tail_current)
 
)
)
)
)
close(prt);

 
Last edited by a moderator:

No.
I have to different input and those are not step values. So parametric analysis won't work here.
Hope you got my point.
Any other suggestions.
 

Surely understand parametric analysis.
It supports lists not step.
This corresponds to "paramset" ability of Cadence Spectre.

See "Spectre -h paramset".
This is equivalent ability of ".data" in Synopsys HSPICE.
 
Last edited:

Thank you.
I tried it but i'm getting error.

The code which i executed is below.
-----------------------------------------------
prt=outfile("/home/15vl21f/param.csv" "w")
simulator( 'spectre )
design( "/home/15vl21f/simulation/diff_amp/spectre/schematic/netlist/netlist")
resultsDir( "/home/15vl21f/simulation/diff_amp/spectre/schematic" )
modelFile(
'("/opt/cad/cad/FOUNDRY/analog/180nm/models/spectre/gpdk.scs" "stat")
)
analysis('ac ?start "10" ?stop "100G" )
analysis('dc ?saveOppoint t )
desVar( "W" "" )
desVar( "L" "" )
desVar( "I" "" )
envOption(
'analysisOrder list("dc" "ac")
)
temp( 27 )
paramAnalysis("I" ?values '(0.00015 0.00016 0.00017 ) ?sweepType 'paramset
paramAnalysis("W" ?values '(5e-07 8e-07 1e-06 ) ?sweepType 'paramset
paramAnalysis("L" ?values '(1e-05 1.5e-05 2.5e-05 ) ?sweepType 'paramset
)))
paramRun()
x = ymax(db20(VF("/vout")))
y = bandwidth(VF("/vout") 3 "low")
fprintf(prt " %f A, %f m, %f m,%f dB, %f Hz\n", I, W, L, x, y)
close(prt);

Please check it once and give suggestions.
Thank you.
 

Hi,

I tried it but i'm getting error.
I doubt that it just says "error".
Usually there is an error description. This description is useful to locate and correct the error.
Therefore it is essential to tell us the complete error description.

Klaus
 

I'm getting error as follows
-----------------------------------------

*Error* db20: can't handle db20(nil)


*Error* _ymaxMethod: can't handle _ymaxMethod(nil)


*Error* _bandwidthMethod: can't handle _bandwidthMethod(nil 3 "low" nil)


*Error* eval: unbound variable - I
*Error* load: error while loading file - "param.ocn" at line 24

- - - Updated - - -

Hi,


I doubt that it just says "error".
Usually there is an error description. This description is useful to locate and correct the error.
Therefore it is essential to tell us the complete error description.

Klaus

ERROR (SFE-1997): "input.scs" 14: NM3: parameter `w': The parameter `W' is
used but not set.

ERROR (SFE-1997): "input.scs" 14: NM3: parameter `l': The parameter `L' is
used but not set.

ERROR (SFE-1997): "input.scs" 14: NM3: parameter `as': The parameter `W' is
used but not set.

ERROR (SFE-1997): "input.scs" 14: NM3: parameter `ad': The parameter `W' is
used but not set.

ERROR (SFE-1997): "input.scs" 14: NM3: parameter `ps': The parameter `W' is
used but not set.

ERROR (SFE-1997): "input.scs" 14: NM3: parameter `pd': The parameter `W' is
used but not set.

ERROR (SFE-1997): "input.scs" 19: NM2: parameter `w': The parameter `W' is
used but not set.

ERROR (SFE-1997): "input.scs" 19: NM2: parameter `l': The parameter `L' is
used but not set.

ERROR (SFE-1997): "input.scs" 19: NM2: parameter `as': The parameter `W' is
used but not set.

ERROR (SFE-1997): "input.scs" 19: NM2: parameter `ad': The parameter `W' is
used but not set.

ERROR (SFE-1997): "input.scs" 19: NM2: parameter `ps': The parameter `W' is
used but not set.

ERROR (SFE-1997): "input.scs" 19: NM2: parameter `pd': The parameter `W' is
used but not set.

ERROR (SFE-1997): "input.scs" 24: NM0: parameter `w': The parameter `W' is
used but not set.

ERROR (SFE-1997): "input.scs" 24: NM0: parameter `l': The parameter `L' is
used but not set.

ERROR (SFE-1997): "input.scs" 24: NM0: parameter `as': The parameter `W' is
used but not set.

ERROR (SFE-1997): "input.scs" 24: NM0: parameter `ad': The parameter `W' is
used but not set.

ERROR (SFE-1997): "input.scs" 24: NM0: parameter `ps': The parameter `W' is
used but not set.

ERROR (SFE-1997): "input.scs" 24: NM0: parameter `pd': The parameter `W' is
used but not set.

ERROR (SFE-1997): "input.scs" 29: NM1: parameter `w': The parameter `W' is
used but not set.

ERROR (SFE-1997): "input.scs" 29: NM1: parameter `l': The parameter `L' is
used but not set.

ERROR (SFE-1997): "input.scs" 29: NM1: parameter `as': The parameter `W' is
used but not set.

ERROR (SFE-1997): "input.scs" 29: NM1: parameter `ad': The parameter `W' is
used but not set.

ERROR (SFE-1997): "input.scs" 29: NM1: parameter `ps': The parameter `W' is
used but not set.

ERROR (SFE-1997): "input.scs" 29: NM1: parameter `pd': The parameter `W' is
used but not set.

ERROR (SFE-1997): "input.scs" 34: PM0: parameter `w': The parameter `W' is
used but not set.

ERROR (SFE-1997): "input.scs" 34: PM0: parameter `l': The parameter `L' is
used but not set.

ERROR (SFE-1997): "input.scs" 34: PM0: parameter `as': The parameter `W' is
used but not set.

ERROR (SFE-1997): "input.scs" 34: PM0: parameter `ad': The parameter `W' is
used but not set.

ERROR (SFE-1997): "input.scs" 34: PM0: parameter `ps': The parameter `W' is
used but not set.

ERROR (SFE-1997): "input.scs" 34: PM0: parameter `pd': The parameter `W' is
used but not set.

ERROR (SFE-1997): "input.scs" 39: PM1: parameter `w': The parameter `W' is
used but not set.

ERROR (SFE-1997): "input.scs" 39: PM1: parameter `l': The parameter `L' is
used but not set.

ERROR (SFE-1997): "input.scs" 39: PM1: parameter `as': The parameter `W' is
used but not set.

ERROR (SFE-1997): "input.scs" 39: PM1: parameter `ad': The parameter `W' is
used but not set.

ERROR (SFE-1997): "input.scs" 39: PM1: parameter `ps': The parameter `W' is
used but not set.

ERROR (SFE-1997): "input.scs" 39: PM1: parameter `pd': The parameter `W' is
used but not set.

ERROR (SFE-1997): "input.scs" 46: I5: parameter `dc': The parameter `I' is
used but not set.
 

Simply you don't define W, L, I in both Skill and Spectre.
Can you understand a function of "desVar()" surely ?

Show me Cadence Spectre Netlist generated by your OCEAN Script.
 

Code:
// Library name: Kiran_OTA
// Cell name: diff_amp
// View name: schematic
NM3 (net5 net5 0 0) nmos1 w=((W) / (1)) l=L as=(((W) / (1)) < 599.5n) ? (((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((W) / (1)) * 200n)) + (floor(((1) - 1) / 2.0) * (((((400n) - 200n) + 400n) * 600n) + (((W) / (1)) * 400n))) + ((((1) / 2) - floor((1) / 2) == 0) ? ((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((W) / (1)) * 200n)) : 0)) / 1 : ((((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((W) / (1))) + (floor(((1) - 1) / 2.0) * ((((400n) - 200n) + 400n) * ((W) / (1)))) + ((((1) / 2) - floor((1) / 2) == 0) ? (((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((W) / (1))) : 0)) / 1 \
         ad=(((W) / (1)) < 599.5n) ? ((floor((1) / 2.0) * (((((400n) - 200n) + 400n) * 600n) + (((W) / (1)) * 400n))) + ((((1) / 2) - floor((1) / 2) != 0) ? ((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((W) / (1)) * 200n)) : 0)) / 1 : ((floor((1) / 2.0) * ((((400n) - 200n) + 400n) * ((W) / (1)))) + ((((1) / 2) - floor((1) / 2) != 0) ? (((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((W) / (1))) : 0)) / 1 \
         ps=(((W) / (1)) < 599.5n) ? (((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) + (floor(((1) - 1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + 2u)) + ((((1) / 2) - floor((1) / 2) == 0) ? ((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) : 0)) / 1 : (((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((W) / (1)))) + (floor(((1) - 1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + (2 * ((W) / (1))))) + ((((1) / 2) - floor((1) / 2) == 0) ? ((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((W) / (1)))) : 0)) / 1 \
         pd=(((W) / (1)) < 599.5n) ? ((floor((1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + 2u)) + ((((1) / 2) - floor((1) / 2) != 0) ? ((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) : 0)) / 1 : ((floor((1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + (2 * ((W) / (1))))) + ((((1) / 2) - floor((1) / 2) != 0) ? ((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((W) / (1)))) : 0)) / 1 \
         m=(1)*(1)
NM2 (net11 net5 0 0) nmos1 w=((2*W) / (1)) l=L as=(((2*W) / (1)) < 599.5n) ? (((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((2*W) / (1)) * 200n)) + (floor(((1) - 1) / 2.0) * (((((400n) - 200n) + 400n) * 600n) + (((2*W) / (1)) * 400n))) + ((((1) / 2) - floor((1) / 2) == 0) ? ((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((2*W) / (1)) * 200n)) : 0)) / 1 : ((((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((2*W) / (1))) + (floor(((1) - 1) / 2.0) * ((((400n) - 200n) + 400n) * ((2*W) / (1)))) + ((((1) / 2) - floor((1) / 2) == 0) ? (((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((2*W) / (1))) : 0)) / 1 \
         ad=(((2*W) / (1)) < 599.5n) ? ((floor((1) / 2.0) * (((((400n) - 200n) + 400n) * 600n) + (((2*W) / (1)) * 400n))) + ((((1) / 2) - floor((1) / 2) != 0) ? ((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((2*W) / (1)) * 200n)) : 0)) / 1 : ((floor((1) / 2.0) * ((((400n) - 200n) + 400n) * ((2*W) / (1)))) + ((((1) / 2) - floor((1) / 2) != 0) ? (((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((2*W) / (1))) : 0)) / 1 \
         ps=(((2*W) / (1)) < 599.5n) ? (((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) + (floor(((1) - 1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + 2u)) + ((((1) / 2) - floor((1) / 2) == 0) ? ((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) : 0)) / 1 : (((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((2*W) / (1)))) + (floor(((1) - 1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + (2 * ((2*W) / (1))))) + ((((1) / 2) - floor((1) / 2) == 0) ? ((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((2*W) / (1)))) : 0)) / 1 \
         pd=(((2*W) / (1)) < 599.5n) ? ((floor((1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + 2u)) + ((((1) / 2) - floor((1) / 2) != 0) ? ((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) : 0)) / 1 : ((floor((1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + (2 * ((2*W) / (1))))) + ((((1) / 2) - floor((1) / 2) != 0) ? ((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((2*W) / (1)))) : 0)) / 1 \
         m=(1)*(1)
NM0 (net12 vip net11 0) nmos1 w=((W) / (1)) l=L as=(((W) / (1)) < 599.5n) ? (((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((W) / (1)) * 200n)) + (floor(((1) - 1) / 2.0) * (((((400n) - 200n) + 400n) * 600n) + (((W) / (1)) * 400n))) + ((((1) / 2) - floor((1) / 2) == 0) ? ((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((W) / (1)) * 200n)) : 0)) / 1 : ((((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((W) / (1))) + (floor(((1) - 1) / 2.0) * ((((400n) - 200n) + 400n) * ((W) / (1)))) + ((((1) / 2) - floor((1) / 2) == 0) ? (((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((W) / (1))) : 0)) / 1 \
         ad=(((W) / (1)) < 599.5n) ? ((floor((1) / 2.0) * (((((400n) - 200n) + 400n) * 600n) + (((W) / (1)) * 400n))) + ((((1) / 2) - floor((1) / 2) != 0) ? ((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((W) / (1)) * 200n)) : 0)) / 1 : ((floor((1) / 2.0) * ((((400n) - 200n) + 400n) * ((W) / (1)))) + ((((1) / 2) - floor((1) / 2) != 0) ? (((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((W) / (1))) : 0)) / 1 \
         ps=(((W) / (1)) < 599.5n) ? (((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) + (floor(((1) - 1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + 2u)) + ((((1) / 2) - floor((1) / 2) == 0) ? ((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) : 0)) / 1 : (((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((W) / (1)))) + (floor(((1) - 1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + (2 * ((W) / (1))))) + ((((1) / 2) - floor((1) / 2) == 0) ? ((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((W) / (1)))) : 0)) / 1 \
         pd=(((W) / (1)) < 599.5n) ? ((floor((1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + 2u)) + ((((1) / 2) - floor((1) / 2) != 0) ? ((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) : 0)) / 1 : ((floor((1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + (2 * ((W) / (1))))) + ((((1) / 2) - floor((1) / 2) != 0) ? ((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((W) / (1)))) : 0)) / 1 \
         m=(1)*(1)
NM1 (vo vim net11 0) nmos1 w=((W) / (1)) l=L as=(((W) / (1)) < 599.5n) ? (((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((W) / (1)) * 200n)) + (floor(((1) - 1) / 2.0) * (((((400n) - 200n) + 400n) * 600n) + (((W) / (1)) * 400n))) + ((((1) / 2) - floor((1) / 2) == 0) ? ((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((W) / (1)) * 200n)) : 0)) / 1 : ((((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((W) / (1))) + (floor(((1) - 1) / 2.0) * ((((400n) - 200n) + 400n) * ((W) / (1)))) + ((((1) / 2) - floor((1) / 2) == 0) ? (((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((W) / (1))) : 0)) / 1 \
         ad=(((W) / (1)) < 599.5n) ? ((floor((1) / 2.0) * (((((400n) - 200n) + 400n) * 600n) + (((W) / (1)) * 400n))) + ((((1) / 2) - floor((1) / 2) != 0) ? ((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((W) / (1)) * 200n)) : 0)) / 1 : ((floor((1) / 2.0) * ((((400n) - 200n) + 400n) * ((W) / (1)))) + ((((1) / 2) - floor((1) / 2) != 0) ? (((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((W) / (1))) : 0)) / 1 \
         ps=(((W) / (1)) < 599.5n) ? (((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) + (floor(((1) - 1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + 2u)) + ((((1) / 2) - floor((1) / 2) == 0) ? ((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) : 0)) / 1 : (((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((W) / (1)))) + (floor(((1) - 1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + (2 * ((W) / (1))))) + ((((1) / 2) - floor((1) / 2) == 0) ? ((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((W) / (1)))) : 0)) / 1 \
         pd=(((W) / (1)) < 599.5n) ? ((floor((1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + 2u)) + ((((1) / 2) - floor((1) / 2) != 0) ? ((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) : 0)) / 1 : ((floor((1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + (2 * ((W) / (1))))) + ((((1) / 2) - floor((1) / 2) != 0) ? ((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((W) / (1)))) : 0)) / 1 \
         m=(1)*(1)
PM0 (vo net12 vdd vdd) pmos1 w=((2*W) / (2)) l=L as=(((2*W) / (2)) < 599.5n) ? (((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((2*W) / (2)) * 200n)) + (floor(((2) - 1) / 2.0) * (((((400n) - 200n) + 400n) * 600n) + (((2*W) / (2)) * 400n))) + ((((2) / 2) - floor((2) / 2) == 0) ? ((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((2*W) / (2)) * 200n)) : 0)) / 2 : ((((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((2*W) / (2))) + (floor(((2) - 1) / 2.0) * ((((400n) - 200n) + 400n) * ((2*W) / (2)))) + ((((2) / 2) - floor((2) / 2) == 0) ? (((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((2*W) / (2))) : 0)) / 2 \
         ad=(((2*W) / (2)) < 599.5n) ? ((floor((2) / 2.0) * (((((400n) - 200n) + 400n) * 600n) + (((2*W) / (2)) * 400n))) + ((((2) / 2) - floor((2) / 2) != 0) ? ((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((2*W) / (2)) * 200n)) : 0)) / 2 : ((floor((2) / 2.0) * ((((400n) - 200n) + 400n) * ((2*W) / (2)))) + ((((2) / 2) - floor((2) / 2) != 0) ? (((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((2*W) / (2))) : 0)) / 2 \
         ps=(((2*W) / (2)) < 599.5n) ? (((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) + (floor(((2) - 1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + 2u)) + ((((2) / 2) - floor((2) / 2) == 0) ? ((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) : 0)) / 2 : (((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((2*W) / (2)))) + (floor(((2) - 1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + (2 * ((2*W) / (2))))) + ((((2) / 2) - floor((2) / 2) == 0) ? ((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((2*W) / (2)))) : 0)) / 2 \
         pd=(((2*W) / (2)) < 599.5n) ? ((floor((2) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + 2u)) + ((((2) / 2) - floor((2) / 2) != 0) ? ((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) : 0)) / 2 : ((floor((2) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + (2 * ((2*W) / (2))))) + ((((2) / 2) - floor((2) / 2) != 0) ? ((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((2*W) / (2)))) : 0)) / 2 \
         m=(1)*(2)
PM1 (net12 net12 vdd vdd) pmos1 w=((2*W) / (2)) l=L as=(((2*W) / (2)) < 599.5n) ? (((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((2*W) / (2)) * 200n)) + (floor(((2) - 1) / 2.0) * (((((400n) - 200n) + 400n) * 600n) + (((2*W) / (2)) * 400n))) + ((((2) / 2) - floor((2) / 2) == 0) ? ((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((2*W) / (2)) * 200n)) : 0)) / 2 : ((((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((2*W) / (2))) + (floor(((2) - 1) / 2.0) * ((((400n) - 200n) + 400n) * ((2*W) / (2)))) + ((((2) / 2) - floor((2) / 2) == 0) ? (((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((2*W) / (2))) : 0)) / 2 \
         ad=(((2*W) / (2)) < 599.5n) ? ((floor((2) / 2.0) * (((((400n) - 200n) + 400n) * 600n) + (((2*W) / (2)) * 400n))) + ((((2) / 2) - floor((2) / 2) != 0) ? ((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((2*W) / (2)) * 200n)) : 0)) / 2 : ((floor((2) / 2.0) * ((((400n) - 200n) + 400n) * ((2*W) / (2)))) + ((((2) / 2) - floor((2) / 2) != 0) ? (((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((2*W) / (2))) : 0)) / 2 \
         ps=(((2*W) / (2)) < 599.5n) ? (((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) + (floor(((2) - 1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + 2u)) + ((((2) / 2) - floor((2) / 2) == 0) ? ((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) : 0)) / 2 : (((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((2*W) / (2)))) + (floor(((2) - 1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + (2 * ((2*W) / (2))))) + ((((2) / 2) - floor((2) / 2) == 0) ? ((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((2*W) / (2)))) : 0)) / 2 \
         pd=(((2*W) / (2)) < 599.5n) ? ((floor((2) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + 2u)) + ((((2) / 2) - floor((2) / 2) != 0) ? ((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) : 0)) / 2 : ((floor((2) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + (2 * ((2*W) / (2))))) + ((((2) / 2) - floor((2) / 2) != 0) ? ((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((2*W) / (2)))) : 0)) / 2 \
         m=(1)*(2)
E0 (vim net03 vip net03) vcvs gain=-1.0
V1 (vip net03) vsource mag=1 type=sine ampl=1m freq=1K
I5 (vdd net5) isource dc=I type=dc
V3 (net03 0) vsource dc=900.0m type=dc
V0 (vdd 0) vsource dc=1.8 type=dc

The netlist
 
Last edited by a moderator:

("/opt/cad/cad/FOUNDRY/analog/180nm/models/spectre/gpdk.scs" "stat")
 

Is it possible to do parametric analysis for three different variables at a time?
 

I'm new to Cadence and Ocean Script. I have to write code for Nelder-Mead method in Ocean.
 

prt=outfile("/home/15vl21f/param.csv" "w")
simulator( 'spectre )
design( "/home/15vl21f/simulation/diff_amp/spectre/schematic/netlist/netlist")
resultsDir( "/home/15vl21f/simulation/diff_amp/spectre/schematic" )
modelFile(
'("/opt/cad/cad/FOUNDRY/analog/180nm/models/spectre/gpdk.scs" "stat")
)
analysis('ac ?start "10" ?stop "100G" )
analysis('dc ?saveOppoint t )
desVar( "W" "" )
desVar( "L" "" )
desVar( "I" "" )
envOption(
'analysisOrder list("dc" "ac")
)
temp( 27 )
paramAnalysis("I" ?values '(0.00015 0.00016 0.00017 ) ?sweepType 'paramset
paramAnalysis("W" ?values '(5e-07 8e-07 1e-06 ) ?sweepType 'paramset
paramAnalysis("L" ?values '(1e-05 1.5e-05 2.5e-05 ) ?sweepType 'paramset
)))
paramRun()
x = ymax(db20(VF("/vout")))
y = bandwidth(VF("/vout") 3 "low")
fprintf(prt " %f A, %f m, %f m,%f dB, %f Hz\n", I, W, L, x, y)
close(prt);

--------------------------------------
can you tell me what's wrong in this code?
 


I'm a student. I'm working on Cadence - Virtuoso. I have to write Ocean script for following Algorithm. I'm completely new to Ocean. So please help me to write code for the algorithm View attachment New Doc 2017-06-21.pdf

The file is attached.
 

// Generated for: spectre
// Generated on: Jun 21 15:06:12 2017
// Design library name: Kiran_OTA
// Design cell name: diff_amp
// Design view name: schematic
simulator lang=spectre
global 0

netlist header
 

// Generated for: spectre
// Generated on: Jun 21 15:06:12 2017
// Design library name: Kiran_OTA
// Design cell name: diff_amp
// Design view name: schematic
simulator lang=spectre
global 0
parameters W L I
include "/opt/cad/cad/FOUNDRY/analog/180nm/models/spectre/gpdk.scs" section=stat

// Library name: Kiran_OTA
// Cell name: diff_amp
// View name: schematic
NM3 (net5 net5 0 0) nmos1 w=((W) / (1)) l=L as=(((W) / (1)) < 599.5n) ? (((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((W) / (1)) * 200n)) + (floor(((1) - 1) / 2.0) * (((((400n) - 200n) + 400n) * 600n) + (((W) / (1)) * 400n))) + ((((1) / 2) - floor((1) / 2) == 0) ? ((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((W) / (1)) * 200n)) : 0)) / 1 : ((((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((W) / (1))) + (floor(((1) - 1) / 2.0) * ((((400n) - 200n) + 400n) * ((W) / (1)))) + ((((1) / 2) - floor((1) / 2) == 0) ? (((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((W) / (1))) : 0)) / 1 \
ad=(((W) / (1)) < 599.5n) ? ((floor((1) / 2.0) * (((((400n) - 200n) + 400n) * 600n) + (((W) / (1)) * 400n))) + ((((1) / 2) - floor((1) / 2) != 0) ? ((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((W) / (1)) * 200n)) : 0)) / 1 : ((floor((1) / 2.0) * ((((400n) - 200n) + 400n) * ((W) / (1)))) + ((((1) / 2) - floor((1) / 2) != 0) ? (((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((W) / (1))) : 0)) / 1 \
ps=(((W) / (1)) < 599.5n) ? (((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) + (floor(((1) - 1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + 2u)) + ((((1) / 2) - floor((1) / 2) == 0) ? ((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) : 0)) / 1 : (((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((W) / (1)))) + (floor(((1) - 1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + (2 * ((W) / (1))))) + ((((1) / 2) - floor((1) / 2) == 0) ? ((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((W) / (1)))) : 0)) / 1 \
pd=(((W) / (1)) < 599.5n) ? ((floor((1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + 2u)) + ((((1) / 2) - floor((1) / 2) != 0) ? ((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) : 0)) / 1 : ((floor((1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + (2 * ((W) / (1))))) + ((((1) / 2) - floor((1) / 2) != 0) ? ((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((W) / (1)))) : 0)) / 1 \
m=(1)*(1)
NM2 (net11 net5 0 0) nmos1 w=((2*W) / (1)) l=L as=(((2*W) / (1)) < 599.5n) ? (((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((2*W) / (1)) * 200n)) + (floor(((1) - 1) / 2.0) * (((((400n) - 200n) + 400n) * 600n) + (((2*W) / (1)) * 400n))) + ((((1) / 2) - floor((1) / 2) == 0) ? ((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((2*W) / (1)) * 200n)) : 0)) / 1 : ((((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((2*W) / (1))) + (floor(((1) - 1) / 2.0) * ((((400n) - 200n) + 400n) * ((2*W) / (1)))) + ((((1) / 2) - floor((1) / 2) == 0) ? (((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((2*W) / (1))) : 0)) / 1 \
ad=(((2*W) / (1)) < 599.5n) ? ((floor((1) / 2.0) * (((((400n) - 200n) + 400n) * 600n) + (((2*W) / (1)) * 400n))) + ((((1) / 2) - floor((1) / 2) != 0) ? ((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((2*W) / (1)) * 200n)) : 0)) / 1 : ((floor((1) / 2.0) * ((((400n) - 200n) + 400n) * ((2*W) / (1)))) + ((((1) / 2) - floor((1) / 2) != 0) ? (((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((2*W) / (1))) : 0)) / 1 \
ps=(((2*W) / (1)) < 599.5n) ? (((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) + (floor(((1) - 1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + 2u)) + ((((1) / 2) - floor((1) / 2) == 0) ? ((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) : 0)) / 1 : (((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((2*W) / (1)))) + (floor(((1) - 1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + (2 * ((2*W) / (1))))) + ((((1) / 2) - floor((1) / 2) == 0) ? ((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((2*W) / (1)))) : 0)) / 1 \
pd=(((2*W) / (1)) < 599.5n) ? ((floor((1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + 2u)) + ((((1) / 2) - floor((1) / 2) != 0) ? ((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) : 0)) / 1 : ((floor((1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + (2 * ((2*W) / (1))))) + ((((1) / 2) - floor((1) / 2) != 0) ? ((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((2*W) / (1)))) : 0)) / 1 \
m=(1)*(1)
NM0 (net12 vip net11 0) nmos1 w=((W) / (1)) l=L as=(((W) / (1)) < 599.5n) ? (((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((W) / (1)) * 200n)) + (floor(((1) - 1) / 2.0) * (((((400n) - 200n) + 400n) * 600n) + (((W) / (1)) * 400n))) + ((((1) / 2) - floor((1) / 2) == 0) ? ((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((W) / (1)) * 200n)) : 0)) / 1 : ((((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((W) / (1))) + (floor(((1) - 1) / 2.0) * ((((400n) - 200n) + 400n) * ((W) / (1)))) + ((((1) / 2) - floor((1) / 2) == 0) ? (((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((W) / (1))) : 0)) / 1 \
ad=(((W) / (1)) < 599.5n) ? ((floor((1) / 2.0) * (((((400n) - 200n) + 400n) * 600n) + (((W) / (1)) * 400n))) + ((((1) / 2) - floor((1) / 2) != 0) ? ((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((W) / (1)) * 200n)) : 0)) / 1 : ((floor((1) / 2.0) * ((((400n) - 200n) + 400n) * ((W) / (1)))) + ((((1) / 2) - floor((1) / 2) != 0) ? (((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((W) / (1))) : 0)) / 1 \
ps=(((W) / (1)) < 599.5n) ? (((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) + (floor(((1) - 1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + 2u)) + ((((1) / 2) - floor((1) / 2) == 0) ? ((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) : 0)) / 1 : (((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((W) / (1)))) + (floor(((1) - 1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + (2 * ((W) / (1))))) + ((((1) / 2) - floor((1) / 2) == 0) ? ((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((W) / (1)))) : 0)) / 1 \
pd=(((W) / (1)) < 599.5n) ? ((floor((1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + 2u)) + ((((1) / 2) - floor((1) / 2) != 0) ? ((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) : 0)) / 1 : ((floor((1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + (2 * ((W) / (1))))) + ((((1) / 2) - floor((1) / 2) != 0) ? ((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((W) / (1)))) : 0)) / 1 \
m=(1)*(1)
NM1 (vo vim net11 0) nmos1 w=((W) / (1)) l=L as=(((W) / (1)) < 599.5n) ? (((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((W) / (1)) * 200n)) + (floor(((1) - 1) / 2.0) * (((((400n) - 200n) + 400n) * 600n) + (((W) / (1)) * 400n))) + ((((1) / 2) - floor((1) / 2) == 0) ? ((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((W) / (1)) * 200n)) : 0)) / 1 : ((((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((W) / (1))) + (floor(((1) - 1) / 2.0) * ((((400n) - 200n) + 400n) * ((W) / (1)))) + ((((1) / 2) - floor((1) / 2) == 0) ? (((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((W) / (1))) : 0)) / 1 \
ad=(((W) / (1)) < 599.5n) ? ((floor((1) / 2.0) * (((((400n) - 200n) + 400n) * 600n) + (((W) / (1)) * 400n))) + ((((1) / 2) - floor((1) / 2) != 0) ? ((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((W) / (1)) * 200n)) : 0)) / 1 : ((floor((1) / 2.0) * ((((400n) - 200n) + 400n) * ((W) / (1)))) + ((((1) / 2) - floor((1) / 2) != 0) ? (((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((W) / (1))) : 0)) / 1 \
ps=(((W) / (1)) < 599.5n) ? (((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) + (floor(((1) - 1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + 2u)) + ((((1) / 2) - floor((1) / 2) == 0) ? ((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) : 0)) / 1 : (((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((W) / (1)))) + (floor(((1) - 1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + (2 * ((W) / (1))))) + ((((1) / 2) - floor((1) / 2) == 0) ? ((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((W) / (1)))) : 0)) / 1 \
pd=(((W) / (1)) < 599.5n) ? ((floor((1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + 2u)) + ((((1) / 2) - floor((1) / 2) != 0) ? ((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) : 0)) / 1 : ((floor((1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + (2 * ((W) / (1))))) + ((((1) / 2) - floor((1) / 2) != 0) ? ((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((W) / (1)))) : 0)) / 1 \
m=(1)*(1)
PM0 (vo net12 vdd vdd) pmos1 w=((2*W) / (2)) l=L as=(((2*W) / (2)) < 599.5n) ? (((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((2*W) / (2)) * 200n)) + (floor(((2) - 1) / 2.0) * (((((400n) - 200n) + 400n) * 600n) + (((2*W) / (2)) * 400n))) + ((((2) / 2) - floor((2) / 2) == 0) ? ((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((2*W) / (2)) * 200n)) : 0)) / 2 : ((((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((2*W) / (2))) + (floor(((2) - 1) / 2.0) * ((((400n) - 200n) + 400n) * ((2*W) / (2)))) + ((((2) / 2) - floor((2) / 2) == 0) ? (((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((2*W) / (2))) : 0)) / 2 \
ad=(((2*W) / (2)) < 599.5n) ? ((floor((2) / 2.0) * (((((400n) - 200n) + 400n) * 600n) + (((2*W) / (2)) * 400n))) + ((((2) / 2) - floor((2) / 2) != 0) ? ((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((2*W) / (2)) * 200n)) : 0)) / 2 : ((floor((2) / 2.0) * ((((400n) - 200n) + 400n) * ((2*W) / (2)))) + ((((2) / 2) - floor((2) / 2) != 0) ? (((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((2*W) / (2))) : 0)) / 2 \
ps=(((2*W) / (2)) < 599.5n) ? (((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) + (floor(((2) - 1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + 2u)) + ((((2) / 2) - floor((2) / 2) == 0) ? ((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) : 0)) / 2 : (((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((2*W) / (2)))) + (floor(((2) - 1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + (2 * ((2*W) / (2))))) + ((((2) / 2) - floor((2) / 2) == 0) ? ((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((2*W) / (2)))) : 0)) / 2 \
pd=(((2*W) / (2)) < 599.5n) ? ((floor((2) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + 2u)) + ((((2) / 2) - floor((2) / 2) != 0) ? ((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) : 0)) / 2 : ((floor((2) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + (2 * ((2*W) / (2))))) + ((((2) / 2) - floor((2) / 2) != 0) ? ((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((2*W) / (2)))) : 0)) / 2 \
m=(1)*(2)
PM1 (net12 net12 vdd vdd) pmos1 w=((2*W) / (2)) l=L as=(((2*W) / (2)) < 599.5n) ? (((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((2*W) / (2)) * 200n)) + (floor(((2) - 1) / 2.0) * (((((400n) - 200n) + 400n) * 600n) + (((2*W) / (2)) * 400n))) + ((((2) / 2) - floor((2) / 2) == 0) ? ((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((2*W) / (2)) * 200n)) : 0)) / 2 : ((((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((2*W) / (2))) + (floor(((2) - 1) / 2.0) * ((((400n) - 200n) + 400n) * ((2*W) / (2)))) + ((((2) / 2) - floor((2) / 2) == 0) ? (((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((2*W) / (2))) : 0)) / 2 \
ad=(((2*W) / (2)) < 599.5n) ? ((floor((2) / 2.0) * (((((400n) - 200n) + 400n) * 600n) + (((2*W) / (2)) * 400n))) + ((((2) / 2) - floor((2) / 2) != 0) ? ((((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n)) * 600n) + (((2*W) / (2)) * 200n)) : 0)) / 2 : ((floor((2) / 2.0) * ((((400n) - 200n) + 400n) * ((2*W) / (2)))) + ((((2) / 2) - floor((2) / 2) != 0) ? (((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n)) * ((2*W) / (2))) : 0)) / 2 \
ps=(((2*W) / (2)) < 599.5n) ? (((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) + (floor(((2) - 1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + 2u)) + ((((2) / 2) - floor((2) / 2) == 0) ? ((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) : 0)) / 2 : (((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((2*W) / (2)))) + (floor(((2) - 1) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + (2 * ((2*W) / (2))))) + ((((2) / 2) - floor((2) / 2) == 0) ? ((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((2*W) / (2)))) : 0)) / 2 \
pd=(((2*W) / (2)) < 599.5n) ? ((floor((2) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + 2u)) + ((((2) / 2) - floor((2) / 2) != 0) ? ((2 * ((200n > (((400n) - 200n) + 400n)) ? 200n : (((400n) - 200n) + 400n))) + 1.6u) : 0)) / 2 : ((floor((2) / 2.0) * ((2 * (((400n) - 200n) + 400n)) + (2 * ((2*W) / (2))))) + ((((2) / 2) - floor((2) / 2) != 0) ? ((2 * ((400n > (((400n) - 200n) + 400n)) ? 400n : (((400n) - 200n) + 400n))) + (2 * ((2*W) / (2)))) : 0)) / 2 \
m=(1)*(2)
E0 (vim net03 vip net03) vcvs gain=-1.0
V1 (vip net03) vsource mag=1 type=sine ampl=1m freq=1K
I5 (vdd net5) isource dc=I type=dc
V3 (net03 0) vsource dc=900.0m type=dc
V0 (vdd 0) vsource dc=1.8 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
ac ac start=10 stop=100G 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
saveOptions options save=allpub

------------------------------------------------
input.scs
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top