Eric,
In Spectre version 5.0 and beyond you can use MDL to print. I suggest that you take a look at the SpectreMDL users guide to get a feeling for MDL, since there is a lot it can do.
Here is what I did to run your example. First, here is the netlist (a file named
netlist):
Code:// Example of sweeping and printing
simulator lang=spectre
parameters m1_l=0.5u m1_w=4u m1_mx=1 m1_my=1 vds_S1=0.05 vgs_S1=0.5 vsb_S1=0
model nch mos1 type=n
parameter_sweep paramset {
m1_l m1_w m1_mx m1_my vds_S1 vgs_S1 vsb_S1
0.5e-06 4e-06 1 1 0.05 0.5 0
0.5e-06 4e-06 1 1 0.05 0.5 0.3
0.6e-06 6e-06 1 1 0.075 0.6 0
0.6e-06 6e-06 1 1 0.075 0.6 0.3
}
m1 (d g s b) nch l=m1_l w=m1_w
vgs (g s) vsource dc=vgs_S1
vds (d s) vsource dc=vds_S1
vsb (s 0) vsource dc=vsb_S1
vbg (b 0) vsource dc=0
saveOptions options save=allpub
save m1:oppoint
Then I created an MDL file that describes the analyes and expressions that you want Spectre to evaluate (a file named
netlist.mdl):
Code:alias measurement dcrun {
run dc
export real id=abs(I(m1:1))
// export real vt=abs(m1:vt)
// export real gm=abs(m1:gm)
}
foreach parameter_sweep {
run dcrun as dcrun1
}
Unfortunately, MDL does not yet allow you access to the operating point parameters (
vt and
gm). That is why they are commented out.
Finally, I ran the simulation using
Code:spectremdl -design netlist
It put the printed results in
netlist.measure.
spectremdl is a perl script, so you can modify it to change the way things are printed.
- MM -