Tests: Redo check macro.
This commit is contained in:
parent
e1eb41fe77
commit
3f0dcd8c0e
|
|
@ -10,7 +10,7 @@ module t (/*AUTOARG*/
|
|||
|
||||
input clk;
|
||||
|
||||
`define check(gotv,expv) do if ((gotv) != (expv)) begin $write("%%Error: Line%0d: cnt=0x%0x got=0x%0x exp=0x%0x\n", `__LINE__, cnt, (gotv), (expv)); $stop; end while(0);
|
||||
`define checkh(gotv,expv) do if ((gotv) !== (expv)) begin $write("%%Error: %s:%0d: got='h%x exp='h%x\n", `__FILE__,`__LINE__, (gotv), (expv)); $stop; end while(0);
|
||||
|
||||
// parameters for array sizes
|
||||
localparam WA = 4;
|
||||
|
|
@ -31,17 +31,17 @@ module t (/*AUTOARG*/
|
|||
integer wdt = 0; // width
|
||||
|
||||
initial begin
|
||||
`check($dimensions (array_unpk), 3);
|
||||
`checkh($dimensions (array_unpk), 3);
|
||||
`ifndef VCS
|
||||
`check($unpacked_dimensions (array_unpk), 2); // IEEE 2009
|
||||
`checkh($unpacked_dimensions (array_unpk), 2); // IEEE 2009
|
||||
`endif
|
||||
`check($bits (array_unpk), 2*2*2);
|
||||
`check($low (array_unpk), 2);
|
||||
`check($high (array_unpk), 3);
|
||||
`check($left (array_unpk), 3);
|
||||
`check($right(array_unpk), 2);
|
||||
`check($increment(array_unpk), 1);
|
||||
`check($size (array_unpk), 2);
|
||||
`checkh($bits (array_unpk), 2*2*2);
|
||||
`checkh($low (array_unpk), 2);
|
||||
`checkh($high (array_unpk), 3);
|
||||
`checkh($left (array_unpk), 3);
|
||||
`checkh($right(array_unpk), 2);
|
||||
`checkh($increment(array_unpk), 1);
|
||||
`checkh($size (array_unpk), 2);
|
||||
end
|
||||
|
||||
// event counter
|
||||
|
|
@ -85,40 +85,40 @@ module t (/*AUTOARG*/
|
|||
// big endian
|
||||
if (slc==0) begin
|
||||
// full array
|
||||
`check($dimensions (array_bg), 3);
|
||||
`check($bits (array_bg), WA*WB*WC);
|
||||
`checkh($dimensions (array_bg), 3);
|
||||
`checkh($bits (array_bg), WA*WB*WC);
|
||||
if ((dim>=1)&&(dim<=3)) begin
|
||||
`check($left (array_bg, dim), wdt+1);
|
||||
`check($right (array_bg, dim), 2 );
|
||||
`check($low (array_bg, dim), 2 );
|
||||
`check($high (array_bg, dim), wdt+1);
|
||||
`check($increment (array_bg, dim), 1 );
|
||||
`check($size (array_bg, dim), wdt );
|
||||
`checkh($left (array_bg, dim), wdt+1);
|
||||
`checkh($right (array_bg, dim), 2 );
|
||||
`checkh($low (array_bg, dim), 2 );
|
||||
`checkh($high (array_bg, dim), wdt+1);
|
||||
`checkh($increment (array_bg, dim), 1 );
|
||||
`checkh($size (array_bg, dim), wdt );
|
||||
end
|
||||
end else if (slc==1) begin
|
||||
// single array element
|
||||
`check($dimensions (array_bg[2]), 2);
|
||||
`check($bits (array_bg[2]), WB*WC);
|
||||
`checkh($dimensions (array_bg[2]), 2);
|
||||
`checkh($bits (array_bg[2]), WB*WC);
|
||||
if ((dim>=2)&&(dim<=3)) begin
|
||||
`check($left (array_bg[2], dim-1), wdt+1);
|
||||
`check($right (array_bg[2], dim-1), 2 );
|
||||
`check($low (array_bg[2], dim-1), 2 );
|
||||
`check($high (array_bg[2], dim-1), wdt+1);
|
||||
`check($increment (array_bg[2], dim-1), 1 );
|
||||
`check($size (array_bg[2], dim-1), wdt );
|
||||
`checkh($left (array_bg[2], dim-1), wdt+1);
|
||||
`checkh($right (array_bg[2], dim-1), 2 );
|
||||
`checkh($low (array_bg[2], dim-1), 2 );
|
||||
`checkh($high (array_bg[2], dim-1), wdt+1);
|
||||
`checkh($increment (array_bg[2], dim-1), 1 );
|
||||
`checkh($size (array_bg[2], dim-1), wdt );
|
||||
end
|
||||
`ifndef VERILATOR // Unsupported slices don't maintain size correctly
|
||||
end else if (slc==2) begin
|
||||
// half array
|
||||
`check($dimensions (array_bg[WA/2+1:2]), 3);
|
||||
`check($bits (array_bg[WA/2+1:2]), WA/2*WB*WC);
|
||||
`checkh($dimensions (array_bg[WA/2+1:2]), 3);
|
||||
`checkh($bits (array_bg[WA/2+1:2]), WA/2*WB*WC);
|
||||
if ((dim>=1)&&(dim<=3)) begin
|
||||
`check($left (array_bg[WA/2+1:2], dim), wdt+1);
|
||||
`check($right (array_bg[WA/2+1:2], dim), 2 );
|
||||
`check($low (array_bg[WA/2+1:2], dim), 2 );
|
||||
`check($high (array_bg[WA/2+1:2], dim), wdt+1);
|
||||
`check($increment (array_bg[WA/2+1:2], dim), 1 );
|
||||
`check($size (array_bg[WA/2+1:2], dim), wdt);
|
||||
`checkh($left (array_bg[WA/2+1:2], dim), wdt+1);
|
||||
`checkh($right (array_bg[WA/2+1:2], dim), 2 );
|
||||
`checkh($low (array_bg[WA/2+1:2], dim), 2 );
|
||||
`checkh($high (array_bg[WA/2+1:2], dim), wdt+1);
|
||||
`checkh($increment (array_bg[WA/2+1:2], dim), 1 );
|
||||
`checkh($size (array_bg[WA/2+1:2], dim), wdt);
|
||||
end
|
||||
`endif
|
||||
end
|
||||
|
|
@ -126,40 +126,40 @@ module t (/*AUTOARG*/
|
|||
// little endian
|
||||
if (slc==0) begin
|
||||
// full array
|
||||
`check($dimensions (array_lt), 3);
|
||||
`check($bits (array_lt), WA*WB*WC);
|
||||
`checkh($dimensions (array_lt), 3);
|
||||
`checkh($bits (array_lt), WA*WB*WC);
|
||||
if ((dim>=1)&&(dim<=3)) begin
|
||||
`check($left (array_lt, dim), 2 );
|
||||
`check($right (array_lt, dim), wdt+1);
|
||||
`check($low (array_lt, dim), 2 );
|
||||
`check($high (array_lt, dim), wdt+1);
|
||||
`check($increment (array_lt, dim), -1 );
|
||||
`check($size (array_lt, dim), wdt );
|
||||
`checkh($left (array_lt, dim), 2 );
|
||||
`checkh($right (array_lt, dim), wdt+1);
|
||||
`checkh($low (array_lt, dim), 2 );
|
||||
`checkh($high (array_lt, dim), wdt+1);
|
||||
`checkh($increment (array_lt, dim), -1 );
|
||||
`checkh($size (array_lt, dim), wdt );
|
||||
end
|
||||
end else if (slc==1) begin
|
||||
// single array element
|
||||
`check($dimensions (array_lt[2]), 2);
|
||||
`check($bits (array_lt[2]), WB*WC);
|
||||
`checkh($dimensions (array_lt[2]), 2);
|
||||
`checkh($bits (array_lt[2]), WB*WC);
|
||||
if ((dim>=2)&&(dim<=3)) begin
|
||||
`check($left (array_lt[2], dim-1), 2 );
|
||||
`check($right (array_lt[2], dim-1), wdt+1);
|
||||
`check($low (array_lt[2], dim-1), 2 );
|
||||
`check($high (array_lt[2], dim-1), wdt+1);
|
||||
`check($increment (array_lt[2], dim-1), -1 );
|
||||
`check($size (array_lt[2], dim-1), wdt );
|
||||
`checkh($left (array_lt[2], dim-1), 2 );
|
||||
`checkh($right (array_lt[2], dim-1), wdt+1);
|
||||
`checkh($low (array_lt[2], dim-1), 2 );
|
||||
`checkh($high (array_lt[2], dim-1), wdt+1);
|
||||
`checkh($increment (array_lt[2], dim-1), -1 );
|
||||
`checkh($size (array_lt[2], dim-1), wdt );
|
||||
end
|
||||
`ifndef VERILATOR // Unsupported slices don't maintain size correctly
|
||||
end else if (slc==2) begin
|
||||
// half array
|
||||
`check($dimensions (array_lt[2:WA/2+1]), 3);
|
||||
`check($bits (array_lt[2:WA/2+1]), WA/2*WB*WC);
|
||||
`checkh($dimensions (array_lt[2:WA/2+1]), 3);
|
||||
`checkh($bits (array_lt[2:WA/2+1]), WA/2*WB*WC);
|
||||
if ((dim>=1)&&(dim<=3)) begin
|
||||
`check($left (array_lt[2:WA/2+1], dim), 2 );
|
||||
`check($right (array_lt[2:WA/2+1], dim), wdt+1);
|
||||
`check($low (array_lt[2:WA/2+1], dim), 2 );
|
||||
`check($high (array_lt[2:WA/2+1], dim), wdt+1);
|
||||
`check($increment (array_lt[2:WA/2+1], dim), -1 );
|
||||
`check($size (array_lt[2:WA/2+1], dim), wdt );
|
||||
`checkh($left (array_lt[2:WA/2+1], dim), 2 );
|
||||
`checkh($right (array_lt[2:WA/2+1], dim), wdt+1);
|
||||
`checkh($low (array_lt[2:WA/2+1], dim), 2 );
|
||||
`checkh($high (array_lt[2:WA/2+1], dim), wdt+1);
|
||||
`checkh($increment (array_lt[2:WA/2+1], dim), -1 );
|
||||
`checkh($size (array_lt[2:WA/2+1], dim), wdt );
|
||||
end
|
||||
`endif
|
||||
end
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
// verilator lint_off WIDTH
|
||||
|
||||
`define check(gotv,expv) do if ((gotv) != (expv)) begin $write("%%Error: Line%0d: got=0x%0x exp=0x%0x\n", `__LINE__, (gotv), (expv)); $stop; end while(0);
|
||||
`define checkh(gotv,expv) do if ((gotv) !== (expv)) begin $write("%%Error: %s:%0d: got='h%x exp='h%x\n", `__FILE__,`__LINE__, (gotv), (expv)); $stop; end while(0);
|
||||
|
||||
module t (/*AUTOARG*/
|
||||
// Inputs
|
||||
|
|
@ -79,12 +79,12 @@ module mycheck (/*AUTOARG*/
|
|||
parameter int param3 = 8'h33;
|
||||
|
||||
always @ (posedge clk) begin
|
||||
`check(param1,8'h31);
|
||||
`check(param2,8'h22);
|
||||
`check(param3,8'h23);
|
||||
`check(p1,8'h04);
|
||||
`check(p2,8'h05);
|
||||
`check(p3,8'h06);
|
||||
`checkh(param1,8'h31);
|
||||
`checkh(param2,8'h22);
|
||||
`checkh(param3,8'h23);
|
||||
`checkh(p1,8'h04);
|
||||
`checkh(p2,8'h05);
|
||||
`checkh(p3,8'h06);
|
||||
$write("*-* All Finished *-*\n");
|
||||
$finish;
|
||||
end
|
||||
|
|
|
|||
|
|
@ -14,19 +14,19 @@ module t (/*AUTOARG*/);
|
|||
c_t [17:16] d;
|
||||
} e_t;
|
||||
|
||||
`define check(gotv,expv) do if ((gotv) != (expv)) begin $write("%%Error: Line%0d: got=0x%x exp=0x%x\n", `__LINE__, (gotv), (expv)); $stop; end while(0);
|
||||
`define checkb(gotv,expv) do if ((gotv) != (expv)) begin $write("%%Error: Line%0d: got=0b%b exp=0b%b\n", `__LINE__, (gotv), (expv)); $stop; end while(0);
|
||||
`define checkb(gotv,expv) do if ((gotv) !== (expv)) begin $write("%%Error: %s:%0d: got='b%x exp='b%x\n", `__FILE__,`__LINE__, (gotv), (expv)); $stop; end while(0);
|
||||
`define checkh(gotv,expv) do if ((gotv) !== (expv)) begin $write("%%Error: %s:%0d: got='h%x exp='h%x\n", `__FILE__,`__LINE__, (gotv), (expv)); $stop; end while(0);
|
||||
|
||||
initial begin
|
||||
e_t e;
|
||||
`check($bits(ab_t),6);
|
||||
`check($bits(c_t),12);
|
||||
`check($bits(e_t),24);
|
||||
`check($bits(e), 24);
|
||||
`check($bits(e.d[17]),12);
|
||||
`check($bits(e.d[16][6]),6);
|
||||
`check($bits(e.d[16][6].b[5]),2);
|
||||
`check($bits(e.d[16][6].b[5][2]), 1);
|
||||
`checkh($bits(ab_t),6);
|
||||
`checkh($bits(c_t),12);
|
||||
`checkh($bits(e_t),24);
|
||||
`checkh($bits(e), 24);
|
||||
`checkh($bits(e.d[17]),12);
|
||||
`checkh($bits(e.d[16][6]),6);
|
||||
`checkh($bits(e.d[16][6].b[5]),2);
|
||||
`checkh($bits(e.d[16][6].b[5][2]), 1);
|
||||
//
|
||||
e = 24'b101101010111010110101010;
|
||||
`checkb(e, 24'b101101010111010110101010);
|
||||
|
|
|
|||
Loading…
Reference in New Issue