circuit = Circuit('NAND GATE') #circuit.include(spice_library['ptm65nm_nmos']) circuit.model('mynmos','NMOS', level=1) circuit.model('mypmos','PMOS', level=1) # Define the DC supply voltage value HIGH = 3.3@u_V LOW = 0@u_V circuit.V(1,'Vdd',circuit.gnd, HIGH) input1 = circuit.PulseVoltageSource('in1', 'in1', circuit.gnd, initial_value=0@u_V, pulsed_value=3.3@u_V, pulse_width=100@u_ms, period=200@u_ms, ) input2 = circuit.PulseVoltageSource('in2', 'in2', circuit.gnd, initial_value=0@u_V, pulsed_value=3.3@u_V, pulse_width=50@u_ms, period=100@u_ms,delay_time=2@u_ms) #circuit.V(2,'in1',circuit.gnd, LOW) #circuit.V(3,'in2',circuit.gnd, LOW) circuit.MOSFET(1, 'out', 'in1', 'Vdd', 'Vdd', model='mypmos') circuit.MOSFET(2, 'out', 'in2', 'Vdd', 'Vdd', model='mypmos') circuit.MOSFET(3, 'out', 'in1', 'd', 'd', model='mynmos') circuit.MOSFET(4, 'd', 'in2', circuit.gnd, circuit.gnd, model='mynmos') simulator = circuit.simulator(temperature=25, nominal_temperature=25) analysis = simulator.transient(step_time=input1.period/5000, end_time=input1.period*1) figure, ((ax1, ax2, ax3)) = plt.subplots(3, 1, figsize=(6, 4)) #figure, ax = plt.subplots(figsize=(20, 10)) #ax1.grid() ax.set_title('Logic Gate') ax.set_xlabel('Time [s]') ax.set_ylabel('Voltage [V]') ax1.plot(analysis['in1']) ax2.plot(analysis['in2']) ax3.plot(analysis['out']) #ax.legend(('in1','in2', 'out'), loc=(.05,.1)) #ax.set_ylim(-1,4) plt.tight_layout() plt.show()