iverilog/ivtest/ivltests/pr2305307b.v

69 lines
1.7 KiB
Verilog

`begin_keywords "1364-2005"
module top;
reg passed, in, expect;
integer lp;
wire rand = ∈
wire ror = |in;
wire rxor = ^in;
wire rnand = ~∈
wire rnor = ~|in;
wire rxnor = ~^in;
initial begin
passed = 1'b1;
for (lp=0; lp < 3 ; lp = lp + 1) begin
case (lp)
0: {in,expect} = 2'b00;
1: {in,expect} = 2'b11;
2: {in,expect} = 2'bzx;
3: {in,expect} = 2'bxx;
endcase
#1;
// Check the normal reductions.
if (rand !== expect) begin
$display("FAILED CA reduction & with input %b, expected %b, got %b",
in, expect, rand);
passed = 1'b0;
end
if (ror !== expect) begin
$display("FAILED CA reduction | with input %b, expected %b, got %b",
in, expect, ror);
passed = 1'b0;
end
if (rxor !== expect) begin
$display("FAILED CA reduction ^ with input %b, expected %b, got %b",
in, expect, rxor);
passed = 1'b0;
end
// Check the inverted reductions.
if (rnand !== ~expect) begin
$display("FAILED CA reduction ~& with input %b, expected %b, got %b",
in, ~expect, rnand);
passed = 1'b0;
end
if (rnor !== ~expect) begin
$display("FAILED CA reduction ~| with input %b, expected %b, got %b",
in, ~expect, rnor);
passed = 1'b0;
end
if (rxnor !== ~expect) begin
$display("FAILED CA reduction ~^ with input %b, expected %b, got %b",
in, ~expect, rxnor);
passed = 1'b0;
end
end
if (passed) $display("PASSED");
end
endmodule
`end_keywords