1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329
|
//////////////////////////////////////////////////////////////////////
//// ////
//// File name "xge_mac.v" ////
//// ////
//// This file is part of the "10GE MAC" project ////
//// http://www.opencores.org/cores/xge_mac/ ////
//// ////
//// Author(s): ////
//// - A. Tanguay (antanguay@opencores.org) ////
//// ////
//////////////////////////////////////////////////////////////////////
//// ////
//// Copyright (C) 2008 AUTHORS. All rights reserved. ////
//// ////
//// This source file may be used and distributed without ////
//// restriction provided that this copyright statement is not ////
//// removed from the file and that any derivative work contains ////
//// the original copyright notice and the associated disclaimer. ////
//// ////
//// This source file is free software; you can redistribute it ////
//// and/or modify it under the terms of the GNU Lesser General ////
//// Public License as published by the Free Software Foundation; ////
//// either version 2.1 of the License, or (at your option) any ////
//// later version. ////
//// ////
//// This source is distributed in the hope that it will be ////
//// useful, but WITHOUT ANY WARRANTY; without even the implied ////
//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ////
//// PURPOSE. See the GNU Lesser General Public License for more ////
//// details. ////
//// ////
//// You should have received a copy of the GNU Lesser General ////
//// Public License along with this source; if not, download it ////
//// from http://www.opencores.org/lgpl.shtml ////
//// ////
//////////////////////////////////////////////////////////////////////
module xge_mac (/*AUTOARG*/
// Outputs
xgmii_txd, xgmii_txc, pkt_tx_full,
pkt_rx_val, pkt_rx_sop, pkt_rx_mod, pkt_rx_err, pkt_rx_eop,
pkt_rx_data, pkt_rx_avail,
status_crc_error, status_fragment_error, status_txdfifo_ovflow,
status_txdfifo_udflow, status_rxdfifo_ovflow, status_rxdfifo_udflow,
status_pause_frame_rx, status_local_fault, status_remote_fault,
// Inputs
xgmii_rxd, xgmii_rxc, reset_xgmii_tx_n, reset_xgmii_rx_n,
reset_156m25_n, pkt_tx_val, pkt_tx_sop, pkt_tx_mod, pkt_tx_eop,
pkt_tx_data, pkt_rx_ren, ctrl_tx_enable,
clk_xgmii_tx, clk_xgmii_rx, clk_156m25
);
/*AUTOINPUT*/
// Beginning of automatic inputs (from unused autoinst inputs)
input clk_156m25; // To rx_dq0 of rx_dequeue.v, ...
input clk_xgmii_rx; // To rx_eq0 of rx_enqueue.v, ...
input clk_xgmii_tx; // To tx_dq0 of tx_dequeue.v, ...
input pkt_rx_ren; // To rx_dq0 of rx_dequeue.v
input [63:0] pkt_tx_data; // To tx_eq0 of tx_enqueue.v
input pkt_tx_eop; // To tx_eq0 of tx_enqueue.v
input [2:0] pkt_tx_mod; // To tx_eq0 of tx_enqueue.v
input pkt_tx_sop; // To tx_eq0 of tx_enqueue.v
input pkt_tx_val; // To tx_eq0 of tx_enqueue.v
input reset_156m25_n; // To rx_dq0 of rx_dequeue.v, ...
input reset_xgmii_rx_n; // To rx_eq0 of rx_enqueue.v, ...
input reset_xgmii_tx_n; // To tx_dq0 of tx_dequeue.v, ...
input [7:0] xgmii_rxc; // To rx_eq0 of rx_enqueue.v
input [63:0] xgmii_rxd; // To rx_eq0 of rx_enqueue.v
input ctrl_tx_enable; // From wishbone_if0 of wishbone_if.v
// End of automatics
/*AUTOOUTPUT*/
// Beginning of automatic outputs (from unused autoinst outputs)
output pkt_rx_avail; // From rx_dq0 of rx_dequeue.v
output [63:0] pkt_rx_data; // From rx_dq0 of rx_dequeue.v
output pkt_rx_eop; // From rx_dq0 of rx_dequeue.v
output pkt_rx_err; // From rx_dq0 of rx_dequeue.v
output [2:0] pkt_rx_mod; // From rx_dq0 of rx_dequeue.v
output pkt_rx_sop; // From rx_dq0 of rx_dequeue.v
output pkt_rx_val; // From rx_dq0 of rx_dequeue.v
output pkt_tx_full; // From tx_eq0 of tx_enqueue.v
output [7:0] xgmii_txc; // From tx_dq0 of tx_dequeue.v
output [63:0] xgmii_txd; // From tx_dq0 of tx_dequeue.v
output status_crc_error;
output status_fragment_error;
output status_txdfifo_ovflow;
output status_txdfifo_udflow;
output status_rxdfifo_ovflow;
output status_rxdfifo_udflow;
output status_pause_frame_rx;
output status_local_fault;
output status_remote_fault;
// End of automatics
/*AUTOWIRE*/
// Beginning of automatic wires (for undeclared instantiated-module outputs)
wire ctrl_tx_enable_ctx; // From sync_clk_xgmii_tx0 of sync_clk_xgmii_tx.v
wire [1:0] local_fault_msg_det; // From rx_eq0 of rx_enqueue.v
wire [1:0] remote_fault_msg_det; // From rx_eq0 of rx_enqueue.v
wire rxdfifo_ralmost_empty; // From rx_data_fifo0 of rx_data_fifo.v
wire [63:0] rxdfifo_rdata; // From rx_data_fifo0 of rx_data_fifo.v
wire rxdfifo_rempty; // From rx_data_fifo0 of rx_data_fifo.v
wire rxdfifo_ren; // From rx_dq0 of rx_dequeue.v
wire [7:0] rxdfifo_rstatus; // From rx_data_fifo0 of rx_data_fifo.v
wire [63:0] rxdfifo_wdata; // From rx_eq0 of rx_enqueue.v
wire rxdfifo_wen; // From rx_eq0 of rx_enqueue.v
wire rxdfifo_wfull; // From rx_data_fifo0 of rx_data_fifo.v
wire [7:0] rxdfifo_wstatus; // From rx_eq0 of rx_enqueue.v
wire rxhfifo_ralmost_empty; // From rx_hold_fifo0 of rx_hold_fifo.v
wire [63:0] rxhfifo_rdata; // From rx_hold_fifo0 of rx_hold_fifo.v
wire rxhfifo_rempty; // From rx_hold_fifo0 of rx_hold_fifo.v
wire rxhfifo_ren; // From rx_eq0 of rx_enqueue.v
wire [7:0] rxhfifo_rstatus; // From rx_hold_fifo0 of rx_hold_fifo.v
wire [63:0] rxhfifo_wdata; // From rx_eq0 of rx_enqueue.v
wire rxhfifo_wen; // From rx_eq0 of rx_enqueue.v
wire [7:0] rxhfifo_wstatus; // From rx_eq0 of rx_enqueue.v
wire status_local_fault_ctx; // From sync_clk_xgmii_tx0 of sync_clk_xgmii_tx.v
wire status_remote_fault_ctx;// From sync_clk_xgmii_tx0 of sync_clk_xgmii_tx.v
wire txdfifo_ralmost_empty; // From tx_data_fifo0 of tx_data_fifo.v
wire [63:0] txdfifo_rdata; // From tx_data_fifo0 of tx_data_fifo.v
wire txdfifo_rempty; // From tx_data_fifo0 of tx_data_fifo.v
wire txdfifo_ren; // From tx_dq0 of tx_dequeue.v
wire [7:0] txdfifo_rstatus; // From tx_data_fifo0 of tx_data_fifo.v
wire txdfifo_walmost_full; // From tx_data_fifo0 of tx_data_fifo.v
wire [63:0] txdfifo_wdata; // From tx_eq0 of tx_enqueue.v
wire txdfifo_wen; // From tx_eq0 of tx_enqueue.v
wire txdfifo_wfull; // From tx_data_fifo0 of tx_data_fifo.v
wire [7:0] txdfifo_wstatus; // From tx_eq0 of tx_enqueue.v
wire txhfifo_ralmost_empty; // From tx_hold_fifo0 of tx_hold_fifo.v
wire [63:0] txhfifo_rdata; // From tx_hold_fifo0 of tx_hold_fifo.v
wire txhfifo_rempty; // From tx_hold_fifo0 of tx_hold_fifo.v
wire txhfifo_ren; // From tx_dq0 of tx_dequeue.v
wire [7:0] txhfifo_rstatus; // From tx_hold_fifo0 of tx_hold_fifo.v
wire txhfifo_walmost_full; // From tx_hold_fifo0 of tx_hold_fifo.v
wire [63:0] txhfifo_wdata; // From tx_dq0 of tx_dequeue.v
wire txhfifo_wen; // From tx_dq0 of tx_dequeue.v
wire txhfifo_wfull; // From tx_hold_fifo0 of tx_hold_fifo.v
wire [7:0] txhfifo_wstatus; // From tx_dq0 of tx_dequeue.v
// End of automatics
rx_enqueue rx_eq0(/*AUTOINST*/
// Outputs
.rxdfifo_wdata (rxdfifo_wdata[63:0]),
.rxdfifo_wstatus (rxdfifo_wstatus[7:0]),
.rxdfifo_wen (rxdfifo_wen),
.rxhfifo_ren (rxhfifo_ren),
.rxhfifo_wdata (rxhfifo_wdata[63:0]),
.rxhfifo_wstatus (rxhfifo_wstatus[7:0]),
.rxhfifo_wen (rxhfifo_wen),
.local_fault_msg_det (local_fault_msg_det[1:0]),
.remote_fault_msg_det (remote_fault_msg_det[1:0]),
.status_crc_error_tog (status_crc_error),
.status_fragment_error_tog(status_fragment_error),
.status_rxdfifo_ovflow_tog(status_rxdfifo_ovflow),
.status_pause_frame_rx_tog(status_pause_frame_rx),
// Inputs
.clk_xgmii_rx (clk_xgmii_rx),
.reset_xgmii_rx_n (reset_xgmii_rx_n),
.xgmii_rxd (xgmii_rxd[63:0]),
.xgmii_rxc (xgmii_rxc[7:0]),
.rxdfifo_wfull (rxdfifo_wfull),
.rxhfifo_rdata (rxhfifo_rdata[63:0]),
.rxhfifo_rstatus (rxhfifo_rstatus[7:0]),
.rxhfifo_rempty (rxhfifo_rempty),
.rxhfifo_ralmost_empty(rxhfifo_ralmost_empty));
rx_dequeue rx_dq0(/*AUTOINST*/
// Outputs
.rxdfifo_ren (rxdfifo_ren),
.pkt_rx_data (pkt_rx_data[63:0]),
.pkt_rx_val (pkt_rx_val),
.pkt_rx_sop (pkt_rx_sop),
.pkt_rx_eop (pkt_rx_eop),
.pkt_rx_err (pkt_rx_err),
.pkt_rx_mod (pkt_rx_mod[2:0]),
.pkt_rx_avail (pkt_rx_avail),
.status_rxdfifo_udflow_tog(status_rxdfifo_udflow),
// Inputs
.clk_156m25 (clk_156m25),
.reset_156m25_n (reset_156m25_n),
.rxdfifo_rdata (rxdfifo_rdata[63:0]),
.rxdfifo_rstatus (rxdfifo_rstatus[7:0]),
.rxdfifo_rempty (rxdfifo_rempty),
.rxdfifo_ralmost_empty(rxdfifo_ralmost_empty),
.pkt_rx_ren (pkt_rx_ren));
rx_data_fifo rx_data_fifo0(/*AUTOINST*/
// Outputs
.rxdfifo_wfull (rxdfifo_wfull),
.rxdfifo_rdata (rxdfifo_rdata[63:0]),
.rxdfifo_rstatus (rxdfifo_rstatus[7:0]),
.rxdfifo_rempty (rxdfifo_rempty),
.rxdfifo_ralmost_empty(rxdfifo_ralmost_empty),
// Inputs
.clk_xgmii_rx (clk_xgmii_rx),
.clk_156m25 (clk_156m25),
.reset_xgmii_rx_n (reset_xgmii_rx_n),
.reset_156m25_n (reset_156m25_n),
.rxdfifo_wdata (rxdfifo_wdata[63:0]),
.rxdfifo_wstatus (rxdfifo_wstatus[7:0]),
.rxdfifo_wen (rxdfifo_wen),
.rxdfifo_ren (rxdfifo_ren));
rx_hold_fifo rx_hold_fifo0(/*AUTOINST*/
// Outputs
.rxhfifo_rdata (rxhfifo_rdata[63:0]),
.rxhfifo_rstatus (rxhfifo_rstatus[7:0]),
.rxhfifo_rempty (rxhfifo_rempty),
.rxhfifo_ralmost_empty(rxhfifo_ralmost_empty),
// Inputs
.clk_xgmii_rx (clk_xgmii_rx),
.reset_xgmii_rx_n (reset_xgmii_rx_n),
.rxhfifo_wdata (rxhfifo_wdata[63:0]),
.rxhfifo_wstatus (rxhfifo_wstatus[7:0]),
.rxhfifo_wen (rxhfifo_wen),
.rxhfifo_ren (rxhfifo_ren));
tx_enqueue tx_eq0 (/*AUTOINST*/
// Outputs
.pkt_tx_full (pkt_tx_full),
.txdfifo_wdata (txdfifo_wdata[63:0]),
.txdfifo_wstatus (txdfifo_wstatus[7:0]),
.txdfifo_wen (txdfifo_wen),
.status_txdfifo_ovflow_tog(status_txdfifo_ovflow),
// Inputs
.clk_156m25 (clk_156m25),
.reset_156m25_n (reset_156m25_n),
.pkt_tx_data (pkt_tx_data[63:0]),
.pkt_tx_val (pkt_tx_val),
.pkt_tx_sop (pkt_tx_sop),
.pkt_tx_eop (pkt_tx_eop),
.pkt_tx_mod (pkt_tx_mod[2:0]),
.txdfifo_wfull (txdfifo_wfull),
.txdfifo_walmost_full(txdfifo_walmost_full));
tx_dequeue tx_dq0(/*AUTOINST*/
// Outputs
.txdfifo_ren (txdfifo_ren),
.txhfifo_ren (txhfifo_ren),
.txhfifo_wdata (txhfifo_wdata[63:0]),
.txhfifo_wstatus (txhfifo_wstatus[7:0]),
.txhfifo_wen (txhfifo_wen),
.xgmii_txd (xgmii_txd[63:0]),
.xgmii_txc (xgmii_txc[7:0]),
.status_txdfifo_udflow_tog(status_txdfifo_udflow),
// Inputs
.clk_xgmii_tx (clk_xgmii_tx),
.reset_xgmii_tx_n (reset_xgmii_tx_n),
.ctrl_tx_enable_ctx (ctrl_tx_enable_ctx),
.status_local_fault_ctx(status_local_fault_ctx),
.status_remote_fault_ctx(status_remote_fault_ctx),
.txdfifo_rdata (txdfifo_rdata[63:0]),
.txdfifo_rstatus (txdfifo_rstatus[7:0]),
.txdfifo_rempty (txdfifo_rempty),
.txdfifo_ralmost_empty(txdfifo_ralmost_empty),
.txhfifo_rdata (txhfifo_rdata[63:0]),
.txhfifo_rstatus (txhfifo_rstatus[7:0]),
.txhfifo_rempty (txhfifo_rempty),
.txhfifo_ralmost_empty(txhfifo_ralmost_empty),
.txhfifo_wfull (txhfifo_wfull),
.txhfifo_walmost_full (txhfifo_walmost_full));
tx_data_fifo tx_data_fifo0(/*AUTOINST*/
// Outputs
.txdfifo_wfull (txdfifo_wfull),
.txdfifo_walmost_full(txdfifo_walmost_full),
.txdfifo_rdata (txdfifo_rdata[63:0]),
.txdfifo_rstatus (txdfifo_rstatus[7:0]),
.txdfifo_rempty (txdfifo_rempty),
.txdfifo_ralmost_empty(txdfifo_ralmost_empty),
// Inputs
.clk_xgmii_tx (clk_xgmii_tx),
.clk_156m25 (clk_156m25),
.reset_xgmii_tx_n (reset_xgmii_tx_n),
.reset_156m25_n (reset_156m25_n),
.txdfifo_wdata (txdfifo_wdata[63:0]),
.txdfifo_wstatus (txdfifo_wstatus[7:0]),
.txdfifo_wen (txdfifo_wen),
.txdfifo_ren (txdfifo_ren));
tx_hold_fifo tx_hold_fifo0(/*AUTOINST*/
// Outputs
.txhfifo_wfull (txhfifo_wfull),
.txhfifo_walmost_full(txhfifo_walmost_full),
.txhfifo_rdata (txhfifo_rdata[63:0]),
.txhfifo_rstatus (txhfifo_rstatus[7:0]),
.txhfifo_rempty (txhfifo_rempty),
.txhfifo_ralmost_empty(txhfifo_ralmost_empty),
// Inputs
.clk_xgmii_tx (clk_xgmii_tx),
.reset_xgmii_tx_n (reset_xgmii_tx_n),
.txhfifo_wdata (txhfifo_wdata[63:0]),
.txhfifo_wstatus (txhfifo_wstatus[7:0]),
.txhfifo_wen (txhfifo_wen),
.txhfifo_ren (txhfifo_ren));
fault_sm fault_sm0(/*AUTOINST*/
// Outputs
.status_local_fault_crx(status_local_fault),
.status_remote_fault_crx(status_remote_fault),
// Inputs
.clk_xgmii_rx (clk_xgmii_rx),
.reset_xgmii_rx_n (reset_xgmii_rx_n),
.local_fault_msg_det (local_fault_msg_det[1:0]),
.remote_fault_msg_det(remote_fault_msg_det[1:0]));
sync_clk_xgmii_tx sync_clk_xgmii_tx0(/*AUTOINST*/
// Outputs
.ctrl_tx_enable_ctx(ctrl_tx_enable_ctx),
.status_local_fault_ctx(status_local_fault_ctx),
.status_remote_fault_ctx(status_remote_fault_ctx),
// Inputs
.clk_xgmii_tx (clk_xgmii_tx),
.reset_xgmii_tx_n (reset_xgmii_tx_n),
.ctrl_tx_enable (ctrl_tx_enable),
.status_local_fault_crx(status_local_fault),
.status_remote_fault_crx(status_remote_fault));
// IJB. This module has only inputs and is treated as a black box by XST which causes a fatal error.
// Commented out. Original pupose/intent unknown.
//sync_clk_core sync_clk_core0(/*AUTOINST*/
// // Inputs
// .clk_xgmii_tx (clk_xgmii_tx),
// .reset_xgmii_tx_n (reset_xgmii_tx_n));
endmodule
|