Saturday May 25 , 2013

GMII eVC

GMII e Verification Component

IP Part Number: DR924-GMII-eVC

 

IEEE 802.3 compliant MAC layer to PHY layer interface

  • Targeted for an e Verification Environment

  • Modular, Extensible/Configurable and Reusable

  • Random Generators, Self-Checking, Error Injection

  • Straight Forward Integration

  • Compatible to Intrinsix GMII-SGMII Conversion Module

Applications

Ethernet Switches, Routers and transceivers operating at 10 Mb/s, 100 Mb/s and 1000 Mb/s

 

Overview

The port diagram above shows an UML-port diagram for the GMII (Gigabit Media Independent Interface) Verification Component. It is a ready-to-use, out-of-the-box verification environment for a core using the GMII protocol.

 

The GMII e Verification Component is designed to satisfy the following requirements:

  • Transfer frames between a MAC layer device and a PHY device.

  • Inject error conditions into the core

  • Viewable interfaces, which can be extended easily

  • Coverage stats. for interface and implementation specific state machines

Port Signals

 

GMII eVC interface

Fields

Description

gmiiPorts

List of GMII eVCs

numFramesTx

Number of frames to send

numFramesRx

Number of frames received

framesReceived

List of frames received

numberOfFrame

Frame ID

lengthOfHead

Length of the head (in octets)

lengthOfTail

Length of the tail (in octets)

interFramePeriod

Delay between successive frames (either burst of single frame transmissions)

kindOfFrame

GOOD/BAD frame (request TX_ER assertion if kindOfFrame = BAD)

directionOfFrame

Tx or Rx

carrierExtendTx

Request PHY to transmit a Carrier Extend code-group

carrierExtendErrorTx

Request PHY to transmit a Carrier Extend Error code-group

burstTransmission

Request a burst transmission

preambleSize

Size of the preamble beginning the frame transmission. Defaults to 7

defautlPreambleCode

Default Preamble code (defaults to 0x55)

defaultCarrierExtendCode

Default carrier extend code (defaults to 0x0f)

defaultCarrierExtendErrorCode

Default carrier extend error code (defaults to 0x1f)

logEnable

Enable logging of messages

debugLevel

Debug level of messages

maxNumMessages

Max number of messages to output

messageMask

Bit field used for masking error messages

numFramesTxed

Number of frames already transmitted

frame

Frame which is being transmitted

frameAutoGen

Bit for auto-generating the fields in a frame object

gmii_loop_back

Bit for looping back the GMII side signals for stand alone test

Events

Description

collisionDetected

Rising edge of COL

carrierIndicate

Rising edge of CRS

gtxClk

Rising edge of GTX_CLK

txClk

Rising edge of TX_CLK

refClk

gtxClk or txClk depending on 1000 Mbps or 10/100 Mbps operation

rxClk

Rising edge of RX_CLK

frameReceived

Frame received

frameCheckErrorRx

RX_DV and RX_ER asserted or carrierExtendErrorRx

carrierExtendRx

RX_DV not asserted, RX_ER asserted and RXD = 0x0F

carrierExtendErrorRx

RX_DV not asserted, RX_ER asserted and RXD = 0x1F

falseCarrierRx

RX_DV not asserted, RX_ER asserted and RXD = 0x0E

dataReceptionErrorRx

Bad frame received (RX_ER asserted when RX_DV asserted)

frameStart

Start of frame transmission/reception

frameEnd

End of frame transmission/reception

txResetDone

Tx BFM reset done

rxResetDone

Rx BFM reset done

Methods

Description

printFrame()

Prints the contents of the frame struct

logMessage()

Outputs a message to stdout based on debugLevel

txReset()

TCM to reset the Tx BFM

preTxHook()

Hook method for any pre-transmission processing

postTxHook()

Hook method for any post-transmission processing

Port Signals

 

Fields

Description

txInvariant()

TCM to check for x�s and z�s on Tx

rxReset()

TCM to reset the Rx BFM

preRxHook()

Hook method for any pre-reception processing

PostRxHook()

Hook method for any post-reception processing

rxInvariant()

TCM to check for x�s and z�s on Rx

 

 

GMII DUT Interface

Signal Name

Direction

Clock Domain

Description

TXD[7:0]

Output

GTX_CLK

Gigabit Transmit Data:  This is a group of 8 signals, which are driven synchronous to GTX_CLK. TXD7 is the most significant bit

TX_EN

Output

GTX_CLK

Transmit Enable: This signal is synchronous to GTX_CLK and provides precise framing for data carried on TXD7-0 for the external PMD. It is asserted when TXD7-0 contains valid data to be transmitted

TX_ER

Output

GTX_CLK

Transmit Error:  This signal is synchronous to GTX_CLK and provides error indications and also is used for carrier extension and packet bursting functions

GTX_CLK

Input

 

GMII Transmit Clock: A continuous clock used for 1000 Mb/s. It is the reference clock for Transmit GMII signaling. The clock frequency is 125 MHz

TX_CLK

Input

 

Transmit Clock: A continuous clock used for MII application. The frequency is 25/2.5 MHz for 100/10 Mb/s operation.

COL

Input

 

Collision Detect: Asserted high to indicate detection of a collision condition (assertion of CRS due to simultaneous transmit and receive activity) in Half Duplex modes. This signal is not synchronous to either MII clock (GTX_CLK, TX_CLK or RX_CLK). This signal is not defined (LOW) for Full Duplex modes

RXD[7:0]

Input

RX_CLK

Gigabit Receive Data: This is a group of 8 signals, sourced from an external PMD, that contains data aligned on byte boundaries and are driven synchronous to RX_CLK. RXD7 is the most significant bit

RX_ER

Input

RX_CLK

Receive Error: Asserted high synchronously by the external PMD whenever it detects a media error

RX_DV

Input

RX_CLK

Receive Data Valid: This indicates that the external PMD is presenting recovered data on the RXD signals, and the RX_CLK is synchronous to the recovered. This signal encompasses the frame, starting with the SFD and excluding any EFD

RX_CLK

Input

 

Receive Clock: A continuous 125MHz clock, sourced by an external PMD device or recovered from the incoming data.

CRS

Input

 

Carrier Sense: Asserted high to indicate the presence of carrier due to receive or transmit activity in Half Duplex mode. For full Duplex operation CRS is asserted only for receive activity

SPEED

Input

 

Speed: Operational frequency specified as

2�b00 � 10 Mbps, 2�b01 � 100 Mbps, 2�b10 � 1000 Mbps, 2�b11 � reserved

TX_EVEN

Input

 

Parity: shows whether the current Txed code group is on even or odd numbered. It is being used to predict the correct numbers of bytes, which are transmitted crossed from the GMII side.


 

Architectural Description

Figure 3 shows the high level architecture of the GMII Verification Component (eVC). The GMII eVC is made up of a Frame Generator, a Frame Monitor, physical transmitters and receivers and coverage groups.

The Frame Generator block keeps track of the number of frames to be sent using the GMII protocol (implemented in DR924_gmiiFrameGenerator.e)

The Physical Tx block generates (on the fly) and transmits these frames across the DUT. Errors can be injected into the frames for transmission to verify the DUTs response to various error conditions (implemented in DR924_gmiiPhysicalTx.e)

The Physical Rx block collects data from the DUT and converts it into frames. Also, this block implements functionality to ensure that there are no protocol errors or timing violations in the received data (implemented in DR924_gmiiPhysicalRx.e)

The Frame monitor block keeps track of the number of frames received, and stores them in a list. These frames can then be compared with the expected data to create a self-checking test (implemented in DR924_gmiiFrameCollector.)

The Coverage block collects cover information both for the interface and the implementation specific items such as state machines.

Pre and post transmission and reception hooks are provided to facilitate any other processing required by the testbench (such as hooking up scoreboards, predictors and checkers in the verification environment.)

The GMII eVC can serve as the interface to a PHY layer device or a MAC layer device. The Rx and Tx clocks are inputs to the eVC, driven from either the RTL or a clock generator block in the test-bench and handled in e as events. For the configuration where the eVC acts as a PHY layer device, the test-bench supplies the Rx clock and the DUT supplies the Tx clock to the eVC (as shown in Figure 1). Likewise, when the eVC acts as a MAC layer device, the test-bench must supply the Tx clock and the RTL the Rx clock to the eVC.

Simulation Core

Intrinsix has developed a GMII to/from SGMII Conversion Core, which uses the SGMII and GMII eVCs for complete module level verification. The GMII to/from SGMII Conversion core is a Verilog component.