96 lines
2.4 KiB
Coq
96 lines
2.4 KiB
Coq
|
|
`ifdef __ICARUS__
|
||
|
|
`define SUPPORT_CONST_OUT_OF_RANGE_IN_IVTEST
|
||
|
|
`endif
|
||
|
|
|
||
|
|
module t();
|
||
|
|
reg passed;
|
||
|
|
parameter ch = 14;
|
||
|
|
parameter csek2 = 1;
|
||
|
|
parameter offset = 10/0;
|
||
|
|
localparam csek = 1 << csek2;
|
||
|
|
|
||
|
|
wire [ch + csek2 - 1:0] cim_k;
|
||
|
|
wire [csek - 1:0] up1, up2, up3, up4, up5, dwn1, dwn2, dwn3;
|
||
|
|
|
||
|
|
`ifdef SUPPORT_CONST_OUT_OF_RANGE_IN_IVTEST
|
||
|
|
// This checks the always above code.
|
||
|
|
assign up1 = cim_k[(csek2 + ch)+:csek2];
|
||
|
|
// This checks the always above code.
|
||
|
|
assign up2 = cim_k[(csek2 + ch + 2)+:csek2];
|
||
|
|
// This checks the always below code.
|
||
|
|
assign up3 = cim_k[(csek2 + ch - 17)+:csek2];
|
||
|
|
// This checks that -4 goes into three bits not two.
|
||
|
|
assign up4 = cim_k[(csek2 + ch - 18)+:csek2];
|
||
|
|
// This checks that an undef base gives 'bx out.
|
||
|
|
assign up5 = cim_k[(csek2 + ch - offset)+:csek2];
|
||
|
|
|
||
|
|
// This checks the always above code.
|
||
|
|
assign dwn1 = cim_k[(csek2 + ch + 2)-:csek2];
|
||
|
|
// This checks the always below code.
|
||
|
|
assign dwn2 = cim_k[(csek2 + ch - 17)-:csek2];
|
||
|
|
// This checks that an undef base gives 'bx out.
|
||
|
|
assign dwn3 = cim_k[(csek2 + ch - offset)-:csek2];
|
||
|
|
`else
|
||
|
|
assign up1 = 2'b0x;
|
||
|
|
assign up2 = 2'b0x;
|
||
|
|
assign up3 = 2'b0x;
|
||
|
|
assign up4 = 2'b0x;
|
||
|
|
assign up5 = 2'b0x;
|
||
|
|
assign dwn1 = 2'b0x;
|
||
|
|
assign dwn2 = 2'b0x;
|
||
|
|
assign dwn3 = 2'b0x;
|
||
|
|
`endif
|
||
|
|
|
||
|
|
initial begin
|
||
|
|
#1;
|
||
|
|
passed = 1'b1;
|
||
|
|
|
||
|
|
if (cim_k !== 15'bz) begin
|
||
|
|
$display("FAILED: cim_k should be 15'bz, got %b", cim_k);
|
||
|
|
passed = 1'b0;
|
||
|
|
end
|
||
|
|
|
||
|
|
if (up1 !== 2'b0x) begin
|
||
|
|
$display("FAILED: up1 should be 2'b0x, got %b", up1);
|
||
|
|
passed = 1'b0;
|
||
|
|
end
|
||
|
|
|
||
|
|
if (up2 !== 2'b0x) begin
|
||
|
|
$display("FAILED: up2 should be 2'b0x, got %b", up2);
|
||
|
|
passed = 1'b0;
|
||
|
|
end
|
||
|
|
|
||
|
|
if (up3 !== 2'b0x) begin
|
||
|
|
$display("FAILED: up3 should be 2'b0x, got %b", up3);
|
||
|
|
passed = 1'b0;
|
||
|
|
end
|
||
|
|
|
||
|
|
if (up4 !== 2'b0x) begin
|
||
|
|
$display("FAILED: up4 should be 2'b0x, got %b", up4);
|
||
|
|
passed = 1'b0;
|
||
|
|
end
|
||
|
|
|
||
|
|
if (up5 !== 2'b0x) begin
|
||
|
|
$display("FAILED: up5 should be 2'b0x, got %b", up5);
|
||
|
|
passed = 1'b0;
|
||
|
|
end
|
||
|
|
|
||
|
|
if (dwn1 !== 2'b0x) begin
|
||
|
|
$display("FAILED: dwn1 should be 2'b0x, got %b", dwn1);
|
||
|
|
passed = 1'b0;
|
||
|
|
end
|
||
|
|
|
||
|
|
if (dwn2 !== 2'b0x) begin
|
||
|
|
$display("FAILED: dwn2 should be 2'b0x, got %b", dwn2);
|
||
|
|
passed = 1'b0;
|
||
|
|
end
|
||
|
|
|
||
|
|
if (dwn3 !== 2'b0x) begin
|
||
|
|
$display("FAILED: dwn3 should be 2'b0x, got %b", dwn3);
|
||
|
|
passed = 1'b0;
|
||
|
|
end
|
||
|
|
|
||
|
|
if (passed) $display("PASSED");
|
||
|
|
end
|
||
|
|
endmodule
|