| // (c) Alex.Perry@qm.com - 2002, Quantum Magnetics Inc, San Diego CA |
| // This source file is licensed under the GNU public license version 2.0 |
| // All other rights reserved. |
| |
| // NOTE: This test catches addition of wide (>16 bits) constants |
| // to wide vectors. -- Steve Williams |
| module source ( C, h ); |
| output [ 0:0] C; |
| output [11:0] h; |
| reg [ 0:0] C; |
| reg [11:0] h; |
| reg [21:0] l; |
| |
| parameter kh = 3; |
| parameter kl = 21'd364066; |
| parameter wl = 21'h100000; |
| |
| initial #5 |
| begin |
| C <= 0; |
| l <= 0; |
| h <= 0; |
| end |
| always #10 C = ~C; |
| always @(posedge C) |
| begin if ( l >= wl ) |
| begin l <= l + kl - wl; |
| h <= h + kh + 1; |
| end else |
| begin l <= l + kl; |
| h <= h + kh; |
| end |
| end |
| |
| endmodule |
| |
| |
| module bench; |
| wire [ 0:0] clock; |
| wire [11:0] h; |
| source dut ( .C(clock), .h(h) ); |
| initial #85 |
| begin |
| if ( h == 13 ) begin |
| $display ( "%7d", h ); |
| $display ("PASSED"); |
| end else begin |
| $display ( "%7d = FAIL", h ); |
| end |
| $finish; |
| end |
| |
| endmodule |
| |