| 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 |