82 lines
1.9 KiB
Plaintext
82 lines
1.9 KiB
Plaintext
Ring Oscillator with various current and voltage measurements
|
|
* outside and inside of subcircuits
|
|
|
|
* inverter w/o current measurement
|
|
.subckt inv in out vdd vss
|
|
mn1 out in vss vss mynmos W=1u L=0.25u
|
|
mp1 out in vdd vdd mypmos W=2u L=0.25u
|
|
.ends
|
|
|
|
* inverter with current measurement
|
|
.subckt invmeas in out vdd vss
|
|
mn1 out in mea mea mynmos W=1u L=0.25u
|
|
mp1 out in vdd vdd mypmos W=2u L=0.25u
|
|
vmeas mea vss 0
|
|
.ends
|
|
|
|
* inverter with power output
|
|
.subckt invp in out vdd vss
|
|
mn1 out in mea mea mynmos W=3u L=0.25u
|
|
mp1 out in vdd vdd mypmos W=6u L=0.25u
|
|
vmeas mea vss 0
|
|
.ends
|
|
|
|
|
|
.subckt ro dd ss ssb out
|
|
* ring oscillator
|
|
Xinv1 n1 n2 dd ss inv
|
|
Xinv2 n2 n3 dd ss inv
|
|
Xinv3 n3 n4 dd ss inv
|
|
Xinv4 n4 n5 dd ss inv
|
|
Xinv5 n5 n1 dd ss invmeas
|
|
* output buffer
|
|
Xinv6 n5 outi dd ssb inv
|
|
Xinv7 outi out dd ssb invp
|
|
.ends
|
|
|
|
Xro dd ss ssb out ro
|
|
|
|
Vdd dd 0 1.5
|
|
Vss ss 0 0
|
|
Vssb ssb 0 0
|
|
|
|
* use internally predefined model parameters
|
|
.model mynmos nmos level=14 version=4.5.0
|
|
.model mypmos pmos level=14 version=4.5.0
|
|
|
|
.option savecurrents
|
|
|
|
.control
|
|
*use save ... if option savecurrents is not given
|
|
*save all @m.xro.xinv2.mn1[id] @m.xro.xinv3.mn1[id]
|
|
tran 2p 3n
|
|
*use remzerovec if option savecurrents is given
|
|
remzerovec
|
|
|
|
set xbrushwidth=2
|
|
set color0=white
|
|
|
|
*output voltage after output buffer
|
|
plot v(out)
|
|
|
|
* measure currents
|
|
* v.xro.xinv5.vmeas#branch current through inverter 5
|
|
* vss#branch total ro current
|
|
* @m.xro.xinv2.mn1[id] drain current of transistor m1 in inverter 2
|
|
plot v.xro.xinv5.vmeas#branch vss#branch @m.xro.xinv2.mn1[id]
|
|
|
|
* vssb#branch current through output buffer
|
|
plot vssb#branch
|
|
|
|
* plot voltages at nodes internal to subcircuit instance xro
|
|
plot xro.n1 xro.n2 xro.n3 xro.n4 xro.n5 xro.outi
|
|
|
|
* Write the drain current of transistor m1 in inverter 3 into
|
|
* a raw file
|
|
write id.raw @m.xro.xinv3.mn1[id]
|
|
* and into a table
|
|
wrdata id.out @m.xro.xinv3.mn1[id]
|
|
.endc
|
|
|
|
.end
|