1
Files
quartus-7-segment-counter/Counter_TestBench.sv
2023-03-27 23:29:16 +02:00

77 lines
1.6 KiB
Systemverilog

`default_nettype none
module Counter_TestBench;
var logic clock, reset, decrement;
tri[13:0] value;
Counter cnt(
.clock(clock),
.reset(reset),
.decrement(decrement),
.binout(value)
);
// synthesis translate_off
integer ii;
initial begin
$timeformat(-9, 2, " ns", 20);
$display("%0t Initial Reset", $time);
#20 reset = 1;
#20 reset = 0;
assert (value == 0);
$display("%0t Increment 1024x", $time);
decrement = 0;
for (ii = 0; ii < 1024; ii = ii + 1) begin
#20 clock = 1;
#20 clock = 0;
assert (value == ii + 1);
end
$display("%0t Decrement 1024x", $time);
decrement = 1;
for (ii = 1024; ii > 0; ii = ii - 1) begin
#20 clock = 1;
#20 clock = 0;
assert (value == ii - 1);
end
$display("%0t Increment 1024x", $time);
decrement = 0;
for (ii = 0; ii < 1024; ii = ii + 1) begin
#20 clock = 1;
#20 clock = 0;
assert (value == ii + 1);
end
$display("%0t Reset", $time);
#20 reset = 1;
#20 reset = 0;
assert (value == 0);
$display("%0t Increment 9999x", $time);
decrement = 0;
for (ii = 0; ii < 9999; ii = ii + 1) begin
#20 clock = 1;
#20 clock = 0;
assert (value == ii + 1);
end
$display("%0t Overflow", $time);
#20 clock = 1;
#20 clock = 0;
assert (value == 0);
$display("%0t Underflow", $time);
decrement = 1;
#20 clock = 1;
#20 clock = 0;
assert (value == 9999);
$display("Success!");
end
// synthesis translate_on
endmodule