URL
https://opencores.org/ocsvn/xge_mac/xge_mac/trunk
Subversion Repositories xge_mac
Compare Revisions
- This comparison shows the changes necessary to convert path
/xge_mac/trunk/tbench
- from Rev 14 to Rev 15
- ↔ Reverse comparison
Rev 14 → Rev 15
/systemc/sc_pkt_if.cpp
80,14 → 80,14
|
for (int i = 0; i < pkt->length; i += 8) { |
|
pkt_tx_data = pkt->data[i+7] << 56 | |
pkt->data[i+6] << 48 | |
pkt->data[i+5] << 40 | |
pkt->data[i+4] << 32 | |
pkt->data[i+3] << 24 | |
pkt->data[i+2] << 16 | |
pkt->data[i+1] << 8 | |
pkt->data[i]; |
pkt_tx_data = pkt->data[i] << 56 | |
pkt->data[i+1] << 48 | |
pkt->data[i+2] << 40 | |
pkt->data[i+3] << 32 | |
pkt->data[i+4] << 24 | |
pkt->data[i+5] << 16 | |
pkt->data[i+6] << 8 | |
pkt->data[i+7]; |
|
if (i == 0) { |
pkt_tx_sop = 1; |
181,7 → 181,7
|
for (int lane = 0; lane < 8; lane++) { |
|
pkt->data[pkt->length++] = (data >> (8 * lane)) & 0xff; |
pkt->data[pkt->length++] = (data >> (8 * (7-lane))) & 0xff; |
|
if (pkt->length >= 10000) { |
cout << "ERROR: Packet too long" << endl; |
194,7 → 194,7
} |
|
// Stop on EOP |
|
|
if (pkt_rx_eop) { |
break; |
} |
216,7 → 216,7
} |
else { |
pkt_rx_ren = 0; |
wait(); |
wait(); |
} |
} |
}; |
/systemc/sc_pkt_if.h
54,7 → 54,7
|
sc_in<bool> reset_156m25_n; |
|
sc_out<sc_bv<64> > pkt_tx_data; |
sc_out<long unsigned int > pkt_tx_data; |
sc_out<bool> pkt_tx_eop; |
sc_out<unsigned int> pkt_tx_mod; |
sc_out<bool> pkt_tx_sop; |
63,7 → 63,7
sc_in<bool> pkt_tx_full; |
|
sc_in<bool> pkt_rx_avail; |
sc_in<sc_bv<64> > pkt_rx_data; |
sc_in<long unsigned int > pkt_rx_data; |
sc_in<bool> pkt_rx_eop; |
sc_in<unsigned int> pkt_rx_mod; |
sc_in<bool> pkt_rx_err; |
/systemc/sc_main.cpp
49,7 → 49,8
#include <sys/stat.h> |
|
#include "systemc.h" // SystemC global header |
#include "SpTraceVcd.h" |
//#include "SpTraceVcd.h" |
#include "verilated_vcd_sc.h" // Tracing |
|
#include "crc.h" |
|
71,12 → 72,12
|
cout << ("Defining Clocks\n"); |
|
sc_clock clk_156m25 ("clk_156m25", 10, 0.5, 3, true); |
sc_clock clk_156m25 ("clk_156m25", 10, 0.5, 3, true); |
sc_clock clk_wb ("clk_wb", 29, 0.5, 3, true); |
sc_clock clk_xgmii ("clk_xgmii", 10, 0.5, 3, true); |
|
sc_signal<bool> pkt_rx_ren; |
sc_signal<sc_bv<64> > pkt_tx_data; |
sc_signal<long unsigned int > pkt_tx_data; |
sc_signal<bool> pkt_tx_eop; |
sc_signal<unsigned int> pkt_tx_mod; |
sc_signal<bool> pkt_tx_sop; |
90,10 → 91,10
sc_signal<bool> wb_stb_i; |
sc_signal<bool> wb_we_i; |
sc_signal<unsigned int> xgmii_rxc; |
sc_signal<sc_bv<64> > xgmii_rxd; |
sc_signal<long unsigned int > xgmii_rxd; |
|
sc_signal<bool> pkt_rx_avail; |
sc_signal<sc_bv<64> > pkt_rx_data; |
sc_signal<long unsigned int > pkt_rx_data; |
sc_signal<bool> pkt_rx_eop; |
sc_signal<unsigned int> pkt_rx_mod; |
sc_signal<bool> pkt_rx_sop; |
104,7 → 105,7
sc_signal<unsigned int> wb_dat_o; |
sc_signal<bool> wb_int_o; |
sc_signal<unsigned int> xgmii_txc; |
sc_signal<sc_bv<64> > xgmii_txd; |
sc_signal<long unsigned int > xgmii_txd; |
|
//========== |
// Part under test |
221,7 → 222,7
|
#if WAVES |
cout << "Enabling waves...\n"; |
SpTraceFile* tfp = new SpTraceFile; |
VerilatedVcdSc* tfp = new VerilatedVcdSc; |
top->trace (tfp, 99); |
tfp->open ("vl_dump.vcd"); |
#endif |
230,7 → 231,7
// Start of Test |
|
cout <<("Test beginning...\n"); |
|
|
reset_156m25_n = 0; |
wb_rst_i = 1; |
reset_xgmii_n = 0; |
256,8 → 257,6
#endif |
|
cout << "*-* All Finished *-*\n"; |
|
|
return(0); |
} |
|
|
/systemc/sc_testbench.h
72,12 → 72,12
sc_out<bool> wb_we_i; |
|
sc_out<unsigned int> xgmii_rxc; |
sc_out<sc_bv<64> > xgmii_rxd; |
sc_out<long unsigned int > xgmii_rxd; |
|
sc_in<unsigned int> xgmii_txc; |
sc_in<sc_bv<64> > xgmii_txd; |
sc_in<long unsigned int > xgmii_txd; |
|
sc_out<sc_bv<64> > pkt_tx_data; |
sc_out<long unsigned int > pkt_tx_data; |
sc_out<bool> pkt_tx_eop; |
sc_out<unsigned int> pkt_tx_mod; |
sc_out<bool> pkt_tx_sop; |
86,7 → 86,7
sc_in<bool> pkt_tx_full; |
|
sc_in<bool> pkt_rx_avail; |
sc_in<sc_bv<64> > pkt_rx_data; |
sc_in<long unsigned int > pkt_rx_data; |
sc_in<bool> pkt_rx_eop; |
sc_in<unsigned int> pkt_rx_mod; |
sc_in<bool> pkt_rx_err; |
105,7 → 105,7
|
pkt_generator pif_gen0; |
pkt_generator xgm_gen0; |
|
|
scoreboard sb; |
|
//--- |
/systemc/sc_xgmii_if.cpp
94,7 → 94,7
|
//--- |
// Inject errors |
|
|
if (pkt->err_flags & PKT_FLAG_ERR_CRC) { |
pkt->crc++; |
} |
227,7 → 227,7
ifg = 0; |
|
} |
else if (preamblecnt >7 && bytecnt == pkt->err_info && |
else if (preamblecnt >7 && bytecnt == pkt->err_info && |
(pkt->err_flags & PKT_FLAG_ERR_CODING)) { |
|
//--- |
451,7 → 451,7
|
if (((rxd & 0xffffffff) == 0x0100009c && (rxc & 0xf) == 0x1) && |
(((rxd >> 32) & 0xffffffff) == 0x0100009c && ((rxc > 4) & 0xf) == 0x1)) { |
|
|
//-- |
// Local fault detection |
|
500,5 → 500,3
wait(); |
} |
}; |
|
|
/systemc/sc_xgmii_if.h
55,10 → 55,10
sc_in<bool> reset_xgmii_n; |
|
sc_out<unsigned int> xgmii_rxc; |
sc_out<sc_bv<64> > xgmii_rxd; |
sc_out<long unsigned int > xgmii_rxd; |
|
sc_in<unsigned int> xgmii_txc; |
sc_in<sc_bv<64> > xgmii_txd; |
sc_in<long unsigned int > xgmii_txd; |
|
private: |
|
99,7 → 99,7
void receive(); |
void monitor(); |
|
SC_CTOR(xgmii_if) : |
SC_CTOR(xgmii_if) : |
tx_fifo (2), |
rx_fifo (2) { |
|