-- File: [Thyme]<Thyme>Spice>Top>ThymeBasics.thy
-- Last edited:
-- SChen, 16-Feb-84 18:47:50
-- Barth, April 11, 1983  11:51 AM

Diode: circuit[anode, cathode | Imax← 1A, Io← 10nA, Temp← 25]
  asserts[Imax>Io, Io>0, Temp>-100]= {

  diodeModel: model← dcDiode[anode, cathode |
    Io, 8.61707E-5*(Temp+273.16), \(Imax/Io)];
  junction: current[anode, cathode]← diodeModel[0]
  };

Diffusion: circuit[cathode, anode | a← 0, p← 0, Cj← 0, Cjm← 0,
    Pb←0.866, TDegC← 25, Jmax← 1m, Jo← 30n]
  asserts[a>=0, p>=0, Cj>=0, Cjm>=0, TDegC>-75, Jmax>Jo, Jo>0]= {

  Dif: circuit[ | Vt] asserts[Pb>Vt]= {
    DModel: model← acDiode[cathode, anode |
      Cj*a+Cjm*p, -- zero-bias capacitance of diode
      Pb,         -- junction built-in voltage (v)
      Vt,         -- kT/q
      Jo*a,       -- Io
      (Pb/Vt) MIN \(Jmax/Jo)
      ];

    C: capacitor[cathode, anode] ← DModel[0]; 
      -- voltage dependent capacitance
    I: current[cathode, anode] ← DModel[1] 
      -- leakage current
    };

  dif: Dif[ | Vt← 8.61707E-5*(TDegC+273.16)]
  };

Pulse: circuit[output | amplitude← 5V, offset← 0, period← 10ns, 
    width← 5ns, tRise← 2ns, tFall← 2ns, tDelay← 0]
  asserts[width<period, tRise+tFall<width]= {

  pg: voltage[output, Gnd]← PulseGen[
    amplitude+offset, offset, period, width, tRise, tFall, tDelay]
  };

RectWave: circuit[output | OnLevel← 5V, OffLevel← 0V, period← 20ns,
    width← 10ns, tRise← 2ns, tFall← 2ns, tDelay← 0ns]
  asserts[width<period, tRise+tFall<width]= {

  pg: voltage[output, Gnd]← PulseGen[
    OnLevel, OffLevel, period, width, tRise, tFall, tDelay]
  };

OneShot: circuit[output | OnLevel← 5V, OffLevel← 0V, width← 10ns,
    tRise← 2ns, tFall← 2ns, tDelay← 0ns]
  asserts[tRise+tFall<width]= {

  pg: voltage[output, Gnd]← OneShotGen[
    OnLevel, OffLevel, width, tRise, tFall, tDelay]
  };

Step: circuit[output | OnLevel← 5V, OffLevel← 0V, tRise← 5ns, 
    tDelay← 0ns]
  asserts[tRise>0]= {

  pg: voltage[output, Gnd]← StepGen[
    OnLevel, OffLevel, tRise, tDelay]
  };