diff --git a/compiler/modules/port_address.py b/compiler/modules/port_address.py index b30e84cf..8af6a756 100644 --- a/compiler/modules/port_address.py +++ b/compiler/modules/port_address.py @@ -116,15 +116,13 @@ class port_address(design.design): rbl_in_pin = self.rbl_driver_inst.get_pin("A") rbl_in_pos = rbl_in_pin.center() - mid_pos = vector(en_pin.cx(), rbl_in_pin.cy()) self.add_via_stack_center(from_layer=rbl_in_pin.layer, to_layer=en_pin.layer, offset=rbl_in_pos) - self.add_path(en_pin.layer, [rbl_in_pos, mid_pos, en_pos]) - self.add_layout_pin_segment_center(text="wl_en", - layer=en_pin.layer, - start=mid_pos, - end=en_pos) + self.add_zjog(en_pin.layer, rbl_in_pos, en_pos) + self.add_layout_pin_rect_center(text="wl_en", + layer=en_pin.layer, + offset=rbl_in_pos) def add_modules(self): @@ -139,11 +137,11 @@ class port_address(design.design): try: local_array_size = OPTS.local_array_size - driver_size = int(self.num_cols / local_array_size) + driver_size = max(int(self.num_cols / local_array_size), 1) except AttributeError: local_array_size = 0 # Defautl to FO4 - driver_size = int(self.num_cols / 4) + driver_size = max(int(self.num_cols / 4), 1) # The polarity must be switched if we have a hierarchical wordline # to compensate for the local array inverters diff --git a/compiler/options.py b/compiler/options.py index 8de3b910..b9be3999 100644 --- a/compiler/options.py +++ b/compiler/options.py @@ -30,6 +30,9 @@ class options(optparse.Values): num_r_ports = 0 num_w_ports = 0 + # By default, use local arrays with a max fanout of 16 + #local_array_size = 16 + # Write mask size, default will be overwritten with word_size if not user specified write_size = None diff --git a/compiler/pgates/wordline_driver.py b/compiler/pgates/wordline_driver.py index e0dbf1b2..6abf7b20 100644 --- a/compiler/pgates/wordline_driver.py +++ b/compiler/pgates/wordline_driver.py @@ -45,11 +45,11 @@ class wordline_driver(design.design): try: local_array_size = OPTS.local_array_size - driver_size = int(self.cols / local_array_size) + driver_size = max(int(self.cols / local_array_size), 1) except AttributeError: local_array_size = 0 # Defautl to FO4 - driver_size = int(self.cols / 4) + driver_size = max(int(self.cols / 4), 1) # The polarity must be switched if we have a hierarchical wordline # to compensate for the local array inverters