iverilog/ivtest/ivltests/iuint1.v

77 lines
1.5 KiB
Verilog

module main;
int unsigned foo, bar = 10;
int signed foos, bars = 10;
int unsigned wire_sum;
int wire_sums;
assign wire_sum = foo + bar;
assign wire_sums = foos + bars;
function int unsigned sum(input int unsigned a, b);
sum = a + b;
endfunction
function int unsigned sums(input int signed a, b);
sums = a + b;
endfunction
initial begin
foo = 9;
$display("%0d * %0d = %0d", foo, bar, foo * bar);
$display("sum(%0d,%0d) = %0d", foo, bar, sum(foo,bar));
if (foo !== 9 || bar !== 10) begin
$display("FAILED");
$finish;
end
if (foo*bar !== 90) begin
$display("FAILED");
$finish;
end
if (sum(foo,bar) !== 19) begin
$display("FAILED");
$finish;
end
foos = -7;
$display("%0d * %0d = %0d", foos, bars, foos * bars);
$display("sums(%0d,%0d) = %0d", foos, bars, sums(foos,bars));
if (foos !== -7 || bars !== 10) begin
$display("FAILED");
$finish;
end
if (foos*bars !== -70) begin
$display("FAILED");
$finish;
end
if (sums(foos,bars) !== 3) begin
$display("FAILED");
$finish;
end
#0; // allow CAs to propagate
$display("wire_sum = %0d", wire_sum);
$display("wire_sums = %0d", wire_sums);
if (wire_sum !== 19) begin
$display("FAILED");
$finish;
end
if (wire_sums !== 3) begin
$display("FAILED");
$finish;
end
$display("PASSED");
end
endmodule // main