force multi-delay chain pinouts to be user configurable

This commit is contained in:
Sam Crow 2023-09-27 13:15:45 -07:00
parent c47ec37473
commit bf49ea744e
2 changed files with 21 additions and 4 deletions

View File

@ -100,12 +100,18 @@ class control_logic_delay(control_logic_base):
self.nand2 = factory.create(module_type="pnand2", self.nand2 = factory.create(module_type="pnand2",
height=dff_height) height=dff_height)
self.compute_delay_chain_size() # TODO: compute the delay chain pinouts using elmore delay
# self.compute_delay_chain_size()
# for now, use these user-defined values for delay chain sizing
self.delay_chain_pinout_list = OPTS.multi_delay_chain_pinouts
self.delay_chain_fanout_list = [4] * self.delay_chain_pinout_list[4]
self.delay_chain = factory.create(module_type="multi_delay_chain", self.delay_chain = factory.create(module_type="multi_delay_chain",
fanout_list=self.delay_chain_fanout_list, fanout_list=self.delay_chain_fanout_list,
pinout_list=self.delay_chain_pinout_list) pinout_list=self.delay_chain_pinout_list)
def compute_delay_chain_size(self): def compute_delay_chain_size(self):
# FIXME: this function is not called because it is incomplete
""" """
calculate the pinouts needed for the delay chain based on calculate the pinouts needed for the delay chain based on
wordline, bitline, and precharge delays wordline, bitline, and precharge delays

View File

@ -63,17 +63,28 @@ class options(optparse.Values):
scramble_bits = True scramble_bits = True
################### ###################
# Optimization options # Control logic options
################### ###################
# Approximate percentage of delay compared to bitlines # Approximate percentage of delay compared to bitlines
rbl_delay_percentage = 0.5 rbl_delay_percentage = 0.5
# delay chain is automatically sized in delay based control logic # FIXME: delay_control_scaling_factor is not used because
# the multi-delay chain is not being sized automatically
# if delay chain is automatically sized in delay based control logic
# this multiplier can be used to add a guard band to the standard timing # this multiplier can be used to add a guard band to the standard timing
# lowering it can improve performance but may cause sram to fail # lowering it can improve performance but may cause sram to fail
delay_control_scaling_factor = 1.0 # delay_control_scaling_factor = 1.0
# multi delay chain is NOT automatically sized, needs to be set by user
# list indexes 0 & 1 need to be even for polarity
# list indexes 2 - 4 need to be odd for polarity
# these default values are the ones used on the September 2023 Chipignite Shuttle
# to test delay based control logic with sky130 1rw1r 8x1024 bit (1KB) with 8 column mux
multi_delay_chain_pinouts = [2, 10, 11, 17, 31]
# stages for delay chain in rbl control logic only # stages for delay chain in rbl control logic only
delay_chain_stages = 9 delay_chain_stages = 9
# fanout per stage for any control logic # fanout per stage for any control logic
delay_chain_fanout_per_stage = 4 delay_chain_fanout_per_stage = 4