OpenCores
URL https://opencores.org/ocsvn/xge_mac/xge_mac/trunk

Subversion Repositories xge_mac

[/] [xge_mac/] [trunk/] [tbench/] [proto_systemverilog/] [verification/] [macCoreInterface.sv] - Blame information for rev 22

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 22 antanguay
/**
2
 * Interface file for 10 GE MAC Core.
3
 * Takes all clocks as input and all clocks are created from single clock source in testbench
4
 * @file: macCoreInterface.sv
5
 * @author: Pratik Mahajan
6
 * @par Contact: pratik@e-pigeonpost.com
7
 * @par Company: UCSC extension (Systemverilog for advanced verification SV1896) course
8
 *
9
 * @version: $LastChangedRevision$
10
 * @par Last Changed Date:
11
 * $LastChangedDate$
12
 * @par Last Changed By
13
 * $LastChangedBy$
14
 */
15
 
16
/**
17
 * 10GE MAC Core interface.
18
 * @param clkWishboneInterface : clock for wishbone interface 30 - 156 MHz -- input to interface logic
19
 * @param clkTxRxInterface : clock for simple Tx-Rx interface 156.25 MHz -- input to interface logic
20
 * @param clkXGMIIInterfaceRx : clock for XGMII physical layer Rx interface 156.25 MHz -- input to interface logic
21
 * @param clkXGMIIInterfaceTx : clock for XGMII physical later Tx interface 156.25 MHz -- input to interface logic
22
 */
23
 
24
interface macCoreInterface (input bit clkWishboneInterface,
25
                            input bit clkTxRxInterface,
26
                            input bit clkXGMIIInterfaceRx,
27
                            input bit clkXGMIIInterfaceTx
28
                            );
29
 
30
   // Reset signals used in design
31
   bit                                rstWishboneInterface;  ///< Wishbone interface reset signal -- de-assertion synchronous to clkWishboneInterface
32
   bit                                rstTxRxInterface_n;    ///< Simple Tx-Rx interface reset signal -- de-assertion synchronous to clkTxRxInterface ACTIVE LOW
33
   bit                                rstXGMIIInterfaceRx_n; ///< XGMII physical layer Rx interface reset signal -- de-assertion synchronous to clkXGMIIInterfaceRx ACTIVE LOW
34
   bit                                rstXGMIIInterfaceTx_n; ///< XGMII physical later Tx interface reset signal -- de-assertion synchronous to clkXGMIIInterfaceTx ACTIVE LOW
35
 
36
   // Packet receive interface signals
37
   bit                                receiveReadEnable;          ///< Input to Core (outoput of test) asserted when packet is available in receive FIFO
38
   bit                                receiveAvailable;           ///< Output from Core indicates packet is available for reading in receive FIFO
39
   bit [63:0]                         receivedData;               ///< Output from Core represents a packet data in little endian format
40
   bit                                receiveEndOfPacket;         ///< Output from Core asserted when last word of packet is read form receive FIFO
41
   bit                                receiveValid;               ///< Output from Core asserted a cycle after readEnable represents a valid data on bus
42
   bit                                receiveStartOfPacket;       ///< Output from Core represents first word of packet is on the bus
43
   bit [2:0]                          receivePacketLengthModulus; ///< Output from Core updated with End of packet to represent valid bytes during last word
44
   bit                                receiveError;               ///< Output from Core represents current packet is bad mainly due to CRC errors
45
 
46
   // Packet transmit interface signals
47
   bit [63:0]                         transmitData;               ///< Input to Core represents packet data to be transmitted in Little-Endian format
48
   bit                                transmitValid;              ///< Input to Core asserted for each valid data transfer to MAC Core
49
   bit                                transmitStartOfPacket;      ///< Input to Core must be asserted during first word of packet to Core
50
   bit                                transmitEndOfPacket;        ///< Input to Core must be asserted during last word of packet to Core
51
   bit [2:0]                          transmitPacketLengthModulus;///< Input to Core should be valid during End Of Packet during last word and represents valid bytes
52
   bit                                transmitFIFOFull;           ///< Output from Core represents transmit FIFO is about to be full
53
 
54
   // XGMII receive interface signals
55
   bit [7:0]                          xgmiiReceiveControl;        ///< Input to Core - each bit corresponds to type of byte of frame; 0 - byte is data, 1 - byte is control char
56
   bit [63:0]                         xgmiiReceiveData;           ///< Input to Core - represents data on XGMII interface to be received by Core (can be broken in 32 bits)
57
 
58
   // XGMII transmit interface signals
59
   bit [7:0]                          xgmiiTransmitControl;       ///< Output from Core - each bit corresponds to type of byte of frame; 0 - byte is data, 1 - byte is control char
60
   bit [63:0]                         xgmiiTransmitData;          ///< Output from Core - represents data on XGMII interface to be transmitted by Core (can be broken in 32 bits)
61
 
62
   // Wishbone interface signals -- won't be used for current specification requirements
63
   bit [7:0]                          wishboneInputAddress;
64
   bit                                wishboneCycle;
65
   bit [31:0]                         wishboneInputData;
66
   bit                                wishboneStrobe;
67
   bit                                wishboneWriteEnable;
68
   bit                                wishboneAck;
69
   bit [31:0]                         wishboneOutputData;
70
   bit                                wishboneInterrupt;
71
 
72
   // Put XGMII interface in loopback mode --- do it in testbench if you can just connect them to each other
73
/*   always_comb begin
74
      xgmiiReceiveControl = xgmiiTransmitControl;
75
      xgmiiReceiveData    = xgmiiTransmitData;
76
   end
77
*/
78
   /**
79
    * Clocking block mainly for testcase
80
    * Resets are used as outputs in clocking block -- to make sure they are de-asserted on clock edges
81
    * may need specific testcase to test asynchronous resets
82
    * @param clkTxRxInterface: clock to be used for clocking block
83
    */
84
   clocking clockingTxRx @(posedge clkTxRxInterface);
85
      // Using default delays
86
      default output #1000;
87
 
88
      // receive interface direction
89
      input                           receiveAvailable;
90
      input                           receivedData;
91
      input                           receiveEndOfPacket;
92
      input                           receiveValid;
93
      input                           receiveStartOfPacket;
94
      input                           receivePacketLengthModulus;
95
      input                           receiveError;
96
      output                          receiveReadEnable;
97
      // transmit interface direction
98
      output                          transmitData;
99
      output                          transmitValid;
100
      output                          transmitStartOfPacket;
101
      output                          transmitEndOfPacket;
102
      output                          transmitPacketLengthModulus;
103
      input                           transmitFIFOFull;
104
 
105
      output                          rstTxRxInterface_n;
106
 
107
      output                          rstWishboneInterface; // not necessary but doesn't matter as we need to take care of it
108
 
109
   endclocking // clockingTxRx
110
 
111
   clocking clockingXGMIIRx @(posedge clkXGMIIInterfaceRx);
112
      output                          xgmiiReceiveControl;
113
      output                          xgmiiReceiveData;
114
 
115
      output                          rstXGMIIInterfaceRx_n;
116
   endclocking // clockingXGMIIRx
117
 
118
   clocking clockingXGMIITx @(posedge clkXGMIIInterfaceTx);
119
      input                           xgmiiTransmitControl;
120
      input                           xgmiiTransmitData;
121
 
122
      output                          rstXGMIIInterfaceTx_n;
123
   endclocking // clockingXGMIITx
124
 
125
   // Avoiding modports for 10GE MAC Core and Wishbone as functionality is not really required at this point of time
126
   // However for complete environment it can be extended to include all interfaces
127
 
128
   modport TESTMOD (clocking clockingTxRx, clocking clockingXGMIIRx, clocking clockingXGMIITx);
129
 
130
 
131
endinterface // macCoreInterface

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.