GRLIB GRETH Model
The GRETH model is available in the GrEth plugin. The model needs to be combined with a MDIOBus, PHY and Ethernet model.
The GRETH model implements the behaviour of both GRETH and GRETH_GBIT.
Loading the Plugin
import BusModels
import GrEth
GRETH.new name=greth0
GenericPHY.new name=phy0
EthernetLink.new name=eth0
connect a=greth0.phy b=phy0:PHYIface
connect a=greth0.mdioBus b=phy0:MDIOIface
connect a=apbctrl0.slaves b=greth0:ApbIface
greth0.setMAC mac="00:00:00:00:00:01"
connect a=phy0.mac b=greth0:MACIface
eth0.connect device=phy0:PHYIface
Configuration
The config.gbitVariant property can be set to enable GRETH_GBIT extensions.
The extensions includes:
-
Gigabit speed.
-
IP header checksum offloading.
-
TCP checksum offloading.
-
UDP checksum offloading.
-
Scatter / gather send lists.
@GRETH Reference
Properties
| Name | Type | Description |
|---|---|---|
Class |
*void |
Class object |
Component |
*void |
Pointer to component object if part of component |
LocalName |
*char |
Local name (in component, if applicable) |
LogMessageFlags |
uint64_t |
Per-object log message suppression flags |
LoggingFlags |
uint64_t |
Flags for logging info |
Name |
*char |
Object name |
ObjectID |
uint64_t |
Unique ObjectID. |
ReplayLoggingFlags |
uint64_t |
Replay-time category logging flags |
TimeSource |
*void |
Time source object |
GRETH Reference
Properties
| Name | Type | Description |
|---|---|---|
CTRLColdResetValue |
uint32_t |
Control register |
CTRLForcedBits |
uint32_t |
Control register |
CTRLForcedFlippedBits |
uint32_t |
Control register |
CTRLReadMask |
uint32_t |
Control register |
CTRLResetMask |
uint32_t |
Control register |
CTRLResetValue |
uint32_t |
Control register |
CTRLWriteMask |
uint32_t |
Control register |
Class |
*void |
Class object |
Component |
*void |
Pointer to component object if part of component |
EDCLIP |
uint32_t |
EDCL IP register |
EDCLIPColdResetValue |
uint32_t |
EDCL IP register |
EDCLIPForcedBits |
uint32_t |
EDCL IP register |
EDCLIPForcedFlippedBits |
uint32_t |
EDCL IP register |
EDCLIPReadMask |
uint32_t |
EDCL IP register |
EDCLIPResetMask |
uint32_t |
EDCL IP register |
EDCLIPResetValue |
uint32_t |
EDCL IP register |
EDCLIPWriteMask |
uint32_t |
EDCL IP register |
EMACLSB |
uint32_t |
EDCL MAC address LSB register |
EMACLSBColdResetValue |
uint32_t |
EDCL MAC address LSB register |
EMACLSBForcedBits |
uint32_t |
EDCL MAC address LSB register |
EMACLSBForcedFlippedBits |
uint32_t |
EDCL MAC address LSB register |
EMACLSBReadMask |
uint32_t |
EDCL MAC address LSB register |
EMACLSBResetMask |
uint32_t |
EDCL MAC address LSB register |
EMACLSBResetValue |
uint32_t |
EDCL MAC address LSB register |
EMACLSBWriteMask |
uint32_t |
EDCL MAC address LSB register |
EMACMSB |
uint32_t |
EDCL MAC address MSB register |
EMACMSBColdResetValue |
uint32_t |
EDCL MAC address MSB register |
EMACMSBForcedBits |
uint32_t |
EDCL MAC address MSB register |
EMACMSBForcedFlippedBits |
uint32_t |
EDCL MAC address MSB register |
EMACMSBReadMask |
uint32_t |
EDCL MAC address MSB register |
EMACMSBResetMask |
uint32_t |
EDCL MAC address MSB register |
EMACMSBResetValue |
uint32_t |
EDCL MAC address MSB register |
EMACMSBWriteMask |
uint32_t |
EDCL MAC address MSB register |
ETHCTR |
uint32_t |
Control register |
ETHMDC |
uint32_t |
MDIO control and status register |
ETHRDP |
uint32_t |
Receiver descriptor base address register |
ETHSIS |
uint32_t |
Status register |
ETHTDP |
uint32_t |
Transmitter descriptor base address register |
HLSB |
uint32_t |
Hash table LSB register |
HLSBColdResetValue |
uint32_t |
Hash table LSB register |
HLSBForcedBits |
uint32_t |
Hash table LSB register |
HLSBForcedFlippedBits |
uint32_t |
Hash table LSB register |
HLSBReadMask |
uint32_t |
Hash table LSB register |
HLSBResetMask |
uint32_t |
Hash table LSB register |
HLSBResetValue |
uint32_t |
Hash table LSB register |
HLSBWriteMask |
uint32_t |
Hash table LSB register |
HMSB |
uint32_t |
Hash table MSB register |
HMSBColdResetValue |
uint32_t |
Hash table MSB register |
HMSBForcedBits |
uint32_t |
Hash table MSB register |
HMSBForcedFlippedBits |
uint32_t |
Hash table MSB register |
HMSBReadMask |
uint32_t |
Hash table MSB register |
HMSBResetMask |
uint32_t |
Hash table MSB register |
HMSBResetValue |
uint32_t |
Hash table MSB register |
HMSBWriteMask |
uint32_t |
Hash table MSB register |
LocalName |
*char |
Local name (in component, if applicable) |
LogMessageFlags |
uint64_t |
Per-object log message suppression flags |
LoggingFlags |
uint64_t |
Flags for logging info |
MACLSB |
uint32_t |
MAC address LSB register |
MACLSBColdResetValue |
uint32_t |
MAC address LSB register |
MACLSBForcedBits |
uint32_t |
MAC address LSB register |
MACLSBForcedFlippedBits |
uint32_t |
MAC address LSB register |
MACLSBReadMask |
uint32_t |
MAC address LSB register |
MACLSBResetMask |
uint32_t |
MAC address LSB register |
MACLSBResetValue |
uint32_t |
MAC address LSB register |
MACLSBWriteMask |
uint32_t |
MAC address LSB register |
MACMSB |
uint32_t |
MAC address MSB register |
MACMSBColdResetValue |
uint32_t |
MAC address MSB register |
MACMSBForcedBits |
uint32_t |
MAC address MSB register |
MACMSBForcedFlippedBits |
uint32_t |
MAC address MSB register |
MACMSBReadMask |
uint32_t |
MAC address MSB register |
MACMSBResetMask |
uint32_t |
MAC address MSB register |
MACMSBResetValue |
uint32_t |
MAC address MSB register |
MACMSBWriteMask |
uint32_t |
MAC address MSB register |
MDIOColdResetValue |
uint32_t |
MDIO control and status register |
MDIOForcedBits |
uint32_t |
MDIO control and status register |
MDIOForcedFlippedBits |
uint32_t |
MDIO control and status register |
MDIOReadMask |
uint32_t |
MDIO control and status register |
MDIOResetMask |
uint32_t |
MDIO control and status register |
MDIOResetValue |
uint32_t |
MDIO control and status register |
MDIOWriteMask |
uint32_t |
MDIO control and status register |
Name |
*char |
Object name |
ObjectID |
uint64_t |
Unique ObjectID. |
RXBASEColdResetValue |
uint32_t |
Receiver descriptor base address register |
RXBASEForcedBits |
uint32_t |
Receiver descriptor base address register |
RXBASEForcedFlippedBits |
uint32_t |
Receiver descriptor base address register |
RXBASEReadMask |
uint32_t |
Receiver descriptor base address register |
RXBASEResetMask |
uint32_t |
Receiver descriptor base address register |
RXBASEResetValue |
uint32_t |
Receiver descriptor base address register |
RXBASEWriteMask |
uint32_t |
Receiver descriptor base address register |
ReplayLoggingFlags |
uint64_t |
Replay-time category logging flags |
STATColdResetValue |
uint32_t |
Status register |
STATForcedBits |
uint32_t |
Status register |
STATForcedFlippedBits |
uint32_t |
Status register |
STATReadMask |
uint32_t |
Status register |
STATResetMask |
uint32_t |
Status register |
STATResetValue |
uint32_t |
Status register |
STATWriteMask |
uint32_t |
Status register |
TXBASEColdResetValue |
uint32_t |
Transmitter descriptor base address register |
TXBASEForcedBits |
uint32_t |
Transmitter descriptor base address register |
TXBASEForcedFlippedBits |
uint32_t |
Transmitter descriptor base address register |
TXBASEReadMask |
uint32_t |
Transmitter descriptor base address register |
TXBASEResetMask |
uint32_t |
Transmitter descriptor base address register |
TXBASEResetValue |
uint32_t |
Transmitter descriptor base address register |
TXBASEWriteMask |
uint32_t |
Transmitter descriptor base address register |
TimeSource |
*void |
Time source object |
config.checkCrc |
uint8_t |
Enable ethernet frame CRC checking. |
config.checkIpCrc |
uint8_t |
Enable IP header CRC checking. |
config.checkTcpCrc |
uint8_t |
Enable TCP header CRC checking. |
config.checkUdpCrc |
uint8_t |
Enable UDP header CRC checking. |
config.gbitVariant |
uint8_t |
Enable GRETH_GBIT behaviour. |
config.generateCrc |
uint8_t |
Enable ethernet frame CRC generation. |
config.irq |
uint8_t |
IRQ |
config.littleEndian |
uint8_t |
Endianess of memory interface. |
config.logTraffic |
uint8_t |
Enable traffic logging |
irqCtrl |
temu_IfaceRef/ <unknown> |
IRQ controller. |
mac |
*char |
Set MAC by string |
mdioBus |
temu_IfaceRef/ <unknown> |
MDIO bus. |
memAccess |
temu_IfaceRef/ <unknown> |
Memory access (for DMA). |
phy |
temu_IfaceRef/ <unknown> |
PHY device. |
Interfaces
| Name | Type | Description |
|---|---|---|
ApbIface |
ApbIface |
APB P&P interface |
DeviceIface |
DeviceIface |
|
MACIface |
temu::MACIface |
MAC interface |
MemAccessIface |
MemAccessIface |
Mem access interface |
RegisterIface |
temu::RegisterIface |
Auto-generated Register Interface Impl. |
ResetIface |
ResetIface |
Registers
| Register support is currently experimental! |
Register Bank Regs
Register CTRL
- Description
-
Control register
- Reset value
-
0x00000000
- Warm reset mask
-
0xfe007fff
| Field | Mask | Reset | Description |
|---|---|---|---|
EA |
|
|
EDCL available |
BS |
|
|
EDCL buffer size |
GA |
|
|
Gigabit MAC available |
MA |
|
|
MDIO interrupts supported |
MC |
|
|
Multicast available |
ED |
|
|
EDCL disable |
RD |
|
|
RAM debug enable |
DD |
|
|
Disable duplex detection |
ME |
|
|
Multicast enable |
PI |
|
|
PHY status change interrupt enable |
BM |
|
|
Burst mode |
GB |
|
|
Gigabit speed mode |
SP |
|
|
Speed |
RS |
|
|
Reset |
PM |
|
|
Promiscuous mode |
FD |
|
|
Full duplex |
RI |
|
|
Receiver interrupt enable |
TI |
|
|
Transmitter interrupt enable |
RE |
|
|
Receive enable |
TE |
|
|
Transmit enable |
Register STAT
- Description
-
Status register
- Reset value
-
0x00000000
- Warm reset mask
-
0x00000000
| Field | Mask | Reset | Description |
|---|---|---|---|
PS |
|
|
PHY status changes |
IA |
|
|
Invalid address |
TS |
|
|
Too small |
TA |
|
|
Transmitter AHB error |
RA |
|
|
Receiver AHB error |
TI |
|
|
Transmit successful |
RI |
|
|
Receive successful |
TE |
|
|
Transmitter error |
RE |
|
|
Receiver error |
Register MACMSB
- Description
-
MAC address MSB register
- Reset value
-
0x00000000
- Warm reset mask
-
0x0000ffff
| Field | Mask | Reset | Description |
|---|---|---|---|
MSB |
|
|
Two most significant bytes of the MAC address |
Register MACLSB
- Description
-
MAC address LSB register
- Reset value
-
0x00000000
- Warm reset mask
-
0xffffffff
| Field | Mask | Reset | Description |
|---|---|---|---|
LSB |
|
|
Four least significant bytes of the MAC address |
Register MDIO
- Description
-
MDIO control and status register
- Reset value
-
0x00000000
- Warm reset mask
-
0xffffffcf
| Field | Mask | Reset | Description |
|---|---|---|---|
DATA |
|
|
Data |
PHYADDR |
|
|
PHY address |
REGADDR |
|
|
Register address |
BU |
|
|
Busy |
LF |
|
|
Link fail |
RD |
|
|
Read |
WR |
|
|
Write |
Register TXBASE
- Description
-
Transmitter descriptor base address register
- Reset value
-
0x00000000
- Warm reset mask
-
0xfffffff8
| Field | Mask | Reset | Description |
|---|---|---|---|
BASEADDR |
|
|
Transmitter descriptor table base address |
DESCPNT |
|
|
Descriptor pointer |
Register RXBASE
- Description
-
Receiver descriptor base address register
- Reset value
-
0x00000000
- Warm reset mask
-
0xfffffff8
| Field | Mask | Reset | Description |
|---|---|---|---|
BASEADDR |
|
|
Receiver descriptor table base address |
DESCPNT |
|
|
Descriptor pointer |
Register EDCLIP
- Description
-
EDCL IP register
- Reset value
-
0x00000000
- Warm reset mask
-
0xffffffff
| Field | Mask | Reset | Description |
|---|---|---|---|
IP |
|
|
EDCL IP address |
Register HMSB
- Description
-
Hash table MSB register
- Reset value
-
0x00000000
- Warm reset mask
-
0xffffffff
| Field | Mask | Reset | Description |
|---|---|---|---|
HASH |
|
|
Hash table MSB |
Register HLSB
- Description
-
Hash table LSB register
- Reset value
-
0x00000000
- Warm reset mask
-
0xffffffff
| Field | Mask | Reset | Description |
|---|---|---|---|
HASH |
|
|
Hash table LSB |