Verilog - Design Block
module counter(q, clk, clr, f, in);
parameter set = 4, hold = 1;
clock_gen #(100, 50) clock(clk);
always @(posedge clk or posedge clr)
2'b00: q = d; // Loads the counter
2'b01: q = q + 1; // Counts up
2'b10: q = q - 1; // Counts down
$setup (d, posedge clk, set);
$hold (posedge clk, d, hold);