23 lines
452 B
Systemverilog
23 lines
452 B
Systemverilog
|
module top(input clock, input [3:0] delta, output [3:0] cnt1, cnt2);
|
||
|
cnt #(1) foo (.clock, .cnt(cnt1), .delta);
|
||
|
cnt #(2) bar (.clock, .cnt(cnt2));
|
||
|
endmodule
|
||
|
|
||
|
module cnt #(
|
||
|
parameter integer initval = 0
|
||
|
) (
|
||
|
input clock,
|
||
|
output logic [3:0] cnt = initval,
|
||
|
`ifdef __ICARUS__
|
||
|
input [3:0] delta
|
||
|
`else
|
||
|
input [3:0] delta = 10
|
||
|
`endif
|
||
|
);
|
||
|
`ifdef __ICARUS__
|
||
|
assign (weak0, weak1) delta = 10;
|
||
|
`endif
|
||
|
always @(posedge clock)
|
||
|
cnt <= cnt + delta;
|
||
|
endmodule
|