124 lines
3.7 KiB
Coq
124 lines
3.7 KiB
Coq
|
|
module top;
|
||
|
|
parameter le0 = 1'b0 <-> 1'b0; // 1'b1
|
||
|
|
parameter le1 = 1'b0 <-> 1'b1; // 1'b0
|
||
|
|
parameter le2 = 1'b0 <-> 1'bz; // 1'bx
|
||
|
|
parameter le3 = 1'b0 <-> 1'bx; // 1'bx
|
||
|
|
parameter le4 = 1'b1 <-> 1'b0; // 1'b0
|
||
|
|
parameter le5 = 1'b1 <-> 1'b1; // 1'b1
|
||
|
|
parameter le6 = 1'b1 <-> 1'bz; // 1'bx
|
||
|
|
parameter le7 = 1'b1 <-> 1'bx; // 1'bx
|
||
|
|
parameter le8 = 1'bz <-> 1'b0; // 1'bx
|
||
|
|
parameter le9 = 1'bz <-> 1'b1; // 1'bx
|
||
|
|
parameter lea = 1'bz <-> 1'bz; // 1'bx
|
||
|
|
parameter leb = 1'bz <-> 1'bx; // 1'bx
|
||
|
|
parameter lec = 1'bx <-> 1'b0; // 1'bx
|
||
|
|
parameter led = 1'bx <-> 1'b1; // 1'bx
|
||
|
|
parameter lee = 1'bx <-> 1'bz; // 1'bx
|
||
|
|
parameter lef = 1'bx <-> 1'bx; // 1'bx
|
||
|
|
|
||
|
|
parameter [1:0] lew = 4'b0110 <-> 4'b1001; // 2'b01
|
||
|
|
parameter [1:0] lews = $signed(4'b0110 <-> 4'b1001); // 2'b11
|
||
|
|
parameter ler0 = 0.0 <-> 1'b0; // 1'b1
|
||
|
|
parameter ler1 = 1'b0 <-> 2.0; // 1'b0
|
||
|
|
parameter ler2 = 2.0 <-> 1'bx; // 1'bx
|
||
|
|
parameter ler3 = -5.0 <-> 2.0; // 1'b1
|
||
|
|
|
||
|
|
reg pass;
|
||
|
|
|
||
|
|
initial begin
|
||
|
|
pass = 1'b1;
|
||
|
|
|
||
|
|
if (le0 !== 1'b1) begin
|
||
|
|
$display("FAILED: 1'b0 <-> 1'b0 returned %b not 1'b1", le0);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
if (le1 !== 1'b0) begin
|
||
|
|
$display("FAILED: 1'b0 <-> 1'b1 returned %b not 1'b0", le1);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
if (le2 !== 1'bx) begin
|
||
|
|
$display("FAILED: 1'b0 <-> 1'bz returned %b not 1'bx", le2);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
if (le3 !== 1'bx) begin
|
||
|
|
$display("FAILED: 1'b0 <-> 1'bx returned %b not 1'bx", le3);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
if (le4 !== 1'b0) begin
|
||
|
|
$display("FAILED: 1'b1 <-> 1'b0 returned %b not 1'b0", le4);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
if (le5 !== 1'b1) begin
|
||
|
|
$display("FAILED: 1'b1 <-> 1'b1 returned %b not 1'b1", le5);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
if (le6 !== 1'bx) begin
|
||
|
|
$display("FAILED: 1'b1 <-> 1'bz returned %b not 1'bx", le6);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
if (le7 !== 1'bx) begin
|
||
|
|
$display("FAILED: 1'b1 <-> 1'bx returned %b not 1'bx", le7);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
if (le8 !== 1'bx) begin
|
||
|
|
$display("FAILED: 1'bz <-> 1'b0 returned %b not 1'bx", le8);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
if (le9 !== 1'bx) begin
|
||
|
|
$display("FAILED: 1'bz <-> 1'b1 returned %b not 1'bx", le9);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
if (lea !== 1'bx) begin
|
||
|
|
$display("FAILED: 1'bz <-> 1'bz returned %b not 1'bx", lea);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
if (leb !== 1'bx) begin
|
||
|
|
$display("FAILED: 1'bz <-> 1'bx returned %b not 1'bx", leb);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
if (lec !== 1'bx) begin
|
||
|
|
$display("FAILED: 1'bx <-> 1'b0 returned %b not 1'bx", lec);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
if (led !== 1'bx) begin
|
||
|
|
$display("FAILED: 1'bx <-> 1'b0 returned %b not 1'bx", led);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
if (lee !== 1'bx) begin
|
||
|
|
$display("FAILED: 1'bx <-> 1'bz returned %b not 1'bx", lee);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
if (lef !== 1'bx) begin
|
||
|
|
$display("FAILED: 1'bx <-> 1'bx returned %b not 1'bx", lef);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
|
||
|
|
if (ler0 !== 1'b1) begin
|
||
|
|
$display("FAILED: 0.0 <-> 1'b0 returned %b not 1'b1", ler0);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
if (ler1 !== 1'b0) begin
|
||
|
|
$display("FAILED: 1'b0 <-> 2.0 returned %b not 1'b1", ler1);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
if (ler2 !== 1'bx) begin
|
||
|
|
$display("FAILED: 2.0 <-> 1'bx returned %b not 1'b1", ler2);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
if (ler3 !== 1'b1) begin
|
||
|
|
$display("FAILED: -5.0 <-> 2.0 returned %b not 1'b1", ler3);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
if (lew !== 2'b01) begin
|
||
|
|
$display("FAILED: 4'b0110 <-> 4'b1001 returned %b not 2'b01", lew);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
if (lews !== 2'b11) begin
|
||
|
|
$display("FAILED: 4'b0110 <-> 4'b1001 returned %b not 2'b11", lews);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
|
||
|
|
if (pass) $display("PASSED");
|
||
|
|
end
|
||
|
|
endmodule
|