2018-09-13 20:03:35 +02:00
|
|
|
*********************** Write_Driver ******************************
|
|
|
|
|
.SUBCKT write_driver din bl br en vdd gnd
|
2018-11-27 20:42:58 +01:00
|
|
|
|
|
|
|
|
**** Inverter to conver Data_in to data_in_bar ******
|
2018-11-27 20:49:08 +01:00
|
|
|
* din_bar = inv(din)
|
2018-11-27 20:42:58 +01:00
|
|
|
M_1 din_bar din gnd gnd n W=0.8u L=0.4u
|
|
|
|
|
M_2 din_bar din vdd vdd p W=1.4u L=0.4u
|
|
|
|
|
|
|
|
|
|
**** 2input nand gate follwed by inverter to drive BL ******
|
2018-11-27 20:49:08 +01:00
|
|
|
* din_bar_gated = nand(en, din)
|
2018-11-27 20:42:58 +01:00
|
|
|
M_3 din_bar_gated en net_7 gnd n W=1.4u L=0.4u
|
|
|
|
|
M_4 net_7 din gnd gnd n W=1.4u L=0.4u
|
|
|
|
|
M_5 din_bar_gated en vdd vdd p W=1.4u L=0.4u
|
|
|
|
|
M_6 din_bar_gated din vdd vdd p W=1.4u L=0.4u
|
2018-11-27 20:49:08 +01:00
|
|
|
* din_bar_gated_bar = inv(din_bar_gated)
|
|
|
|
|
M_7 din_bar_gated_bar din_bar_gated vdd vdd p W=1.4u L=0.4u
|
|
|
|
|
M_8 din_bar_gated_bar din_bar_gated gnd gnd n W=0.8u L=0.4u
|
2018-11-27 20:42:58 +01:00
|
|
|
|
|
|
|
|
**** 2input nand gate follwed by inverter to drive BR******
|
2018-11-27 20:49:08 +01:00
|
|
|
* din_gated = nand(en, din_bar)
|
2018-11-27 20:42:58 +01:00
|
|
|
M_9 din_gated en vdd vdd p W=1.4u L=0.4u
|
|
|
|
|
M_10 din_gated en net_8 gnd n W=1.4u L=0.4u
|
|
|
|
|
M_11 net_8 din_bar gnd gnd n W=1.4u L=0.4u
|
|
|
|
|
M_12 din_gated din_bar vdd vdd p W=1.4u L=0.4u
|
2018-11-27 20:49:08 +01:00
|
|
|
* din_gated_bar = inv(din_gated)
|
|
|
|
|
M_13 din_gated_bar din_gated vdd vdd p W=1.4u L=0.4u
|
|
|
|
|
M_14 din_gated_bar din_gated gnd gnd n W=0.8u L=0.4u
|
2018-11-27 20:42:58 +01:00
|
|
|
|
|
|
|
|
************************************************
|
2018-11-27 20:49:08 +01:00
|
|
|
* pull down with en enable
|
2019-08-01 17:59:41 +02:00
|
|
|
M_15 bl din_gated_bar gnd gnd n W=2.4u L=0.4u
|
|
|
|
|
M_16 br din_bar_gated_bar gnd gnd n W=2.4u L=0.4u
|
2018-11-27 20:42:58 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.ENDS $ write_driver
|