OVP Peripheral Model: CadenceGem
Model Specific Information
This page provides introductory usage information for an Imperas OVP peripheral behavioral model.
The page is split into sections providing specific information for this peripheral,
including any ports for connecting into a platform, registers, other component parts, and configuration options and general information for peripheral modeling with Imperas OVP.
Description
Model of Cadence Gigabit Ethernet Controller (GEM). For further details please consult README-EMAC.txt
This model is based upon the data and use in the Xilinx Zynq
Basic network Tx/Rx functionality tested using Xilinx Linux Kernel using wget and other similar tools
Tested with Xilinx SDK Example driver.
Licensing
Open Source Apache 2.0
Limitations
This model is based upon the data from the Xilinx Zynq platform, other registers may not be included.
Does not implement: VLAN, pause frames, filtering or timestamps.
Reference
Zynq-7000 TRM (https://www.xilinx.com/support/documentation/user_guides/ug585-Zynq-7000-TRM.pdf)
Location
The gem peripheral model is located in an Imperas/OVP installation at the VLNV: cadence.ovpworld.org / peripheral / gem / 1.0.
Peripheral Instance Parameters
This model accepts the following parameters:
Table : Peripheral Parameters
Name | Type | Description |
---|
pollDelay | uns32 | Read pollDelay |
outfile | string | Wireshark capture file |
record | string | Record external events into this file |
replay | string | Replay external events from this file |
tapDevice | string | The name of the TAP device |
redir | string | User mode redirection of host port to virtual port (using SLiRP), command format <protocol>:<host port>:<ip address>:<virtual port> |
tftpPrefix | string | Path to the root of the tftp directory. To use tftp, fetch from the host (gw) IP address. |
macaddress | uns64 | The MAC address (hex number) |
macprefix | uns32 | The first two bytes of MAC addresses (hex number) on the VLAN |
network | string | The (v4) IP address of the local network device. |
logfile | string | The file to which Ethernet frames should be logged. Uses pcap file format, viewable by Wireshark and other programs. Do not use if this device is connected to a packetnet |
Net Ports
This model has the following net ports:
Table 1: Net Ports
Name | Type | Must Be Connected | Description |
---|
irq | output | F (False) | IRQ Pin |
Bus Master Ports
This model has the following bus master ports:
Bus Master Port: bport2
Table 2: bport2
Name | Address Width (bits) | Description |
---|
bport2 | 32 | DMA Master Port |
Bus Slave Ports
This model has the following bus slave ports:
Bus Slave Port: bport1
Table 3: Bus Slave Port: bport1
Name | Size (bytes) | Must Be Connected | Description |
---|
bport1 | 0x1000 | T (True) | |
Table 4: Bus Slave Port: bport1 Registers:
Name | Offset | Width (bits) | Description | R/W | is Volatile |
---|
ab_net_ctrl | 0x0 | 32 | Network Control | | |
ab_net_cfg | 0x4 | 32 | Network Configuration | | |
ab_net_status | 0x8 | 32 | Network Status | | |
ab_user_io | 0xc | 32 | User IO (Not in TRM) | | |
ab_dma_cfg | 0x10 | 32 | DMA Configuration | | |
ab_tx_status | 0x14 | 32 | Transmit Status | | |
ab_rx_qbar | 0x18 | 32 | Receive Buffer Queue Base Address | | |
ab_tx_qbar | 0x1c | 32 | Transmit Buffer Queue Base Address | | |
ab_rx_status | 0x20 | 32 | Receive Status | | |
ab_intr_status | 0x24 | 32 | Interrupt Status | | |
ab_intr_en | 0x28 | 32 | Interrupt Enable | | |
ab_intr_dis | 0x2c | 32 | Interrupt Disable | | |
ab_intr_mask | 0x30 | 32 | Interrupt Mask Status | | |
ab_phy_maint | 0x34 | 32 | PHY Maintenance | | |
ab_rx_pauseq | 0x38 | 32 | Received Pause Quantum | | |
ab_tx_pauseq | 0x3c | 32 | Transmit Pause Quantum | | |
ab_gem_jml | 0x48 | 32 | GEM Jumbo Max Length | | |
ab_hash_bot | 0x80 | 32 | Hash Register Bottom [31:0] | | |
ab_hash_top | 0x84 | 32 | Hash Register Top [63:32] | | |
ab_spec_addr1_bot | 0x88 | 32 | Specific Address 1 Bottom [31:0] | | |
ab_spec_addr1_top | 0x8c | 32 | Specific Address 1 Top [47:32] | | |
ab_spec_addr2_bot | 0x90 | 32 | Specific Address 2 Bottom [31:0] | | |
ab_spec_addr2_top | 0x94 | 32 | Specific Address 2 Top [47:32] | | |
ab_spec_addr3_bot | 0x98 | 32 | Specific Address 3 Bottom [31:0] | | |
ab_spec_addr3_top | 0x9c | 32 | Specific Address 3 Top [47:32] | | |
ab_spec_addr4_bot | 0xa0 | 32 | Specific Address 4 Bottom [31:0] | | |
ab_spec_addr4_top | 0xa4 | 32 | Specific Address 4 Top [47:32] | | |
ab_type_id_match1 | 0xa8 | 32 | Type ID Match 1 | | |
ab_type_id_match2 | 0xac | 32 | Type ID Match 2 | | |
ab_type_id_match3 | 0xb0 | 32 | Type ID Match 3 | | |
ab_type_id_match4 | 0xb4 | 32 | Type ID Match 4 | | |
ab_wake_on_lan | 0xb8 | 32 | Wake on LAN Register | | |
ab_ipg_stretch | 0xbc | 32 | IPG stretch register | | |
ab_stacked_vlan | 0xc0 | 32 | Stacked VLAN Register | | |
ab_tx_pfc_pause | 0xc4 | 32 | Transmit PFC Pause Register | | |
ab_spec_addr1_mask_bot | 0xc8 | 32 | Specific Address Mask 1 Bottom [31:0] | | |
ab_spec_addr1_mask_top | 0xcc | 32 | Specific Address Mask 1 Top [47:32] | | |
ab_rx_ptp_uni | 0xd4 | 32 | PTP RX Unicast address (Not in TRM) | | |
ab_tx_ptp_uni | 0xd8 | 32 | PTP TX Unicast address (Not in TRM) | | |
ab_module_id | 0xfc | 32 | Module ID | | |
ab_octets_tx_bot | 0x100 | 32 | Octets transmitted [31:0] (in frames without error) | | |
ab_octets_tx_top | 0x104 | 32 | Octets transmitted [47:32] (in frames without error) | | |
ab_frames_tx | 0x108 | 32 | Frames Transmitted | | |
ab_broadcast_frames_tx | 0x10c | 32 | Broadcast frames Tx | | |
ab_multi_frames_tx | 0x110 | 32 | Multicast frames Tx | | |
ab_pause_frames_tx | 0x114 | 32 | Pause frames Tx | | |
ab_frames_64b_tx | 0x118 | 32 | Frames Tx, 64-byte length | | |
ab_frames_65to127b_tx | 0x11c | 32 | Frames Tx, 65 to 127-byte length | | |
ab_frames_128to255b_tx | 0x120 | 32 | Frames Tx, 128 to 255-byte length | | |
ab_frames_256to511b_tx | 0x124 | 32 | Frames Tx, 256 to 511-byte length | | |
ab_frames_512to1023b_tx | 0x128 | 32 | Frames Tx, 512 to 1023-byte length | | |
ab_frames_1024to1518b_tx | 0x12c | 32 | Frame Tx, 1024 to 1518-byte length | | |
ab_frames_1519bplus_tx | 0x130 | 32 | Frame Tx, 1519+byte length (Not in TRM) | | |
ab_tx_under_runs | 0x134 | 32 | Transmit under runs | | |
ab_single_collisn_frames | 0x138 | 32 | Single Collision Frames | | |
ab_multi_collisn_frames | 0x13c | 32 | Multiple Collision Frames | | |
ab_excessive_collisns | 0x140 | 32 | Excessive Collisions | | |
ab_late_collisns | 0x144 | 32 | Late Collisions | | |
ab_deferred_tx_frames | 0x148 | 32 | Deferred Transmission Frames | | |
ab_carrier_sense_errs | 0x14c | 32 | Carrier Sense Errors. | | |
ab_octets_rx_bot | 0x150 | 32 | Octets Received [31:0] | | |
ab_octets_rx_top | 0x154 | 32 | Octets Received [47:32] | | |
ab_frames_rx | 0x158 | 32 | Frames Received | | |
ab_bdcast_frames_rx | 0x15c | 32 | Broadcast Frames Rx | | |
ab_multi_frames_rx | 0x160 | 32 | Multicast Frames Rx | | |
ab_pause_rx | 0x164 | 32 | Pause Frames Rx | | |
ab_frames_64b_rx | 0x168 | 32 | Frames Rx, 64-byte length | | |
ab_frames_65to127b_rx | 0x16c | 32 | Frames Rx, 65 to 127-byte length | | |
ab_frames_128to255b_rx | 0x170 | 32 | Frames Rx, 128 to 255-byte length | | |
ab_frames_256to511b_rx | 0x174 | 32 | Frames Rx, 256 to 511-byte length | | |
ab_frames_512to1023b_rx | 0x178 | 32 | Frames Rx, 512 to 1023-byte length | | |
ab_frames_1024to1518b_rx | 0x17c | 32 | Frames Rx, 1024 to 1518-byte length | | |
ab_frames_1519bplus_rx | 0x180 | 32 | Frames Rx, 1519+byte length (Not in TRM) | | |
ab_undersz_rx | 0x184 | 32 | Undersize frames received | | |
ab_oversz_rx | 0x188 | 32 | Oversize frames received | | |
ab_jab_rx | 0x18c | 32 | Jabbers received | | |
ab_fcs_errors | 0x190 | 32 | Frame check sequence errors | | |
ab_length_field_errors | 0x194 | 32 | Length field frame errors | | |
ab_rx_symbol_errors | 0x198 | 32 | Receive symbol errors | | |
ab_align_errors | 0x19c | 32 | Alignment errors | | |
ab_rx_resource_errors | 0x1a0 | 32 | Receive resource errors | | |
ab_rx_overrun_errors | 0x1a4 | 32 | Receive overrun errors | | |
ab_ip_hdr_csum_errors | 0x1a8 | 32 | IP header checksum errors | | |
ab_tcp_csum_errors | 0x1ac | 32 | TCP checksum errors | | |
ab_udp_csum_errors | 0x1b0 | 32 | UDP checksum error | | |
ab_timer_strobe_s | 0x1c8 | 32 | 1588 timer sync strobe seconds | | |
ab_timer_strobe_ns | 0x1cc | 32 | 1588 timer sync strobe nanoseconds | | |
ab_timer_s | 0x1d0 | 32 | 1588 timer seconds | | |
ab_timer_ns | 0x1d4 | 32 | 1588 timer nanoseconds | | |
ab_timer_adjust | 0x1d8 | 32 | 1588 timer adjust | | |
ab_timer_incr | 0x1dc | 32 | 1588 timer increment | | |
ab_ptp_tx_s | 0x1e0 | 32 | PTP event frame transmitted seconds | | |
ab_ptp_tx_ns | 0x1e4 | 32 | PTP event frame transmitted nanoseconds | | |
ab_ptp_rx_s | 0x1e8 | 32 | PTP event frame received seconds | | |
ab_ptp_rx_ns | 0x1ec | 32 | PTP event frame received nanoseconds. | | |
ab_ptp_peer_tx_s | 0x1f0 | 32 | PTP peer event frame transmitted seconds | | |
ab_ptp_peer_tx_ns | 0x1f4 | 32 | PTP peer event frame transmitted nanoseconds | | |
ab_ptp_peer_rx_s | 0x1f8 | 32 | PTP peer event frame received seconds | | |
ab_ptp_peer_rx_ns | 0x1fc | 32 | PTP peer event frame received nanoseconds. | | |
ab_design_cfg1 | 0x280 | 32 | Design Configuration 1 (Not in TRM) | | |
ab_design_cfg2 | 0x284 | 32 | Design Configuration 2 | | |
ab_design_cfg3 | 0x288 | 32 | Design Configuration 3 | | |
ab_design_cfg4 | 0x28c | 32 | Design Configuration 4 | | |
ab_design_cfg5 | 0x290 | 32 | Design Configuration 5 | | |
ab_design_cfg6 | 0x294 | 32 | Design Configuration 6 (Not in TRM) | | |
ab_tx_bd_cntrl | 0x4cc | 32 | TX descriptor control (Not in TRM) | | |
ab_rx_bd_cntrl | 0x4d0 | 32 | RX descriptor control (Not in TRM) | | |
Bus Slave Port: phyport
Table 5: Bus Slave Port: phyport
Name | Size (bytes) | Must Be Connected | Description |
---|
phyport | 0x100 | F (False) | |
Table 6: Bus Slave Port: phyport Registers:
Name | Offset | Width (bits) | Description | R/W | is Volatile |
---|
ab_MII_BMCR | 0x0 | 16 | Basic mode control register | | |
ab_MII_BMSR | 0x2 | 16 | Basic mode status register | | |
ab_MII_PHYSID1 | 0x4 | 16 | PHYS ID 1 | | |
ab_MII_PHYSID2 | 0x6 | 16 | PHYS ID 2 | | |
ab_MII_ADVERTISE | 0x8 | 16 | Advertisement control reg | | |
ab_MII_LPA | 0xa | 16 | Link partner ability reg | | |
ab_MII_EXPANSION | 0xc | 16 | Expansion register | | |
ab_MII_DUMMY1 | 0xe | 16 | Dummy | | |
ab_MII_DUMMY2 | 0x10 | 16 | Dummy | | |
ab_MII_CTRL1000 | 0x12 | 16 | 1000BASE-T control | | |
ab_MII_STAT1000 | 0x14 | 16 | 1000BASE-T status | | |
ab_MII_DUMMY3 | 0x16 | 16 | Dummy | | |
ab_MII_DUMMY4 | 0x18 | 16 | Dummy | | |
ab_MII_MMD_CTRL | 0x1a | 16 | MMD Access Control Register | | |
ab_MII_MMD_DATA | 0x1c | 16 | MMD Access Data Register | | |
ab_MII_ESTATUS | 0x1e | 16 | Extended Status | | |
ab_MII_DUMMY5 | 0x20 | 16 | Dummy | | |
ab_MII_STS | 0x22 | 16 | Status | | |
ab_MII_DCOUNTER | 0x24 | 16 | Disconnect counter | | |
ab_MII_FCSCOUNTER | 0x26 | 16 | False carrier counter | | |
ab_MII_NWAYTEST | 0x28 | 16 | N-way auto-neg test reg | | |
ab_MII_RERRCOUNTER | 0x2a | 16 | Receive error counter | | |
ab_MII_SREVISION | 0x2c | 16 | Silicon revision | | |
ab_MII_LBRERROR | 0x30 | 16 | Lpback, rx, bypass error | | |
ab_MII_PHYADDR | 0x32 | 16 | PHY address | | |
ab_MII_TPISTATUS | 0x36 | 16 | TPI status for 10mbps | | |
ab_MII_NCONFIG | 0x38 | 16 | Network interface config | | |
Packetnet Ports
This model has the following packetnet ports:
Packetnet Port: phy
Table 7: phy
Name | Maximum Packet Size (bytes) | Must Be Connected | Description |
---|
phy | 1524 | F (False) | The port to connect the packetnet virtual network |
Platforms that use this peripheral component
Peripheral components can be used in many different platforms, including those developed by Imperas or by other users of OVP. You can use this peripheral in your own platforms.
Table 8: Publicly available platforms using peripheral 'gem'