mirror of https://github.com/VLSIDA/OpenRAM.git
force multi-delay chain pinouts to be user configurable
This commit is contained in:
parent
c47ec37473
commit
bf49ea744e
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue