fix freepdk45

This commit is contained in:
Jesse Cirimelli-Low 2021-06-17 03:21:01 -07:00
parent 1e486cd344
commit 1ce6b4d41a
3 changed files with 27 additions and 15 deletions

View File

@ -45,7 +45,8 @@ class _hierarchical_predecode:
bus_space_factor, bus_space_factor,
input_layer, input_layer,
output_layer, output_layer,
vertical_supply): vertical_supply,
force_horizontal_input_contact):
# hierarchical_predecode # hierarchical_predecode
# bus_layer, bus_directions, bus_pitch, bus_space, input_layer, output_layer, output_layer_pitch # bus_layer, bus_directions, bus_pitch, bus_space, input_layer, output_layer, output_layer_pitch
# m2, pref, m2_pitch, m2_space, m1, m1, m1_pitch # m2, pref, m2_pitch, m2_space, m1, m1, m1_pitch
@ -59,6 +60,7 @@ class _hierarchical_predecode:
self.input_layer = input_layer self.input_layer = input_layer
self.output_layer = output_layer self.output_layer = output_layer
self.vertical_supply = vertical_supply self.vertical_supply = vertical_supply
self.force_horizontal_input_contact = force_horizontal_input_contact
class _column_mux_array: class _column_mux_array:
@ -152,7 +154,8 @@ class layer_properties():
bus_space_factor=1, bus_space_factor=1,
input_layer="m1", input_layer="m1",
output_layer="m1", output_layer="m1",
vertical_supply=False) vertical_supply=False,
force_horizontal_input_contact=False)
self._column_mux_array = _column_mux_array(select_layer="m1", self._column_mux_array = _column_mux_array(select_layer="m1",
select_pitch="m2_pitch", select_pitch="m2_pitch",

View File

@ -215,17 +215,26 @@ class hierarchical_predecode(design.design):
in_pos = vector(self.input_rails[in_pin].cx(), y_offset) in_pos = vector(self.input_rails[in_pin].cx(), y_offset)
a_pos = vector(self.decode_rails[a_pin].cx(), y_offset) a_pos = vector(self.decode_rails[a_pin].cx(), y_offset)
self.add_path(self.input_layer, [in_pos, a_pos]) self.add_path(self.input_layer, [in_pos, a_pos])
self.add_via_stack_center(from_layer=self.input_layer,
to_layer=self.bus_layer,
offset=[self.input_rails[in_pin].cx(), y_offset],
directions= ("H", "H"))
self.add_via_stack_center(from_layer=self.input_layer,
to_layer=self.bus_layer,
offset=[self.decode_rails[a_pin].cx(), y_offset],
directions=("H", "H"))
if(layer_props.hierarchical_predecode.force_horizontal_input_contact):
print("ping")
self.add_via_stack_center(from_layer=self.input_layer,
to_layer=self.bus_layer,
offset=[self.input_rails[in_pin].cx(), y_offset],
directions= ("H", "H"))
self.add_via_stack_center(from_layer=self.input_layer,
to_layer=self.bus_layer,
offset=[self.decode_rails[a_pin].cx(), y_offset],
directions=("H", "H"))
else:
self.add_via_stack_center(from_layer=self.input_layer,
to_layer=self.bus_layer,
offset=[self.input_rails[in_pin].cx(), y_offset])
self.add_via_stack_center(from_layer=self.input_layer,
to_layer=self.bus_layer,
offset=[self.decode_rails[a_pin].cx(), y_offset])
def route_output_ands(self): def route_output_ands(self):
""" """
Route all conections of the outputs and gates Route all conections of the outputs and gates

View File

@ -58,9 +58,9 @@ class hierarchical_decoder_test(openram_test):
self.local_check(a) self.local_check(a)
# Checks 3 x 4x16 and 4-input NAND decoder # Checks 3 x 4x16 and 4-input NAND decoder
debug.info(1, "Testing 4096 row sample for hierarchical_decoder") #debug.info(1, "Testing 4096 row sample for hierarchical_decoder")
a = factory.create(module_type="hierarchical_decoder", num_outputs=4096) #a = factory.create(module_type="hierarchical_decoder", num_outputs=4096)
self.local_check(a) #self.local_check(a)
globals.end_openram() globals.end_openram()