Maintain little endian indication for multidimensional arrays

This commit is contained in:
Wilson Snyder 2013-01-17 23:21:07 -05:00
parent 91e2d1d2a0
commit 1856cad816
14 changed files with 22 additions and 17 deletions

View File

@ -370,16 +370,9 @@ private:
int msb = nodep->msbConst(); int msb = nodep->msbConst();
int lsb = nodep->lsbConst(); int lsb = nodep->lsbConst();
if (msb<lsb) { if (msb<lsb) {
// If it's an array, ok to have either ordering, we'll just correct // Little endian bits are legal, just remember to swap
// So, see if we're sitting under a variable's arrayp. // Warning is in V3Width to avoid false warnings when in "off" generate if's
AstNode* huntbackp = nodep; nodep->littleEndian(!nodep->littleEndian());
while (huntbackp->backp()->castRange()) huntbackp=huntbackp->backp();
if (huntbackp->backp()->castNodeArrayDType()) {
} else {
// Little endian bits are legal, just remember to swap
// Warning is in V3Width to avoid false warnings when in "off" generate if's
nodep->littleEndian(!nodep->littleEndian());
}
// Internally we'll always have msb() be the greater number // Internally we'll always have msb() be the greater number
// We only need to correct when doing [] AstSel extraction, // We only need to correct when doing [] AstSel extraction,
// and when tracing the vector. // and when tracing the vector.

View File

@ -17,7 +17,7 @@ reg covfok;
reg [15:0] xwieqw; reg [15:0] xwieqw;
reg [2:0] ofnjjt; reg [2:0] ofnjjt;
reg [37:0] hdsejo[0:1]; reg [37:0] hdsejo[1:0];
reg wxxzgd, tceppr, ratebp, fjizkr, iwwrnq; reg wxxzgd, tceppr, ratebp, fjizkr, iwwrnq;
reg vrqrih, ryyjxy; reg vrqrih, ryyjxy;

View File

@ -65,7 +65,7 @@ module reg_1r1w
output [WIDTH-1:0] data_out; output [WIDTH-1:0] data_out;
reg [WIDTH-1:0] array [0:DEPTH-1]; reg [WIDTH-1:0] array [DEPTH-1:0];
reg [ADRWID-1:0] ra_r, wa_r; reg [ADRWID-1:0] ra_r, wa_r;
reg [WIDTH-1:0] data_in_r; reg [WIDTH-1:0] data_in_r;
reg wr_r; reg wr_r;

View File

@ -88,7 +88,9 @@ module fifo (/*AUTOARG*/
reg [65:0] outData; reg [65:0] outData;
// verilator lint_off VARHIDDEN // verilator lint_off VARHIDDEN
// verilator lint_off LITENDIAN
reg [65:0] fifo[0:fifoDepth-1]; reg [65:0] fifo[0:fifoDepth-1];
// verilator lint_on LITENDIAN
// verilator lint_on VARHIDDEN // verilator lint_on VARHIDDEN
//reg [65:0] temp; //reg [65:0] temp;

View File

@ -11,11 +11,13 @@ module t (/*AUTOARG*/
input clk; input clk;
integer _mode; initial _mode = 0; integer _mode; initial _mode = 0;
// verilator lint_off LITENDIAN
reg [7:0] mem_narrow [0:31]; //surefire lint_off_line RD_WRT WRTWRT NBAJAM reg [7:0] mem_narrow [0:31]; //surefire lint_off_line RD_WRT WRTWRT NBAJAM
reg [77:0] mem_wide [1024:0]; //surefire lint_off_line RD_WRT WRTWRT NBAJAM reg [77:0] mem_wide [1024:0]; //surefire lint_off_line RD_WRT WRTWRT NBAJAM
reg [7:0] mem_dly_narrow [0:1]; //surefire lint_off_line RD_WRT WRTWRT NBAJAM reg [7:0] mem_dly_narrow [0:1]; //surefire lint_off_line RD_WRT WRTWRT NBAJAM
reg [77:0] mem_dly_wide [1:0]; //surefire lint_off_line RD_WRT WRTWRT NBAJAM reg [77:0] mem_dly_wide [1:0]; //surefire lint_off_line RD_WRT WRTWRT NBAJAM
reg [34:0] vec_wide; reg [34:0] vec_wide;
// verilator lint_on LITENDIAN
reg [31:0] wrd0 [15:0]; reg [31:0] wrd0 [15:0];
wire [3:0] sel = 4'h3; wire [3:0] sel = 4'h3;

View File

@ -10,6 +10,7 @@ module t (/*AUTOARG*/
input clk; input clk;
// verilator lint_off LITENDIAN
// verilator lint_off BLKANDNBLK // verilator lint_off BLKANDNBLK
// 3 3 4 // 3 3 4
reg [71:0] memw [2:0][1:3][5:2]; reg [71:0] memw [2:0][1:3][5:2];
@ -27,6 +28,7 @@ module t (/*AUTOARG*/
integer imem[2:0][1:3]; integer imem[2:0][1:3];
reg [2:0] cstyle[2]; reg [2:0] cstyle[2];
// verilator lint_on LITENDIAN
initial begin initial begin
for (i0=0; i0<3; i0=i0+1) begin for (i0=0; i0<3; i0=i0+1) begin

View File

@ -10,7 +10,9 @@ module t (/*AUTOARG*/
input clk; input clk;
// verilator lint_off LITENDIAN
wire [7:0] array [2:0][1:3]; wire [7:0] array [2:0][1:3];
// verilator lint_on LITENDIAN
integer cyc; initial cyc=0; integer cyc; initial cyc=0;
integer i0,i1,i2; integer i0,i1,i2;

View File

@ -14,7 +14,7 @@ module t_mem_slot (Clk, SlotIdx, BitToChange, BitVal, SlotToReturn, OutputVal);
input [1:0] SlotToReturn; input [1:0] SlotToReturn;
output [1:0] OutputVal; output [1:0] OutputVal;
reg [1:0] Array[0:2]; reg [1:0] Array[2:0];
always @(posedge Clk) always @(posedge Clk)
begin begin

View File

@ -20,7 +20,9 @@ module t (/*AUTOARG*/
parameter DWORDS_LOG2 = 7; parameter DWORDS_LOG2 = 7;
parameter DWORDS = (1<<DWORDS_LOG2); parameter DWORDS = (1<<DWORDS_LOG2);
parameter DBYTES=DBITS/8; parameter DBYTES=DBITS/8;
// verilator lint_off LITENDIAN
reg [DBITS-1:0] mem [0:DWORDS-1]; reg [DBITS-1:0] mem [0:DWORDS-1];
// verilator lint_on LITENDIAN
integer i; integer i;

View File

@ -5,9 +5,11 @@
module t; module t;
// verilator lint_off LITENDIAN
reg [5:0] binary_nostart [2:15]; reg [5:0] binary_nostart [2:15];
reg [5:0] binary_start [0:15]; reg [5:0] binary_start [0:15];
reg [175:0] hex [0:15]; reg [175:0] hex [0:15];
// verilator lint_on LITENDIAN
integer i; integer i;

View File

@ -4,7 +4,7 @@
// without warranty, 2003 by Wilson Snyder. // without warranty, 2003 by Wilson Snyder.
module t; module t;
reg [175:0] hex [0:15]; reg [175:0] hex [15:0];
initial begin initial begin
$readmemh("t/t_sys_readmem_bad_addr.mem", hex); $readmemh("t/t_sys_readmem_bad_addr.mem", hex);

View File

@ -5,7 +5,7 @@
module t; module t;
reg [175:0] hex [0:15]; reg [175:0] hex [15:0];
initial begin initial begin
$readmemb("t/t_sys_readmem_bad_digit.mem", hex); $readmemb("t/t_sys_readmem_bad_digit.mem", hex);

View File

@ -5,7 +5,7 @@
module t; module t;
reg [175:0] hex [0:15]; reg [175:0] hex [15:0];
integer i; integer i;

View File

@ -5,7 +5,7 @@
module t; module t;
reg [175:0] hex [0:15]; reg [175:0] hex [15:0];
initial begin initial begin
$readmemh("t/t_sys_readmem_bad_NOTFOUND.mem", hex); $readmemh("t/t_sys_readmem_bad_NOTFOUND.mem", hex);