53 lines
922 B
Coq
53 lines
922 B
Coq
|
|
/*
|
||
|
|
* This tests is based on PR#434
|
||
|
|
*/
|
||
|
|
|
||
|
|
`define VAR1 2
|
||
|
|
`define VAR2 5
|
||
|
|
module mctrl( reset0, reset1, reset2, reset3, clk, por);
|
||
|
|
output reset0, reset1, reset2, reset3;
|
||
|
|
input clk,por;
|
||
|
|
|
||
|
|
reg [7:0] cnt;
|
||
|
|
|
||
|
|
always @ (posedge por or posedge clk)
|
||
|
|
if (por)
|
||
|
|
cnt <= 0;
|
||
|
|
else
|
||
|
|
cnt <= cnt+1;
|
||
|
|
|
||
|
|
assign reset0 = (cnt == `VAR1);
|
||
|
|
assign reset1 = (cnt == `VAR2);
|
||
|
|
assign reset2 = (cnt == `VAR1 + `VAR2);
|
||
|
|
assign reset3 = (cnt == `VAR1 + `VAR2 + 2);
|
||
|
|
|
||
|
|
endmodule
|
||
|
|
|
||
|
|
`timescale 1ns/1ps
|
||
|
|
|
||
|
|
module test();
|
||
|
|
reg clk,por;
|
||
|
|
|
||
|
|
wire reset0, reset1, reset2, reset3;
|
||
|
|
|
||
|
|
mctrl m1(reset0, reset1, reset2, reset3, clk, por);
|
||
|
|
|
||
|
|
initial
|
||
|
|
begin
|
||
|
|
clk = 0;
|
||
|
|
por = 0;
|
||
|
|
$monitor($time,, "reset0=%b, reset1=%b, reset2=%b, reset3=%b",
|
||
|
|
reset0, reset1, reset2, reset3);
|
||
|
|
#1000 $finish(0);
|
||
|
|
end
|
||
|
|
|
||
|
|
always #15 clk = ~clk;
|
||
|
|
|
||
|
|
|
||
|
|
initial
|
||
|
|
begin
|
||
|
|
#10 por = 1;
|
||
|
|
#10 por = 0;
|
||
|
|
end
|
||
|
|
endmodule // test
|