From dd8399c1205ce864b087cc4264583948ac2906e1 Mon Sep 17 00:00:00 2001 From: dwf1m12 <d.w.flynn@soton.ac.uk> Date: Mon, 14 Mar 2022 13:14:12 +0000 Subject: [PATCH] Add binary text output file to ROM file generator --- GLIB/mem/verilog/SROM_Ax32.v | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/GLIB/mem/verilog/SROM_Ax32.v b/GLIB/mem/verilog/SROM_Ax32.v index cece5ad..bbbfcd2 100644 --- a/GLIB/mem/verilog/SROM_Ax32.v +++ b/GLIB/mem/verilog/SROM_Ax32.v @@ -10,7 +10,7 @@ // // David Flynn (d.w.flynn@soton.ac.uk) // -// Copyright © 2021, SoC Labs (www.soclabs.org) +// Copyright © 2021-2, SoC Labs (www.soclabs.org) //----------------------------------------------------------------------------- module SROM_Ax32 @@ -25,6 +25,7 @@ module SROM_Ax32 localparam MEMDEPTH = (1 << (ADDRWIDTH)-1)-1; localparam romgenfile = "bootrom.v"; + localparam bingenfile = "bootrom.bintxt"; // Reg declarations reg [7:0] rombyte0 [0:MEMDEPTH]; @@ -39,6 +40,7 @@ module SROM_Ax32 reg [7:0] fileimage [((4<<ADDRWIDTH)-1):0]; function [31:0] NoX32; input [31:0] n; NoX32 = (((^n) === 1'bx) ? 32'h0 : n); endfunction integer fd; // file descriptor for file output + integer fd2; // file descriptor for file 2 output integer i; reg [39:0] today [0:1]; @@ -66,7 +68,8 @@ initial if (romgen != 0) begin fd = $fopen(romgenfile); - if(fd == 0) begin + fd2 = $fopen(bingenfile); + if ((fd == 0) || (fd2 == 0)) begin $display("rom32gen: Error, zero returned in response to $fopen\n"); end else begin @@ -90,12 +93,15 @@ initial $fwrite(fd,"always @(posedge CLK) if (EN) addr_r <= ADDR;\n"); $fwrite(fd,"always @(addr_r)"); $fwrite(fd," case(addr_r[%0d:2]) \n", ADDRWIDTH+1); - for (i = 0; i < 4 << (ADDRWIDTH); i=i+4) + for (i = 0; i < 4 << (ADDRWIDTH); i=i+4) begin $fwrite(fd," %2d'h%2x : RDATA <= 32'h%8x; // 0x%04x\n", ADDRWIDTH, i>>2, NoX32({fileimage[i+3],fileimage[i+2],fileimage[i+1],fileimage[i+0]}), i ); + $fwrite(fd2,"%32b\n",NoX32({fileimage[i+3],fileimage[i+2],fileimage[i+1],fileimage[i+0]})); + end $fwrite(fd," default : RDATA <=32'h0;\n"); $fwrite(fd," endcase\n"); $fwrite(fd,"endmodule\n"); $fclose(fd); + $fclose(fd2); end end end -- GitLab