From 9158e92a71dc646b03d72fb33056b4ee22788096 Mon Sep 17 00:00:00 2001 From: Bugra Onal Date: Thu, 3 Mar 2022 11:48:29 -0800 Subject: [PATCH] TEmplate rework --- compiler/base/verilog.py | 13 +- compiler/base/verilog_template.v | 153 ------------------- compiler/tests/sram_1b_16_1rw_scn4m_subm.log | 2 + compiler/tests/sram_1b_16_1rw_sky130.log | 3 + 4 files changed, 10 insertions(+), 161 deletions(-) delete mode 100644 compiler/base/verilog_template.v create mode 100644 compiler/tests/sram_1b_16_1rw_scn4m_subm.log create mode 100644 compiler/tests/sram_1b_16_1rw_sky130.log diff --git a/compiler/base/verilog.py b/compiler/base/verilog.py index 03d0e868..a3d02a8c 100644 --- a/compiler/base/verilog.py +++ b/compiler/base/verilog.py @@ -21,15 +21,8 @@ class verilog: def verilog_write(self, verilog_name): """ Write a behavioral Verilog model. """ - self.vf = open(verilog_name, "w") - - self.vf.write("// OpenRAM SRAM model\n") - self.vf.write("// Words: {0}\n".format(self.num_words)) - self.vf.write("// Word size: {0}\n".format(self.word_size)) if self.write_size: - self.vf.write("// Write size: {0}\n\n".format(self.write_size)) - else: - self.vf.write("\n") + self.template.setSectionRepeat('WRITE_SIZE_CMT', 1) try: self.vdd_name = spice["power"] @@ -139,6 +132,10 @@ class verilog: self.vf.write(" reg [ADDR_WIDTH-1:0] addr{0}_reg;\n".format(port)) if port in self.write_ports: self.vf.write(" reg [DATA_WIDTH-1:0] din{0}_reg;\n".format(port)) + self.vf.write("`ifdef USE_POWER_PINS\n") + self.vf.write(" {},\n".format(self.vdd_name)) + self.vf.write(" {},\n".format(self.gnd_name)) + self.vf.write("`endif\n") if port in self.read_ports: self.vf.write(" reg [DATA_WIDTH-1:0] dout{0};\n".format(port)) diff --git a/compiler/base/verilog_template.v b/compiler/base/verilog_template.v deleted file mode 100644 index 27b455e0..00000000 --- a/compiler/base/verilog_template.v +++ /dev/null @@ -1,153 +0,0 @@ -// OpenRAM SRAM model -// Words: #$WORDS$# -// Word size: #$WORD_SIZE$# -#WRITE_SIZE_CMT - -module #$MODULE_NAME$# ( -`ifdef USE_POWER_PINS - #$VDD$#, - #$GND$#, -`endif -#WRITE_MASK -#RW_PORT -#RW_PORT -#W_PORT - ); -#WMASK_PAR - parameter DATA_WIDTH = #$DATA_WIDTH$# ; - parameter ADDR_WIDTH = #$ADD_WIDTH$# ; - parameter RAM_DEPTH = 1 << ADDR_WIDTH; - // FIXME: This delay is arbitrary. - parameter DELAY = 3 ; - parameter VERBOSE = 1 ; //Set to 0 to only display warnings - parameter T_HOLD = 1 ; //Delay to hold dout value after posedge. Value is arbitrary - -`ifdef USE_POWER_PINS - inout #$VDD$#; - inout #$GND$#; -`endif - -#WRITE_MASK -#RW_PORT -#RW_PORT -#W_PORT - - reg [DATA_WIDTH-1:0] mem [0:RAM_DEPTH-1]; - -#WEB_FLOP -#W_MASK_FLOP -#SPARE_WEN_FLOP - addr#$PORT_NUM$#_reg = addr#$PORT_NUM$#; -#RW_CHECKS - if ( !csb0_reg && web0_reg && VERBOSE ) - $display($time," Reading %m addr0=%b dout0=%b",addr0_reg,mem[addr0_reg]); - if ( !csb0_reg && !web0_reg && VERBOSE ) - $display($time," Writing %m addr0=%b din0=%b",addr0_reg,din0_reg); -#>FLOPS -#DIN_FLOP -#DOUT_FLOP -#RW_VERBOSE -#R_VERBOSE -#W_VERBOSE - end - // Memory Write Block Port 0 - // Write Operation : When web0 = 0, csb0 = 0 - always @ (negedge clk0) - begin : MEM_WRITE0 - if ( !csb0_reg && !web0_reg ) begin - mem[addr0_reg][1:0] = din0_reg[1:0]; - end - end - - // Memory Read Block Port 0 - // Read Operation : When web0 = 1, csb0 = 0 - always @ (negedge clk0) - begin : MEM_READ0 - if (!csb0_reg && web0_reg) - dout0 <= #(DELAY) mem[addr0_reg]; - end - -e diff --git a/compiler/tests/sram_1b_16_1rw_scn4m_subm.log b/compiler/tests/sram_1b_16_1rw_scn4m_subm.log new file mode 100644 index 00000000..1d80b5f9 --- /dev/null +++ b/compiler/tests/sram_1b_16_1rw_scn4m_subm.log @@ -0,0 +1,2 @@ +ERROR: file magic.py: line 358: sram LVS mismatch (results in /tmp/openram_bugra_12868_temp/sram.lvs.report) + diff --git a/compiler/tests/sram_1b_16_1rw_sky130.log b/compiler/tests/sram_1b_16_1rw_sky130.log new file mode 100644 index 00000000..f6367750 --- /dev/null +++ b/compiler/tests/sram_1b_16_1rw_sky130.log @@ -0,0 +1,3 @@ +ERROR: file design.py: line 47: Custom cell pin names do not match spice file: +['D', 'Q', 'CLK', 'VDD', 'GND'] vs [] +