iverilog/ivtest/ivltests/casesynth6.v

81 lines
2.6 KiB
Coq
Raw Normal View History

module test
(output reg [4:0] q,
input wire [31:0] sel
/* */);
always @* begin
casez (sel)
32'b1zzz_zzzz_zzzz_zzzz__zzzz_zzzz_zzzz_zzzz: q = 5'd0;
32'b01zz_zzzz_zzzz_zzzz__zzzz_zzzz_zzzz_zzzz: q = 5'd1;
32'b001z_zzzz_zzzz_zzzz__zzzz_zzzz_zzzz_zzzz: q = 5'd2;
32'b0001_zzzz_zzzz_zzzz__zzzz_zzzz_zzzz_zzzz: q = 5'd3;
32'b0000_1zzz_zzzz_zzzz__zzzz_zzzz_zzzz_zzzz: q = 5'd4;
32'b0000_01zz_zzzz_zzzz__zzzz_zzzz_zzzz_zzzz: q = 5'd5;
32'b0000_001z_zzzz_zzzz__zzzz_zzzz_zzzz_zzzz: q = 5'd6;
32'b0000_0001_zzzz_zzzz__zzzz_zzzz_zzzz_zzzz: q = 5'd7;
32'b0000_0000_1zzz_zzzz__zzzz_zzzz_zzzz_zzzz: q = 5'd8;
32'b0000_0000_01zz_zzzz__zzzz_zzzz_zzzz_zzzz: q = 5'd9;
32'b0000_0000_001z_zzzz__zzzz_zzzz_zzzz_zzzz: q = 5'd10;
32'b0000_0000_0001_zzzz__zzzz_zzzz_zzzz_zzzz: q = 5'd11;
32'b0000_0000_0000_1zzz__zzzz_zzzz_zzzz_zzzz: q = 5'd12;
32'b0000_0000_0000_01zz__zzzz_zzzz_zzzz_zzzz: q = 5'd13;
32'b0000_0000_0000_001z__zzzz_zzzz_zzzz_zzzz: q = 5'd14;
32'b0000_0000_0000_0001__zzzz_zzzz_zzzz_zzzz: q = 5'd15;
32'b0000_0000_0000_0000__1zzz_zzzz_zzzz_zzzz: q = 5'd16;
32'b0000_0000_0000_0000__01zz_zzzz_zzzz_zzzz: q = 5'd17;
32'b0000_0000_0000_0000__001z_zzzz_zzzz_zzzz: q = 5'd18;
32'b0000_0000_0000_0000__0001_zzzz_zzzz_zzzz: q = 5'd19;
32'b0000_0000_0000_0000__0000_1zzz_zzzz_zzzz: q = 5'd20;
32'b0000_0000_0000_0000__0000_01zz_zzzz_zzzz: q = 5'd21;
32'b0000_0000_0000_0000__0000_001z_zzzz_zzzz: q = 5'd22;
32'b0000_0000_0000_0000__0000_0001_zzzz_zzzz: q = 5'd23;
32'b0000_0000_0000_0000__0000_0000_1zzz_zzzz: q = 5'd24;
32'b0000_0000_0000_0000__0000_0000_01zz_zzzz: q = 5'd25;
32'b0000_0000_0000_0000__0000_0000_001z_zzzz: q = 5'd26;
32'b0000_0000_0000_0000__0000_0000_0001_zzzz: q = 5'd27;
32'b0000_0000_0000_0000__0000_0000_0000_1zzz: q = 5'd28;
32'b0000_0000_0000_0000__0000_0000_0000_01zz: q = 5'd29;
32'b0000_0000_0000_0000__0000_0000_0000_001z: q = 5'd30;
32'b0000_0000_0000_0000__0000_0000_0000_0001: q = 5'd31;
default: q = 5'd0;
endcase
end // always @ *
endmodule // test
module main;
reg [31:0] sel;
wire [4:0] q;
test dut (.q(q), .sel(sel));
integer idx;
integer rept;
reg [31:0] mask, setb;
initial begin
sel = 0;
#1 if (q !== 5'd0) begin
$display("FAILED -- sel=%b, q=%b", sel, q);
$finish;
end
for (idx = 0 ; idx < 32 ; idx = idx+1) begin
mask = 32'h7fff_ffff >> idx;
setb = mask + 32'd1;
for (rept = 0 ; rept < 4 ; rept = rept+1) begin
sel = setb | (mask & $random);
#1 if (q !== idx[4:0]) begin
$display("FAILED -- sel=%b, q=%b, idx=%0d", sel, q, idx);
$finish;
end
end
end
$display("PASSED");
end
endmodule