URL
https://opencores.org/ocsvn/srdydrdy_lib/srdydrdy_lib/trunk
Subversion Repositories srdydrdy_lib
Compare Revisions
- This comparison shows the changes necessary to convert path
/srdydrdy_lib/trunk/examples/bridge/env
- from Rev 9 to Rev 11
- ↔ Reverse comparison
Rev 9 → Rev 11
/gmii_monitor.v
0,0 → 1,90
module gmii_monitor |
(/*AUTOARG*/ |
// Inputs |
clk, gmii_tx_en, gmii_txd |
); |
|
input clk; |
input gmii_tx_en; |
input [7:0] gmii_txd; |
|
parameter depth = 2048; |
|
reg [7:0] rxbuf [0:depth-1]; |
integer rxptr; |
event pkt_rcvd; |
integer state,rxpkt_num; |
integer err_cnt; |
integer i; |
|
parameter st_idle = 4, st_norm = 0, st_pre = 1; |
|
initial |
begin |
rxptr = 0; |
state = st_idle; |
rxpkt_num = 0; |
err_cnt = 0; |
end |
|
always @(posedge clk) |
begin |
case (state) |
st_idle : |
begin |
if (gmii_tx_en) |
begin |
if (gmii_txd == `GMII_SFD) |
state = st_norm; |
else |
state = st_pre; |
end |
end |
|
st_pre : |
begin |
if (gmii_txd == `GMII_SFD) |
state = st_norm; |
else if (!gmii_tx_en) |
begin |
$display ("%t: ERROR %m: Detected packet with no SFD", $time); |
state = st_idle; |
end |
end |
|
st_norm : |
begin |
if (gmii_tx_en) |
begin |
rxbuf[rxptr ] <= #1 gmii_txd; |
rxptr = rxptr + 1; |
end |
else |
begin |
->pkt_rcvd; |
state = st_idle; |
end |
end // case: st_norm |
endcase |
end // always @ (posedge clk) |
|
always @(pkt_rcvd) |
begin |
#2; |
rxpkt_num = rxpkt_num + 1; |
//pid = {rxbuf[rxptr-2], rxbuf[rxptr-1]}; |
|
$display ("%t: INFO : %m: Received packet %0d length %0d", $time,rxpkt_num,rxptr); |
|
for (i=0; i<rxptr; i=i+1) |
begin |
if (i % 16 == 0) $write ("%x: ", i[15:0]); |
$write ("%x ", rxbuf[i]); |
if (i % 16 == 7) $write ("| "); |
if (i % 16 == 15) $write ("\n"); |
end |
if (i % 16 != 0) $write ("\n"); |
rxptr = 0; |
end |
|
endmodule // it_monitor |
/gmii_driver.v
67,6 → 67,21
end |
endtask |
|
task print_packet; |
input [31:0] length; |
integer i; |
begin |
for (i=0; i<length; i=i+1) |
begin |
if (i % 16 == 0) $write ("%x: ", i[15:0]); |
$write ("%x ", rxbuf[i]); |
if (i % 16 == 7) $write ("| "); |
if (i % 16 == 15) $write ("\n"); |
end |
if (i % 16 != 0) $write ("\n"); |
end |
endtask |
|
task send_packet; |
input [47:0] da, sa; |
input [15:0] length; |
82,6 → 97,8
rxbuf[length-2], rxbuf[length-1] } = crc32_result; |
|
$display ("%m : Sending packet DA=%x SA=%x of length %0d", da, sa, length); |
print_packet (length); |
|
repeat (7) |
begin |
@(posedge rx_clk); |
/run
1,5 → 1,11
#!/bin/bash |
|
which vcs &> /dev/null |
if [ "$?" == "-1" ]; then |
iverilog -f bridge.vf |
./a.out |
else |
vcs -full64 +v2k -R -I -f bridge.vf |
#vcd2vpd env_top.vcd env_top.vpd |
fi |
|
/bridge.vf
2,6 → 2,7
|
env_top.v |
gmii_driver.v |
gmii_monitor.v |
|
../rtl/basic_hashfunc.v |
../rtl/bridge_ex1.v |
/env_top.v
12,8 → 12,12
|
initial |
begin |
`ifdef VCS |
$vcdpluson; |
`else |
$dumpfile ("env_top.vcd"); |
$dumpvars; |
`endif |
reset = 1; |
#200; |
reset = 0; |
35,26 → 39,26
|
/*AUTOWIRE*/ |
// Beginning of automatic wires (for undeclared instantiated-module outputs) |
wire gmii_rx_clk_0; // From driver0 of gmii_driver.v |
wire gmii_rx_clk_1; // From driver1 of gmii_driver.v |
wire gmii_rx_clk_2; // From driver2 of gmii_driver.v |
wire gmii_rx_clk_3; // From driver3 of gmii_driver.v |
wire gmii_rx_dv_0; // From driver0 of gmii_driver.v |
wire gmii_rx_dv_1; // From driver1 of gmii_driver.v |
wire gmii_rx_dv_2; // From driver2 of gmii_driver.v |
wire gmii_rx_dv_3; // From driver3 of gmii_driver.v |
wire [7:0] gmii_rxd_0; // From driver0 of gmii_driver.v |
wire [7:0] gmii_rxd_1; // From driver1 of gmii_driver.v |
wire [7:0] gmii_rxd_2; // From driver2 of gmii_driver.v |
wire [7:0] gmii_rxd_3; // From driver3 of gmii_driver.v |
wire gmii_tx_dv_0; // From bridge of bridge_ex1.v |
wire gmii_tx_dv_1; // From bridge of bridge_ex1.v |
wire gmii_tx_dv_2; // From bridge of bridge_ex1.v |
wire gmii_tx_dv_3; // From bridge of bridge_ex1.v |
wire [7:0] gmii_txd_0; // From bridge of bridge_ex1.v |
wire [7:0] gmii_txd_1; // From bridge of bridge_ex1.v |
wire [7:0] gmii_txd_2; // From bridge of bridge_ex1.v |
wire [7:0] gmii_txd_3; // From bridge of bridge_ex1.v |
wire gmii_rx_clk_0; // From driver0 of gmii_driver.v |
wire gmii_rx_clk_1; // From driver1 of gmii_driver.v |
wire gmii_rx_clk_2; // From driver2 of gmii_driver.v |
wire gmii_rx_clk_3; // From driver3 of gmii_driver.v |
wire gmii_rx_dv_0; // From driver0 of gmii_driver.v |
wire gmii_rx_dv_1; // From driver1 of gmii_driver.v |
wire gmii_rx_dv_2; // From driver2 of gmii_driver.v |
wire gmii_rx_dv_3; // From driver3 of gmii_driver.v |
wire [7:0] gmii_rxd_0; // From driver0 of gmii_driver.v |
wire [7:0] gmii_rxd_1; // From driver1 of gmii_driver.v |
wire [7:0] gmii_rxd_2; // From driver2 of gmii_driver.v |
wire [7:0] gmii_rxd_3; // From driver3 of gmii_driver.v |
wire gmii_tx_en_0; // From bridge of bridge_ex1.v |
wire gmii_tx_en_1; // From bridge of bridge_ex1.v |
wire gmii_tx_en_2; // From bridge of bridge_ex1.v |
wire gmii_tx_en_3; // From bridge of bridge_ex1.v |
wire [7:0] gmii_txd_0; // From bridge of bridge_ex1.v |
wire [7:0] gmii_txd_1; // From bridge of bridge_ex1.v |
wire [7:0] gmii_txd_2; // From bridge of bridge_ex1.v |
wire [7:0] gmii_txd_3; // From bridge of bridge_ex1.v |
// End of automatics |
|
/* gmii_driver AUTO_TEMPLATE |
65,58 → 69,92
gmii_driver driver0 |
(/*AUTOINST*/ |
// Outputs |
.rxd (gmii_rxd_0[7:0]), // Templated |
.rx_dv (gmii_rx_dv_0), // Templated |
.rx_clk (gmii_rx_clk_0)); // Templated |
.rxd (gmii_rxd_0[7:0]), // Templated |
.rx_dv (gmii_rx_dv_0), // Templated |
.rx_clk (gmii_rx_clk_0)); // Templated |
|
gmii_driver driver1 |
(/*AUTOINST*/ |
// Outputs |
.rxd (gmii_rxd_1[7:0]), // Templated |
.rx_dv (gmii_rx_dv_1), // Templated |
.rx_clk (gmii_rx_clk_1)); // Templated |
.rxd (gmii_rxd_1[7:0]), // Templated |
.rx_dv (gmii_rx_dv_1), // Templated |
.rx_clk (gmii_rx_clk_1)); // Templated |
|
gmii_driver driver2 |
(/*AUTOINST*/ |
// Outputs |
.rxd (gmii_rxd_2[7:0]), // Templated |
.rx_dv (gmii_rx_dv_2), // Templated |
.rx_clk (gmii_rx_clk_2)); // Templated |
.rxd (gmii_rxd_2[7:0]), // Templated |
.rx_dv (gmii_rx_dv_2), // Templated |
.rx_clk (gmii_rx_clk_2)); // Templated |
|
gmii_driver driver3 |
(/*AUTOINST*/ |
// Outputs |
.rxd (gmii_rxd_3[7:0]), // Templated |
.rx_dv (gmii_rx_dv_3), // Templated |
.rx_clk (gmii_rx_clk_3)); // Templated |
.rxd (gmii_rxd_3[7:0]), // Templated |
.rx_dv (gmii_rx_dv_3), // Templated |
.rx_clk (gmii_rx_clk_3)); // Templated |
|
bridge_ex1 bridge |
(/*AUTOINST*/ |
// Outputs |
.gmii_tx_dv_0 (gmii_tx_dv_0), |
.gmii_tx_dv_1 (gmii_tx_dv_1), |
.gmii_tx_dv_2 (gmii_tx_dv_2), |
.gmii_tx_dv_3 (gmii_tx_dv_3), |
.gmii_txd_0 (gmii_txd_0[7:0]), |
.gmii_txd_1 (gmii_txd_1[7:0]), |
.gmii_txd_2 (gmii_txd_2[7:0]), |
.gmii_txd_3 (gmii_txd_3[7:0]), |
.gmii_tx_en_0 (gmii_tx_en_0), |
.gmii_tx_en_1 (gmii_tx_en_1), |
.gmii_tx_en_2 (gmii_tx_en_2), |
.gmii_tx_en_3 (gmii_tx_en_3), |
.gmii_txd_0 (gmii_txd_0[7:0]), |
.gmii_txd_1 (gmii_txd_1[7:0]), |
.gmii_txd_2 (gmii_txd_2[7:0]), |
.gmii_txd_3 (gmii_txd_3[7:0]), |
// Inputs |
.clk (clk), |
.reset (reset), |
.gmii_rx_clk_0 (gmii_rx_clk_0), |
.gmii_rx_clk_1 (gmii_rx_clk_1), |
.gmii_rx_clk_2 (gmii_rx_clk_2), |
.gmii_rx_clk_3 (gmii_rx_clk_3), |
.gmii_rx_dv_0 (gmii_rx_dv_0), |
.gmii_rx_dv_1 (gmii_rx_dv_1), |
.gmii_rx_dv_2 (gmii_rx_dv_2), |
.gmii_rx_dv_3 (gmii_rx_dv_3), |
.gmii_rxd_0 (gmii_rxd_0[7:0]), |
.gmii_rxd_1 (gmii_rxd_1[7:0]), |
.gmii_rxd_2 (gmii_rxd_2[7:0]), |
.gmii_rxd_3 (gmii_rxd_3[7:0])); |
.clk (clk), |
.reset (reset), |
.gmii_rx_clk_0 (gmii_rx_clk_0), |
.gmii_rx_clk_1 (gmii_rx_clk_1), |
.gmii_rx_clk_2 (gmii_rx_clk_2), |
.gmii_rx_clk_3 (gmii_rx_clk_3), |
.gmii_rx_dv_0 (gmii_rx_dv_0), |
.gmii_rx_dv_1 (gmii_rx_dv_1), |
.gmii_rx_dv_2 (gmii_rx_dv_2), |
.gmii_rx_dv_3 (gmii_rx_dv_3), |
.gmii_rxd_0 (gmii_rxd_0[7:0]), |
.gmii_rxd_1 (gmii_rxd_1[7:0]), |
.gmii_rxd_2 (gmii_rxd_2[7:0]), |
.gmii_rxd_3 (gmii_rxd_3[7:0])); |
|
/* gmii_monitor AUTO_TEMPLATE |
( |
.clk (clk), |
.\(.*\) (\1_@[]), |
); |
*/ |
gmii_monitor mon0 |
(/*AUTOINST*/ |
// Inputs |
.clk (clk), // Templated |
.gmii_tx_en (gmii_tx_en_0), // Templated |
.gmii_txd (gmii_txd_0[7:0])); // Templated |
|
gmii_monitor mon1 |
(/*AUTOINST*/ |
// Inputs |
.clk (clk), // Templated |
.gmii_tx_en (gmii_tx_en_1), // Templated |
.gmii_txd (gmii_txd_1[7:0])); // Templated |
|
gmii_monitor mon2 |
(/*AUTOINST*/ |
// Inputs |
.clk (clk), // Templated |
.gmii_tx_en (gmii_tx_en_2), // Templated |
.gmii_txd (gmii_txd_2[7:0])); // Templated |
|
gmii_monitor mon3 |
(/*AUTOINST*/ |
// Inputs |
.clk (clk), // Templated |
.gmii_tx_en (gmii_tx_en_3), // Templated |
.gmii_txd (gmii_txd_3[7:0])); // Templated |
|
endmodule // env_top |
// Local Variables: |
// verilog-library-directories:("." "../rtl") |