From 269d553857871de3ca324808504302b1f8db421c Mon Sep 17 00:00:00 2001 From: Matt Guthaus Date: Mon, 23 Apr 2018 09:14:18 -0700 Subject: [PATCH] Move sense amp to tri gate routing to M3... not ideal. --- compiler/modules/bank.py | 36 ++++-------------- technology/freepdk45/gds_lib/tri_gate.gds | Bin 12288 -> 12288 bytes technology/scn3me_subm/gds_lib/tri_gate.gds | Bin 4832 -> 4576 bytes .../scn3me_subm/gds_lib/write_driver.gds | Bin 11740 -> 11804 bytes technology/scn3me_subm/mag_lib/tri_gate.mag | 14 +------ .../scn3me_subm/mag_lib/write_driver.mag | 7 ++-- 6 files changed, 13 insertions(+), 44 deletions(-) diff --git a/compiler/modules/bank.py b/compiler/modules/bank.py index 24287eb1..e781d9a7 100644 --- a/compiler/modules/bank.py +++ b/compiler/modules/bank.py @@ -106,8 +106,6 @@ class bank(design.design): self.route_bank_select() self.route_vdd_gnd() - #self.route_vdd_supply() - #self.route_gnd_supply() def add_modules(self): """ Add modules. The order should not matter! """ @@ -619,34 +617,14 @@ class bank(design.design): # Connection of data_out of sense amp to data_in tri_gate_in = self.tri_gate_array_inst.get_pin("in[{}]".format(i)).lc() sa_data_out = self.sense_amp_array_inst.get_pin("data[{}]".format(i)).bc() - - self.add_path("metal2",[sa_data_out,tri_gate_in]) - # # if we need a bend or not - # if tri_gate_in.x-sa_data_out.x>self.m2_pitch: - # # We'll connect to the bottom of the SA pin - # bendX = sa_data_out.x - # else: - # # We'll connect to the left of the SA pin - # sa_data_out = self.sense_amp_array_inst.get_pin("data[{}]".format(i)).lc() - # bendX = tri_gate_in.x - 3*self.m3_width - # bendY = tri_gate_in.y - 2*self.m2_width - - # # Connection point of M2 and M3 paths, below the tri gate and - # # to the left of the tri gate input - # bend = vector(bendX, bendY) - - # # Connect an M2 path to the gate - # mid3 = [tri_gate_in.x, bendY] # guarantee down then left - # self.add_path("metal2", [bend, mid3, tri_gate_in]) - - # # connect up then right to sense amp - # mid1 = vector(bendX,sa_data_out.y) - # self.add_path("metal3", [bend, mid1, sa_data_out]) - - - # offset = bend - vector([0.5*drc["minwidth_metal3"]] * 2) - # self.add_via(("metal2", "via2", "metal3"),offset) + self.add_via_center(layers=("metal2", "via2", "metal3"), + offset=tri_gate_in, + rotate=90) + self.add_via_center(layers=("metal2", "via2", "metal3"), + offset=sa_data_out, + rotate=90) + self.add_path("metal3",[sa_data_out,tri_gate_in]) def route_tri_gate_out(self): """ Metal 3 routing of tri_gate output data """ diff --git a/technology/freepdk45/gds_lib/tri_gate.gds b/technology/freepdk45/gds_lib/tri_gate.gds index 4879c9ef4459964c73485a36d806b8dbeb0f9d16..aca2ac0d43cf01eedac22066fdd083242f6ad997 100644 GIT binary patch delta 101 zcmZojXh@hK?JUl~$-u#2$-u+JmXey5SejG9z#ziRYNv2y_R`0}-z=44#4q@+dB-5b z%EZ9Wz{1_lNl0cNP-L}*kx%Vx}np|KolBhVm_>zJT4 OBUGHRe6xz?9aaET2P9Yk diff --git a/technology/scn3me_subm/gds_lib/tri_gate.gds b/technology/scn3me_subm/gds_lib/tri_gate.gds index 2c0e3aceef530be446cc7b68741d17430b672ebd..b3d696d0e71fc607340d78526fa569e1a10d56cf 100644 GIT binary patch delta 130 zcmaE$`aoHUfsKKQftf*uk%^&n@6xKJ)*TLv~hCI$uu z9RX$r2B8BC4D1{X45AVUnlk|+4x`yQHZS9nVpZa|VPG(Q!N4Hqf}pKtFff3`A@t-& z{7GC~JrE^aJ(K+e#F&6ont<=*&HRE&talg~#0wZ0U^Gaj;1mW17|nWTvYLQi5J(y% u45NW=Wf25opflNcnHcPl-7k;g=z9EU7N}4bVa0Ofo5-A!oVTPmY$cwz`!C1#Oy%K G!TuI+zvGLn5FzgDMJV7^(jh%skg@pkC?p7_a diff --git a/technology/scn3me_subm/mag_lib/tri_gate.mag b/technology/scn3me_subm/mag_lib/tri_gate.mag index da973d0b..a393074b 100644 --- a/technology/scn3me_subm/mag_lib/tri_gate.mag +++ b/technology/scn3me_subm/mag_lib/tri_gate.mag @@ -1,6 +1,6 @@ magic tech scmos -timestamp 1524065602 +timestamp 1524499924 << nwell >> rect -2 45 38 73 << pwell >> @@ -84,18 +84,8 @@ rect 15 46 19 50 rect 25 34 29 38 rect 24 19 28 23 << metal2 >> -rect 13 46 15 50 rect 15 34 25 38 -rect 15 9 19 34 -rect 19 5 20 9 -rect 15 0 19 5 -<< m3contact >> -rect 15 5 19 9 -<< metal3 >> -rect 14 9 20 10 -rect 14 5 15 9 -rect 19 5 20 9 -rect 14 4 20 5 +rect 15 0 19 34 << m3p >> rect 0 0 34 73 << labels >> diff --git a/technology/scn3me_subm/mag_lib/write_driver.mag b/technology/scn3me_subm/mag_lib/write_driver.mag index 5e80eff9..80e09d11 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 1523920689 +timestamp 1524499497 << nwell >> rect -3 101 37 138 rect -3 0 37 51 @@ -167,6 +167,7 @@ rect 32 181 33 185 rect 13 169 16 177 rect 13 165 15 169 rect 4 148 8 163 +rect 12 157 15 161 rect 12 156 16 157 rect 12 148 16 152 rect 4 132 8 144 @@ -197,7 +198,7 @@ rect 11 24 36 28 << m2contact >> rect 10 192 14 196 rect 20 189 24 193 -rect 11 157 15 161 +rect 23 153 27 157 rect 16 118 20 122 rect 26 86 30 90 rect 19 64 23 68 @@ -217,7 +218,7 @@ rlabel metal2 12 200 12 200 5 bl rlabel metal2 22 200 22 200 5 br rlabel m2contact 21 66 21 66 1 gnd rlabel m2contact 28 88 28 88 1 gnd -rlabel m2contact 13 159 13 159 1 gnd rlabel m2contact 21 33 21 33 1 vdd rlabel m2contact 18 120 18 120 1 vdd +rlabel m2contact 25 155 25 155 1 gnd << end >>