mirror of https://github.com/VLSIDA/OpenRAM.git
use odd number inverter chains from delay chain for delay instead of external inverters
This commit is contained in:
parent
b9b57ab6b3
commit
606260dd68
|
|
@ -151,8 +151,8 @@ class control_logic_delay(design.design):
|
|||
debug.check(OPTS.delay_chain_stages % 2,
|
||||
"Must use odd number of delay chain stages for inverting delay chain.")
|
||||
self.multi_delay_chain=factory.create(module_type = "multi_delay_chain",
|
||||
fanout_list = 28 * [ OPTS.delay_chain_fanout_per_stage ], # TODO: generate this programatically
|
||||
pinout_list = [2, 12, 14, 28]) # TODO: generate this list programatically
|
||||
fanout_list = 29 * [ OPTS.delay_chain_fanout_per_stage ], # TODO: generate this programatically
|
||||
pinout_list = [2, 12, 13, 15, 29]) # TODO: generate this list programatically
|
||||
|
||||
# not being used
|
||||
def get_dynamic_delay_chain_size(self, previous_stages, previous_fanout):
|
||||
|
|
@ -260,9 +260,9 @@ class control_logic_delay(design.design):
|
|||
|
||||
# list of output control signals (for making a vertical bus)
|
||||
if self.port_type == "rw":
|
||||
self.internal_bus_list = ["glitch1_bar", "glitch2_bar", "glitch3_bar", "pre_sen", "delay1", "delay2", "delay3", "delay4", "gated_clk_bar", "gated_clk_buf", "we", "we_bar", "clk_buf", "cs"]
|
||||
self.internal_bus_list = ["glitch1_bar", "glitch2_bar", "glitch3_bar", "pre_sen", "delay1", "delay2", "delay3", "delay4", "delay5", "gated_clk_bar", "gated_clk_buf", "we", "we_bar", "clk_buf", "cs"]
|
||||
else:
|
||||
self.internal_bus_list = ["glitch1_bar", "glitch2_bar", "glitch3_bar", "pre_sen", "delay1", "delay2", "delay3", "delay4", "gated_clk_bar", "gated_clk_buf", "clk_buf", "cs"]
|
||||
self.internal_bus_list = ["glitch1_bar", "glitch2_bar", "glitch3_bar", "pre_sen", "delay1", "delay2", "delay3", "delay4", "delay5", "gated_clk_bar", "gated_clk_buf", "clk_buf", "cs"]
|
||||
# leave space for the bus plus one extra space
|
||||
self.internal_bus_width = (len(self.internal_bus_list) + 1) * self.m2_pitch
|
||||
|
||||
|
|
@ -383,7 +383,7 @@ class control_logic_delay(design.design):
|
|||
""" Create the delay chain """
|
||||
self.delay_inst=self.add_inst(name="multi_delay_chain",
|
||||
mod=self.multi_delay_chain)
|
||||
self.connect_inst(["gated_clk_buf", "delay1", "delay2", "delay3", "delay4", "vdd", "gnd"])
|
||||
self.connect_inst(["gated_clk_buf", "delay1", "delay2", "delay3", "delay4", "delay5", "vdd", "gnd"])
|
||||
|
||||
def place_delay(self, row):
|
||||
""" Place the delay chain """
|
||||
|
|
@ -414,29 +414,17 @@ class control_logic_delay(design.design):
|
|||
# glitch{1-3} are internal timing signals based on different in/out
|
||||
# points on the delay chain for adjustable start time and duration
|
||||
def create_glitches(self):
|
||||
self.glitch1_inv_inst = self.add_inst(name="inv_glitch1",
|
||||
mod=self.inv)
|
||||
self.connect_inst(["delay2", "g1_end", "vdd", "gnd"])
|
||||
|
||||
self.glitch2_inv_inst = self.add_inst(name="inv_glitch2",
|
||||
mod=self.inv)
|
||||
self.connect_inst(["delay3", "g2_end", "vdd", "gnd"])
|
||||
|
||||
self.glitch3_inv_inst = self.add_inst(name="inv_glitch3",
|
||||
mod=self.inv)
|
||||
self.connect_inst(["delay4", "g3_end", "vdd", "gnd"])
|
||||
|
||||
self.glitch1_nand_inst = self.add_inst(name="nand2_glitch1",
|
||||
mod=self.nand2)
|
||||
self.connect_inst(["delay1", "g1_end", "glitch1_bar", "vdd", "gnd"])
|
||||
self.connect_inst(["delay1", "delay3", "glitch1_bar", "vdd", "gnd"])
|
||||
|
||||
self.glitch2_nand_inst = self.add_inst(name="nand2_glitch2",
|
||||
mod=self.nand2)
|
||||
self.connect_inst(["gated_clk_buf", "g2_end", "glitch2_bar", "vdd", "gnd"])
|
||||
self.connect_inst(["gated_clk_buf", "delay4", "glitch2_bar", "vdd", "gnd"])
|
||||
|
||||
self.glitch3_nand_inst = self.add_inst(name="nand2_glitch3",
|
||||
mod=self.nand2)
|
||||
self.connect_inst(["delay2", "g3_end", "glitch3_bar", "vdd", "gnd"])
|
||||
self.connect_inst(["delay2", "delay5", "glitch3_bar", "vdd", "gnd"])
|
||||
|
||||
def place_glitch1_row(self, row):
|
||||
x_offset = self.control_x_offset
|
||||
|
|
|
|||
Loading…
Reference in New Issue