Fix ms_flop array for M3 supplies

This commit is contained in:
Matt Guthaus 2018-04-11 14:25:04 -07:00
parent 46c18f53ba
commit 1e36e8e20c
1 changed files with 12 additions and 27 deletions

View File

@ -71,14 +71,16 @@ class ms_flop_array(design.design):
for i in range(self.word_size): for i in range(self.word_size):
for gnd_pin in self.ms_inst[i].get_pins("gnd"): # Route both supplies
if gnd_pin.layer!="metal2": for n in ["vdd", "gnd"]:
continue for supply_pin in self.ms_inst[i].get_pins(n):
self.add_layout_pin(text="gnd", pin_pos = supply_pin.center()
layer="metal2", self.add_via_center(layers=("metal2", "via2", "metal3"),
offset=gnd_pin.ll(), offset=pin_pos)
width=gnd_pin.width(), self.add_layout_pin_rect_center(text=n,
height=gnd_pin.height()) layer="metal3",
offset=pin_pos)
din_pins = self.ms_inst[i].get_pins("din") din_pins = self.ms_inst[i].get_pins("din")
for din_pin in din_pins: for din_pin in din_pins:
@ -110,26 +112,9 @@ class ms_flop_array(design.design):
width=self.width, width=self.width,
height=drc["minwidth_metal1"]) height=drc["minwidth_metal1"])
# Continous vdd rail along with label.
for vdd_pin in self.ms_inst[i].get_pins("vdd"):
if vdd_pin.layer!="metal1":
continue
self.add_layout_pin(text="vdd",
layer="metal1",
offset=vdd_pin.ll().scale(0,1),
width=self.width,
height=drc["minwidth_metal1"])
# Continous gnd rail along with label.
for gnd_pin in self.ms_inst[i].get_pins("gnd"):
if gnd_pin.layer!="metal1":
continue
self.add_layout_pin(text="gnd",
layer="metal1",
offset=gnd_pin.ll().scale(0,1),
width=self.width,
height=drc["minwidth_metal1"])
def analytical_delay(self, slew, load=0.0): def analytical_delay(self, slew, load=0.0):