1
Files
quartus-8-bit-cpu/Counter_TestBench.sv
2023-03-29 17:08:24 +02:00

65 lines
1.3 KiB
Systemverilog

`default_nettype none
module Counter_TestBench;
var logic clock;
var logic reset;
var logic decrement;
var logic setvalue;
var logic[7:0] valuein;
tri[7:0] valueout;
Counter cnt(
.clock(clock),
.reset(reset),
.decrement(decrement),
.setvalue(setvalue),
.valuein(valuein),
.valueout(valueout)
);
// synthesis translate_off
integer ii;
initial begin
$timeformat(-9, 2, " ns", 20);
$display("%0t Initial Reset", $time);
#20 reset = 1'b1;
#20 reset = 1'b0;
assert (valueout == 1'b0);
$display("%0t Increment 1024x", $time);
decrement = 1'b0;
for (ii = 0; ii < 1024; ii = ii + 1) begin
#20 clock = 1'b1;
#20 clock = 1'b0;
assert (valueout == 8'(ii + 1));
end
$display("%0t Decrement 1024x", $time);
decrement = 1'b1;
for (ii = 1024; ii > 0; ii = ii - 1) begin
#20 clock = 1'b1;
#20 clock = 1'b0;
assert (valueout == 8'(ii - 1));
end
$display("%0t Setvalue", $time);
decrement = 1'b0;
setvalue = 1'b1;
valuein = 8'b00001111;
#20 clock = 1'b1;
#20 clock = 1'b0;
assert (valueout == 8'b00001111);
$display("%0t Reset", $time);
#20 reset = 1'b1;
#20 reset = 1'b0;
assert (valueout == 8'b0);
$display("Success!");
end
// synthesis translate_on
endmodule