39 lines
610 B
Coq
39 lines
610 B
Coq
|
|
module testbench();
|
||
|
|
wire [3:0] q;
|
||
|
|
reg clr, clk, enable;
|
||
|
|
|
||
|
|
counter uut(q, clr, clk);
|
||
|
|
|
||
|
|
always @(clk)
|
||
|
|
if (enable)
|
||
|
|
#1 clk <= !clk;
|
||
|
|
|
||
|
|
initial begin
|
||
|
|
enable <= 1;
|
||
|
|
clk <= 0;
|
||
|
|
clr <= 1;
|
||
|
|
#2;
|
||
|
|
clr <= 0;
|
||
|
|
#7;
|
||
|
|
enable <= 0;
|
||
|
|
if (q == 4'b0011)
|
||
|
|
$display("PASSED");
|
||
|
|
else
|
||
|
|
$display("FAILED -- counter not correct (%d)", q);
|
||
|
|
end
|
||
|
|
|
||
|
|
endmodule // testbench
|
||
|
|
|
||
|
|
module counter(q, clr, clk);
|
||
|
|
output [3:0] q;
|
||
|
|
input clr, clk;
|
||
|
|
reg [3:0] q;
|
||
|
|
|
||
|
|
always @(posedge clk or posedge clr)
|
||
|
|
if (clr)
|
||
|
|
q <= 4'b0000;
|
||
|
|
else
|
||
|
|
q <= q + 1'b1;
|
||
|
|
|
||
|
|
endmodule // counter
|