diff --git a/compiler/modules/write_driver_array.py b/compiler/modules/write_driver_array.py index a220e473..a561b775 100644 --- a/compiler/modules/write_driver_array.py +++ b/compiler/modules/write_driver_array.py @@ -82,7 +82,17 @@ class write_driver_array(design.design): offset=br_pin.ll(), width=br_pin.width(), height=br_pin.height()) - + + for n in ["vdd", "gnd"]: + pin_pos = self.driver_insts[i].get_pin(n).center() + # Add the M2->M3 stack + self.add_via_center(layers=("metal2", "via2", "metal3"), + offset=pin_pos) + self.add_layout_pin_rect_center(text=n, + layer="metal3", + offset=pin_pos) + + self.add_layout_pin(text="en", layer="metal1", @@ -90,16 +100,5 @@ class write_driver_array(design.design): width=self.width, height=drc['minwidth_metal1']) - self.add_layout_pin(text="vdd", - layer="metal1", - offset=self.driver_insts[0].get_pin("vdd").ll().scale(0,1), - width=self.width, - height=drc['minwidth_metal1']) - - self.add_layout_pin(text="gnd", - layer="metal1", - offset=self.driver_insts[0].get_pin("gnd").ll().scale(0,1), - width=self.width, - height=drc['minwidth_metal1']) diff --git a/technology/freepdk45/gds_lib/write_driver.gds b/technology/freepdk45/gds_lib/write_driver.gds index 4954fc80..7c5e94ca 100644 Binary files a/technology/freepdk45/gds_lib/write_driver.gds and b/technology/freepdk45/gds_lib/write_driver.gds differ diff --git a/technology/scn3me_subm/gds_lib/write_driver.gds b/technology/scn3me_subm/gds_lib/write_driver.gds index a8a9c176..495a484f 100644 Binary files a/technology/scn3me_subm/gds_lib/write_driver.gds and b/technology/scn3me_subm/gds_lib/write_driver.gds differ diff --git a/technology/scn3me_subm/mag_lib/write_driver.mag b/technology/scn3me_subm/mag_lib/write_driver.mag index 7398bb84..2a90ff9a 100644 --- a/technology/scn3me_subm/mag_lib/write_driver.mag +++ b/technology/scn3me_subm/mag_lib/write_driver.mag @@ -1,6 +1,6 @@ magic tech scmos -timestamp 1517448475 +timestamp 1523061656 << nwell >> rect -3 101 37 138 rect -3 0 37 51 @@ -174,8 +174,7 @@ rect 30 142 33 181 rect 20 138 33 142 rect 20 132 24 138 rect 12 122 16 125 -rect 0 118 8 122 -rect 16 118 36 122 +rect 16 118 17 122 rect 13 114 17 118 rect 5 104 9 107 rect 21 104 25 107 @@ -192,12 +191,10 @@ rect 11 45 15 48 rect 27 45 31 60 rect 3 35 7 38 rect 19 35 23 38 -rect 0 31 3 35 rect 7 31 8 35 -rect 12 31 36 35 +rect 12 31 23 35 rect 0 24 7 28 rect 11 24 36 28 -rect 0 17 32 21 << m2contact >> rect 5 191 9 195 rect 20 189 24 193 @@ -206,31 +203,27 @@ rect 8 118 12 122 rect 30 82 34 86 rect 19 64 23 68 rect 8 31 12 35 -rect 32 17 36 21 rect 12 10 16 14 << metal2 >> rect 10 195 14 202 rect 9 191 14 195 rect 20 193 24 202 rect 20 177 24 189 -rect 32 161 36 196 rect 15 157 36 161 rect 8 35 12 118 rect 32 86 36 157 rect 34 82 36 86 rect 32 72 36 82 rect 19 68 36 72 -rect 32 21 36 68 rect 16 10 20 14 rect 15 0 19 10 -rect 32 0 36 17 << m3p >> rect 0 0 34 202 << labels >> -rlabel metal1 0 31 0 31 1 vdd -rlabel metal1 0 17 0 17 7 gnd rlabel metal2 15 1 15 1 1 din rlabel metal1 2 25 2 25 3 en rlabel metal2 12 200 12 200 5 bl rlabel metal2 22 200 22 200 5 br +rlabel metal2 10 94 10 94 1 vdd +rlabel metal2 35 141 35 141 7 gnd << end >>