3 module simple_gemac_tb;
9 initial #1000 reset = 0;
10 always #50 clk = ~clk;
12 wire GMII_RX_DV, GMII_RX_ER, GMII_TX_EN, GMII_TX_ER;
13 wire [7:0] GMII_RXD, GMII_TXD;
15 wire rx_valid, rx_error, rx_ack;
17 reg tx_valid = 0, tx_error = 0;
22 wire [15:0] pause_time = 16'hBEEF;
25 simple_gemac simple_gemac
26 (.clk125(clk), .reset(reset),
27 .GMII_GTX_CLK(GMII_GTX_CLK), .GMII_TX_EN(GMII_TX_EN),
28 .GMII_TX_ER(GMII_TX_ER), .GMII_TXD(GMII_TXD),
29 .GMII_RX_CLK(GMII_RX_CLK), .GMII_RX_DV(GMII_RX_DV),
30 .GMII_RX_ER(GMII_RX_ER), .GMII_RXD(GMII_RXD),
31 .pause_req(pause_req), .pause_time(pause_time),
32 .rx_clk(rx_clk), .rx_data(rx_data),
33 .rx_valid(rx_valid), .rx_error(rx_error), .rx_ack(rx_ack),
34 .tx_clk(tx_clk), .tx_data(tx_data),
35 .tx_valid(tx_valid), .tx_error(tx_error), .tx_ack(tx_ack)
40 $display("Sending Flow Control, %d", $time);
46 endtask // SendFlowCtrl
50 input [7:0] data_start;
51 input [31:0] data_len;
53 $display("Sending Packet Len=%d, %d", data_len, $time);
55 tx_data <= data_start;
60 $display("Packet Accepted, %d", $time);
61 while(count < data_len)
63 tx_data <= tx_data + 1;
72 task SendPacketFromFile;
73 input [31:0] data_len;
75 $display("Sending Packet From File Len=%d, %d",data_len,$time);
76 $readmemh( "test_packet.mem",pkt_rom );
78 tx_data = pkt_rom[count];
83 $display("Packet Accepted, %d",$time);
85 while(count < data_len)
87 tx_data = pkt_rom[count];
96 initial $dumpfile("simple_gemac_tb.vcd");
97 initial $dumpvars(0,simple_gemac_tb);
100 reg [7:0] pkt_rom[0:65535];
101 reg [1023:0] ROMFile;
104 for (i=0;i<65536;i=i+1)
115 SendPacket(8'hAA,10);
118 SendPacketFromFile(60);
121 SendPacketFromFile(61);
124 SendPacketFromFile(62);
127 SendPacketFromFile(63);
130 SendPacketFromFile(64);
133 SendPacketFromFile(59);
136 SendPacketFromFile(58);
140 always @(posedge clk)
142 $display("%x",GMII_TXD);
144 endmodule // simple_gemac_tb
147 if ( !$value$plusargs( "rom=%s", ROMFile ) )
149 $display( "Using default ROM file, 'flash.rom'" );
150 ROMFile = "flash.rom";
153 $display( "Using %s as ROM file.", ROMFile);
155 #1 $readmemh( ROMFile,rom );