| |
| `include "arbiter.inc" |
| module top (); |
| |
| reg clk; |
| reg rst; |
| reg req3; |
| reg req2; |
| reg req1; |
| reg req0; |
| wire gnt3; |
| wire gnt2; |
| wire gnt1; |
| wire gnt0; |
| |
| // Clock generator |
| always #1 clk = ~clk; |
| |
| initial begin |
| $dumpfile ("arbiter.vcd"); |
| $dumpvars(); |
| clk = 0; |
| rst = 1; |
| req0 = 0; |
| req1 = 0; |
| req2 = 0; |
| req3 = 0; |
| #10 rst = 0; |
| repeat (1) @ (posedge clk); |
| req0 <= 1; |
| repeat (1) @ (posedge clk); |
| req0 <= 0; |
| repeat (1) @ (posedge clk); |
| req0 <= 1; |
| req1 <= 1; |
| repeat (1) @ (posedge clk); |
| req2 <= 1; |
| req1 <= 0; |
| repeat (1) @ (posedge clk); |
| req3 <= 1; |
| req2 <= 0; |
| repeat (1) @ (posedge clk); |
| req3 <= 0; |
| repeat (1) @ (posedge clk); |
| req0 <= 0; |
| repeat (1) @ (posedge clk); |
| #10 $finish; |
| end |
| |
| // Connect the DUT |
| arbiter U ( |
| clk, |
| rst, |
| req3, |
| req2, |
| req1, |
| req0, |
| gnt3, |
| gnt2, |
| gnt1, |
| gnt0 |
| ); |
| |
| endmodule |