| module testbench (); | |
| reg clk = 0; | |
| reg rst = 1; | |
| reg req3 = 0; | |
| reg req2 = 0; | |
| reg req1 = 0; | |
| reg req0 = 0; | |
| wire gnt3; | |
| wire gnt2; | |
| wire gnt1; | |
| wire gnt0; | |
| // Clock generator | |
| always #1 clk = ~clk; | |
| integer file; | |
| always @(posedge clk) | |
| $fdisplay(file, "%b", {gnt3, gnt2, gnt1, gnt0}); | |
| initial begin | |
| file = $fopen(`outfile); | |
| repeat (5) @ (posedge clk); | |
| 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 |