SparX-5 Family L2L3 Enterprise 10G Ethernet Switches Datasheet 00003822B
SparX-5 Family L2L3 Enterprise 10G Ethernet Switches Datasheet 00003822B
Introduction
The SparX-5 Enterprise Ethernet switch family provides a rich set of Enterprise switching features such as advanced
TCAM-based VLAN and QoS processing enabling delivery of differentiated services, and security through TCAM-
based frame processing using versatile content aware processor (VCAP). IPv4/IPv6 Layer 3 (L3) unicast and
multicast routing is supported with up to 18K IPv4/9K IPv6 unicast LPM entries and up to 9K IPv4/3K IPv6 (S,G)
multicast groups. L3 security features include source guard and reverse path forwarding (uRPF) tasks. Additional L3
features include VRF-Lite and IP tunnels (IP over GRE/IP).
The SparX-5 switch family features a highly flexible set of Ethernet ports with support for 10G aggregation links,
QSGMII, USGMII, and USXGMII.
® ®
The device integrates a powerful 1 GHz dual-core ARM Cortex -A53 CPU enabling full management of the switch
and advanced Enterprise applications.
The SparX-5 switch family targets managed Layer 2 and Layer 3 equipment in SMB, SME, and Enterprise where
high port count 1G/2.5G/5G/10G switching with 10G aggregation links is required.
The SparX-5 switch family consists of following SKUs.
VSC7546 SparX-5-64 supports up to 64 Gbps of bandwidth with the following primary port configurations.
• 6 ×10G
• 16 × 2.5G + 2 × 10G
• 24 × 1G + 4 × 10G
VSC7549 SparX-5-90 supports up to 90 Gbps of bandwidth with the following primary port configurations.
• 9 × 10G
• 16 × 2.5G + 4 × 10G
• 48 × 1G + 4 × 10G
In addition, the device supports one 10/100/1000/2500/5000 Mbps SGMII/SerDes node processor interface (NPI)
Ethernet port.
Features
This section lists the key device features and benefits.
• Layer 2 and Layer 3 Forwarding
®
– IEEE 802.1Q switch with 4K VLANs and 32K MAC table entries
– Push/pop/translate up to three VLAN tags on ingress and egress
– RSTP and MSTP support
– Fully nonblocking wire-speed switching performance for all frame sizes
– Link aggregation and DRNI per IEEE 802.1AX
– External bridge port extender role per IEEE 802.1BR
– IPv4/IPv6 unicast and multicast Layer 2 switching with up to 32K groups and 2K port masks
– IPv4/IPv6 unicast and multicast Layer 3 forwarding (routing) with reverse path forwarding (RPF) support
– IGMPv2, IGMPv3, MLDv1, and MLDv2 support
– IPv4 tunnels including GRE, 6to4, 6rd, 6over4, ISATAP, and 6in4
– Energy Efficient Ethernet (EEE) (IEEE 802.3az)
• Quality of Service
– Four megabytes of integrated shared packet memory
– Two megabytes of integrated shared packet memory
– Eight QoS classes with a pool of up to 32K queues
– TCAM-based classification with pattern matching against Layer 2 through Layer 4 information
– Dual-rate policers selected by VCAP IS2, eight dual-rate priority policers per port, and four single-rate port
policers for each port
– Flexible 4K ingress QoS mappings and 8K egress QoS mappings for VLAN tags and DSCP values
– 4K egress VLAN tag operations
– Low latency cut-through forwarding mode
– Priority-based flow control (PFC) (IEEE 802.1Qbb)
• Security
– Versatile content aware processor (VCAP™) packet filtering engine using ACLs for ingress and egress
packet inspection with four ingress lookups per frame and two egress lookups per egress frame copy
– Hierarchical VLAN ACLs and router ACLs
– Storm controllers for flooded broadcast, flooded multicast, and flooded unicast traffic
– Per-port, per-address registration for copying/redirecting/discarding
– 64 single-rate policers for ingress ACLs
– 64 single-rate policers for egress ACLs
• Management
– VCore-IV™ CPU system with integrated dual-core 1 GHz ARM Cortex-A53 CPU with MMU and DDR3/
DDR4 SDRAM controller
– Integrated ARM Cortex-M3 CPU core for dedicated PCIe bootup and POE management.
– PCIe 1.x/2.0/3.0 CPU interface
– CPU frame extraction (eight queues) and injection (two queues) through DMA, which enables efficient data
transfer between Ethernet ports and CPU/PCIe
– JTAG CPU debug interface
– Configurable 32-bit data plus 8-bit ECC-capable DDR3/DDR4 SDRAM interface supporting up to eight
gigabytes (GB) of memory
– eMMC flash interface
– Sixty-four pin-shared general-purpose I/Os:
• Serial GPIO and two LED controllers controlling up to 32 ports with four LEDs each
• Triple PHY management controller (MIIM)
• Dual UART
• Dual built-in two wire serial interface multiplexer
• External interrupts
• SFP loss of signal inputs
– External access to registers through PCIe, SPI, MIIM, or through an Ethernet port with inline versatile
register access protocol (VRAP)
– Per-port counter set with support for the RMON statistics group (RFC 2819) and SNMP interfaces group
(RFC 2863)
– Support for CPU modes with internal CPU only, external CPU only, or dual CPU
• Applications
– Enterprise L2 managed and L2/L3 (L3-Lite) managed
– Enterprise edge
– WiFi aggregation
– High-end SMB/net café
– Embedded and control plane switches
– Security appliances
– Base stations and baseband processor interconnect
– Service provider CPEs
Table of Contents
Introduction.....................................................................................................................................................1
Features.................................................................................................................................................. 1
1. Port Configurations................................................................................................................................. 7
2. Product Parameters................................................................................................................................ 8
3. Functional Overview..............................................................................................................................10
3.1. Frame Arrival in Ports and Port Modules................................................................................... 12
3.2. Basic Classification.................................................................................................................... 13
3.3. Enterprise Ethernet Flows.......................................................................................................... 13
3.4. Security and Control Protocol Classification.............................................................................. 14
3.5. Policing.......................................................................................................................................14
3.6. Layer 2 Forwarding.................................................................................................................... 15
3.7. Layer 3 Forwarding.................................................................................................................... 16
3.8. Shared Queue System and Hierarchical Scheduler...................................................................17
3.9. Egress Security Classification.................................................................................................... 18
3.10. Rewriter and Frame Departure...................................................................................................18
3.11. CPU Port Module....................................................................................................................... 19
3.12. CPU Subsystem......................................................................................................................... 19
4. Functional Descriptions.........................................................................................................................20
4.1. Register Notations......................................................................................................................20
4.2. Frame Headers.......................................................................................................................... 21
4.3. Port Numbering and Mappings...................................................................................................33
4.4. SERDES.....................................................................................................................................44
4.5. DEV2G5 Port Module.................................................................................................................46
4.6. DEV5G Port Module...................................................................................................................55
4.7. DEV10G Port Module.................................................................................................................67
4.8. DEV25G Port Module.................................................................................................................79
4.9. Assembler.................................................................................................................................. 91
4.10. Versatile Content-Aware Processor (VCAP™)........................................................................... 95
4.11. Pipeline Points..........................................................................................................................110
4.12. Analyzer....................................................................................................................................114
4.13. VCAP CLM Keys and Actions.................................................................................................. 114
4.14. Analyzer Classifier....................................................................................................................167
4.15. VLAN and MSTP...................................................................................................................... 193
4.16. VCAP IP6PFX: Keys and Action.............................................................................................. 199
4.17. VCAP LPM: Keys and Action................................................................................................... 200
4.18. IP Processing........................................................................................................................... 204
4.19. VCAP IS2 Keys and Actions.................................................................................................... 225
4.20. Analyzer Access Control Lists..................................................................................................238
4.21. Analyzer Layer 2 Forwarding and Learning............................................................................. 250
4.22. Analyzer Access Control Forwarding, Policing, and Statistics................................................. 266
4.23. Leaky Bucket for SDLB............................................................................................................ 294
4.24. VCAP ES2 Keys and Actions................................................................................................... 305
4.25. Egress Access Control Lists.....................................................................................................313
6. Registers............................................................................................................................................. 529
Trademarks................................................................................................................................................ 603
1. Port Configurations
The SparX-5 device supports the following main port configurations.
Table 1-1. Main Port Configurations
24 x 1G + 4 x 10G x x
48 x 1G + 4 x 10G x
8 x 2.5G + 2 x 10G x x
8 x 2.5G + 4 x 10G x x
16 x 2.5G + 4 x 10G x
8 x 5G + 4 x 10G x
48 x 1G + 8 x 10G
8 x 10G x
2. Product Parameters
All SerDes, packet memory, and configuration tables necessary to support network applications are integrated. The
following table lists the primary parameters for the device.
Table 2-1. Product Parameters
SerDes5G lanes 12 12
SerDes10G lanes 12 12
SerDes25G lanes 8 8
Layer 2 Switching
Packet buffer 32 Mb 32 Mb
VCAP IS2 entries (312 bits) per super VCAP block 512 512
...........continued
Features and Port Configurations VSC7546 VSC7549
Layer 3 Routing
IP unicast routes/hosts per super VCAP block allocated to VCAP IPv4: 3K IPv4: 3K
LPM for unicast routing (64-bit DIP for IPv6)
IPv6: 1.5K IPv6: 1.5K
IP (S,G) or (*, G) multicast groups per super VCAP block allocated to IPv4: 1.5 IPv4: 1.5
VCAP LPM for multicast routing
IPv6: 512 IPv6: 512
ECMPs 16 16
VRF-Lite instances 64 64
Ingress security enforcement (ACL) rules (312 bits) per super VCAP 512 512
block allocated to VCAP IS2
3. Functional Overview
This section provides an overview of all the major blocks and functions involved in the forwarding operation in the
same order as a frame traverses through the device. It also outlines other major functionality of the device, such as
the CPU subsystem.
The following figure shows the VSC7549 block diagram. The block diagrams for VSC7546 is identical, except for the
port module configurations.
Watch Dog
Timers
Timer
ARM
An al yzer Rewrit er Cortex-M3
Ingress Processi ng Egress Proc es sing
SI Slave MIIM Sl ave
2
MIIM MIIM
Forwarding L2/L3 Egress VCAP Lookup 4
PCIe PCIE
Arrival Stat s 8
JTAG JTAG
Policing Frame Edit ing: 4
VLAN tags SI SI
(Port, QoS, flow, ACL)
DSCP 40
L2 /L3/L4 DDR3/DDR4 Memory Controller DDR
Ingress ACLs
GPIO: 64
Ingress Cl ass ification LE D, Serial GPIO, UART, LOS GPIO
(VLAN and QoS Mappi ng) Departure Stats
TWI, IRQ, MIIM, fan cont roller
Frame bus
x65 x19 x9
1G/2.5G Port Modules 5G Port Modules (+NPI) 10G Port Modules
I/O Muxing
S12_RXP
S12_RXN
S12_TXP
S12_TXN
S13_RXP
S13_RXN
S13_TXP
S13_TXN
S24_RXP
S24_RXN
S24_TXP
S24_TXN
S25_RXP
S25_RXN
S25_TXP
S25_TXN
S32_RXP
S32_RXN
S32_TXP
S32_TXN
• 10G backplane Ethernet 10GBASE-KR (serial backplane) is fully supported, including autonegotiation, training,
and 10GBASE-KR FEC.
• When used with external devices capable of WAN-PHY (10GBASE-W) operation, the 10G line ports support
pacing operation as specified for 10GBASE-W operation.
Interface
Interface
Virtual
Virtual
Physical Port
Physical Port
ES0 and ES2 Classification
Scheduling/Shaping
CLM Classification
IS2 Classification
Egress Mapping
Ingress Policing
Egress Policing
Logical Port
Logical Port
Forwarding
Rewriting
Queuing
Interface
Interface
Virtual
Virtual
Physical Port
Physical Port
Interface
Interface
Virtual
Virtual
Stats
Stats
Stats
Stats
Stats
Stats
Stats
DSP
ASP
ES2
Port
Port
IS2
QS
FRAME FLOW
3.5 Policing
Each frame is subject to one or more of the following policing operations.
• Dual-rate flow policers: Flow classification selects which flow policer to use.
• Dual-rate bundle policers: Flow classification selects which bundle policer to use. Bundle policers are placed
immediately after the flow policers and can police one or more flows.
• Single-rate priority policers: Ingress port number and QoS class determine which policer to use.
• Single-rate port policers: Ingress port number determines which policer to use.
• VCAP single-rate policers: IS2 action selects which VCAP single-rate policer to use.
• Single-rate global storm policers: Frame characteristics, such as broadcast, unicast, multicast (BUM), or learn-
frame, select which policer to use.
• Single-rate per-flow broadcast, unicast, and multicast (BUM) policers for flooded frames. Flow classification and
destination MAC address select which policer to use.
Policers can measure frame rates (frames per second) or bit rates (bits per second). Frames classified to a flow can
trigger the following policers.
• One single-rate BUM policer
• One dual-rate flow policer
• One dual-rate bundle policer
• One single-rate VCAP policer
• Four single-rate port policers
• Eight single-rate storm policers
Frames not classified to a flow can trigger the following policers:
• One single-rate BUM policer
• One dual-rate priority policer or one dual-rate VCAP policer
• One dual-rate port policer
• One single-rate VCAP policer
• Four single-rate port policers
• Eight single-rate storm policers
Dual-rate policers support both color-blind and color-aware operation. The initial frame color is derived from the drop
precedence level from the frame classification. The MEF coupling mode is also configurable for each policer.
Dual-rate policers ensure service level agreement (SLA) compliance. The outcome of this policing operation is to
mark each accepted frame as in-profile (green) or out-of-profile (yellow). Yellow frames are treated as excess or
discard-eligible and green frames are committed. Frames that exceed the yellow/excess limits are discarded (red).
Each frame is counted in associated statistics counters reflecting the flow and the frame’s color (green, yellow, red).
The statistics counters count bytes and frames.
The four single-rate port policers and eight single-rate storm policers can be programmed to limit different types of
traffic such as CPU-forwarded frames, learn frames, known or unknown unicast, multicast, or broadcast.
• Learning—by default, the device performs hardware learning on all ports. However, certain ports could be
configured with secure learning enabled, where an incoming frame with unknown source MAC address is
classified as a “learn frame” and is redirected to the CPU. The CPU performs the learning decision and also
decides whether the frame is forwarded.
• Learning can also be disabled. If learning is disabled, it does not matter if the source MAC address is in the
MAC table.
• Link Aggregation—a frame targeted to a link aggregate is processed to determine which physical port of the
link aggregate group the frame must be forwarded to. The device supports hash-based load-balancing based on
Layer 2 - 4 frame protocol fields as well as conversation sensitive distribution based on the frame’s outer VID.
• Mirroring—mirror probes may be set up in different places in the forwarding path for monitoring purposes. As
part mirroring, a copy of the frame is sent either to the CPU or to another port.
• GRE/mGRE tunnel
• 6to4 (RFC3056)
• 6rd (RFC5569)
• 6over4 (RFC2529)
• ISATAP (RFC5214)
• 6in4 (RFC4213)
GRE tunnels can be used with or without GRE checksums. The GRE checksum is checked for arrival frames prior to
transparent operation or tunnel decapsulation. GRE tunnel encapsulations performed by the device do not use GRE
checksums.
Virtual routing over Ethernet (VRF-Lite) is supported with up to 64 virtual routers. Each virtual router uses its own set
of LPM entries for forwarding. Classification to a virtual router instance is performed in VCAP CLM.
Scheduling between QoS classes within the port can use one of the three following methods.
• Strict priority scheduling—frames with the highest QoS class are always transmitted before frames with lower
QoS class.
• Deficit weighted round robin (DWRR) scheduling—each QoS class serviced using DWRR sets a DWRR weight
ranging from 0 to 31.
• Combination of strict priority and DWRR scheduling—the default configuration is shown, where QoS classes 7
and 6 use strict priority while QoS classes 5 through 0 use DWRR. But any split between strict and DWRR QoS
classes can be configured.
By using the egress VCAP ES0, significantly more advanced VLAN tagging operations can be achieved. ES0
enables pushing up to three VLAN tags and flexible VLAN tag translation for per-flow VLAN tag/TPID, PCP, DEI,
and DSCP control. The lookup by VCAP ES0 includes classified VLAN, flow identifier, egress port, and COS/color
indications.
Supports per-router-leg control of Ethernet link layer encapsulation and VID, as well as modification of other Layer 3
fields such as IPv4 TTL, IPv4 checksum, and IPv6 hop limit. IP tunnels may be pushed or popped.
The rewriter pads frames to minimum legal size if needed, and updates the FCS if the frame was modified before the
frame is transmitted.
The egress port module controls the flow control exchange of pause frames with a neighboring device when the
interconnection link operates in full-duplex flow control mode.
4. Functional Descriptions
This section describes the functional aspects of the device, including available configurations, operational features,
and testing functionality. It also defines the device setup parameters that configure the device for a particular
application.
The following figure shows an RTL block diagram of the physical blocks in the device and how the blocks
interconnect. The functional aspects of each block is provided in following sections. The grayed-out blocks represent
the VCore-IV and DEVCPU blocks. For more information about the VCore-IV and DEVCPU blocks, see 5. VCore
System and CPU Interfaces.
Figure 4-1. Physical Block Diagram
x13 x65
SERDES5G DEV2G5 DSM REW SQS
DEV1G DEV1G
HSCH
SD6G_LANE
x13 OQS
VCAP_ES0 REW
x12 DEV5G
DEV2G5 AFI XQS
Flow
SERDES10G control Priority-based flow control
DEV1G I/O IQS
SD10G_LANE Muxing x12
Frame bus
DEV10G
DEV10G
QSYS QRES QFWD
EACL VCAP_ES2
x8
SERDES25G
DEV1G x8
SD25G_LANE DEV25G
DEV10G
ASM ANA
ANA_CL ANA_L3 ANA_ACL ANA_L2 ANA_AC
VD0-2
Loopback CLM IP6PFX LPM IS2
VCore-IV DEVCPU
Normal
CPU I/F ARM FDMA
Cortex- LBK VCAP_SUPER LRN
A53 Manual
Register target
<TARGET>:<REGISTER_GROUP>:<REGISTER>.<FIELD>[<bit number>]
Short Prefix: ANY DMAC Any SMAC 0x8880 0x000B Internal Frame Header DMAC SMAC Frame data
Long Prefix: ANY DMAC Any SMAC VLAN tag 0x8880 0x000B Internal Frame Header DMAC SMAC Frame data
Frames are injected without prefix from internal CPU or directly attached CPU.
Frames can be injected with a prefix to accommodate CPU injection from a front port (that may be directly attached),
controlled by ASM:CFG:PORT_CFG.INJ_FORMAT_CFG.
The internal frame header and optional prefix is removed before transmitting the frame on a port. It is only visible
to the user when injecting and extracting frames to or from the switch core and optionally when sending/receiving
frames using the NPI port.
It is possible to configure a port to transmit frames with internal frame headers using
REW:COMMON:PORT_CTRL.KEEP_IFH_SEL. It is also possible to only transmit CPU redirected frames with
Internal frame headers using REW:COMMON:GCPU_CFG.GCPU_KEEP_IFH.
287
ENCAP_ID_RLEG TS
FWD
67 AFI_INJECT
27
232
65 RT_FWD ES0_ISDX_KEY_ENA 231
25
64 SWAP_MAC
63 23 VSTAX_AVAIL
TAG_TPID
62 UPDATE_FCS
22
61
20 DST_MODE
19
18
56
GVID
SFLOW_ID
FWD DST
ERLEG
12
11 AGED
50 RX_MIRROR
10
49 XVID_EXT
9 MIRROR_PROBE
48 48 PROT_ACTIVE
8
47 47
7
PDU_W16_OFFSET
SRC_PORT
42
41 153
1
PDU_TYPE 0 DO_NOT_REW 152
DST DST
38 MISC
37 15
PIPELINE_ACT
13
12
PIPELINE_PT
CL_RSLT / 8 MISC
L3MC_GRP_IDX 7
28
VSTAX
CPU_MASK /
DPORT
L3MC_GRP_IDX
NEXT_HOP_DMAC 22 0
21
TAGGING
20
18 MPLS_TTL /
17 COPY_CNT
73
ERLEG 13 72
12 MPLS_SBIT SEQ_NO
11
MPLS_TC
9 9 TAGGING FWD
8 8 ACTION_AFTER_POP
7
TYPE_AFTER_POP
6
5 45
COPY_CNT 5 44
4 RTAG_ETAG_AVAIL
W16_POP_CNT
3 PUSH_CNT MISC
2
0 0 0 1 POP_CNT
0 29
28
QOS
7 TRANSP_DSCP
6 UPDATE_DSCP TAGGING
5
QOS
8
DSCP
7
Unused bits must be ignored and set to 0 QOS
0 0
The following table shows the internal frame header fields, including information whether a field is relevant for
injection, extraction, or both.
...........continued
Field Category Field Name Bit Width Description
CL_RSLT/ 190:175 16 Classified MATCH_ID combined from VCAP CLM
L3MC_GRP_IDX bits and VCAP IS2. Used if the frame is forwarded
to the CPU. For multicast-routed frame: Contains
L3_MC.L3_GRP_IDX.
MPLS_TTL/COPY_CNT 174:166 9 bits TTL value for possible use in MPLS label.
For multicast-routed frame: Contains
L3_MC.COPY_CNT.
MPLS_SBIT 165 1 bit S-bit of last popped MPLS label for possible use in
MPLS label at egress.
MPLS_TC 164:162 3 bits TC value for possible use in MPLS label at egress.
ACTION_AFTER_POP 161 1 bit 0: No action
1: Decrement IPv4 TTL and IPv4 header checksum
or IPv6 hop limit.
First 4 bits:
4: IPv4 header.
6: IPv6 header.
Others: MPLS CW (see RFC 4385)
2: MPLS. MPLS shim header follows.
...........continued
Field Category Field Name Bit Width Description
FWD AFI_INJ 72 1 bit Injected into AFI.
RSV 71 1 bit Reserved field. Must be set to 0.
ES0_ISDX_KEY_ENA 70 1 bit Controls use of ISDX in ES0 key.
RSV 69 1 bit Reserved field. Must be set to 0.
VSTAX_AVAIL 68 1 bit Received by ANA with valid VSTAX section.
Extract: Frame received by ANA with valid VSTAX
section.
Inject: Frame to be forwarded based on VSTAX
section.
...........continued
Field Category Field Name Bit Width Description
MISC PIPELINE_ACT 44:42 3 bits Pipeline action specifies if a frame is injected,
extracted, or discarded.
0: None
1: INJ
2: INJ_MASQ
3: Reserved
4: XTR
5: XTR_UPMEP
6: LBK_ASM
7: LBK_QS
PIPELINE_PT 41:37 5 bits Pipeline point specifies the location where a frame
is injected, extracted, or discarded.
0: None
1: ANA_VRAP
2: ANA_PORT_VOE
3: ANA_CL
4: ANA_CLM
5: ANA_IPT_PROT
6: ANA_OU_MIP
7: ANA_OU_SW
8: ANA_OU_PROT
9: ANA_OU_VOE
10: ANA_MID_PROT
11: ANA_IN_VOE
12: ANA_IN_PROT
13: ANA_IN_SW
14: ANA_IN_MIP
15: ANA_VLAN
16: ANA_DONE
17: REW_IN_MIP
18: REW_IN_SW
19: RE_IN_VOE
20: REW_OU_VOE
21: REW_OU_SW
22: REW_OU_MIP
23: REW_SAT
24: REW_PORT_VOE
25: REW_VRAP
...........continued
Field Category Field Name Bit Width Description
CPU_MASK/DPORT 36:29 8 bits For extracted frames: CPU extraction queue mask.
For injected frames: Destination port number
when PIPELINE_ACT == INJ/INJ_MASQ, and
PIPELINE_PT > ANA_DONE, and AFI_INJ == 0.
The IFH is only used to control the rewriter on front ports or send to CPU. It is not transmitted with the frame. For
CPU ports, the information in the extraction IFH is for reference purposes only.
FCS
Bit 79 Bit 0
Frame
Preamble DMAC SMAC 0x8880 VStaX Header, bit 79-0
Data
Microchip EtherType
The layout of the 10-byte VStaX header is shown in the following figure. In VStaX context, each switch in a stack is
termed a unit.
vstax2_isdx_ena=1 vstax2_isdx_ena=0
78 78
COSID
76 MUST BE 1 79
78
75
rsv
ISDX
68 MISC
67
AC
64 64
61 64
CL_DP 63
60 RSV
SP 59 62
58 61
CL_QOS
56
INGR_DROP_MODE 55 QOS
RSV 53 55
52 RSV 54
53
TTL
48
LRN_MODE 47
GENERAL
46
FWD_MODE
44
fwd_gmirror
fwd_stack 44
fwd_llookup fwd_gcpu_all fwd_gcpu_ups fwd_multicast fwd_physical fwd_logical rsv 43
42 RSV 42 RSV 42 42 RSV 42 DST_PORT_TYPE 42 42
TTL_KEEP 41 41 41 41
40
DST_UPSID DST_UPSID DST_UPSID
RSV
RSV 37 MC_IDX 37 37 DST
36 RSV 36 36 36
35 35
DST_PN DST_PN
DST_PN DST_PN
32 32 32 32 32 32 32
31
31
CL_PCP
29
CL_DEI 28
27
TAG
CL_VID
16
WAS_TAGGED 15
TAG_TYPE 14
13 12
INGR_PORT_TYPE
12 11
port_type_intpn port_type_upspn
SRC_PORT_TYPE 11 SRC_PORT_TYPE 11 rsv
SRC_ADDR_MODE 10
SRC_UPSID SRC_UPSID
5 5
SRC_GLAGID
RSV 4 4
3 0
Two values defined for src_intpn:
0xf: intpn_dlookup SRC_UPSPN
SRC_INTPN
0xe: intpn_router
0 0 0
...........continued
Field Category Field Name Bit Width Description
General RSV 53 1 bit Reserved field. Must be set to 0.
TTL 52:48 5 bits Time to live.
LRN_MODE 47 1 bit 0: Normal learning. SMAC and VID of the
frame is subject to learning.
1: Skip learning. Do not learn SMAC and VID
of the frame.
...........continued
Field Category Field Name Bit Width Description
VSTAX.DST when RSV 42 1 bit Reserved field. Must be set to 0.
VSTAX.FWD_MODE is
DST_UPSID 41:37 5 bits Destination unit port set ID.
FWD_GCPU_UPS
RSV 36 1 bit Reserved field. Must be set to 0.
DST_PN 35:32 4 bits CPU destination port at unit identified by
dst_upsid.
VSTAX.DST when RSV 42 1 bit Reserved field. Must be set to 0.
VSTAX.FWD_MODE is
TTL_KEEP 41 1 bit Special TTL handling used for neighbor
FWD_GCPU_ALL
discovery.
RSV 40:36 5 bits Reserved field. Must be set to 0.
DST_PN 35:32 4 bits CPU destination port at unit identified by
dst_upsid.
TAG CL_PCP 31:29 3 bits Classified priority code point value.
CL_DEI 28 1 bit Classified drop eligible indicator value.
CL_VID 27:16 12 bits Classified VID.
WAS_TAGGE 15 1 bit If set, frame was VLAN-tagged at reception.
D
TAG_TYPE 14 1 bit Tag type.
0: C-tag (EtherType 0x8100).
1: S-tag (EtherType 0x88A8).
...........continued
Field Category Field Name Bit Width Description
SRC SRC_ADDR_ 10 1 bit 0: src_ind_port:
MODE
Individual port. Source consists of src_upsid
and src_upspn.
1: src_glag: Source consists of src_glag.
The 33 SERDES comes in three flavors: SERDES6G (S0-S12) with a maximum speed of 5 Gbps, SERDES10G
(S13-S24 with a maximum speed of 10 Gbps, and SERDES25G (S25-S32) with a maximum speed of 10 Gbps.
Note: The 100FX is only supported on S1-S24 for the associated direct port.
The following table lists the logical port mapping to port module numbers (DEVxx), as well as SERDES number to be
used for register configuration.
Table 4-3. Port, Port Module, SERDES Mapping for Ports with Direct SERDES Connection.
...........continued
Port Numbers Port Modules SERDES Number SERDES Macro
Ports 16 through 47 do not connect to SERDES macros in the default configuration. They are only connected when
QSGMII, USGMII or USXGMII is enabled.
Ports 65 through 69 are internal ports and are defined as follows:
• Port 65 and port 66: CPU port 0 and 1 (CPU0, CPU1) are used for injection and extraction of frames.
• Port 67: Virtual device 0 (VD0) is used for IP multicast routing.
• Port 68: Virtual device 1 (VD1) is used for AFI frame injections.
• Port 69: Virtual device 2 (VD2) is used for IP-in-IPv4 tunneling.
The internal ports do not have associated port modules and interface macros.
In the following sections, any reference to DEV5G, DEV10G, or DEV25G covering lower speeds as well includes
reference to its shadow DEV2G5 port module.
Port Interface Specification Port Speed Data Rate Connecto Medium Coding
r
100BASE-FX IEEE 802.3, Clause 100M 125 Mbps SFP PCB 4B5B
24
4.3.3 QSGMII
Up to 12 of the SERDES macros can be configured QSGMII. This is enabled in
PORT_CONF::HW_CFG.QSGMII_ENA per macro. When QSGMII is enabled for a SERDES macro, four port
modules are associated with the SERDES macro to form a QSGMII port with four 1G ports.
To configure QSGMII[n] set PORT_CONF:HW_CFG:QSGMII_ENA[n] = 1, where n = 0 to 11, selects the
corresponding QSGMII extender.
The following table lists which ports, port modules, and SERDES macros are associated with each QSGMII instance
for the device.
Table 4-6. Related Ports, Port modules, and SERDES Macros with each QSGMII Instance
Note that when a SERDES block is enabled for QSGMII, the default port connections are removed. For example, if
S13 (SERDES10G_0) is enabled for QSGMII, then port numbers D0, D1, D2 and D3 connect to S13, and the default
connection from D12 is not present.
4.3.4 USGMII
Up to 6 of the SERDES10G macros can be configured for USGMII. This is enabled in
PORT_CONF::HW_CFG.USGMII_ENA per macro. When USGMII is enabled for a SERDES macro, eight port
modules are associated with the SERDES10G macro to form a USGMII port with eight 1G ports.
To configure USGMII[n] set PORT_CONF:HW_CFG:USGMII_ENA[n] = 1, where n = 0 to 5, selects the
corresponding USGMII extender.
The following table lists which ports, port modules, and SERDES10G macros are associated with each USGMII
instance for the device.
Table 4-7. Related Ports, Port modules, and SERDES10G Macros with each USGMII Instance
Note that when a SERDES macro is enabled for USGMII, the default port connection is not available. For example, if
S17 (SERDES10G_4) is enabled for USGMII, then port numbers D0, D1, D2, D3, D4, D5, D6, and D7 connect to S17
and the default connection from D48 is not present. Also configuring a SERDES macro for USGMII takes priority over
QSGMII mode.
4.3.5 USXGMII
All SerDes macros can be configured USXGMII. Supported modes with involved ports are described in the following
chapters. Note that configuring a SERDES block for USXGMII takes priority over QSGMII and USGMII mode.
4.3.5.1 10G-QXGMII
Up to 16 of the SERDES macros can be configured 10G-QXGMII. This is enabled in
PORT_CONF:HW_CFG:USXGMII_ENA and configured in PORT_CONF:USXGMII_CFG[16-31]:USXGMII_CFG per
macro. When 10G-QXGMII is enabled for a SERDES macro running at 10G speed, four port modules are associated
with the SERDES macro to form a 10G-QXGMII port with four 2.5G ports.
To configure USXGMII extender “n” in 10G-QXGMII mode, set PORT_CONF:HW_CFG:USXGMII_ENA[n+16],
PORT_CONF:USXGMII_CFG[n+16]:USXGMII_CFG.NUM_PORTS=2, n = 0 – 15.
The following table lists which ports, port modules, and SERDES10G macros are associated with each 10G-QXGMII
instance for the device.
Table 4-8. Related Ports, Port modules, and SERDES10G Macros with each 10G-QXGMII Instance
Note that when a SERDES block is enabled for 10G-QXGMII, the default port connection is not available. For
example, if S17 (SERDES10G_4) is enabled for 10G-QXGMII, then port number D48, D0, D16, D32 are connected
to S17, and the default direct connection from D48 to S17 is not present. 10G-QXGMII mode is configured by setting
PORT_CONF:USXGMII_CFG[n]:USXGMII_CFG.NUM_PORTS to 2 (quad port mode).
4.3.5.2 10G-DXGMII
Up to 16 of the SERDES macros can be configured 10G-DXGMII. This is enabled in
PORT_CONF:HW_CFG:USXGMII_ENA and configured in PORT_CONF:USXGMII_CFG[16-31]:USXGMII_CFG per
macro. When 10G-DXGMII is enabled for a SERDES macro running at 10G speed, two port modules are associated
with the SERDES macro to form a 10G-DXGMII port with two 5G ports.
Note that when a SERDES macro is enabled for 10G-DXGMII, the default port connection is not available. For
example, if S13 (SERDES10G_4) is enabled for 10G-DXSGMII, then port numbers D48 and D0 connect to S13,
and the default direct connection from D48 to S13 is not present. 10G-DXGMII mode is configured by setting
PORT_CONF:USXGMII_CFG[n]:USXGMII_CFG.NUM_PORTS to 1 (dual port mode).
4.3.5.3 5G-DXGMII
Up to 32 of the SERDES macros can be configured 5G-DXGMII. This is enabled in
PORT_CONF:HW_CFG:USXGMII_ENA and configured in PORT_CONF:USXGMII_CFG[0-31]:USXGMII_CFG in per
macro. When 5G-DXGMII is enabled for a SERDES macro, two port modules are associated with the SERDES
macro to form a 5G-DXGMII port with two 2.5G ports.
To configure USXGMII extender “n” in 10G-DXGMII mode, set : Fn: PORT_CONF:HW_CFG:USXGMII_ENA[n],
PORT_CONF:USXGMII_CFG[n]:USXGMII_CFG.NUM_PORTS=1, n = 0 – 31. Additionally for USXGMII extenders
16 to 31 PORT_CONF:USXGMII_CFG[n]:USXGMII_CFG. FLIP_PORT_12 must be set to 1.
The following table lists which ports, port modules, and SERDES macros are associated with each 5G-DXGMII
instance for the device.
Table 4-10. Related Ports, Port modules, and SERDES Macros with each 5G-DXGMII Instance
...........continued
USXGMII Number Port Numbers SERDES Number SERDES Macro
(P0 & P1)
Note that when a SERDES macro is enabled for 5G-DXGMII, the default port connection is not available.
For example, if S1 is enabled for 5G-DXSGMII, then port numbers D0 and D32 connect to S1, and
the default direct connection from D0 to S1 is not present. 5G-DXGMII mode is configured by setting
PORT_CONF:USXGMII_CFG[n]:USXGMII_CFG.NUM_PORTS to 1 (dual port mode).
Table 4-12. Mapping Between Port Modules and SERDES for Different Port Configuration Examples—17 to 32
Example SerDes 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
Number
Number SerDes 10G 10G 10G 10G 10G 10G 10G 10G 25G 25G 25G 25G 25G 25G 25G 25G
Type
1 48x1G+4x Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 D56 D57 D58 D59 - - - -
10G
(QSGMII)
2 48x1G+4x Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 D56 D57 D58 D59 - - - -
10G
3 48x1G+4x Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 D56 D57 D58 D59 - - - -
10G
4 48x1G+4x Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 D56 D57 D58 D59 - - - -
10G
5 48x1G+4x Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 D56 D57 D58 D59 - - - -
10G
6 24x1G+6x Q4 Q5 - - D52 D53 D54 D55 D56 D57 - - - - - -
10G (24
QSGMII)
7 9x10G D48 D49 D50 D51 D52 - - - - - - - - - - -
8 18x5G D48 D49 - - - - - - - - - - - - - -
9 36x2.5G R0 R1 R2 R3 R4 R5 R6 R7 R8 - - - - - - -
(10USX)
10 18x5G U0 U1 U2 U3 U4 U5 U6 U7 U8 - - - - - - -
(10USX)
11 48x1G X0 X1 X2 X3 X4 X5 D54 D55 D56 D57 - - - - - -
(USGMII)
+ 4x10G
12 36x2.5G F16 F17 - - - - - - - - - - - - - -
(5USX)
The different examples from Figure xx will be explained in the following. In all examples the NPI port D64 is directly
connected to its own SERDES S0 and will not be discussed further.
Example 1:
48 x 1G + 4 x 10G port configuration, where all 48 x 1G ports are established using 12 x QSGMII (Q0–Q11). In this
configuration SERDES S13 – S28 are used.
Example 2:
48 x 1G + 4 x 10G port configuration. The first 4 x 1G port modules (D0–D3) are using direct SERDES connections
(S1–S4) whereas the remaining 44 x 1G are using 11 x QSGMII (Q1–Q11) which are connected to SERDES S14–
S28.
Example 3:
48 x 1G + 4 x 10G port configuration. The first 8 x 1G port modules (D0–D7) are using direct SERDES connections
(S1–S4) whereas the remaining 40 x 1G are using 10 x QSGMII (Q2–Q11) which are connected to SERDES S15–
S28.
Example 4:
48 x 1G + 4 x 10G port configuration. The first 12 x 1G port modules (D0–D11) are using direct SERDES connections
(S1–S12) whereas the remaining 36 x 1G are using 9 x QSGMII (Q3–Q11) which are connected to SERDES S16–
S28.
Example 5:
48 x 1G + 4 x 10G port configuration. The first 16 x 1G port modules (D0–D15) are using direct SERDES connections
(S1–S16) whereas the remaining 32 x 1G are using 8 x QSGMII (Q4–Q11) which are connected to SERDES S17–
S28. As can be seen from the SERDES usage it is not possible in a 48 x 1G + 4 x 10G configuration to have more
1G ports connected directly to SERDES’s.
Example 6:
24 x 1G + 6 x 10G port configuration. In this example (like Example 1) all 1G ports are established using 6 x QSGMII
(Q0–Q5), the last 6 capable 10G ports are used for 10 Gbps. In this configuration SERDES S13–S18, S21–S26 are
used.
Example 7:
9 x 10G port configuration. No multiplexing with all native ports capable to run 10 Gbps (D12–D15, D48–D52)
connecting directly to their respective SERDES S13–S21.
Example 8:
18 x 5G port configuration. No multiplexing is used with all native ports connect directly to their respective SERDES
S1–S18.
Example 9:
36 x 2.5G port configuration. All ports are connected to SERDES S17–S25 through 10G-USXGMII (R0–R8).
Example 10:
18 x 5G port configuration. All ports are connected to SERDES S17–S25 through 10G-DXGMII (U0–U8).
Example 11:
48 x 1G + 4 x 10G port configuration, where all 48 x 1G ports are established using 6 x USGMII (X0–X5). In this
configuration SERDES S17 – S26 are used.
Example 12:
36 x 2.5G port configuration, where all 36 ports are established using 18 x 5G-USGMII (F0–F17). In this configuration
SERDES S1 – S18 are used.
The total switching bandwidth of the device depends on the system clock frequency. The following table shows how
the port modules are allocated to 7 groups of ports where the total bandwidth within a group must not be exceeded.
The total switching bandwidth within a group depends on the system clock frequency.
Table 4-13. Overview of Port Modules in the Seven Allocated Port Groups
1 D57 D12 D0 D1 D2 D16 D17 D18 D19 D20 D21 D22 D23
2 D58 D13 D3 D4 D5 D24 D25 D26 D27 D28 D29 D30 D31
3 D59 D14 D6 D7 D8 D32 D33 D34 D35 D36 D37 D38 D39
4 D60 D15 D9 D10 D11 D40 D41 D42 D43 D44 D45 D46 D47
The following table shows the maximum bandwidth within a pool of port modules at the different operation
frequencies.
Table 4-14. Port Group Bandwidth in Gbps for Different System Clock Frequencies
500 60
250 30
4.4 SERDES
All the Ethernet SERDES interfaces share the same basic functionality, but support different operating modes and
line rates.
The following list lists the SERDES features.
• RX Adaptive Decision Feedback Equalizer (DFE)
• Programmable continuous time linear equalizer (CTLE)
• Rx variable gain control
• Rx built-in fault detector (loss-of-lock/loss-of-signal)
• Adjustable tx de-emphasis (FFE)
• Tx output amplitude control
• Supports rx eye monitor
• Multiple loopback modes
• Prbs generator and checker
• Polarity inversion control
4.4.1.1 SERDES6G
The SERDES6G is a high-speed SERDES interface, which can operate at the following data rates.
• 100 Mbps (100BASE-FX)
• 1.25 Gbps (SGMII/1000BASE-X/1000BASE-KX)
• 3.125 Gbps (2.5GBASE-X/2.5GBASE-KX)
• 5.15625 Gbps (5GBASE-KR/5G-USXGMII)
4.4.1.2 SERDES10G
The SERDES10G is a high-speed SERDES interface, which can operate at the following data rates.
• 100 Mbps (100BASE-FX)
• 1.25 Gbps (SGMII/1000BASE-X/1000BASE-KX)
• 3.125 Gbps (2.5GBASE-X/2.5GBASE-KX)
• 5 Gbps (QSGMII/USGMII)
• 5.15625 Gbps (5GBASE-KR/5G-USXGMII)
• 10 Gbps (10G-USGMII)
• 10.3125 Gbps (10GBASE-R/10GBASE-KR/USXGMII)
4.4.1.3 SERDES25G
The SERDES25G is a high-speed SERDES interface, which can operate at the following data rates.
• 1.25 Gbps (SGMII/1000BASE-X/1000BASE-KX)
• 3.125 Gbps (2.5GBASE-X/2.5GBASE-KX)
• 5 Gbps (QSGMII/USGMII)
• 5.15625 Gbps (5GBASE-KR/5G-USXGMII)
• 10 Gbps (10G-USGMII)
4.4.2.1 RX Equalization
The differential receiver is comprised of a variable gain amplifier (VGA) followed by a continuous-time linear equalizer
(CTLE). The VGA amplifies/attenuates incoming signals while maintaining the signal linearity. The CTLE is a
programmable high-pass filter that compensates for high frequency loss in the electrical channels. The settings
for VGA and CTLE are set through programmable registers. Additionally, a 5-tap decision feedback equalizer (DFE)
is incorporated to compensate channels with the significant post-cursor ISI. The DFE can be set to adaptive mode or
manual mode. These equalizers allow the receiver to recover data transmitted over lossy backplane channels.
4.4.2.2 TX Equalization
The transmitter includes a programmable equalization feature to compensate for the frequency-dependent loss in the
channel. This is accomplished by a 3-tap finite impulse response (FIR).
The SERDES also supports a Fast mode where the eye hight can be read back at the center phase. This allows a
much faster readback of the general eye closure, but does not provide the same detail level as the normal mode.
Note:
The RX equalizers are frozen during the eye monitor cycle, so it is not recommended to keep the eye monitor
function enabled during normal operation.
• LS1: This path is loopback inside the serial part of the SERDES from RX to TX and the loop-back path is before
CDR.
• LS2: This path is also loopback inside the serial part of the SERDES from RX to TX and the loopback path is
after CDR.
• LS3: This path is loopback on the parallel side of the SERDES from RX to TX and the loopback path is through
a loopback slave FIFO.
Figure 4-7. Serdes Loopback Options
SERDES
Ser TX
Loopback
LS2 LM1 LS1
Slave
FIFO
LS3
Deser CDR RX
DEV2G5
100BASE-FX
MAC-MERGE
PCS1G
MAC/
USXGMII PCS
Each of the DEV5G, DEV10G, and DEV25G Port modules have an associated DEV2G5 port module as a shadow
device to handle speeds less than or equal to 2.5G.
4.5.1 MAC
This section describes the high level functions and the configuration options of the Media Access Controller (MAC)
that is used in the DEV2G5 port modules.
DEV2G5 MAC supports the following speeds and duplex modes depending on the associated mode.
• SERDES: 10/100/1000/2500 Mbps in full-duplex mode and 10/100 Mbps in half-duplex mode.
• QSGMII MODE: 10/100/1000/2500 Mbps in full-duplex mode and 10/100 Mbps in half-duplex mode.
• USGMII MODE: 10/100/1000/2500 Mbps in full-duplex mode and 10/100 Mbps in half-duplex mode.
• USXGMII MODE: 10/100/1000/2500 Mbps in full-duplex mode.
The following table lists the registers associated with configuring the MAC.
Table 4-15. DEV2G5 MAC Configuration Registers
Register.Field Description
When changing the MAC configuration, the port must go through a reset cycle. This is done by writing register
DEV_RST_CTRL twice. On the first write, the reset bits are set. On the second write, the reset bits are cleared. The
non-reset field DEV_RST_CTRL.SPEED_SEL must keep its new value for both writes.
4.5.1.2 Interrupts
There are 8 interrupt sources defined for DEV2G5 port module, which can be found in the following table. General
interrupt handling is more detailed described in 5.4.2 VCore CPU Interrupt Controller.
Table 4-17. DEV2G5 Interrupt Sources
Register.Field Description
Register.Field Description
...........continued
Register.Field Description
Clearing MAC_ENA_CFG.RX_ENA stops the reception of frames and further frames are discarded. An ongoing
frame reception is interrupted.
Clearing MAC_ENA_CFG.TX_ENA stops the dequeueing of frames from the egress queues, which means that
frames are held back in the egress queues. An ongoing frame transmission is completed.
TX inter frame gap (MAC_IFG_CFG.TX_IFG) must be set according to the selected speed and mode.
If a received frame exceeds the maximum length, the frame is truncated and marked as aborted.
The MAC can drop frames with in-range and out-of-range length errors by enabling
MAC_ADV_CHK_CFG.LEN_DROP_ENA.
4.5.2 PCS
This section describes the Physical Coding Sublayer (PCS) block where the auto-negotiation process establishes
mode of operation for a link. The PCS supports SGMII mode and two SERDES modes: 1000BASE-X and 100BASE-
FX.
The following table lists the registers associated with the PCS.
Table 4-19. DEV2G5 PCS Configuration Registers
PCS1G_ANEG_NP_STATUS Status signaling of the PCS auto-negotiation next page Per PCS
process
4.5.2.1 Auto-Negotiation
Auto-negotiation is enabled with PCS1G_ANEG_CFG.ANEG_ENA. To restart the auto-negotiation process,
PCS1G_ANEG_CFG.ANEG_RESTART_ONE_SHOT must be set.
In SGMII mode (PCS1G_MODE_CFG.SGMII_MODE_ENA=1), matching the duplex mode with the link partner must
be ignored (PCS1G_ANEG_CFG.SW_RESOLVE_ENA). Otherwise the link is kept down when the auto-negotiation
process fails.
The advertised word for the auto-negotiation process (base page) is configured in
PCS1G_ANEG_CFG.ADV_ABILITY. The next page information is configured in PCS1G_ANEG_NP_CFG.NP_TX.
When the auto-negotiation state machine has exchanged base page abilities, the
PCS1G_ANEG_STATUS.PAGE_RX_STICKY is asserted indicating that the link partner’s abilities were received
(PCS1G_ANEG_STATUS.LP_ADV_ABILITY).
If next page information need to be exchanged (only available in SERDES mode, that is.
PCS1G_MODE_CFG.SGMII_MODE_ENA=0), PAGE_RX_STICKY must be cleared, next page abilities
must be written to PCS1G_ANEG_NP_CFG.NP_TX, and PCS1G_ANEG_NP_CFG.NP_LOADED_ONE_SHOT
must be set. When the auto-negotiation state machine has exchanged the next page abilities, the
PCS1G_ANEG_STATUS.PAGE_RX_STICKY is asserted again indicating that the link partner’s next page abilities
were received (PCS1G_ANEG_STATUS.LP_NP_RX). Additional exchanges of next page information are possible
using the same procedure.
Next page engagement is coded in bit 15 of Base Page of Next page information.
After the last next page has been received, the auto-negotiation state machine enters the IDLE_DETECT state
and the PCS1G_ANEG_STATUS.PR bit is set indicating that ability information exchange (base page and possible
next pages) has finished and software can resolve priority now. Appropriate actions, such as Rx or Tx reset, or
auto-negotiation restart, can then be taken, based on the negotiated abilities. The LINK_OK state is reached one link
timer period later.
When the auto-negotiation process reached the LINK_OK state, PCS1G_ANEG_STATUS.ANEG_COMPLETE is
asserted.
4.5.2.4 Tx Loopback
For debug purposes, the Tx data path in the PCS can be looped back into the Rx data path. This is enabled through
PCS1G_LB_CFG.TBI_HOST_LB_ENA.
PCS1G_TSTPAT_MODE_CFG.JTP_SEL overwrites normal operation of the PCS and enables generation of jitter
test patterns for debug. The jitter test patterns are defined in IEEE Std 802.3, Annex 36A, and the following patterns
are supported.
• High frequency test pattern
4.5.2.7 100BASE-FX
The applicable registers are listed in the following table.
Table 4-21. DEV2G5 100BASE-FX Configuration Registers
The PCS supports a 100BASE-FX mode in addition to the SGMII and 1000BASE-X SERDES modes. The 100BASE-
X mode uses 4bit/5bit coding as specified in IEEE802.3 Clause 24 for fiber connections. The 100BASE-FX mode is
enabled through PCS_FX100_CFG.PCS_ENA, which masks out all PCS1G related registers.
The following options are available.
• Far-End Fault facility: In 100BASE-FX, the PCS supports the optional Far-End Fault facility.
Both Far-End Fault Generation (PCS_FX100_CFG.FEFGEN_ENA) and Far-End Fault Detection
(PCS_FX100_CFG.FEFCHK_ENA) are supported. A Far-End Fault incident is recorded in
PCS_FX100_STATUS.FEF_FOUND.
• Signal Detect: 100BASE-FX has a similar signal detect scheme as of the SGMII and SERDES
modes. For 100BASE-FX, PCS_FX100_CFG.SD_ENA enables signal detect, and PCS_FX100_CFG.SD_SEL
selects the input source. The current status of the signal detect input can be observed through
PCS_FX100_STATUS.SIGNAL_DETECT. For more information about signal detect, see 4.5.3.1 Signal Detect.
• Link Surveillance: The PCS synchronization status can be observed through
PCS_FX100_STATUS.SYNC_STATUS. When synchronization is lost the link breaks and
PCS_FX100_STATUS.SYNC_LOST_STICKY is set. The PCS continuously tries to recover the link.
• Unidirectional mode: 100BASE-FX has a similar unidirectional mode as for the SGMII and SERDES modes.
This is enabled through PCS_FX100_CFG.UNIDIR_MODE_ENA.
USXGMII_PCS_SD_CFG.SD_POL Signal detect polarity. The signal level on Per USXGMII PCS
signal_detect input pin must be equal to SD_POL to
indicate signal detection
...........continued
Register Description Replication
USXGMII_PCS_STATUS.USXGMI Indicates if USXGMII PCS has reached block lock Per USXGMII PCS
I_BLOCK_LOCK state
0: USXGMII PCS is not in block lock state
1: USXGMII PCS is in block lock state
DEV_RST_CTRL.USXGMII_OSET The USXGMII replicator block samples only the first Per USXGMII PCS
_FILTER_DIS XGMII word. The other replications are ignored. Only
if they contain a Local Fault or remote Fault ordered
set the next data will be overwritten. This bit will
disable overwrite wit ordered sets.
0: Non-Sampleld ordered sets will overwrite the
following XGMII words
1: Overwrite of XGMII words with ordered sets is
disabled.
USXGMII_TX_RADAPT_CFG.T Set the minimum inter-frame gap to maintain during rate Per USXGMII PCS
X_RADAPT_MIN_IFG adaptation when dropping transactions. Setting the value
to 1 means that 1 idle or ordered set is kept after a
terminate. When set to 2 or 3, that many idle or ordered
set transactions are kept. Each transaction is 4 bytes.
USXGMII_TX_RADAPT_CFG.T Set the add threshold in the FIFO. Level is in 72-bit Per USXGMII PCS
X_RADAPT_ADD_LVL words.
USXGMII_TX_RADAPT_CFG. Set the drop threshold in the FIFO. Level is in 72-bit Per USXGMII PCS
TX_RADAPT_DROP_LVL words.
USXGMII_TX_RADAPT_CFG.T Disable TX local fault generation when no alignment has Per USXGMII PCS
X_LF_GEN_DIS been reached
USXGMII_TX_RADAPT_CFG.T Set the minimum inter-frame gap to maintain during rate Per USXGMII PCS
X_RADAPT_MIN_IFG adaptation when dropping transactions. Setting the value
to 1 means that 1 idle or ordered set is kept after a
terminate. When set to 2 or 3, that many idle or ordered
set transactions are kept. Each transaction is 4 bytes.
USXGMII_RX_RADAPT_CFG. Set the minimum inter-frame gap to maintain during rate Per USXGMII PCS
RX_RADAPT_MIN_IFG adaptation when dropping transactions. Setting the value
to 1 means that 1 Idle or ordered set is kept after a
terminate. When set to 2 or 3, that many idle or ordered
set transactions are kept. Each transaction is 4 bytes.
USXGMII_RX_RADAPT_CFG. Set the add threshold in the FIFO. Level is in 72-bit Per USXGMII PCS
RX_RADAPT_ADD_LVL words.
...........continued
Register Description Replication
USXGMII_RX_RADAPT_CFG. Set the drop threshold in the FIFO. Level is in 72-bit Per USXGMII PCS
RX_RADAPT_DROP_LVL words.
USXGMII_RX_RADAPT_CFG.R Disable RX local fault generation when no alignment has Per USXGMII PCS
X_LF_GEN_DIS been reached
USXGMII_RX_RADAPT_CFG.R One-shot that causes the Rx rate adaptation FIFO to be Per USXGMII PCS
X_RADAPT_FIFO_FLUSH cleared and reset. Bit is reset by hardware
For 10G-QXGMII modes, the USXGMII Rate adaptation register fields should be set to the following values.
USXGMII_RX_RADAPT_CFG.RX_RADAPT_ADD_LVL = 3
USXGMII_RX_RADAPT_CFG.RX_RADAPT_DROP_LVL = 7
USXGMII_RX_RADAPT_CFG.RX_RADAPT_MIN_IFG = 1
USXGMII_TX_RADAPT_CFG.TX_RADAPT_ADD_LVL = 2
USXGMII_TX_RADAPT_CFG.TX_RADAPT_DROP_LVL = 6
USXGMII_TX_RADAPT_CFG.TX_RADAPT_MIN_IFG = 1
For 5G-DXGMII modes, the USXGMII Rate adaptation register fields should be set to the following values.
USXGMII_RX_RADAPT_CFG.RX_RADAPT_ADD_LVL = 3
USXGMII_RX_RADAPT_CFG.RX_RADAPT_DROP_LVL = 7
USXGMII_RX_RADAPT_CFG.RX_RADAPT_MIN_IFG = 1
USXGMII_TX_RADAPT_CFG.TX_RADAPT_ADD_LVL = 1
USXGMII_TX_RADAPT_CFG.TX_RADAPT_DROP_LVL = 5
USXGMII_TX_RADAPT_CFG.TX_RADAPT_MIN_IFG = 1
Mode 5GBASE-R
No. of Lanes 1
Encoding 64b/66b
Preamble shrink No
Apart from above the DEV5G block also can also operate in 10G-DXGMII mode of operation as per Cisco USXGMII
spec.
DEV5G port module consists of MAC which also handles MAC Merge sub-layer function, along with PCS5G,
USXGMII PCS.
PCS5G
MAC-MERGE
MAC5G/
USXGMII PCS
4.6.1 MAC
This section describes the high level functions and the configuration options of the Media Access Controller (MAC)
that is used in the DEV5G port modules.
The applicable registers are listed in the following table.
Table 4-25. DEV5G MAC Configuration Registers
Target::Register.Field Description
...........continued
Target::Register.Field Description
When changing the MAC configuration, the port must go through a reset cycle. This is done by writing the register
DEV5G::DEV_RST_CTRL twice. On first write all reset bits must be set to active (0x1). On the second write resets
bits are cleared (0x0). Non-reset bits in DEV5G::DEV_RST_CTRL must keep their value for both writes.
4.6.1.2 Interrupts
There are 5 interrupt sources defined for DEV5G port module, which can be found below. General interrupt handling
is described in detail in 5.10.13 Outbound Interrupt Controller.
Table 4-27. DEV5G Interrupt Sources
Target::Register.Field Description
All the sticky events in XFI PCS are capable of generating an interrupt if their corresponding interrupt mask is set to
1. The following are the interrupt registers that are used for interrupt generation if corresponding event bit is set from
5G Base-R PCS (or XFI PCS).
Table 4-28. DEV5G Base-R PCS Interrupt Sources
Target::Register.Field Description
...........continued
Target::Register.Field Description
Target::Register.Field Description
...........continued
Target::Register.Field Description
4.6.2 PCS5G
This section describes the Physical Coding Sublayer (PCS) blocks included in the DEV5G port module. Depending
on the DEV5G mode configuration, the corresponding PCS block must be selected and configured accordingly.
Status information such as link status is available per PCS block and the right register bit, depending on mode must
be checked. Interrupt source signal are selected from the current selected PCS block depending on mode selection.
Note:
Each DEV5G port module must only enable one PCS block at the same time.
Applicable registers for DEV5G PCS configuration and status can be found in the following tables.
Table 4-31. DEV5G PCS Configuration Registers
TX_ERRBLK_CNT XFI-PCS counter for number of times Transmit FSM enters Per PCS
TX_E state.
TX_CHARERR_CNT XFI-PCS counter for number of invalid control characters Per PCS
transmitter detected from MAC
RX_BER_CNT XFI-PCS counter for number of times Receive BER FSM enters Per PCS
BER_BAD_SH state (ber_count).
RX_ERRBLK_CNT XFI-PCS counter for number of times Receive FSM enters Per PCS
RX_E state.
RX_CHARERR_CNT XFI-PCS counter for Receive number of invalid control Per PCS
characters after decoding.
...........continued
Register Description Replication
4.6.2.4 Tx Loopback
For debug purposes there is a loop back path defined within all PCS blocks, which loops back Tx data path into the
Rx data path. This is enabled through PCS5G_BR::PCS_CFG.PMA_LOOPBACK_ENA for PCS XFI.
PCS5G_BR::PCS_CFG.TX_TEST_MODE Enables test pattern mode in XFI PCS transmitter. Per PCS
PCS5G_BR::PCS_CFG.TX_REST_MODE Enables test pattern mode in XFI PCS receiver. Per PCS
PCS5G_BR::TEST_CFG Test pattern configuration register when test mode Per PCS
is enabled for XFI PCS
...........continued
Target::Register.Field Description Replication
PCS5G_BR::TX_DATAPAT_MSB.TX_DATA Most significant 32 bits of 64-bit data pattern used Per PCS
PAT_MSB in pseudo-random and user-defined test pattern
mode for transmitter of XFI PCS.
PCS5G_BR::TX_DATAPAT_LSB.TX_DATAP Least significant 32 bits of 64-bit data pattern used Per PCS
AT_LSB in pseudo-random and user-defined test pattern
mode for transmitter of XFI PCS.
PCS5G_BR::RX_DATAPAT_MSB.RX_DATA Most significant 32 bits of 64-bit data pattern used Per PCS
PAT_MSB in pseudo-random and user-defined test pattern
mode for receiver of XFI PCS.
PCS5G_BR::RX_DATAPAT_LSB.RX_DATAP Least significant 32 bits of 64-bit data pattern used Per PCS
AT_LSB in pseudo-random and user-defined test pattern
mode for receiver of XFI PCS.
PCS5G_BR::PCS_STATUS.TESTPAT_MAT When in test pattern check mode, this bit will read Per PCS
CH 1 if the test pattern checker detects a match. When
0, the test pattern does not match. The test pattern
error counts should still be used along with this
register bit to determine proper test match status.
The bit will read back 1 only when the test pattern
is matching. This may happen even while test
pattern errors are counted on other clock cycles.
USXGMII_PCS_STATUS.USXGMII_BLOCK Indicates if USXGMII PCS has reached block lock Per PCS
_LOCK state 0: USXGMII PCS is not in block lock state,
1: USXGMII PCS is in block lock state
DEV_RST_CTRL.USXGMII_OSET_FILTER_ The USXGMII replicator block samples only the Per PCS
DIS first XGMII word. The other replications are
ignored. Only if they contain a Local Fault or
remote Fault ordered set the next data will be
overwritten. This bit will disable overwrite wit
ordered sets.
0': Non-Sampleld ordered sets will overwrite the
following XGMII words
'1': Overwrite of XGMII words with ordered sets is
disabled.
USXGMII_TX_RADAPT_CFG. Set the add threshold in the FIFO. Level is in Per USXGMII PCS
TX_RADAPT_ADD_LVL 72-bit words.
USXGMII_TX_RADAPT_CFG. Set the drop threshold in the FIFO. Level is in Per USXGMII PCS
TX_RADAPT_DROP_LVL 72-bit words.
For 10G-DXGMII modes, the USXGMII Rate adaptation register fields should be set to the following values.
USXGMII_TX_RADAPT_CFG.TX_RADAPT_ADD_LVL = 4
USXGMII_TX_RADAPT_CFG.TX_RADAPT_DROP_LVL = 8
USXGMII_TX_RADAPT_CFG.TX_RADAPT_MIN_IFG = 1
Register Description
...........continued
Register Description
...........continued
Register Description
...........continued
Register Description
...........continued
Register Description
The counters are writable. In particular, the counters are cleared by writing a 0 to each counter.
Mode 10GBASE-R
No. of Lanes 1
Encoding 64b/66b
Preamble shrink No
Mode 5GBASE-R
No. of Lanes 1
Encoding 64b/66b
Preamble shrink No
Apart from above the DEV10G block also can also operate in 10G-DXGMII mode of operation as per Cisco USXGMII
spec.
DEV10G port module consists of MAC which also handles MAC Merge sub-layer function, along with PCS10G (10G
speed with optional KRFEC, 5G speeds NO FEC), USXGMII PCS.
DEV10G
PCS10G
KRFEC
MAC-MERGE
MAC10G/
USXGMII PCS
4.7.1 MAC
This section describes the high level functions and the configuration options of the MAC that is used in the DEV10G
port modules.
The applicable registers are listed in the following table.
Table 4-39. DEV10G MAC Configuration Registers
Target::Register.Field Description
When changing the MAC configuration, the port must go through a reset cycle. This is done by writing the register
DEV10G::DEV_RST_CTRL twice. On first write all reset bits must be set to active (0x1). On the second write resets
bits are cleared (0x0). Non-reset bits in DEV10G::DEV_RST_CTRL must keep their value for both writes.
4.7.1.2 Interrupts
There are five interrupt sources defined for DEV10G port module, which can be found below. For more detail
description of general interrupt handling, see 5.10.13 Outbound Interrupt Controller.
Table 4-41. DEV10G Interrupt Sources
Target::Register.Field Description
All the sticky events in XFI PCS are capable of generating an interrupt if their corresponding interrupt mask is set to
1. Below are the interrupt registers that are used for interrupt generation if corresponding event bit is set from 10G
Base-R PCS (or XFI PCS).
Table 4-42. Dev10G Base-R PCS Interrupt Sources
Target::Register.Field Description
Target::Register.Field Description
...........continued
Target::Register.Field Description
4.7.2 PCS10G
This section describes the Physical Coding Sublayer (PCS) blocks included in the DEV10G port module. Depending
on the DEV10G mode configuration, the corresponding PCS block must be selected and configured accordingly.
Status information such as link status is available per PCS block and the right register bit, depending on mode must
be checked. Interrupt source signal are selected from the current selected PCS block depending on mode selection.
Note:
Each DEV10G port module must only enable one PCS block at the same time.
The applicable registers for DEV10G PCS configuration and status can be found in the following tables.
Table 4-45. DEV10G PCS Configuration Registers
TX_ERRBLK_CNT XFI-PCS counter for number of times Transmit FSM enters TX_E state. Per PCS
TX_CHARERR_CNT XFI-PCS counter for number of invalid control characters transmitter Per PCS
detected from MAC
...........continued
Register Description Replication
RX_BER_CNT XFI-PCS counter for number of times receive BER FSM enters Per PCS
BER_BAD_SH state (ber_count).
RX_ERRBLK_CNT XFI-PCS counter for number of times receive FSM enters RX_E state. Per PCS
RX_CHARERR_CNT XFI-PCS counter for receive number of invalid control characters after Per PCS
decoding.
4.7.2.4 Tx Loopback
For debug purposes there is a loop back path defined within all PCS blocks, which loops back Tx data path into the
Rx data path. This is enabled through PCS_10GBR::PCS_CFG.PMA_LOOPBACK_ENA for PCS XFI.
PCS10G_BR::PCS_CFG.TX_TEST_MODE Enables test pattern mode in XFI PCS transmitter. Per PCS
PCS10G_BR::PCS_CFG.TX_REST_MODE Enables test pattern mode in XFI PCS receiver. Per PCS
PCS10G_BR::TEST_CFG Test pattern configuration register when test mode Per PCS
is enabled for XFI PCS
PCS10G_BR::TX_DATAPAT_MSB.TX_DATA Most significant 32 bits of 64-bit data pattern used Per PCS
PAT_MSB in pseudo-random and user-defined test pattern
mode for transmitter of XFI PCS.
PCS10G_BR::TX_DATAPAT_LSB.TX_DATA Least significant 32 bits of 64-bit data pattern used Per PCS
PAT_LSB in pseudo-random and user-defined test pattern
mode for transmitter of XFI PCS.
PCS10G_BR::RX_DATAPAT_MSB.RX_DAT Most significant 32 bits of 64-bit data pattern used Per PCS
APAT_MSB in pseudo-random and user-defined test pattern
mode for receiver of XFI PCS.
PCS10G_BR::RX_DATAPAT_LSB.RX_DATA Least significant 32 bits of 64-bit data pattern used Per PCS
PAT_LSB in pseudo-random and user-defined test pattern
mode for receiver of XFI PCS.
PCS10G_BR::PCS_STATUS.TESTPAT_MA When in test pattern check mode, this bit will read Per PCS
TCH 1 if the test pattern checker detects a match. When
0, the test pattern does not match. The test pattern
error counts should still be used along with this
register bit to determine proper test match status.
The bit will read back 1 only when the test pattern
is matching. This may happen even while test
pattern errors are counted on other clock cycles.
User defined mode is a slightly modified test pattern in which scrambler will not be initialized with any seed value and
so there will not be any errors after every 128-block window.
Different types of test pattern generation can be chosen by configuring
PCS10G_BR::TEST_CFG.TX_TESTPAT_SEL and that of checkers by configuring
PCS10G_BR::TEST_CFG.RX_TESTPAT_SEL. For square wave test pattern generation, period can be configured
using PCS10G_BR::TEST_CFG.TX_SQPW_4B. For pseudo-random test pattern inversion of seeds and data is
enabled by PCS10G_BR::TEST_CFG.TX_DSBL_INV and PCS10G_BR::TEST_CFG.RX_DSBL_INV.
4.7.2.6 KR FEC
XFI PCS also supports KR FEC. Applicable registers can be found in following table.
Table 4-48. DEV10G KR FEC Configuration and Status Registers
To enable FEC, PCS10G_BR::KR_FEC_CFG.FEC_ENA must be set. In addition, data bits must be flipped at
KR FEC interface with PCS. This is achieved by setting both PCS10G_BR::KR_FEC_CFG.TX_DATA_FLIP and
PCS10G_BR::KR_FEC_CFG.RX_DATA_FLIP to 1.
For enabling FEC error indication in the PCS register bit, set
PCS10G_BR::KR_FEC_CFG.ENABLE_ERROR_INDICATION to 1. This ensures that XFI PCS decodes the block
correctly, and hence correct data is presented to MAC. When FEC looses frame lock, it is reflected in the
PCS10G_BR::KR_FEC_STICKY.FEC_FRAME_LOCK_STICKY sticky bit.
There are two counters in FEC for counting corrected and uncorrected error blocks. These are cleared by writing a 1
to PCS10G_BR::KR_FEC_CFG.RESET_MONITOR_COUNTERS, followed by a 0.
When the counters cross a threshold value configurable by PCS10G_BR::FIXED_ERROR_COUNT_THRESHOLD
and PCS10G_BR::UNFIXABLE_ERROR_COUNT_THRESHOLD, two corresponding sticky
bits are set (PCS10G_BR::KR_FEC_STICKY.FEC_FIXED_ERROR_COUNT_STICKY and
PCS10G_BR::KR_FEC_STICKY.FEC_UNFIXABLE_ERROR_COUNT_STICKY).
Note that KR FEC must be disabled when EEE is enabled.
...........continued
Register Description Replication
USXGMII_PCS_STATUS.USXGMII_BLOCK Indicates if USXGMII PCS has reached block lock Per PCS
_LOCK state
0: USXGMII PCS is not in block lock state
1: USXGMII PCS is in block lock state
DEV_RST_CTRL.USXGMII_OSET_FILTER_ The USXGMII replicator block samples only the Per PCS
DIS first XGMII word. The other replications are
ignored. Only if they contain a Local Fault or
remote Fault ordered set the next data will be
overwritten. This bit will disable overwrite wit
ordered sets.
0: Non-Sampleld ordered sets will overwrite the
following XGMII words
1: Overwrite of XGMII words with ordered sets is
disabled.
USXGMII_TX_RADAPT_CFG. Set the add threshold in the FIFO. Level is in 72-bit Per USXGMII
TX_RADAPT_ADD_LVL words. PCS
USXGMII_TX_RADAPT_CFG. Set the drop threshold in the FIFO. Level is in 72- Per USXGMII
TX_RADAPT_DROP_LVL bit words. PCS
For 10G-DXGMII modes, the USXGMII Rate adaptation register fields should be set to the following values.
USXGMII_TX_RADAPT_CFG.TX_RADAPT_ADD_LVL = 4
USXGMII_TX_RADAPT_CFG.TX_RADAPT_DROP_LVL = 8
USXGMII_TX_RADAPT_CFG.TX_RADAPT_MIN_IFG = 1
Register Description
...........continued
Register Description
...........continued
Register Description
...........continued
Register Description
The counters are writable. In particular, the counters are cleared by writing a 0 to each counter.
Mode 10GBASE-R
No. of Lanes 1
Encoding 64b/66b
Preamble shrink No
Mode 5GBASE-R
No. of Lanes 1
Encoding 64b/66b
Preamble shrink No
4.8.1 MAC
This section describes the high level functions and the configuration options of the MAC that is used in the DEV25G
port modules.
The applicable registers are listed in the following table.
Table 4-54. DEV25G MAC Configuration Registers
...........continued
Register Description Replication
Target::Register.Field Description
When changing the MAC configuration, the port must go through a reset cycle. This is done by writing the register
DEV25G::DEV_RST_CTRL twice. On first write all reset bits must be set to active (0x1). On the second write resets
bits are cleared (0x0). Non-reset bits in DEV25G::DEV_RST_CTRL must keep their value for both writes.
4.8.1.2 Interrupts
There are 5 interrupt sources defined for DEV25G port module, which can be found below. For detailed descriptions
of the general interrupt handling, see 5.4.2 VCore CPU Interrupt Controller.
Table 4-56. DEV25G Interrupt Sources
Target::Register.Field Description
All the sticky events in XFI PCS are capable of generating an interrupt if their corresponding interrupt mask is set to
1. Below are the interrupt registers that are used for interrupt generation if corresponding event bit is set from 10G
Base-R PCS (or XFI PCS).
Target::Register.Field Description
There are also other checks available which can be enabled based on following configurations.
Table 4-59. DEV25G Port Module Advance Check Feature Configuration
Target::Register.Field Description
4.8.2 PCS10G
This section describes the PCS10G block included in the DEV25G port module. Depending on the DEV25G mode
configuration, the corresponding PCS block must be selected and configured accordingly. Status information such as
link status is available per PCS block and the right register bit, depending on mode must be checked. Interrupt source
signal are selected from the current selected PCS block depending on mode selection.
Applicable registers for DEV25G PCS10G configuration and status can be found in the following tables.
Table 4-60. DEV25G PCS10G Configuration Registers
TX_ERRBLK_CNT XFI-PCS Counter for number of times Transmit FSM enters TX_E Per PCS
state.
TX_CHARERR_CNT XFI-PCS Counter for number of invalid control characters Per PCS
transmitter detected from MAC
RX_BER_CNT XFI-PCS Counter for number of times Receive BER FSM enters Per PCS
BER_BAD_SH state (ber_count).
...........continued
Register Description Replication
RX_ERRBLK_CNT XFI-PCS Counter for number of times Receive FSM enters RX_E Per PCS
state.
RX_CHARERR_CNT XFI-PCS Counter for Receive number of invalid control Per PCS
characters after decoding.
4.8.2.4 Tx Loopback
For debug purposes there is a loop back path defined within all PCS blocks, which loops back Tx data path into the
Rx data path. This is enabled through PCS_10GBR::PCS_CFG.PMA_LOOPBACK_ENA for PCS XFI.
PCS10G_BR::PCS_CFG.TX_TEST_M Enables test pattern mode in XFI PCS transmitter. Per PCS
ODE
PCS10G_BR::PCS_CFG.TX_REST_M Enables test pattern mode in XFI PCS receiver. Per PCS
ODE
PCS10G_BR::TEST_CFG Test pattern configuration register when test mode is Per PCS
enabled for XFI PCS
PCS10G_BR::TX_DATAPAT_MSB.TX_ Most significant 32 bits of 64-bit data pattern used in Per PCS
DATAPAT_MSB pseudo-random and user-defined test pattern mode for
transmitter of XFI PCS.
PCS10G_BR::TX_DATAPAT_LSB.TX_ Least significant 32 bits of 64-bit data pattern used in Per PCS
DATAPAT_LSB pseudo-random and user-defined test pattern mode for
transmitter of XFI PCS.
PCS10G_BR::RX_DATAPAT_MSB.RX Most significant 32 bits of 64-bit data pattern used in Per PCS
_DATAPAT_MSB pseudo-random and user-defined test pattern mode for
receiver of XFI PCS.
PCS10G_BR::RX_DATAPAT_LSB.RX_ Least significant 32 bits of 64-bit data pattern used in Per PCS
DATAPAT_LSB pseudo-random and user-defined test pattern mode for
receiver of XFI PCS.
PCS10G_BR::PCS_STATUS.TESTPA When in test pattern check mode, this bit will read 1 Per PCS
T_MATCH if the test pattern checker detects a match. When 0,
the test pattern does not match. The test pattern error
counts should still be used along with this register bit
to determine proper test match status. The bit will read
back 1 only when the test pattern is matching. This may
happen even while test pattern errors are counted on
other clock cycles.
PCS10G_BR::TEST_ERR_CNT.TEST Count of detected test pattern errors in Rx test pattern Per PCS
_ERR_CNT checker. Write 0 to clear.
User defined mode is a slightly modified test pattern in which scrambler will not be initialized with any seed value and
so there will not be any errors after every 128-block window.
Different types of test pattern generation can be chosen by configuring
PCS10G_BR::TEST_CFG.TX_TESTPAT_SEL and that of checkers by configuring
PCS10G_BR::TEST_CFG.RX_TESTPAT_SEL. For square wave test pattern generation, period can be configured
using PCS10G_BR::TEST_CFG.TX_SQPW_4B. For pseudo-random test pattern inversion of seeds and data is
enabled by PCS10G_BR::TEST_CFG.TX_DSBL_INV and PCS10G_BR::TEST_CFG.RX_DSBL_INV.
4.8.2.6 KR FEC
XFI PCS also supports KR FEC. Applicable registers can be found in following table.
Table 4-63. DEV25G 10G-KR FEC Configuration and Status Registers
To enable FEC, PCS10G_BR::KR_FEC_CFG.FEC_ENA must be set. In addition, data bits must be flipped at
KR FEC interface with PCS. This is achieved by setting both PCS10G_BR::KR_FEC_CFG.TX_DATA_FLIP and
PCS10G_BR::KR_FEC_CFG.RX_DATA_FLIP to 1.
For enabling FEC error indication in the PCS register bit, set
PCS10G_BR::KR_FEC_CFG.ENABLE_ERROR_INDICATION to 1. This ensures that XFI PCS decodes the block
correctly, and hence correct data is presented to MAC. When FEC looses frame lock, it is reflected in the
PCS10G_BR::KR_FEC_STICKY.FEC_FRAME_LOCK_STICKY sticky bit.
There are two counters in FEC for counting corrected and uncorrected error blocks. These are cleared by writing a 1
to PCS10G_BR::KR_FEC_CFG.RESET_MONITOR_COUNTERS, followed by a 0.
When the counters cross a threshold value configurable by PCS10G_BR::FIXED_ERROR_COUNT_THRESHOLD
and PCS10G_BR::UNFIXABLE_ERROR_COUNT_THRESHOLD, two corresponding sticky
bits are set (PCS10G_BR::KR_FEC_STICKY.FEC_FIXED_ERROR_COUNT_STICKY and
PCS10G_BR::KR_FEC_STICKY.FEC_UNFIXABLE_ERROR_COUNT_STICKY).
Note that KR FEC must be disabled when EEE is enabled.
...........continued
Register Description Replication
USXGMII_PCS_STATUS.USXGMII_B Indicates if USXGMII PCS has reached block lock Per PCS
LOCK_LOCK state 0: USXGMII PCS is not in block lock state
1: USXGMII PCS is in block lock state
DEV_RST_CTRL.USXGMII_OSET_FI The USXGMII replicator block samples only the Per PCS
LTER_DIS first XGMII word. The other replications are
ignored. Only if they contain a Local Fault or
remote Fault ordered set the next data will be
overwritten. This bit will disable overwrite wit
ordered sets.
0: Non-Sampleld ordered sets will overwrite the
following XGMII words
1: Overwrite of XGMII words with ordered sets is
disabled.
USXGMII_TX_RADAPT_CFG. Set the add threshold in the FIFO. Level is in Per USXGMII PCS
TX_RADAPT_ADD_LVL 72-bit words.
USXGMII_TX_RADAPT_CFG. Set the drop threshold in the FIFO. Level is in Per USXGMII PCS
TX_RADAPT_DROP_LVL 72-bit words.
For the 10G-DXGMII modes, the USXGMII Rate adaptation register fields should be set to the following values.
• USXGMII_TX_RADAPT_CFG.TX_RADAPT_ADD_LVL = 4
• USXGMII_TX_RADAPT_CFG.TX_RADAPT_DROP_LVL = 8
• USXGMII_TX_RADAPT_CFG.TX_RADAPT_MIN_IFG = 1
Register Description
...........continued
Register Description
RX_UNTAGGED_FRMS_CNT Counts frames that are Not tagged (neither C-Tagged nor S-
Tagged).
TX_UNTAGGED_FRMS_CNT Counts frames that are Not tagged (neither C-Tagged nor S-
Tagged).
...........continued
Register Description
...........continued
Register Description
RX_IN_BYTES_MSB_CNT The number of bytes received (good, bad, and framing) - MSBs only
TX_OUT_BYTES_MSB_CNT The number of bytes transmitted (good, bad, framing) - MSBs only
PMAC_RX_OK_BYTES_MSB_CNT PMAC - The number of received bytes in good frames - MSBs only.
PMAC_RX_BAD_BYTES_MSB_CNT PMAC - The number of received bytes in bad frames - MSBs only
The counters are writable. In particular, the counters are cleared by writing a 0 to each counter.
4.9 Assembler
The assembler (ASM) block is responsible for collecting words from the smaller taxi bus and assembling them into
cells. It is also responsible for the loopback path between the rewriter and the analyzer.
For the first cell of a frame, which is the SOF cell, the assembler adds room for a 36-byte internal frame header (IFH).
On a stacking port, the stacking tag is extracted from the frame data and placed in the respective part of the IFH.
The assembler receives a calendar sequence from the queue system defining in the sequence the ports should be
served on the outgoing cell bus.
The assembler also detects PAUSE frames and forwards the extracted PAUSE information to the disassembler. PFC
pause information extracted from PFC PAUSE frames are forwarded to the queue system.
Finally, the assembler collects the port statistics for all lower speed ports, which are the DEV2G5 ports. Statistics for
the high-speed DEV5G, DEV10G, and DEV25G ports are handled locally in the port module.
By default, an Ethernet port does not need configuration in the assembler as long as special settings are not
required. However, the following exceptions may apply:
If the port is used as a stacking port, set ASM::PORT_CFG.VSTAX2_AWR_ENA, which enables detection of the
VStaX stacking header. If a VStaX stacking header is found, the assembler will remove the header from the frame
and put it into the internal frame header.
Frames received from the port modules are preamble prepended by default. If a port module is configured for
preamble shrink mode, the ASM::PORT_CFG.NO_PREAMBLE_ENA must be set to 1, because the port module
does not prepend a preamble in this mode.
When ASM::PORT_CFG.PAD_ENA is set, frames that are smaller than 64 bytes are padded to reach the minimum
frame size.
The assembler has a built-in frame fragment detection mechanism for incoming frames that were started
but never received their EOF (because the port module was taken down, for example). These frames are
normally finalized by creating an EOF abort marked cell. If a frame has been discarded, it is noted in
ASM::PORT_STICKY.FRM_AGING_STICKY. The following table lists the port status register.
Table 4-68. Port Status Register Overview
The injection format is selected in ASM::PORT_CFG.INJ_FORMAT_CFG. The prefix formats are shown in the
following figures.
Figure 4-11. Frame Injection Formats
IFH
Original frame
288 bits
Start-of-frame
When a port is setup to receive frames with either a short prefix or a long prefix, the
incoming frames are checked against the selected prefix. If the prefix does not match, an
error indication is set in ASM::PORT_STICKY.IFH_PREFIX_ERR_STICKY. Depending on the setting of
ASM::PORT_CFG.INJ_DISCARD_CFG, the frames are processed in one of the three following modes.
• None. Both compliant and non-compliant frames are forwarded. Compliant frames are forwarded based on the
IFH, and non-compliant frames are forwarded as regular frames.
• Drop non-compliant. Compliant frames are forwarded based on the IFH, and non-compliant frames are
discarded.
• Drop compliant. Compliant frame are discarded, and non-compliant frames are forwarded as normal frames.
If a CPU port is used for frame injection, ASM::PORT_CFG.NO_PREAMBLE_ENA must be set to 1 so that the
assembler does not expect frame data to be perpended with a preamble.
If a front port is used for frame injection, ASM::PORT_CFG.SKIP_PREAMBLE_ENA must be set to 1 to discard the
preamble data before processing of the perpended injection header.
The assembler is responsible for detecting PAUSE frames and forwarding the PAUSE value to the disassembler.
Because PAUSE frames belong to the MAC control sublayer, they should in general be filtered and not forwarded to
a higher layer; that is, forwarded on the cell bus so they reach the analyzer. The filtering is done by abort marking the
frame.
The PAUSE frame and other MAC control frames can be forwarded to the analyzer. For PAUSE frame
forwarding, ASM::PAUSE_CFG.ABORT_PAUSE_ENA must be set to 0. For other MAC control frame forwarding,
ASM::PAUSE_CFG.ABORT_CTRL_ENA must be set to 0.
When PAUSE frames are received, the DMAC address is checked. The DMAC address must be
either the 48-bit multicast address 01-80-C2-00-00-01 as mentioned by IEEE802.3 Annex 31B.1 or the
MAC address of the port, which is configured in ASM::MAC_ADDR_HIGH_CFG.MAC_ADDR_HIGH and
ASM::MAC_ADDR_LOW_CFG.MAC_ADDR_LOW.
Note:
The values configured in ASM::MAC_ADDR_HIGH_CFG.MAC_ADDR_HIGH
and ASM::MAC_ADDR_LOW_CFG.MAC_ADDR_LOW must match the
value configured in DSM::MAC_ADDR_BASE_HIGH_CFG.MAC_ADDR_HIGH and
DSM::MAC_ADDR_BASE_LOW_CFG.MAC_ADDR_LOW.
The number of received PAUSE frames is tracked as part of the port statistics. For more information, see
4.9.5 Setting Up Assembler Port Statistics.
Port statistics inside the ASM are stored in RAMs. Before they can be used, they must be initialized to 0 by setting
ASM::STAT_CFG.STAT_CNT_CLR_SHOT to 1.
The statistic counters start counting as soon as the hardware has reset ASM::STAT_CFG.STAT_CNT_CLR_SHOT to
0.
For information about the lists of port statistics registers available per port, see ASM:DEV_STATISTICS register
group in the Register List.
All statistic counters have a width of 32 bits, except for the five byte-counters; RX_IN_BYTES_CNT,
RX_OK_BYTES_CNT, RX_BAD_BYTES_CNT, TX_OUT_BYTES_CNT, and TX_OK_BYTES_CNT. Those have an
additional 4-bit MSB counter. When reading from counters with more than 32 bits, the non-MSB part has to be read
first in order to latch the MSB part into a shadow register, where the value can be read afterward. For writing, the
MSB part must be written first.
A FIFO can be flushed using the ASM::LBK_FIFO_CFG.FIFO_FLUSH register. The register field clears itself when
the flush is completed.
Cells in the FIFO can be discarded due to aging. If a frame is discarded due to aging, a per port sticky bit is set in
ASM::LBK_AGING_STICKY. The following table lists the loopback FIFO sticky bit registers.
Table 4-74. Loopback FIFO Sticky-Bit Registers Overview
For VD0, VD1, and VD2, the loopback block pushes back towards the queue system to avoid FIFO overflows. The
watermark for configuring the FIFO level at which push back is active can be set in ASM::VD_FC_WM.VD_FC_WM.
The watermark can be configured individually for VD0, VD1, and VD2.
No flow control handling exists for the LBK FIFO. In case of overflow, all new cells received from the rewriter are
discarded, and a bit in the ASM::LBK_OVFLW_STICKY.LBK_OVFLW_STICKY sticky-bit register is set.
from the basic classification. Keys are applied to the VCAP and when there is a match between a key and a rule in
the VCAP, the rule is then applied to the frame from which the key was extracted.
A rule consists of an entry, an action, and a counter. Keys are matched against the entry of a rule. When a rule is
matched, the action is returned by the VCAP, and the rule’s counter is incremented.
One and only one rule will match a key. If a key matches more than one rule, the rule at the highest address is
selected. This means that a rule at high address takes priority over rules at lower addresses. When a key does not
match a rule, a default rule is triggered. A default rule’s action is programmable just like regular rules. Some VCAPs
have more than one default rule; which default rule to use is determined at the same time as the key is created and
applied to the VCAP.
This section provides information about entries and actions in general terms. When discussing an entry or an action,
it is considered a vector of bits that is provided by software. For information about building classification matching
(CLM) keys and actions, see 4.13 VCAP CLM Keys and Actions. For information about building ingress stage 2
(IS2) keys, see 4.19 VCAP IS2 Keys and Actions. For information about building IPv6 prefix keys and actions, see
4.10.3.2 VCAP IP6PFX. For information about building longest prefix matching (LPM) keys, see 4.13 VCAP CLM
Keys and Actions. For information about building egress stage 0 (ES0) keys, see 4.28.5 VCAP_ES0 Lookup. For
information about building egress stage 2 (ES2) keys and actions, see 4.10.3.6 VCAP ES2.
The following sections describe how to program rules into the VCAPs. First, a general description of configuration
and VCAP operations is provided, including a description of wide VCAP rules. Second, detailed information
about individual VCAPs is provided. Finally, a few practical examples illustrate how everything fits together when
programming rules into VCAPs.
Register Description
VCAP_UPDATE_C Initiates of read/write/move/initialization operations
TRL
VCAP_MV_CFG Configures move/initialization operations
VCAP_CORE_IDX Resource allocation, core index
VCAP_CORE_MA Resource allocation, mapping of cores
P
VCAP_ENTRY_DA Cache: Entry data
T
VCAP_MASK_DAT Cache: Entry mask
VCAP_ACTION_D Cache: Action
AT
VCAP_CNT_DAT Cache: Sticky-counter
VCAP_CNT_FW_D Cache: Full-word counter, 1 bit per address offset
AT
A rule in the VCAP consists of an entry, action, and counter showing if the entry was hit. Rules are accessed
indirectly though a cache. The cache corresponds to one address in VCAP memory. Software access the
cache using the VCAP configuration registers VCAP_ENTRY_DAT, VCAP_MASK_DAT, VCAP_ACTION_DAT,
VCAP_CNT_DAT, and VCAP_CNT_FW_DAT.
The following illustration shows an example cache register mapping for a VCAP with 52-bit entry data/mask, 110-bit
action, and a 1-bit sticky counter. Cache registers are replicated to accommodate fields that are wider than 32 bits.
For example, if the entry size is 52 bits, bits [31:0] are accessed using VCAP_ENTRY_DAT[0][31:0], and bits [51:32]
are accessed using VCAP_ENTRY_DAT[1][19:0].
Figure 4-12. VCAP Cache Layout Example
idx: 1 idx: 0
64 32 0
don’t care
VCAP_ENTRY_DAT Entry Data
52
idx: 1 idx: 0
64 32 0
don’t care
VCAP_MASK_DAT Entry Mask
52
idx: 3 idx: 2 idx: 1 idx: 0
128 96 64 32 0
don’t care
VCAP_ACTION_DAT Action
110
idx: 0
32 0
don’t care
VCAP_CNT_DAT Counter
32 0
don’t care
12
Entries have both entry data and entry mask fields. This allows a don’t-care of any bit position in the key when
matching a key against entries.
Table 4-76. Entry Bit Encoding
VCAP_ENTRY_DAT[n]/ Description
VCAP_MASK_DAT[n]
0/0 Bit n is encoded for the match-0 operation. When a key is applied to the VCAP,
this bit in the entry will match a 0 at position n in the key.
0/1 Bit n is encoded for match-any operation. When a key is applied to the VCAP,
this bit in the entry will match both 0 and 1 at position n in the key.
This encoding is sometimes referred to as don’t care.
...........continued
VCAP_ENTRY_DAT[n]/ Description
VCAP_MASK_DAT[n]
1/0 Bit n is encoded for match-1 operation. When a key is applied to the VCAP, this
bit in the entry will match a 1 at position n in the key.
1/1 Bit n is encoded for match-off operation. The entry will never match any keys.
This encoding is not available in the VCAP ES0. Instead, it is treated as match-
any.
When programming a rule that does not use all the available bits in the cache, remaining (undefined) entry bits must
be set to match-0, and action bits must be set to zeros.
The counter for a rule is incremented when the entry of the rule is matched by a key. Counters that are 1-bit wide do
not wrap, but instead saturate at 1.
Rules must not be moved to a region that contains active rules. Software must make sure that destination addresses
are initialized before performing a move operation. After moving rules the move operation leaves VCAP memory in
initialized state, so overlapping source and destination regions is not a problem during move operations.
idx: 1 idx: 0
64 32 0
don’t care
E. TG
VCAP_ENTRY_DAT Entry Data
52 2
idx: 1 idx: 0
64 32 0
E. TG Mask
don’t care
52 2
idx: 3 idx: 2 idx: 1 idx: 0
128 96 64 32 0
don’t care
A. TG
VCAP_ACTION_DAT Action
110
When programming the entry’s type-group field, the mask bits must be set to zeros, so that the typegroup bits consist
of match-1 or match-0, or both.
Use the following procedure for each address that is part of an entry.
1. Use the entry’s current address offset and size to find the appropriate type-group field and associated field-
width by using the entry type-group table for the VCAP. Skip step 2 if entry typegroup is not applicable for the
VCAP.
2. Insert the entry type-group field into the cache for a type-group field width of n. Write the value of the
type-group field to bit-positions [n-1:0] in VCAP_ENTRY_DAT and write zeros to bit-positions [n-1:0] in
VCAP_MASK_DAT. In this way, type-group field value 1 becomes match-1 and 0 becomes match-0.
3. Fill the remainder of VCAP_ENTRY_DAT and VCAP_MASK_DAT with appropriate entry data. There will be
room for (entry width – type-group width) additional bits of entry data.
Use the following procedure for each address is that is part of an action.
1. Use the action’s current address offset and size to find the appropriate type-group field and associated
field-width by using the action type-group table for the VCAP. Skip step 2 if action typegroup is not applicable
for the VCAP.
2. Insert the action type-group field into the cache. For a type-group field width of n. Write the value of the
type-group field to bit positions [n-1:0] in VCAP_ACTION_DAT.
3. Fill the remainder of VCAP_ACTION_DAT with appropriate action data. There will be room for (action width –
type-group width) additional bits of action data.
Counters never use type-group encoding.
Parameter Description
Number of VCAP addresses 3,072 per block that is allocated to this VCAP
Width of entry 52 bits per address
Width of action 110 bits per address
Counter type 1-bit saturating counter
Supported entry sizes X1, X2, X3, X6, and X12
Supported action sizes X1, X2, X3
Associated register target VCAP_SUPER
Number of VCAP lookups per frame 6
The type-group field must be inserted into entries when programming rules, because the VCAP CLM supports more
than one entry size. The following figure shows the binary type-group field values for each entry size and address
offset.
Figure 4-14. VCAP CLM Entry Type-Group Fields
624 572 520 468 416 364 312 260 208 156 104 52 0
1 1 1 1 1 1 1 1 1 1 1 1 X1
0 10 0 10 0 10 0 10 0 10 0 10 X2
11 10 9 8 7 6 5 4 3 2 1 0
Address offset
In total, X1 entries require 1 type-group bit per entry, X2 entries require 3 type-group bits per entry, X3 entries require
7 type-group bits per entry, X6 entries require 13 type-group bits per entry, and X12 entries require 27 type-group bits
per entry.
The type-group field must be inserted into actions when programming rules, because the VCAP CLM supports more
than one action size. The following figure shows the binary type-group field values for each action size and address
offset.
Figure 4-15. VCAP CLM Action Type-Group Fields
1320 1210 1100 990 880 770 660 550 440 330 220 110 0
1 1 1 1 1 1 1 1 1 1 1 1 X1
0 10 0 10 0 10 0 10 0 10 0 10 X2
11 10 9 8 7 6 5 4 3 2 1 0
Address offset
In total, X1 actions require 1 type-group bit per action, X2 actions require 3 type-group bits per action, and X3 actions
require 7 type-group bits per action.
The VCAP CLM implements default rules. When submitting a key to the VCAP CLM, the analyzer simultaneously
decides which default rule to hit if the key does not match any entries in the VCAP. If no resources (blocks) are
assigned to VCAP CLM, there can be no matches. As a result, default rules will be hit.
Table 4-78. VCAP CLM Default Rule Addresses
Parameter Description
...........continued
Parameter Description
Although VCAP IP6PFX only supports one entry size, a type-group field must be inserted into entries when
programming rules. The following figure shows the binary type-group field values for each address offset.
Figure 4-16. VCAP IP6PFX Entry Type-Group Fields
104 52 0
0 10 X2
1 0
Address offset
In total, X2 entries require 3 type-group bits per entry. Although VCAP IP6PFX only supports one action size,
a type-group field must be inserted into actions when programming rules. The following figure shows the binary
type-group field values.
Figure 4-17. VCAP IP6PFX Action Type-Group Fields
20 10 0
1 1 X1
1 0
Address offset
In total, X1 actions require 1 type-group bit per action. The VCAP IP6PFX does not implement default rules. If the key
does not match any entries, lookups are treated as misses.
Parameter Description
Number of VCAP addresses 3,072 per block that is allocated to this VCAP
Width of entry 52 bit per address
Width of action 110 bit per address
Counter-type 1 bit saturating counter
Supported entry sizes X1, X2, X3, X6
Supported action sizes X1
Associated register target VCAP_SUPER
...........continued
Parameter Description
Number of VCAP lookups per frame 2
The type-group field must be inserted into entries when programming rules, because the VCAP LPM supports more
than one entry size. The following figure shows the binary type-group field values for each entry size and address
offset.
Figure 4-18. VCAP LPM Entry Type-Group Fields
624 572 520 468 416 364 312 260 208 156 104 52 0
1 1 1 1 1 1 1 1 1 1 1 1 X1
0 10 0 10 0 10 0 10 0 10 0 10 X2
11 10 9 8 7 6 5 4 3 2 1 0
Address offset
In total, X1 entries require 1 type-group bit per entry, X2 entries require 3 type-group bits per entry, X3 entries require
7 type-group bits per entry, and X6 entries require 13 type-group bits per entry.
VCAP LPM only supports one action size and no type-group fields are required. The following figure shows the binary
type-group field values.
Figure 4-19. VCAP LPM Action Type-Group Fields
1320 1210 1100 990 880 770 660 550 440 330 220 110 0
X1
11 10 9 8 7 6 5 4 3 2 1 0
Address offset
The VCAP LPM does not implement default rules. If the key does not match any entries, or if no resources (blocks)
are assigned to the VCAP LPM, routing lookups are treated as misses.
Parameter Description
Number of VCAP addresses 3,072 per block that is allocated to this VCAP
Width of entry 52 bits per address
Width of action 110 bits per address
Counter-type 1-bit saturating counter
Supported entry sizes X3, X6, X12
Supported action sizes X3
...........continued
Parameter Description
Associated register target VCAP_SUPER
The type-group field must be inserted into entries when programming rules, because the VCAP IS2 supports more
than one entry size. The following figure shows the binary type-group field values for each entry size and address
offset.
Figure 4-20. VCAP IS2 Entry Type-Group Fields
624 572 520 468 416 364 312 260 208 156 104 52 0
1 1 1 1 X3
0 10 0 10 X6
0 00 0 100 X12
11 10 9 8 7 6 5 4 3 2 1 0
Address offset
In total, X3 entries require one type-group bits per entry, X6 entries require three type-group bits per entry, and X12
entries require 7 type-group bits per entry.
Although VCAP IS2 only supports one action size, a type-group field must be inserted into actions when
programming rules. The following figure shows the binary type-group field values for each address offset.
Figure 4-21. VCAP IS2 Action Type-Group Fields
1320 1210 1100 990 880 770 660 550 440 330 220 110 0
0 0 10 0 0 10 0 0 10 0 0 10 X3
11 10 9 8 7 6 5 4 3 2 1 0
Address offset
Parameter Description
Number of VCAP addresses 4,096
Width of entry 51 bits per address
Width of action 489 bits per address
Counter-type 1-bit saturating counter
Supported entry sizes X1
Supported action sizes X1
Associated register target VCAP_ES0
Number of VCAP lookups per frame 1
The type-group field is not used when programming entries and actions, because VCAP ES0 supports only one entry
size and one action size of same size.
The VCAP ES0 has 70 default rules. The address of default rule number n is (4,096 + n). When submitting a key to
the VCAP ES0, the rewriter simultaneously decides which default rule to hit if the key does not match any entries in
the VCAP.
Parameter Description
Number of VCAP addresses 12,288 per block that is allocated to this VCAP
Width of entry 52 bits per address
Width of action 21 bits per address
Counter-type 1-bit saturating counter
Supported entry sizes X3, X6, X12
Supported action sizes X3
Associated register target VCAP_SUPER
Number of VCAP lookups per frame 2
The type-group field must be inserted into entries when programming rules, because the VCAP ES2 supports more
than one entry size. The following figure shows the binary type-group field values for each entry size and address
offset.
624 572 520 468 416 364 312 260 208 156 104 52 0
1 1 1 1 X3
0 10 0 10 X6
0 00 0 100 X12
11 10 9 8 7 6 5 4 3 2 1 0
Address offset
In total, X3 entries require 1 type-group bits per entry, X6 entries require 3 type-group bits per entry, and X12 entries
require 7 type-group bits per entry.
Although VCAP ES2 only supports one action size, a type-group field must be inserted into actions when
programming rules. The following figure shows the binary type-group field values for each address offset.
Figure 4-23. VCAP ES2 Action Type-Group Fields
0 0 10 0 0 10 0 0 10 0 0 10 X3
11 10 9 8 7 6 5 4 3 2 1 0
Address offset
The X2 TRI_VID entry is 100 bits wide. The X3 FULL action is 317 bits wide. For information about how to build
a TRI_VID entry, see 4.13.3 VCAP CLM X2 Key Details. For information about how to build a FULL action, see
4.13.7 VCAP CLM Actions.
Each entry address holds 52 bits of entry data/mask, but some of them are used for type-group fields. For more
information about type-group fields for an X2 entry, see Figure 4-14. The resulting programming is shown in the
following table.
Table 4-86. CLM X2 Entry Type-Group and Distribution Summary
The TRI_VID entry is only 100 bits wide, so bit 100 of address offset 1 must be treated as Match-0.
Each action address holds 110 bits of action, but some of them are used for type-group fields. For more information
the type-group fields for an X3 action, see Figure 4-15. The resulting programming is shown in the following table.
Table 4-87. CLM X3 Action Type-Group and Distribution Summary
The FULL action is only 317 bits wide, so bits [322:317] of address offset 2 must be treated as zeros.
Software must write the highest address offset first and work down to the lowest address offset.
When a new rule is started, first clear cache’s entry, action, and counter by setting
VCAP_UPDATE_CTRL.CLEAR_CACHE = 1.
Write entry data to cache:
• VCAP_ENTRY_DAT[1][18:0] = entry data[50:32]
• VCAP_ENTRY_DAT[0][31:0] = entry data[31:0]
Write entry mask to cache:
• VCAP_MASK_DAT[1][18:0] = entry mask[50:32]
• VCAP_MASK_DAT[0][31:0] = entry mask[31:0]
Write action to cache:
• VCAP_ACTION_DAT[15][8:0] = action[488:480]
• VCAP_ACTION_DAT[14][31:0] = action[479:448]
• VCAP_ACTION_DAT[13][31:0] = action[447:416]
• VCAP_ACTION_DAT[12][31:0] = action[415:384]
• VCAP_ACTION_DAT[11][31:0] = action[383:352]
• VCAP_ACTION_DAT[10][31:0] = action[351:320]
• VCAP_ACTION_DAT[9][31:0] = action[319:288]
• VCAP_ACTION_DAT[8][31:0] = action[284:256]
• VCAP_ACTION_DAT[7][31:0] = action[255:224]
• VCAP_ACTION_DAT[6][31:0] = action[223:192]
• VCAP_ACTION_DAT[5][31:0] = action[191:160]
• VCAP_ACTION_DAT[4][31:0] = action[159:128]
• VCAP_ACTION_DAT[3][31:0] = action[127:96]
• VCAP_ACTION_DAT[2][31:0] = action[95:64]
• VCAP_ACTION_DAT[1][31:0] = action[63:32]
• VCAP_ACTION_DAT[0][31:0] = action[31:0]
Write cache to VCAP memory by setting VCAP_UPDATE_CTRL = (4|(1215<<3)).
After VCAP_UPDATE_CTRL.UPDATE_SHOT is cleared, the rule is completely written to memory and will be able to
match ISDX keys applied to the VCAP ES0.
Analyzer
OE T T E RO
T
OT
T_
V RO MI
P RO VO _P
E P
P _P _S
W
_P VO PR SW MI N
Pipeline RA OR CL CL
M PT U_ U_ ID N_ N_ N_ N_ LA
_V A_
P I _O OU OU _O M _I I _I _I _V
points: A A_ A_ A_ A A_ A_ A A_ A A_ A A A
AN AN A N AN AN AN A N A N AN AN AN AN AN AN AN
Basic classification
Protect Select/Kill
Protect Select/Kill
Protect Select/Kill
Protect Select/Kill
Forwarding
ISDX stat
Std Std Std
Std
IPT
by by by
by
Acti Acti Acti
Acti ve ve ve
ve
Scheduler/Shaper
Port Interface
Queue System
Port Down MEP
Down MEP
Down MEP
Switch
Up MEP
Up MEP
MIP
MIP
or
or
Loop
Drops
Drops
Drops
Departure port statistics
VCAP_ES0 SW PPT
LAG Physical->Logical
VCAP_ES0 SW PPT
Egress Classification
VRAP injection
Loop
Loop
ESDX stat
Rewriter
P P
E MI SW VO
E OE W MI NE
Pipeline P VO U_ _
U_ _V _S N_ DO
RA _ O OU IN IN _I A_
points: V RT W_ EW
_
W_
O
EW
_
EW
_
RE
W AN
W_ PO RE R RE R R
RE W_
RE
Rewriter
: Drop
Legend: : Extraction or drop
: Extraction point
: Injection point
...........continued
Pipeline Point Block/Mechanism That Uses Application
Pipeline Point
ANA_OU_MIP Outer OAM half-MIP located in Extraction/copy/injection point for analyzer half-
analyzer MIP for:
• UNI-N: Subscriber MIP
• E-NNI: EVC MIP
ANA_OU_SW Outer software MEP with extraction SW MEP located between the VOEs and the port
controlled by VCAP IS2 for:
• Extraction point for SW Down-MEP
• Injection point for SW Up-MEP
ANA_OU_PROT Outer protection point controlled by IPT Protection discard point controlled by IPT for NNI
protection
ANA_OU_VOE Outer OAM VOE located in Outer VOE pipeline point for:
analyzer/VOP • UNI: EVC OAM injection
• E-NNI: OVC OAM Injection
• NNI: Path OAM Extraction
ANA_MID_PROT Middle protection point located Protection discard point for path protection
between outer and inner VOE controlled by path MEP.
controlled by IPT
ANA_IN_VOE Inner OAM VOE located in Inner VOE pipeline point for:
analyzer/VOP • UNI: OVC OAM injection
• NNI: EVC/OVC OAM segment extraction
ANA_IN_PROT Inner protection point located after Protection discard point. Frames are discarded
inner VOE controlled by IPT after the VOEs used for discarding which exit an
inactive EVC Segment
ANA_IN_SW Inner software MEP with extraction SW MEP located between the VOEs and shared
controlled by VCAP IS2 queue system for:
• Extraction point for SW Down-MEP
• Injection point for SW Up-MEP
ANA_IN_MIP Inner OAM half-MIP located in analyzer Extraction/copy/injection point for analyzer half
MIP for NNI: EVC/OVC MIP.
ANA_VLAN Pipeline point associated with VLAN Pipeline point for VLAN discard.
handling and forwarding
ANA_DONE Pipeline point after analyzer Injection point where analyzer is bypassed. Used
for injection directly into rewriter.
REW_IN_MIP Inner OAM half-MIP located in rewriter Extraction/copy/injection point for rewriter half MIP
function for NNI: EVC/OVC MIP.
REW_IN_SW Inner software MEP located in rewriter SW MEP located between the shared queue
controlled by VCAP_ES0 system and the VOEs for:
• Injection point for SW Down-MEP
• Extraction point for SW Up-MEP
REW_IN_VOE Inner OAM VOE located in Inner VOE pipeline point for:
rewriter/VOP • UNI: OVC OAM extraction
• NNI: EVC/OVC OAM segment injection
...........continued
Pipeline Point Block/Mechanism That Uses Application
Pipeline Point
REW_OU_VOE Outer OAM VOE in rewriter/VOP Outer VOE pipeline point for:
• UNI: EVC OAM extraction
• E-NNI: OVC OAM extraction
• NNI: Path OAM injection
REW_OU_SW Outer software MEP located in rewriter SW MEP located between the VOEs and the port
controlled by VCAP_ES0 for:
• Injection point for SW Down-MEP
• Extraction point for SW Up-MEP
REW_OU_MIP Outer OAM half-MIP located in rewriter Extraction/copy/injection point for rewriter half MIP
function for:
• UNI-N: Subscriber MIP
• E-NNI: EVC MIP
The following table defines the pipeline actions associated with the pipeline point.
Table 4-89. Pipeline Actions
Note:
A frame cannot be assigned both a starting point and an ending point at the same side of the queue system. For
instance, a frame cannot be injected in the analyzer at ANA_CLM and then extracted at ANA_IN_SW. However, a
frame can be injected in the analyzer and then extracted in the rewriter.
4.12 Analyzer
The following sections provides information about the functional aspects of the analyzer (ANA). The analyzer evokes
different actions based on the contents of the frame fields. The analyzer is organized into the following blocks.
• VCAP CLM: VCAP Classification matching—keys and actions
• ANA_CL: Analyzer classifier
• ANA_L3: VLAN and MSTP
• VCAP LPM: VCAP longest prefix matching—keys and actions
• ANA_L3: IP routing
• VCAP IS2: VCAP Ingress Stage 2—keys and actions
• ANA_ACL: Access Control Lists
• ANA_L2: Analyzer Layer 2 forwarding and learning
• ANA_AC: Analyzer Actions—forwarding, policing, statistics
...........continued
Key Name Number of Words Key Type
MLL 3 words X3 type
TRI_MLBS
PURE_5TUPLE_IP4
CUSTOM_4
LL_FULL 6 words X6 type
NORMAL
NORMAL_5TUPLE_IP4
CUSTOM_2
NORMAL_7TUPLE 12 words X12 type
CUSTOM_1
Field Short
NORMAL_5TUPLE_IP4
Name Description PURE_5TUPLE_IP4
NORMAL_7TUPLE
SGL_MLBS
DBL_MLBS
CUSTOM_4
CUSTOM_2
CUSTOM_1
TRI_MLBS
NORMAL
LL_FULL
DBL_VID
TRI_VID
ETAG
MLL
Size
...........continued
Field Short
NORMAL_5TUPLE_IP4
Name Description
PURE_5TUPLE_IP4
NORMAL_7TUPLE
SGL_MLBS
DBL_MLBS
CUSTOM_4
CUSTOM_2
CUSTOM_1
TRI_MLBS
NORMAL
LL_FULL
DBL_VID
TRI_VID
ETAG
MLL
Size
IGR_PORT Ingress port 7 x x x x
number
G_IDX_SEL G_IDX selector 2 x x x x x x x x x x x x
G_IDX Generic index 12 x x x x x x x x x x x x
IGR_PORT_M Mode selector 2 x x x
ASK_SEL for
IGR_PORT_M
ASK
IGR_PORT_M Ingress port 65 x x x
ASK mask
L2_MC Multicast 1 x x x
DMAC address
L2_BC Broadcast 1 x x x
DMAC address
ETAGGED Set for frames 1 x
containing an
E-TAG
GRP Group bits 2 x
ECID_EXT ECID extension 8 x
ECID_BASE ECID base 12 x
IGR_ECID_EX Ingress ECID 8 x
T extension
IGR_ECID_BA Ingress ECID 12 x
SE base
VLAN_TAGS Number of 3 x x x x x x
VLAN tags
VLAN_TAG_TP VLAN TPID 3 x
ID type
TPID0 TPID identifier 3 x x x x x x
from first tag
PCP0 PCP from first 3 x x x x x
tag
DEI0 DEI from first 1 x x x x x
tag
VID0 VID from first 12 x x x x x x x
tag
...........continued
Field Short
NORMAL_5TUPLE_IP4
Name Description
PURE_5TUPLE_IP4
NORMAL_7TUPLE
SGL_MLBS
DBL_MLBS
CUSTOM_4
CUSTOM_2
CUSTOM_1
TRI_MLBS
NORMAL
LL_FULL
DBL_VID
TRI_VID
ETAG
MLL
Size
TPID1 TPID identifier 3 x x x x x x
from second
tag
PCP1 PCP from 3 x x x x x
second tag
DEI1 DEI from 1 x x x x x
second tag
VID1 VID from 12 x x x x x x x
second tag
TPID2 Tag protocol 3 x x x x x
identifier from
third tag
PCP2 PCP from third 3 x x x x x
tag
DEI2 DEI from third 1 x x x x x
tag
VID2 VID from third 12 x x x x x
tag
DST_ENTRY Set if 1 x
destination
entry
L2_DMAC Destination 48 x x x
MAC address
L2_SMAC Source MAC 48 x x x x
address
ETYPE_MPLS EtherType 2 x
identifier
IP_MC Multicast DIP 1 x x x
address
ETYPE_LEN ETYPE 1 x x x
encoded frame
ETYPE EtherType, 16 x x x
overloaded for
other frame
types
IP_SNAP IP or SNAP 1 x x x
frame
...........continued
Field Short
NORMAL_5TUPLE_IP4
Name Description
PURE_5TUPLE_IP4
NORMAL_7TUPLE
SGL_MLBS
DBL_MLBS
CUSTOM_4
CUSTOM_2
CUSTOM_1
TRI_MLBS
NORMAL
LL_FULL
DBL_VID
TRI_VID
ETAG
MLL
Size
IP4 IPv4 frame 1 x x x x
LBL0 Label from 20 x x x
MPLS Label
Stack entry 0
TC0 TC bits from 3 x x x
MPLS Label
Stack entry 0
SBIT0 S-bit from 1 x x x
MPLS Label
Stack entry 0
TTL0_EXPIRY Set if TTL<=1 1 x x x
for MPLS Label
Stack entry 0
LBL1 Label from 20 x x
entry 1
TC1 TC bits from 3 x x
entry 1
SBIT1 S-bit from entry 1 x x
1
TTL1_EXPIRY Set if TTL<=1 1 x x
for entry 1
LBL2 Label from 20 x
entry 2
TC2 TC bits from 3 x
entry 2
SBIT2 S-bit from entry 1 x
2
TTL2_EXPIRY Set if TTL<=1 1 x
for entry 2
RSV_LBL_VAL Reserved label 4 x x x
value
CW_ACH CW/ACH after 32 x
label with S-bit
set
RSV_LBL_POS Reserved label 3 x x x
position
...........continued
Field Short
NORMAL_5TUPLE_IP4
Name Description
PURE_5TUPLE_IP4
NORMAL_7TUPLE
SGL_MLBS
DBL_MLBS
CUSTOM_4
CUSTOM_2
CUSTOM_1
TRI_MLBS
NORMAL
LL_FULL
DBL_VID
TRI_VID
ETAG
MLL
Size
L3_FRAGMEN Fragment type 2 x x x x x
T_TYPE IPv4 frame
L3_FRAG_INV L4 length is 1 x x x x x
LD_L4_LEN invalid for IPv4
fragment
L3_OPTIONS IPv4 frame with 1 x x x x x
options
L3_DSCP Frame’s DSCP 6 x x x x x
value
L3_IP4_DIP Destination IP 32 x x x
address
L3_IP4_SIP SIP address, 32 x x x x
overloaded for
other frame
types
L3_IP6_DIP Destination IP 128 x
address
L3_IP6_SIP Source IP 128 x
address
L3_IP_PROTO IP protocol / 8 x x
next header
TCP_UDP TCP/UDP 1 x x x x
frame
TCP TCP frame 1 x x x x
L4_SPORT TCP/UDP 16 x x x
source port
L4_RNG Range checker 8 x x x x x x x
mask
IP_PAYLOAD_ Payload bytes 32 x x
5TUPLE after IP header
OAM_Y1731 Set if frame’s 1 x x
EtherType =
0x8902
OAM_MEL_FL Encoding of 7 x x
AGS MD level/MEG
level (MEL)
...........continued
Field Short
NORMAL_5TUPLE_IP4
Name Description
PURE_5TUPLE_IP4
NORMAL_7TUPLE
SGL_MLBS
DBL_MLBS
CUSTOM_4
CUSTOM_2
CUSTOM_1
TRI_MLBS
NORMAL
LL_FULL
DBL_VID
TRI_VID
ETAG
MLL
Size
CUSTOM1 64 bytes 512 x
payload
CUSTOM2 32 bytes 256 x
payload
CUSTOM4 16 bytes 128 x
payload
SGL_MLBS
DBL_VID
Size
FIRST Selects between entries relevant for first and second lookup. 1 x x
Set for first lookup, cleared for second lookup.
G_IDX Generic index used to bind together entries across VCAP CLM 12 x x
lookups.
G_IDX is calculated based on fields in VCAP CLM action from
previous VCAP CLM lookup:
NXT_IDX_CTRL.
NXT_IDX.
Default value is configurable in
ANA_CL::CLM_MISC_CTRL.CLM_GIDX_DEF_SEL. Can be
zero, logical port number, or masqueraded port number.
For frames from VD2, G_IDX is set to the frame's IRLEG,
independently of CLM_GIDX_DEF_SEL.
...........continued
Field Name Description
SGL_MLBS
DBL_VID
Size
VLAN_TAG_TPID Tag types: 3 x
0: Untagged
2: Single C-tag
3: Single S-tag
4: Outer C-tag, inner C-tag
5: Outer C-tag, inner S-tag
6: Outer S-tag, inner C-tag
7: Outer S-tag, inner S-tag
S-tags can use any S-tag TPID (0x88A8 or custom values).
...........continued
Field Name Description
SGL_MLBS
DBL_VID
Size
OAM_MEL_FLAGS Encoding of MD level/MEG level (MEL). One bit for each level 6 x
where lowest level encoded as zero.
The following keys can be generated:
MEL=0: 0x0000000
MEL=1: 0x0000001
MEL=2: 0x0000011
MEL=3: 0x0000111
MEL=4: 0x0001111
MEL=5: 0x0011111
MEL=6: 0x0111111
MEL=7: 0x1111111
Together with the mask, the following kinds of rules may be
created:
• Exact match. Fx. MEL=2: 0x0000011
• Below. Fx. MEL<=4: 0x000XXXX
• Below. Fx. MEL<=4: 0x000XXXX
• Above. Fx. MEL>=5: 0xXX11111
• Between. Fx. 3<= MEL<=5: 0x00XX111
Where, 'X' means don't care.
For non-Y1731 OAM frames (OAM_Y1731 = 0),
OAM_MEL_FLAGS encodes an EtherType identifier:
0: IPv4frame (EtherType = 0x0800)
1: IPv6 frame (EtherType = 0x86DD)
2: Downstream assigned label (EtherType = 0x8847)
3: Upstream assigned label (EtherType = 0x8848)
4: LCC/SNAP (EtherType < 0x0600)
5: (R)ARP (EtherType = 0x0806 or 0x8035)
6: Reserved
7: Other
DBL_MLBS
TRI_VID
ETAG
Size
X2_TYPE X2 type: 2 x x x
0: TRI_VID
1: DBL_MLBS
2: Reserved
3: ETAG
...........continued
Field Name Description
DBL_MLBS
TRI_VID
ETAG
Size
VLAN_TAGS Number of VLAN tags in frame: 3 x
0: Untagged
1: Single tagged
3: Double tagged
7: Triple tagged
TPID0 Tag protocol identifier of the frame’s first tag (outer tag): 3 x
0: Untagged.
1: 0x8100.
4: 0x88A8.
5: Custom value 1.
6: Custom value 2.
7: Custom value 3.
TPID1 Tag protocol identifier of the frame’s second tag (tag after 3 x
outer tag):
0: No second tag.
1: 0x8100.
4: 0x88A8.
5: Custom value 1.
6: Custom value 2.
7: Custom value 3.
...........continued
Field Name Description
DBL_MLBS
TRI_VID
ETAG
Size
TPID2 Tag protocol identifier of the frame’s third tag: 3 x
0: No third tag.
1: 0x8100.
4: 0x88A8.
5: Custom value 1.
6: Custom value 2.
7: Custom value 3.
...........continued
Field Name Description
DBL_MLBS
TRI_VID
ETAG
Size
L4_RNG Range mask. Range types: SPORT, DPORT, SPORT or 8 x
DPORT, VID, DSCP, ETYPE, outer VID, or inner VID.
Input into range checkers is taken from classified results
(VID, DSCP) and frame (SPORT, DPORT, ETYPE, outer
VID, inner VID).
Range checkers are configurable per port.
PURE_5TUPLE_IP4
CUSTOM_4
TRI_MLBS
MLL
Size
X3_TYPE X3 type: 2 x x x x
0: MLL.
1: TRI_MLBS.
2: PURE_5TUPLE_IP4.
3: CUSTOM_4.
...........continued
Field Name Description
PURE_5TUPLE_IP4
CUSTOM_4
TRI_MLBS
MLL
Size
TPID0 Tag protocol identifier of the frame’s first tag (outer tag): 3 x
0: Untagged.
1: 0x8100.
4: 0x88A8.
5: Custom value 1.
6: Custom value 2.
7: Custom value 3.
...........continued
Field Name Description
PURE_5TUPLE_IP4
CUSTOM_4
TRI_MLBS
MLL
Size
TC1 MPLS Label Stack entry 1 - TC bits. 3 x
...........continued
Field Name Description
PURE_5TUPLE_IP4
CUSTOM_4
TRI_MLBS
MLL
Size
L3_FRAGMENT_TYPE L3 Fragmentation type: 2 x
0: No Fragments: MF==0 && FO==0
1: Initial Fragments: MF==1 && FO == 0
2: Suspicious Fragment: FO!=0 && FO <=
FRAGMENT_OFFSET_THRES
3: Valid Follow-up Fragment: FO >
FRAGMENT_OFFSET_THRES
Where, FRAGMENT_OFFSET_THRES is programmed
in
ANA_CL::CLM_FRAGMENT_CFG.FRAGMENT_OFFS
ET_THRES.
MF: More Fragments flag in IPv4 header
FO: Fragments Offset in IPv4 header
L3_OPTIONS Set if IPv4 frame contains options (IP len > 5). IP 1 x
options are not parsed.
...........continued
Field Name Description
PURE_5TUPLE_IP4
CUSTOM_4
TRI_MLBS
MLL
Size
L3_IP4_SIP Overloaded field for different frame types: 32 x
LLC frames (ETYPE_LEN = 0 and IP_SNAP = 0):
L3_IP4_SIP = [CTRL, PAYLOAD[0:2]]
NORMAL_5TUPLE_IP4
CUSTOM_2
NORMAL
LL_FULL
Size
X6_TYPE X6 type: 2 x x x x
0: LL_FULL.
1: NORMAL.
2: NORMAL_5TUPLE_IP4.
3: CUSTOM_2.
...........continued
Field Name Description
NORMAL_5TUPLE_IP4
CUSTOM_2
NORMAL
LL_FULL
Size
IGR_PORT_MASK_ Mode selector for IGR_PORT_MASK. 2 x x
SEL
0: DEFAULT.
1: LOOPBACK.
2: MASQUERADE.
3: CPU_VD.
If a frame fulfills multiple of below criteria, then higher
value of IGR_PORT_MASK_SEL takes precedence.
DEFAULT:
Each bit in the mask correspond to physical ingress port.
LOOPBACK:
Set for frames received from a loopback device.
Each bit in the mask correspond to the physical port
which the frame was looped on.
MASQUERADE:
Set for masqueraded frames if
ANA_CL::CLM_MISC_CTRL.MASQ_IGR_MASK_ENA
is set. A frame is masqueraded when
IFH.MISC.PIPELINE_ACT == INJ_MASQ.
The bit corresponding to the masqueraded port is set.
CPU_VD:
Set for the following frame types:
1: CPU injected frames and
ANA_CL::CLM_MISC_CTRL.CPU_IGR_MASK_ENA ==
1
2: Frames received from VD0 or VD1 and
ANA_CL::CLM_MISC_CTRL.VD_IGR_MASK_ENA == 1
Bits 4:0: Bit set if physical src port is VD2, VD1, VD0,
CPU1, or CPU0
Bits 5:11: Src port (possibly masqueraded)
Bits 12:16: ifh.misc.pipeline_pt, bits 17:19:
ifh.misc.pipeline_act
Bits 20: ifh.fwd.afi_inj
...........continued
Field Name Description
NORMAL_5TUPLE_IP4
CUSTOM_2
NORMAL
LL_FULL
Size
L2_MC Set if frame’s destination MAC address is a multicast 1 x x
address (bit 40 = 1).
TPID0 Tag protocol identifier of the frame’s first tag (outer tag): 3 x x x
0: Untagged.
1: 0x8100.
4: 0x88A8.
5: Custom value 1.
6: Custom value 2.
7: Custom value 3.
...........continued
Field Name Description
NORMAL_5TUPLE_IP4
CUSTOM_2
NORMAL
LL_FULL
Size
TPID1 Tag protocol identifier of the frame’s second tag (tag 3 x x x
after outer tag):
0: No second tag.
1: 0x8100.
4: 0x88A8.
5: Custom value 1.
6: Custom value 2.
7: Custom value 3.
...........continued
Field Name Description
NORMAL_5TUPLE_IP4
CUSTOM_2
NORMAL
LL_FULL
Size
IP_MC IPv4 frames: Set if frame’s destination IP address is an 1 x x
IPv4 multicast address (0xE /4).
IPv6 frames: Set if frame’s destination IP address is an
IPv6 multicast address (0xFF /8).
...........continued
Field Name Description
NORMAL_5TUPLE_IP4
CUSTOM_2
NORMAL
LL_FULL
Size
L3_FRAGMENT_TY L3 Fragmentation type: 2 x x x
PE
0: No Fragments: MF==0 && FO==0
1: Initial Fragments: MF==1 && FO == 0
2: Suspicious Fragment: FO!=0 && FO <=
FRAGMENT_OFFSET_THRES
3: Valid Follow-up Fragment: FO >
FRAGMENT_OFFSET_THRES
where FRAGMENT_OFFSET_THRES is programmed in
ANA_CL::CLM_FRAGMENT_CFG.FRAGMENT_OFFSE
T_THRES.
MF: More Fragments flag in IPv4 header
FO: Fragments Offset in IPv4 header
L3_OPTIONS Set if IPv4 frame contains options (IP len > 5). IP options 1 x x x
are not parsed.
...........continued
Field Name Description
NORMAL_5TUPLE_IP4
CUSTOM_2
NORMAL
LL_FULL
Size
L3_IP4_SIP Overloaded field for different frame types: 32 x x x
LLC frames (ETYPE_LEN=0 and IP_SNAP=0):
L3_IP4_SIP = [CTRL, PAYLOAD[0:2]]
...........continued
Field Name Description
NORMAL_5TUPLE_IP4
CUSTOM_2
NORMAL
LL_FULL
Size
L4_SPORT TCP/UDP source port. 16 x x
Overloading:
OAM Y.1731 frames: L4_SPORT = OAM MEL flags, see
the following. TCP_UDP is at the same time set to 1 to
indicate the overloading.
OAM MEL flags:
Encoding of MD level/MEG level (MEL). One bit for each
level where lowest level encoded as zero.
The following keys can be generated:
MEL=0: 0b0000000.
MEL=1: 0b0000001.
MEL=2: 0b0000011.
MEL=3: 0b0000111.
MEL=4: 0b0001111.
MEL=5: 0b0011111.
MEL=6: 0b0111111.
MEL=7: 0b1111111.
Together with the mask, the following kinds of rules may
be created:
Exact match. Fx. MEL=2: 0b0000011.
Below. Fx. MEL<=4: 0b000XXXX.
Above. Fx. MEL>=5: 0bXX11111.
Between. Fx. 3<= MEL<=5: 0b00XX111,
Where, ‘X’ means don’t care.
...........continued
Field Name Description
NORMAL_5TUPLE_IP4
CUSTOM_2
NORMAL
LL_FULL
Size
CUSTOM2 32 bytes payload starting from current frame pointer 256 x
position, as controlled by VCAP CLM actions.
Note that if frame_type==ETH, then payload is retrieved
from a position following the Ethernet layer; for example,
after DMAC, SMAC, 0–3 VLAN tags and EtherType.
NORMAL_7TUPLE
CUSTOM_1
Size
X12_TYPE X12 type. 1 x x
0: NORMAL_7TUPLE.
1: CUSTOM_1.
FIRST Selects between entries relevant for first and second lookup. Set 1 x x
for first lookup, cleared for second lookup.
...........continued
Field Name Description
NORMAL_7TUPLE
CUSTOM_1
Size
G_IDX Generic index used to bind together entries across VCAP CLM 12 x x
lookups.
G_IDX is calculated based on fields in VCAP CLM action from
previous VCAP CLM lookup:
NXT_IDX_CTRL.
NXT_IDX.
Default value is configurable in
ANA_CL::CLM_MISC_CTRL.CLM_GIDX_DEF_SEL. Can be zero,
logical port number, or masqueraded port number.
...........continued
Field Name Description
NORMAL_7TUPLE
CUSTOM_1
Size
IGR_PORT_MASK_ Mode selector for IGR_PORT_MASK. 2 x
SEL
0: DEFAULT.
1: LOOPBACK.
2: MASQUERADE.
3: CPU_VD.
If a frame fulfills multiple of below criteria, then higher value of
IGR_PORT_MASK_SEL takes precedence.
DEFAULT:
LOOPBACK:
Set for frames received from a loopback device.
Each bit in the mask correspond to the physical port which the
frame was looped on.
MASQUERADE:
Set for masqueraded frames if
ANA_CL::CLM_MISC_CTRL.MASQ_IGR_MASK_ENA is set. A
frame is masqueraded when IFH.MISC.PIPELINE_ACT ==
INJ_MASQ.
The bit corresponding to the masqueraded port is set.
CPU_VD:
Set for the following frame types:
1: CPU injected frames and
ANA_CL::CLM_MISC_CTRL.CPU_IGR_MASK_ENA == 1
2: Frames received from VD0 or VD1 and
ANA_CL::CLM_MISC_CTRL.VD_IGR_MASK_ENA == 1
Bits 4:0: Bit set if physical src port is VD2, VD1, VD0, CPU1, or
CPU0
Bits 5:11: Src port (possibly masqueraded)
Bits 12:16: ifh.misc.pipeline_pt, bits 17:19: ifh.misc.pipeline_act
Bits 20: ifh.fwd.afi_inj
...........continued
Field Name Description
NORMAL_7TUPLE
CUSTOM_1
Size
L2_BC Set if frame’s destination MAC address is the broadcast address 1 x
(FF-FF-FF-FF-FF-FF).
TPID0 Tag protocol identifier of the frame’s first tag (outer tag): 3 x
0: Untagged.
1: 0x8100.
4: 0x88A8.
5: Custom value 1.
6: Custom value 2.
7: Custom value 3.
TPID1 Tag protocol identifier of the frame’s second tag (tag after outer 3 x
tag):
0: No second tag.
1: 0x8100.
4: 0x88A8.
5: Custom value 1.
6: Custom value 2.
7: Custom value 3.
...........continued
Field Name Description
NORMAL_7TUPLE
CUSTOM_1
Size
VID1 Frame’s VID from second tag. 12 x
ETYPE_LEN Frame type flag indicating that the frame is EtherType encoded. 1 x
Set if frame has EtherType >= 0x600.
...........continued
Field Name Description
NORMAL_7TUPLE
CUSTOM_1
Size
ETYPE Overloaded field for different frame types: 16 x
LLC frames (ETYPE_LEN=0 and IP_SNAP=0):
ETYPE = [DSAP, SSAP]
IP_SNAP Frame type flag indicating that the frame is either an IP frame or a 1 x
SNAP frame.
IP frames (ETYPE_LEN=1):
Set if (EtherType= 0x0800 and IP version = 4) or
(ETYPE = 0x86DD and IP version = 6).
...........continued
Field Name Description
NORMAL_7TUPLE
CUSTOM_1
Size
L3_FRAG_INVLD_L4_L Set if frame's L4 length is less than 1 x
EN ANA_CL:COMMON:CLM_FRAGMENT_CFG.L4_MIN_LEN.
L3_OPTIONS Set if IPv4 frame contains options (IP len > 5). IP options are not 1 x
parsed.
TCP_UDP Frame type flag indicating the frame is a TCP or UDP frame. 1 x
Set if frame is IPv4/IPv6 TCP or UDP frame (IP protocol/next
header equals 6 or 17).
Overloading:
Set to 1 for OAM Y.1731 frames.
...........continued
Field Name Description
NORMAL_7TUPLE
CUSTOM_1
Size
L4_SPORT TCP/UDP source port. 16 x
Overloading:
OAM Y.1731 frames: L4_SPORT = OAM MEL flags. TCP_UDP is
at the same time set to 1 to indicate the overloading.
OAM MEL flags:
Encoding of MD level/MEG level (MEL). One bit for each level
where lowest level encoded as zero.
The following keys can be generated:
MEL=0: 0b0000000
MEL=1: 0b0000001
MEL=2: 0b0000011
MEL=3: 0b0000111
MEL=4: 0b0001111
MEL=5: 0b0011111
MEL=6: 0b0111111
MEL=7: 0b1111111
Together with the mask, the following kinds of rules may be
created:
Exact match. Fx. MEL=2: 0b0000011
Below. Fx. MEL<=4: 0b000XXXX
Above. Fx. MEL>=5: 0bXX11111
Between. Fx. 3<= MEL<=5: 0b00XX111,
Where, ‘X’ means don’t care.
CUSTOM1 64 bytes payload starting from current frame pointer position, as 512 x
controlled by VCAP CLM actions.
Note that if frame_type==ETH, payload is retrieved from a position
following the Ethernet layer. For example, after DMAC, SMAC, 0-3
VLAN tags, and EtherType.
CLASS_REDUCED
MLBS
Any VCAP CLM action can be used with any of VCAP CLM keys. However, if the action’s type is larger than the
associated key’s type (for instance FULL action of type X3 with TRI_VID key of type X2), then the entry row in the
VCAP cannot be fully utilized.
The following table provides details for all VCAP CLM actions. When programming an action in VCAP CLM, the
associated action fields listed must be programmed in the listed order with the first field in the table starting at bit 0 in
the action.
Table 4-98. VCAP CLM Actions
CLASS_REDUCED
MLBS_REDUCED
CLASSIFICATION
MLBS
FULL
Size
X1_TYPE X1 type. 1 x x
0: Action MLBS_REDUCED.
1: Action CLASS_REDUCED.
X2_TYPE X2 type. 1 x x
0: Action MLBS.
1: Action CLASSIFICATION.
...........continued
Field Name Description and Encoding
CLASS_REDUCED
MLBS_REDUCED
CLASSIFICATION
MLBS
FULL
Size
PCP_ENA If set, use PCP_VAL as classified PCP value. 1 x x
...........continued
Field Name Description and Encoding
CLASS_REDUCED
MLBS_REDUCED
CLASSIFICATION
MLBS
FULL
Size
XVID_ADD_REPLAC Controls the classified VID: 3 x x x x
E_
0: VID_NONE: No action.
SEL
1: VID_ADD: New VID = old VID + VID_VAL.
2: VID_REPLACE: New VID = VID_VAL.
3: VID_FIRST_TAG: New VID = VID from frame's
first tag (outer tag) if available, otherwise VID_VAL.
4: VID_SECOND_TAG: New VID = VID from
frame's second tag (middle tag) if available,
otherwise VID_VAL.
5: VID_THIRD_TAG: New VID = VID from
frame's third tag (inner tag) if available, otherwise
VID_VAL.
...........continued
Field Name Description and Encoding
CLASS_REDUCED
MLBS_REDUCED
CLASSIFICATION
MLBS
FULL
Size
VLAN_PUSH_CNT VLAN push count: 0, 1, 2, or 3 tags. 2 x x x
...........continued
Field Name Description and Encoding
CLASS_REDUCED
MLBS_REDUCED
CLASSIFICATION
MLBS
FULL
Size
MASK_MODE Controls the PORT_MASK use. 3 x
0: OR_DSTMASK: Or PORT_MASK with
destination mask.
1: AND_VLANMASK: And PORT_MASK to VLAN
mask. The actual ANDing with the VLAN mask is
performed after the ANA_L3 block has determined
the VLAN mask.
2: REPLACE_PGID: Replace PGID port mask
from MAC table lookup by PORT_MASK.
3: REPLACE_ALL: Use PORT_MASK as final
destination set replacing all other port masks.
4: REDIR_PGID: Redirect using PORT_MASK[7:0]
as PGID table index. See PORT_MASK for extra
configuration options.
5: OR_PGID_MASK: Or PORT_MASK with PGID
port mask from MAC table lookup.
6: VSTAX: Allows control over VSTAX forwarding.
7: Not applicable.
Note that for REDIR_PGID, REPLACE_ALL and
VSTAX, the port mask becomes “sticky” and
cannot be modified by subsequent processing
steps.
The CPU port is untouched by MASK_MODE.
...........continued
Field Name Description and Encoding
CLASS_REDUCED
MLBS_REDUCED
CLASSIFICATION
MLBS
FULL
Size
RT_SEL Controls routing. 2 x x
0: No change to routing.
1: Enable routing.
2: Disable routing.
...........continued
Field Name Description and Encoding
CLASS_REDUCED
MLBS_REDUCED
CLASSIFICATION
MLBS
FULL
Size
OAM_Y1731_SEL Selects which frames are detected as OAM frames 3 x x x x
by MEP and MIP.
0: No change in detection.
1: Disable OAM.
2: Detect untagged OAM.
3: Detect single tagged OAM.
4: Detect double tagged OAM.
5: Detect triple tagged OAM.
6: Enables Y1731 OAM unconditionally.
7: Enables any tags and EtherType as OAM
unconditionally.
...........continued
Field Name Description and Encoding
CLASS_REDUCED
MLBS_REDUCED
CLASSIFICATION
MLBS
FULL
Size
TTL_LABEL Selects which label provides the classified TTL. 3 x x
0: Use TTL from LSE #0 (if available).
1: Use TTL from LSE #1 (if available).
2: Use TTL from LSE #2 (if available).
3: Use TTL from LSE #3 (if available).
7: Do not update TTL.
LSE #0 is top LSE, followed by LSE #1, and so on.
FWD_TYPE: NONE
No MPLS termination, MPLS SWAP, or MPLS
POP
...........continued
Field Name Description and Encoding
CLASS_REDUCED
MLBS_REDUCED
CLASSIFICATION
MLBS
FULL
Size
FWD_TYPE: TERMINATE_PW
FWD_TYPE: LBL_SWAP
Swap label at position NUM_VLD_LABELS.
Any label above the swap label are popped.
NXT_NORM_W16_OFFSET or
NXT_NORM_W32_OFFSET must be set to move
frame pointer to swap label.
NUM_VLD_LABELS must be set to the position of
the swap label.
NXT_NORMALIZE must be set to 1 to have MPLS
Link Layer and, possibly, labels stripped.
NXT_TYPE_AFTER_OFFSET must be set to
MPLS.
OAM PDUs are not detected, though frames with
reserved label values as well as frames with TTL
expiry can be redirected to CPU.
...........continued
Field Name Description and Encoding
CLASS_REDUCED
MLBS_REDUCED
CLASSIFICATION
MLBS
FULL
Size
FWD_TYPE: LBL_POP
Pop labels.
NXT_NORM_W16_OFFSET or
NXT_NORM_W32_OFFSET must be set to move
frame pointer past popped labels.
NUM_VLD_LABELS must be set to the position of
the deepest label to be popped.
NXT_NORMALIZE must be set to 1.
NXT_TYPE_AFTER_OFFSET should normally be
set to MPLS.
NXT_TYPE_AFTER_OFFSET may be set to CW
when terminating LSP with IP frames for CPU
processing.
MPLS_OAM_TYPE can be set to 0, 5, or 6 to
disable/enable OAM PDU detection.
...........continued
Field Name Description and Encoding
CLASS_REDUCED
MLBS_REDUCED
CLASSIFICATION
MLBS
FULL
Size
FWD_TYPE: CTRL_PDU
...........continued
Field Name Description and Encoding
CLASS_REDUCED
MLBS_REDUCED
CLASSIFICATION
MLBS
FULL
Size
MPLS_OAM_TYPE When either MIP or MEP OAM detection is 3 x x x
enabled (MPLS_MIP_ENA or MPLS_MEP_ENA),
MPLS_OAM_TYPE configures in which control
channel to look for OAM.
For FWD_TYPE = 1 (TERMINATE_PW),
MPLS_OAM_TYPE configures which Control
Channel Type is used for forwarding PW OAM:
1: Detect Vccv1 OAM
2: Detect Vccv2 OAM
3: Detect Vccv3 OAM
4: Detect Vccv4 OAM
...........continued
Field Name Description and Encoding
CLASS_REDUCED
MLBS_REDUCED
CLASSIFICATION
MLBS
FULL
Size
MPLS_MEP_ENA Enables detection of MPLS MEP. If enabled and 1 x x x
if frame is not selected for MIP extraction, it is
determined whether it is a valid frame OAM PDU
according to the MPLS_OAM_TYPE.
...........continued
Field Name Description and Encoding
CLASS_REDUCED
MLBS_REDUCED
CLASSIFICATION
MLBS
FULL
Size
PAG_OVERRIDE_M Bits set in this mask override the previous PAG 8 x x x
ASK result with the PAG_VAL value from this action.
...........continued
Field Name Description and Encoding
CLASS_REDUCED
MLBS_REDUCED
CLASSIFICATION
MLBS
FULL
Size
PIPELINE_FORCE_ If set, use PIPELINE_PT unconditionally. Overrule 2 x x x x x
ENA previous settings of pipeline point. Use the
following pipeline actions.
...........continued
Field Name Description and Encoding
CLASS_REDUCED
MLBS_REDUCED
CLASSIFICATION
MLBS
FULL
Size
PIPELINE_PT Pipeline point used if PIPELINE_FORCE_ENA is 5 x x x x
set:
0: NONE
1: ANA_VRAP
2: ANA_PORT_VOE
3: ANA_CL
4: ANA_CLM
5: ANA_IPT_PROT
6: ANA_OU_MIP
7: ANA_OU_SW
8: ANA_OU_PROT
9: ANA_OU_VOE
10: ANA_MID_PROT
11: ANA_IN_VOE
12: ANA_IN_PROT
13: ANA_IN_SW
14: ANA_IN_MIP
15: ANA_VLAN
16: ANA_DONE
...........continued
Field Name Description and Encoding
CLASS_REDUCED
MLBS_REDUCED
CLASSIFICATION
MLBS
FULL
Size
NXT_KEY_TYPE Enforces specific key type for next VCAP CLM 5 x x x x x
lookup.
0: No overruling of default key type selection.
1: MLL.
2: SGL_MLBS.
3: DBL_MLBS.
4: TRI_MLBS.
5: TRI_VID or TRI_VID_IDX, depending on
configuration per VCAP CLM lookup in
ANA_CL::CLM_KEY_CFG.CLM_TRI_VID_SEL.
6: LL_FULL
7: NORMAL (with normal SRC information).
8: NORMAL with DST information.
This is a modified version of NORMAL key type,
where:
the frame’s DMAC is used in the L2_SMAC key
field.
the frame’s IPv4 DIP is used in the L3_IP4_SIP
key field.
9: NORMAL_7TUPLE
10: NORMAL_5TUPLE_IP4
11: PURE_5TUPLE_IP4
12: CUSTOM1
13: CUSTOM2
14: CUSTOM4
15: DBL_VID_IDX
16: ETAG
17: CLMS_DONE
Complete - disable all remaining VCAP CLM
lookups.
...........continued
Field Name Description and Encoding
CLASS_REDUCED
MLBS_REDUCED
CLASSIFICATION
MLBS
FULL
Size
NXT_NORM_W32_ 4-byte value to be added to frame pointer. 2 x
OFFSET
If any reserved MPLS labels were “skipped”
during key generation before VCAP CLM
lookup, then these are not counted in
NXT_NORM_W32_OFFSET, because frame
pointer is automatically moved past “skipped”
labels.
If both NXT_NORM_W32_OFFSET and
NXT_OFFSET_FROM_TYPE are specified, then
frame pointer is first modified based on
NXT_OFFSET_FROM_TYPE and then moved
further based on NXT_NORM_W32_OFFSET..
3: RSV. Reserved.
...........continued
Field Name Description and Encoding
CLASS_REDUCED
MLBS_REDUCED
CLASSIFICATION
MLBS
FULL
Size
NXT_TYPE_AFTER_ Protocol layer (frame_type) at 2 x x x x
OFFSET frame pointer position after update
based on NXT_OFFSET_FROM_TYPE
and NXT_NORM_W16_OFFSET or
NXT_NORM_W32_OFFSET.
...........continued
Field Name Description and Encoding
CLASS_REDUCED
MLBS_REDUCED
CLASSIFICATION
MLBS
FULL
Size
NXT_IDX_CTRL Controls the generation of the G_IDX used in the 3 x x x x x
VCAP CLM next lookup:
0: TRANSPARENT. G_IDX of previous parser step
is carried forward to next parser step.
1: REPLACE. Replace previous G_IDX value with
NXT_IDX of this result.
2: ADD. Add NXT_IDX of this result to G_IDX of
previous parser step.
3: ISDX.Use ISDX as G_IDX.
4: RPL_COND_ISDX. Replace previous G_IDX
value with NXT_IDX of this result. Assign ISDX to
ISDX_VAL for terminated data.
5: Use ISDX with NXT_IDX for non terminated
data (not CPU redir and MEP traffic).
6: Replace ISDX with NXT_IDX. Use ISDX as
G_IDX in next key for non terminated data.
7: Reserved.
• Drop precedence (DP) classification. Assigns one of four drop precedence levels to the frame.
• DSCP classification. Assigns one of 64 DSCP values to the frame.
• Default COSID classification. Assigns one of eight COSID values to the frame.
• VLAN classification. Extracts tag information from the frame or use the port VLAN.
• Link aggregation code generation. Generates the link aggregation code.
• Layer 2 and Layer 3 control protocol handling. Determines CPU forwarding, CPU extraction queue number, and
dedicated protocol QoS handling.
• Versatile Register Access Protocol (VRAP) handling. Extracts VRAP frames to VRAP engine.
• Logical port mapping. Maps physical ingress port to logical port used by analyzer.
• GRE checksum validation for IP-in-IP encapsulated frames with GRE header.
The outcome of the classifier is the basic classification result, which can be overruled by more intelligent frame
processing with VCAP classification matching (VCAP CLM).
The device can parse and use information from up to one E-TAG. The E-TAG must be the outer-most tag if present,
following immediately after the source MAC address. The device can further parse up to three VLAN tags following
the E-TAG.
When parsing an E-TAG, IFH.TAGGING.RTAG_ETAG_AVAIL is set. The contents of the E-TAG is available for
matching against the ETAG key in VCAP CLM. See 4.13.1 Keys Overview for more details.
When E-TAG extraction is disabled, E-TAG frames are considered untagged and any VLAN tags following the E-TAG
are not parsed.
Various blocks in the device uses Layer 3 and Layer 4 information for classification and forwarding. Layer 3 and
Layer 4 information can be extracted from a frame with up to one E-TAG. Frames with more than one E-TAG are
always considered non-IP frames.
E-TAG extraction cannot be enabled while redundancy tag extraction is enabled.
The device can parse and use information from up to one redundancy tag (R-TAG). The redundancy tag can
be placed in any location replacing one of the up to three VLAN tags. The following redundancy and VLAN tag
combinations are thus possible:
• Triple tagged frames:
DMAC, SMAC, R-TAG, VLAN tag, VLAN tag, EtherType.
DMAC, SMAC, VLAN tag, R-TAG, VLAN tag, EtherType.
DMAC, SMAC, VLAN tag, VLAN tag, R-TAG, EtherType.
DMAC, SMAC, VLAN tag, VLAN tag, VLAN tag, and EtherType.
• Double tagged frames:
DMAC, SMAC, R-TAG, VLAN tag, EtherType.
In order for a frame to be routed, the frame’s VLAN tags must all be valid, and routing must be enabled for the
number of VLAN tags in the frame.
The settings in BASIC_TPID_AWARE_DIS define each of three processed VLAN tags of which TPID values are valid
for routing. The settings in RT_TAG_CTRL define the number of valid VLAN tags that must be present in routable
frames.
Example: If routing is enabled for single-tagged frames with TPID=0x8100, configure the following:
• BASIC_TPID_AWARE_DIS = 0x7FFE. This invalidates all TPIDs except TPID = 0x8100 for outer most VLAN
tag.
• RT_TAG_CTRL = 0x2. This enables routing of frames with one accepted tag only.
In this example, if an untagged frame is received, it is not routable because routing is not enabled for untagged
frames. If a single-tagged frame is received with for instance TPID=0x88A8 or a double-tagged frame is received with
for instance TPID=0x8100 for outer tag and TPID=0x8100 for inner tag, they are not routable because not all their
VLAN tags are valid.
Example: To configure routing on a VLAN unaware port where routing is enabled for untagged frames only, set
RT_TAG_CTRL = 0x1 to enable routing of untagged frames only.
Based on the configurations in the FILTER_CTRL register, the classifier can discard certain frame types that are
normally not allowed to enter the network, such as the following.
• Frames with a multicast source MAC address (bit 40 in address is set)
• Frames with a null source or null destination MAC address (address = 0x000000000000)
The VLAN acceptance filter decides whether a frame’s VLAN tagging is allowed on the port. It has three stages
where each stage checks one of the up to three processed VLAN tags. Each stage is programmable independently of
the other stages in ANA_CL:PORT:VLAN_FILTER_CTRL. The following illustration shows the flowchart for the VLAN
acceptance filter.
Discard
Tag required and
INGRESS Y L2 CTRL frame N
frame is untagged
Y Y Y Y
S-Tagged Discard
Discard
Discard
Discard
Priority S-Tagged C-Tagged Priority C-Tagged
frames accepted N N N N
frames accepted frames accepted frames accepted
[port]
[port] [port] [port]
Y Y Y
Y
Y
Discard
Two VLAN tags required and These checks are available per S-tag TPID
Y
frame is single or untagged value. Four values are supported: 0x88A8
(standard) and three custom TPID values.
Y Y Y Y
Discard
Discard
Discard
S-TAG accepted N Priority S-TAG N C-TAG accepted N Priority C-TAG N
[port] Accepted [port] [port] Accepted [port]
Y Y Y
N
N
Discard
Y Y Y Y
N
Discard
Discard
Discard
Y Y Y Y
The E-TAG acceptance filter decides whether a frame’s E-TAG is allowed on the port. The following filter settings are
possible.
• Accept all frames.
• Accept only frames without E-TAGs.
• Accept only frames with E-TAGs.
The classifier discards frames violating the E-TAG filter settings.
The VLAN and E-TAG acceptance filter do not apply to untagged Layer 2 control protocol frames. They are always
accepted even when tags are required for other frames. The following frames are recognized as Layer 2 control
protocol frames.
• Frames with DMAC = 0x0180C2000000 through 0x0180C200000F
• Frames with DMAC = 0x0180C2000020 through 0x0180C200002F
• Frames with DMAC = 0x0180C2000030 through 0x0180C200003F
Tagged Layer 2 control protocol frames are handled by the VLAN and E-TAG acceptance filters like normal tagged
frames and they must comply with the filter settings to be accepted.
Frames discarded by the frame acceptance filters are assigned PIPELINE_PT = ANA_CL and learning of the frames’
source MAC addresses are at the same time disabled.
The basic classification provides the user with control of the quality of service classification algorithms. The result of
the basic classification are the following frame properties.
• The frame’s QoS class:. This class is encoded in a 3-bit field, where 7 is the highest priority QoS class and
0 is the lowest priority QoS class. The QoS class is used by the queue system when enqueuing frames and
when evaluating resource consumptions, for policing, statistics, and rewriter actions. The QoS class is carried
internally in the IFH field IFH.VSTAX.QOS.CL_QOS.
• The frame’s DP level: This level is encoded in a 2-bit field, where frames with DP = 3 have the highest
probability of being dropped and frames with DP = 0 have the lowest probability. The DP level is used
by the MEF compliant policers for measuring committed and peak information rates, for restricting memory
consumptions in the queue system, for collecting statistics, and for rewriting priority information in the rewriter.
The DP level is incremented by the policers if a frame is exceeding a programmed committed information rate.
The DP level is carried internally in the IFH field IFH.VSTAX.QOS.CL_DP.
• The frame’s DSCP: This value is encoded in a 6-bit fields. The DSCP value is forwarded with the frame to the
rewriter where it is translated and rewritten into the frame. The DSCP value is only applicable to IPv4 and IPv6
frames. The DSCP is carried internally in the IFH field IFH.QOS.DSCP.
• The frame’s COSID: This value is encoded in a 3-bit field. The COSID value is used as class of service identifier
for services. It is used by the queue system, for policing, statistics, OAM, and rewriter actions. The COSID value
is carried internally in the IFH field IFH.VSTAX.MISC.COSID.
The classifier looks for the following fields in the incoming frame to determine the QoS, DP, and DSCP classification.
• Priority Code Point (PCP) when the frame is VLAN tagged or priority tagged: There is an option to use the inner
tag for double tagged frames (VLAN_CTRL.VLAN_TAG_SEL).
• Drop Eligible Indicator (DEI) when the frame is VLAN tagged or priority tagged: There is an option to use the
inner tag for double tagged frames (VLAN_CTRL.VLAN_TAG_SEL).
• DSCP (all 6 bits, both for IPv4 and IPv6 packets): The classifier can look for the DSCP value behind up to three
VLAN tags. For non-IP frames, the DSCP is 0 and it is not used elsewhere in the switch.
• Destination MAC address (DMAC) for L2CP frames: Layer 2 control protocol frames that are redirected to the
CPU are given a programmable QoS class independently of other frame properties.
By default, frames from VD2 are subject to a normal quality of service classification using the port
configuration associated with VD2. However, when a frame from VD2 carries an IRLEG in the IFH
(IFH.ENCAP.ENCAP_ID_RLEG), then its IRLEG selects the classification parameters controlling the IPrelated parts
of the classification algorithms instead of by the port. These parameters are controlled by the IRLEG:
• Default QoS class and QoS classification based on DSCP value
• Default drop precendence level and drop precedence classification based on DSCP value.
• DSCP translation.
The following figure shows the flow chart of basic QoS classification.
DSCP = Frame.DSCP
DSCP_TRANSLATE_ENA[port|irleg]
DSCP = DSCP_TRANSLATE_VAL[DSCP]
DSCP_QOS_ENA[port|irleg]
DSCP_TRUST_ENA[DSCP]
”Frame is BPDU”
(DMAC = 0x0180C200000X) Y QoS class = BPDU_QOS[DMAC[bits 3:0]]
and ”redirect to CPU”
”Frame is GARP”
(DMAC = 0x0180C200002X) Y QoS class = GXRP_QOS[DMAC[bits 3:0]]
and ”redirect to CPU”
”Frame is Y.1731/IEEE802.1ag”
(DMAC = 0x0180C200003X) Y QoS class = Y1731_AG_QOS[DMAC[bits 3:0]]
and ”redirect to CPU”
The following figure shows the flow chart for basic DP classification.
DP = DEFAULT_DP_VAL[port|irleg]
DSCP = 0
DSCP = Frame.DSCP
DSCP_TRANSLATE_ENA[port|irleg]
DSCP = DSCP_TRANSLATE_VAL[DSCP]
DSCP_DP_ENA[port|irleg]
DSCP_TRUST_ENA[DSCP]
DP = DSCP_DP_VAL[DSCP]
Y
DP = PCP_DEI_DP_VAL[port][Frame.InnerDEI][Frame.InnerPCP]
DP = PCP_DEI_DP_VAL[port][Frame.OuterDEI][Frame.OuterPCP]
”Frame is BPDU”
(DMAC = 0x0180C200000X) Y DP = 0
and ”redirect to CPU”
”Frame is GARP”
(DMAC = 0x0180C200002X) Y DP = 0
and ”redirect to CPU”
”Frame is Y.1731/IEEE802.1ag”
(DMAC = 0x0180C200003X) Y DP = 0
and ”redirect to CPU”
Basic classified DP
(IFH.VSTAX.QOS.CL_DP)
The following figure shows the flow chart for basic DSCP classification.
Figure 4-28. Basic DSCP Classification Flow Chart
DSCP = 0
DSCP = Frame.DSCP
DSCP_TRANSLATE_ENA[port|irleg]
DSCP =
DSCP_TRANSLATE_VAL[DSCP]
Note that the DSCP translation part is common for both QoS, DP, and DSCP classification, and the DSCP trust part
is common for both QoS and DP classification.
The basic classifier has the option to overrule rewriter configuration (REW:PORT:DSCP_MAP) that remaps the DSCP
value at egress. When ANA_CL:PORT:QOS_CFG.DSCP_KEEP_ENA is set, the rewriter is instructed not to modify
the frame’s DSCP value (IFH.QOS.TRANSP_DSCP is set to 1).
The basic COSID classification is by default zero but can optinally be assigned a different default value
(ANA_CL:PORT:QOS_CFG.DEFAULT_COSID_VAL).
The basic classified QoS, DP, DSCP, and COSID can be overwritten by more intelligent decisions made in the VCAP
CLM.
The VLAN classification determines the following set of VLAN parameters for all frames.
• Priority Code Point (PCP). The PCP is carried internally in the IFH field IFH.VSTAX.TAG.CL_PCP.
• Drop Eligible Indicator (DEI). The DEI is carried internally in the IFH field IFH.VSTAX.TAG.CL_DEI.
• VLAN Identifier (VID). The VID is carried internally in the IFH field IFH.VSTAX.TAG.CL_VID.
• Tag Protocol Identifier (TPID) type, which holds information about the TPID of the tag used for classification. The
TPID type is carried internally in IFH field IFH.VSTAX.TAG.TAG_TYPE. Extended information about the tag type
is carried in IFH.DST.TAG_TPID.
The device recognizes five types of tags based on the TPID, which is the EtherType in front of the tag.
• Customer tags (C-tags), which use TPID 0x8100.
• Service tags (S-tags), which use TPID 0x88A8 (IEEE 802.1ad).
• Custom service tags (S-tags), which use one of three custom TPIDs programmed in
ANA_CL::VLAN_STAG_CFG. Three different values are supported.
For customer tags and service tags, both VLAN tags (tags with nonzero VID) and priority tags (tags with VID = 0) are
processed.
It is configurable which of the five recognized TPIDs are valid for the VLAN classification
(VLAN_TPID_CTRL.BASIC_TPID_AWARE_DIS). Only VLAN tags with valid TPIDs are used by the VLAN
classification. The parsing of VLAN tags stops when a VLAN tag with an invalid TPID is seen.
The VLAN tag information is either retrieved from a tag in the incoming frame or from default port-based
configuration. The port-based VLAN tag information is configured in ANA_CL:PORT:VLAN_CTRL.
For double tagged frames (at least two VLAN tags with valid TPIDs), there is an option to use the inner tag instead
of the outer tag (VLAN_CTRL.VLAN_TAG_SEL). Note that if the frame has more than two valid VLAN tags, the inner
tag refers to the tag immediately after the outer tag.
The following figure shows the flow chart for basic VLAN classification.
TAG_TPID = VLAN_CTRL.PORT_TAG_TYPE
PCP = VLAN_CTRL.PORT_PCP
DEI = VLAN_CTRL.PORT_DEI
VID = VLAN_CTRL.PORT_VID
VLAN_PCP_DEI_TRANS_ENA
VID == 0
VID = VLAN_CTRL.PORT_VID
In addition to the classification shown, the port decides the number of VLAN tags to pop at egress
(VLAN_CTRL2.VLAN_POP_CNT) and to push at egress (VLAN_CTRL2.VLAN_PUSH_CNT).
If the configured number of tags to pop is greater than the actual number of valid tags in the frame, the number is
reduced to the number of actual valid tags in the frame. A maximum of three VLAN tags can be popped. The VLAN
pop count is carried in IFH field IFH.TAGGING.POP_CNT.
A maximum of three VLAN tags can be pushed. The VLAN pop count is carried in IFH field
IFH.TAGGING.PUSH_CNT.
Finally, the VLAN classification sets IFH field IFH.VSTAX.TAG.WAS_TAGGED if the port is VLAN aware and the
frame has one or more valid VLAN tags. WAS_TAGGED is used the rewriter to make decision on whether tag
information from existing tags can be used for rewriting.
The basic classified tag information can be overwritten by more intelligent decisions made in the VCAP CLM.
The classifier generates a link aggregation code, which is used in the analyzer when selecting to which port in a link
aggregation group a frame is forwarded.
The following contributions to the link aggregation code are configured in the AGGR_CFG register.
• Destination MAC address—use the 48 bits of the DMAC.
• Reversed destination MAC address—use the 48 bits of the DMAC in reverse order (bit 47 becomes bit 0, bit 46
becomes bit 1, and so on).
• Source MAC address—use the 48 bits of the SMAC.
• IPv6 flow label—use the 20 bits of the flow label.
• Source and destination IP addresses for IPv4 and IPv6 frames —use all bits of both the SIP and DIP.
• TCP/UDP source and destination ports for IPv4 and IPv6 frames use the 16 bits of both the SPORT and
DPORT.
• Random aggregation code—use a 4-bit pseudo-random number.
All contributions that are enabled are 4-bit XOR’ed, and the resulting code is used by the Layer 2 forwarding function
(ANA_AC) to select 1 out of 16 link aggregation port masks. The 16 link aggregation port masks are configured in
ANA_AC:AGGR. For more information see 4.22.1.3 Aggregation Group Port Selection.
If AGGR_CFG.AGGR_USE_VSTAX_AC_ENA is enabled and the frame has a VStaX header, all other contributions
to link aggregation code calculation are ignored, and the AC field of the VStaX-header is used directly. Otherwise, link
aggregation code generation operates as previously described.
Note that AGGR_CFG.AGGR_DMAC_REVERSED_ENA and AGGR_CFG.AGGR_DMAC_ENA are independent. If
both bits are enabled, the frame’s DMAC contributes both normally and reversed in the link aggregation code
calculation.
The basic classifier has support for determining whether certain frames must be forwarded to the CPU extraction
queues. Other parts of the device can also determine CPU forwarding, for example, the VCAPs or the VOEs. All
events leading to CPU forwarding are OR’ed together, and the final CPU extraction queue mask, which is available to
the user, contains the sum of all events leading to CPU extraction.
Upon CPU forwarding by the basic classifier, the frame type and configuration determine whether the frame is
redirected or copied to the CPU. Any frame type or event causing a redirection to the CPU causes all front ports to
be removed from the forwarding decision—only the CPU receives the frame. When copying a frame to the CPU, the
normal forwarding of the frame to front ports is unaffected.
The following table lists the standard frame types recognized by the basic classifier, with respect to CPU forwarding.
Table 4-108. Frame Type Definitions for CPU Forwarding
...........continued
Frame Condition Copy/Redirect
MLD DMAC = 0x333300000000 to 0x3333FFFFFFFFF Redirect
EtherType = IPv6
IPv6 Next Header = 0 (Hop-by-hop options header)
EtherType = IPv6
IPv6 header is not hop-by-hop or ICMPv6
IPv6 DIP inside FF02::/16
Each frame type has a corresponding CPU extraction queue. Note that hop-by-hop and ICMPv6 frames share the
same CPU extraction queue.
Prior to deciding whether to CPU forward a frame, the frame’s VLAN tagging must comply with a configurable filter
(ANA_CL::CAPTURE_CFG.CAPTURE_TPID_AWARE_DIS). For all frame types listed in Table 4-108, only untagged
frames or VLAN-tagged frames where the outer VLAN tag’s TPID is not disabled are considered. The VLAN TPID
filter applies to all frames except frames received from VD2.
Each port controls the CPU forwarding of the frame types listed in Table 4-108. However, when a frame from VD2
carries an IRLEG in the IFH (IFH.ENCAP.ENCAP_ID_RLEG), then its IRLEG selects the parameters controlling the
CPU forwarding of IP frames.
The basic classifier can recognize VRAP frames and redirect them to the CPU. This is a proprietary frame format,
which is used for reading and writing switch configuration registers through Ethernet frames. For more information,
see 4.31 VRAP Engine.
The VRAP filter in the classifier performs three checks in order to determine whether a frame is a VRAP frame:
1. VLAN check. The filter can be either VLAN unaware or VLAN aware
(ANA_CL::VRAP_CFG.VRAP_VLAN_AWARE_ENA). If VLAN unaware, VRAP frames must be untagged. If
VLAN aware, VRAP frames must be VLAN tagged and the frame’s VID must match a configured value
(ANA_CL::VRAP_CFG.VRAP_VID). Double VLAN tagged frames always fail this check.
2. EtherType and EPID check. The EtherType must be 0x8880 and the EPID (bytes 0 and 1 after the EtherType)
must be 0x0004.
3. VRAP header check. The VRAP header (bytes 0, 1, 2, and 3 after the EPID) must match a 32-
bit configured value (ANA_CL::VRAP_HDR_DATA) where any bits can be don’t cared by a mask
(ANA_CL::VRAP_HDR_MASK).
If all three checks are fulfilled, frames are redirected to CPU extraction
queue ANA_CL::CPU_PROTO_QU_CFG.CPU_VRAP_QU. The VRAP filter is enabled in
ANA_CL:PORT:CAPTURE_CFG.CPU_VRAP_REDIR_ENA.
The classifier identifies whether incoming frames include a GRE header (EtherType = IPv4 and IP protocol is GRE).
If the GRE header includes a GRE checksum (Checksum Present bit set), then the frame data is validated against
the GRE checksum. The result of the GRE checksum validation is forwarded to ANA_L3 for further action, see
4.18.5 IP-in-IPv4 for more details.
The GRE checksum validation can optionally be disabled.
VCAP CLM is looked up if the lookup is enabled by the port configuration (ADV_CL_CFG.LOOKUP_ENA) or if the
previous VCAP CLM lookup has returned a key type for the next lookup through VCAP CLM action NXT_KEY_TYPE.
However, if the previous lookup returns NXT_KEY_TYPE = CLMS_DONE, then no further lookups are done, even if
the port has enabled the lookup.
Prior to each VCAP CLM lookup, the type of key to be used in the lookup is selected. A number of parameters control
the key type selection:
// ======================================================================
// ANA_CL: VCAP CLM Key Type Selection
//
// Determine which key type to use in VCAP CLM lookup.
// The algorithm is run prior to each VCAP CLM lookup.
// ----------------------------------------------------------------------
// Frame position (byte pointer) for use as base for next VCAP CLM key
// Updated by UpdateFramePtrAndType() upon VCAP CLM lookup
int frame_ptr = 0;
int ClmKeyType(
// VCAP CLM index. 0=First VCAP CLM lookup, 5=Last lookup
clm_idx,
case CW:
switch (IPVersion(frame_ptr)) {
case 4 : key_type = port_clm_cfg.ip4_clm_key_sel; break;
case 6 : key_type = port_clm_cfg.ip6_clm_key_sel; break;
default: key_type = port_clm_cfg.etype_clm_key_sel; break;
}
break;
case MPLS:
key_type = port_clm_cfg.mlbs_clm_key_sel;
break;
}
return key_type;
} // ClmKeyType
// ---------------------------------------------------------------------
// ANA_CL: VCAP CLM Key Type Selection
// ======================================================================
By default, frames looped by the rewriter or frames already discarded or CPU-redirected, for instance
the basic classifier, are not subject to VCAP CLM lookups. Optionally, VCAP CLM lookups can be
enforced through configuration ANA_CL::CLM_MISC_CTRL.LBK_CLM_FORCE_ENA for looped frames and
through ANA_CL::CLM_MISC_CTRL.IGR_PORT_CLM_FORCE_ENA for frames already discarded or CPU-
redirected. When forcing a VCAP CLM lookup, the VCAP CLM key is chosen from the configuration in
ANA_CL::CLM_MISC_CTRL.FORCED_KEY_SEL. Only selected keys are available.
// ======================================================================
// ANA_CL: VCAP CLM Frame Pointer and Frame Type Update
//
// From ClmKeyFieldsMpls()
clm_key_fields_mpls,
)
{
int frame_ptr_current = frame_ptr;
int frame_type_current = frame_type;
if (!clm_action.vld) return;
if (clm_action.nxt_offset_from_type > 0) {
// Move frame_ptr based on frame type
switch (clm_action.nxt_offset_from_type) {
case SKIP_ETH:
if (frame_type_current == ETH) {
// Move frame_ptr past DMAC, SMAC, 0-3 VLAN tags and EtherType
SkipLinkLayer(&frame_ptr);
}
break;
case SKIP_IP_ETH:
switch (frame_type_current) {
case ETH:
// Move frame_ptr past DMAC, SMAC, 0-3 VLAN tags and EtherType
if (EtherType(frame_ptr) == ETYPE_IP4) || // 0x0800
(EtherType(frame_ptr) == ETYPE_IP6) { // 0x86DD
SkipLinkLayer(&frame_ptr);
case CW:
switch (IPVersion(frame_ptr)) {
case 4:
case 6:
// Move frame_ptr past IPv4 header (including options) or
// IPv6 header
SkipIPHeader(&frame_ptr);
break;
}
break;
}
}
frame_type = clm_action.nxt_type_after_offset;
} // clm_action.nxt_offset_from_type > 0
if (clm_action.nxt_norm_w16_offset > 0) {
// Move frame_ptr a specific number of bytes
frame_ptr = frame_ptr + 2*clm_action.nxt_norm_w16_offset;
frame_type = clm_action.nxt_type_after_offset;
}
// OAM LSP
if (clm_action.fwd_type == POP_LBL && IsOam(frame_ptr, csr) &&
(clm_key_fields_mpls.rsv_lbl_pos)) {
// Reserved label used to identify OAM
// Move frame_ptr if reserved MPLS label was skipped by
// ClmKeyFieldsMpls() in key generation prior to VCAP CLM lookup
frame_ptr += 4;
}
// ----------------------------------------------------------------------
// ANA_CL: VCAP CLM Frame Pointer and Frame Type Update
// ======================================================================
input to the key. The current classified DSCP value is the result from either the previous VCAM_CLM lookup or
the basic classifier if this is the first lookup.
• Selects source of VID, PCP, and DEI in the VID0, PCP0, and DEI0 key fields
(ANA_CL:PORT:ADV_CL_CFG.USE_CL_TCI0_ENA). By default, the values are taken from the outer VLAN
tag in the frame (or port’s VLAN if frame is untagged). Another option is to use the current classified values as
input to the key. The current classified values are the result from either the previous VCAM_CLM lookup or the
basic classifier if this is the first lookup.
Note that these configurations are only applicable to keys containing the relevant key fields.
VCAP CLM keys NORMAL, NORMAL_7TUPLE, and NORMAL_5TUPLE_IP4 contain the key fields
IGR_PORT_MASK_SEL and IGR_PORT_MASK. For frames received on a front port, IGR_PORT_MASK_SEL is
set to 0 and the bit corresponding to the frame’s physical ingress port number is set in IGR_PORT_MASK. The
following lists some settings for frames received on other interfaces and how this can be configured through register
CLM_MISC_CTRL.
• Loopback frames:
By default, IGR_PORT_MASK_SEL=1 and IGR_PORT_MASK has one bit set corresponding to the physical
port which the frame was looped on. Optionally use IGR_PORT_MASK_SEL = 3.
• Masqueraded frames:
By default, IGR_PORT_MASK_SEL=0 and IGR_PORT_MASK has one bit set corresponding to the
masquerade port. Optionally, use IGR_PORT_MASK_SEL = 2.
• VStaX frames:
By default, frames received with a VStaX header on a front port use IGR_PORT_MASK_SEL = 0. Optionally,
use IGR_PORT_MASK_SEL = 3.
• Virtual device frames:
By default, IGR_PORT_MASK_SEL = 0 and IGR_PORT_MASK has one bit set corresponding to the original
physical ingress port. Optionally, use IGR_PORT_MASK_SEL = 3.
• CPU injected frames:
By default, IGR_PORT_MASK_SEL=0 and IGR_PORT_MASK has none bits set. Optionally use
IGR_PORT_MASK_SEL=3.
For more information about the contents of IGR_PORT_MASK_SEL and IGR_PORT_MASK, see 4.13 VCAP CLM
Keys and Actions.
VCAP CLM supports a combination of eight global range checkers and eight per-port range checkers in VCAP CLM
keys MLL, LL_FULL, TRI_VID, NORMAL, NORMAL_7TUPLE, NORMAL_5TUPLE_IP4, and PURE_5TUPLE_IP4. All
frames using these keys are compared against the global range checkers and the per-port range checkers and a
combined 1-bit range “match/no match” flag is returned. The eight match/no match flags are used in the L4_RNG key
field. The results of global range checker n and perport range checker n map to bit n in L4_RNG. The result of the
per-port range checker takes precedence over the global range checker.
VCAP IS2 also supports range checkers, however, they are independent of the VCAP CLM range checkers.
The range key is generated for each frame based on extracted frame data and the configurations in
ANA_CL::ADV_RNG_CTRL and ANA_CL:PORT:ADV_PORT_RNG_CTRL. Each range checkers can be configured
to one of the following range types.
• TCP/UDP destination port range:
The classifier contains a shared QoS mapping table with 4,096 entries (ANA_CL:MAP_TBL:MAP_ENTRY) that maps
incoming QoS information to classified internal QoS information. Inputs to a mapping can be either DEI and PCP
from VLAN tags or E-TAGs, DSCP value, or MPLS TC bits. Outputs from a mapping are new classified values for
COSID, DEI, PCP, DSCP, QoS class, DP level, and TC bits. The table is looked up twice for each frame with two
different keys.
The QoS mapping table is laid out with 512 rows with each eight mapping entries. Each specific QoS mapping
only uses a subset of the 4,096 entries and thus many different QoS mappings can be active at the same time. As
examples, a table may hold 64 unique mappings from DSCP to DEI/PCP or 256 unique translations of DEI/PCP to
DEI/PCP.
A lookup is defined by a base index and a key. The base index defines which of the rows in the QoS mapping
table to start at and the key defines which parameters from the frame to use as offset from the base index. By
default, the port defines the two lookups in the QoS mapping table. However, VCAP CLM can override the port-based
configuration through VCAP CLM actions MAP_IDX and MAP_KEY. Each match in VCAP CLM may redefine one of
the two lookups.
The following lists the available keys and how the resulting row and entry number in the mapping table is derived.
• PCP: Use PCP from the frame’s outer VLAN tag. If the frame is untagged, the port’s VLAN tag is used. Row and
entry number is derived the following way:
Row = MAP_IDX
Entry = PCP
IP frames:
Frame
Mapping 0: Mapping 1:
VCAP CLM action MAP_KEY = 0 VCAP CLM action MAP_KEY = 6
VCAP CLM action MAP_IDX = 8 VCAP CLM action MAP_IDX = 128
Frame.DEI = 1 Frame.DSCP = 26
Frame.PCP = 3)
ANA_CL:MAP_TBL
Entry: 7 Entry: 0
Row: 0
DEI=0
MAP_IDX 8 PCP=0
DEI=1 DEI=1
9 PCP=7 PCP=3
QOS_VAL = 3
DP_VAL = 1
PCP_VAL = 5
DEI_VAL = 1
DSCP=26
DSCP_VAL = 45
135 DSCP=63
Row: 511
As part of IEEE 802.1AX Link Aggregation, conversation-sensitive frame collection determines a conversation
identifier for all frames based on outer VLAN tags. The conversation identifier is a value in the range from 0 through
4095. The device recognizes following types of tags based on the TPID.
...........continued
Field in ANA_L3:VLAN Bits Description
VLAN_RLEG_ENA 1 Enables router leg in VLAN.
VLAN_PRIVATE_ENA 1 Enables/disables this VLAN as a Private VLAN (PVLAN).
VLAN_MIRROR_ENA 1 VLAN mirror enable flag. If this field is set, frames classified
to this ingress VLAN are mirrored. Note that a mirroring probe
must also be configured to enable VLAN based mirroring. see
4.22.5 Mirroring.
VLAN_PORT_MASK 65 Specifies mask of ports belonging to VLAN.
TUPE_CTRL 16 Controls value for Table Update Engine (TUPE).
The following table shows the configuration parameters for each entry in the MSTP table.
Table 4-116. MSTP Table (66 Entries)
The following table lists common parameters that also affect the VLAN and MSTP processing of frames.
Table 4-117. Common VLAN and MSTP Parameters
If VLAN support is enabled (in VLAN_CTRL.VLAN_ENA), the classified VID is used to look up the VLAN information
in the VLAN table. The VLAN table in turn provides an address (VLAN_MSTP_PTR) into the MSTP table. Learn,
mirror, and forwarding results are calculated by combining information from the VLAN and MSTP tables.
configuration parameters, “req.” is used to denote input from the previous processing steps in the analyzer, as well as
the information provided for the following steps in the analyzer.
if (req.cpu_inject != 0) {
// cpu_inject => Bypass!
return;
}
if (csr.vlan_ena) {
// Get VLAN entry based on Classified VID
igr_vlan_entry = csr.vlan_tbl[req.ivid + req.xvid_ext*4096];
} else {
// Default VLAN entry
igr_vlan_entry.vlan_mstp_ptr = 0;
igr_vlan_entry.vlan_fid = 0;
igr_vlan_entry.vlan_sec_fwd_ena = 0;
igr_vlan_entry.vlan_flood_dis = 0;
igr_vlan_entry.vlan_lrn_dis = 0;
igr_vlan_entry.vlan_rleg_ena = 0;
igr_vlan_entry.vlan_private_ena = 0;
igr_vlan_entry.vlan_mirror_ena = 0;
igr_vlan_entry.vlan_port_mask = -1; // All-ones
igr_vlan_entry.vmid = 0;
}
if (IsCpuPort(req.port_num) ||
IsVD0(req.port_num) ||
IsVD1(req.port_num)) {
// Received from CPU or VD0/VD1 =>
// * Do not learn
// * Do not perform ingress filtering
// (these ports are not in ingress masks)
req.l2_lrn = 0;
} else {
// ----------------------------------------------
// Perform ingress filtering and learning disable
// ----------------------------------------------
if (csr.vlan_ena) {
// Empty VLAN?
if (igr_vlan_entry.vlan_port_mask == 0) {
csr.vlan_lookup_invld_sticky = 1;
}
req.l2_fwd = 0;
csr.mstp_discard_sticky = 1;
} else {
csr.mstp_fwd_allowed_sticky = 1;
}
if (req.ingr_port_type == 0b10) {
// Isolated port
// Only allow communication with promiscuous ports
igr_vlan_entry.vlan_port_mask &=
(~csr.vlan_isolated_mask & ~csr.vlan_community_mask);
} else if (req.ingr_port_type == 0b01) {
// Community port
// Allow communication with promiscuous ports and other community ports,
// but not with isolated ports
igr_vlan_entry.vlan_port_mask &= ~csr.vlan_isolated_mask;
}
}
} // vlan_igr_filter_ena
} // csr.vlan_ena
}
req.ifid = igr_vlan_entry.vlan_fid;
req.vlan_mirror = igr_vlan_entry.vlan_mirror_ena;
req.vlan_flood_dis = igr_vlan_entry.vlan_flood_dis;
req.vlan_sec_fwd_ena = igr_vlan_entry.vlan_sec_fwd_ena;
The TUPE_CTRL field in the VLAN table can be used to classify VLANs into different groups, and the
VLAN_PORT_MASK for such groups of VLANs are quickly updated using TUPE. Using the parameters listed, the
TUPE_CTRL field in the VLAN table can be processed as a field of individual bits, a field with one value, or a
combination of the two.
For example, if a command for TUPE uses the following, the TUPE_CTRL field is treated as an 8-bit value field and
eight individual bits.
• TUPE_CTRL_BIT_ENA = 1
• TUPE_CTRL_BIT_MASK = 0x00ff
• TUPE_CTRL_VAL_MASK = 0xff00
In order for TUPE to update a VLAN entry’s VLAN_PORT_MASK, the value part of TUPE_CTRL must match the
required value, and one or more bits of the bit part of TUPE_CTRL must be set.
If all bits in TUPE_CTRL are used as a value field, then a total of 216 groups can be created, but each VLAN can
only be member of one such group.
On the other end of the spectrum, if all bits in TUPE_CTRL are treated as individual bits, then only 16 groups can be
created, but every VLAN can be member of any number of these groups.
In configurations that have fewer physical ports than the number of bits in the VLAN_PORT_MASK, such bits can be
used as an extension to the bit part of the TUPE_CTRL field.
Apart from the VLAN’s TUPE_CTRL, the value of the VLAN’s VLAN_PORT_MASK is also used to decide whether to
update a given VLAN table entry.
The following figure depicts the TUPE functionality.
Figure 4-31. TUPE
TUPE_START_ADDR
TUPE_CTRL VLAN_PORT_MASK
Value part Bit part ... Unused bits Used bits
(physical ports)
TUPE_END_ADDR
The following pseudo code shows the full algorithm used by TUPE.
For DIP lookup, VCAP IP6PFX lookup is performed if the frame is IPv6 and:
The following table shows the different key types supported by the VCAP IP6PFX.
Table 4-119. VCAP IP6PFX Keys and Sizes
The following table provides an overview of the VCAP IP6PFX key. When programming an entry in VCAP IP6PFX,
the associated key fields listed must be programmed in the listed order with the first field in the table starting at bit 0
of the entry. For more information, see 4.10 Versatile Content-Aware Processor (VCAP™).
IP6PFX_ID
The following table provides an overview of the VCAP LPM key. When programming an entry in VCAP LPM, the
associated key fields listed must be programmed in the listed order with the first field in the table starting at bit 0 of
the entry. For more information, see 4.10 Versatile Content-Aware Processor (VCAP™).
Table 4-124. VCAP LPM Key Overview
Field Name Short Description Size SGL_IP DBL_IP4 SGL_IP DBL_IP IP6PFX_ID
4 6 6
The following table provides information about the VCAP LPM actions. When programming an action in VCAP LPM,
the associated action fields listed must be programmed in the listed order, with the first field in the table starting at bit
0 of the action.
Table 4-131. VCAP LPM Actions
RGID Route Group ID. Used for SIP RPF check. See 3 x
4.18.2.1.5 SIP RPF Check.
...........continued
Field Name Description and Encoding Size ARP L3M ARP
_PT C_P _EN
R TR TRY
4.18 IP Processing
This section provides information about IP routing and IP security checks. The configuration parameters for IP routing
are located within the ANA_L3 configuration target.
Each frame is subject to two lookups in VCAP LPM. One lookup is used for looking up SIP, and the other lookup is
used for looking up DIP or DIP + SIP (for IP multicast frames).
} else {
csr.secur_ip6_sip_match_sticky = 1;
}
}
if (req.l3_sip_match == 0) {
csr.secur_sip_fail_sticky = 1;
}
The IP Destination Guard check works in the same way as the SIP check, except for the following:
• DIP check is not performed if frame has a multicast DMAC.
• DIP check is not performed if router leg has been matched.
The following pseudo code specifies the behavior of the IP Destination Guard checks.
4.18.2 IP Routing
The device supports routing of IPv4 and IPv6 unicast and multicast packets through the 511 router interfaces, also
known as “router legs”. Each router leg is attached to a VLAN.
The following illustration shows a configuration with three VLANs, each with an attached router leg for routing IP
packets between the VLANs. Port 11 is member of both VLAN 1 and VLAN 2.
When a packet is being routed from one VLAN (the ingress VLAN) to another VLAN (the egress VLAN), the VID of
the ingress VLAN is termed IVID, and the VID of the egress VLAN is termed the EVID.
Router
8 9 10 11 12 13 14 15 16 17 18 19
Within the device, a router leg is identified by a 9-bit VMID value. When a packet is being routed, it is then received
by the router entity using a router leg identified by an ingress VMID (or IVMID) and transmitted on an egress router
leg identified by an egress VMID (or EVMID).
IP routing, also known as L3 forwarding, is only supported in VLAN-aware mode.
DIP
Classified VID
VCAP
IP6PFX
DIP IP6PFX_ID
VLAN
VCAP LPM
Table
VCAP action type == arp_ptr
arp_ptr_remap_ena == 1
VLAN_MSTP_PTR VMID
ARP_VMID
VMID
Table
RLEG_EVID
MSTP_PTR
MSTP
Table
L2 Forwarding Decision
for Egress VLAN
The following figure provides an overview of the table lookups involved in IP multicast routing within the L3 part of the
analyzer.
The VCAP and L3MC table lookups are performed in parallel with the VLAN/MSTP/VMID table lookups. If the frame
does not match a router leg, the result of VCAP and L3MC table lookups are not used for routing.
L2 Forwarding Decision
for Ingress VLAN
Egress VMID
VMID
Table
RLEG_EVID
Egress router leg/
egress VLAN
VLAN
Table
MSTP_PTR
MSTP
Table
L2 Forwarding Decision
for Egress VLAN
When processing incoming frames, the classified VID is used to index the VLAN table. The RLEG_ENA parameter
determines if the VLAN is enabled for routing of packets, and if so, the VMID is used to index the VMID table. The
flow is depicted in the following illustration.
Figure 4-35. Ingress Router Leg Lookup Flow
RLEG_IP4_UC_ENA
VMID Table RLEG_IP4_MC_ENA
RLEG_IP4_ICMP_REDIR_ENA
(Router leg RLEG_IP4_VRID_ENA
VLAN Table configuration) RLEG_IP6_UC_ENA
RLEG_IP6_MC_ENA
Classified RLEG_IP6_ICMP_REDIR_ENA
VID RLEG_IP6_VRID_ENA
VMID
VLAN_RLEG_ENA RLEG_EVID(12:0)
RLEG_IP4_VRID0(7:0)
RLEG_IP6_VRID1(7:0)
RLEG_IP4_MC_TTL(7:0)
RLEG_IP6_MC_TTL(7:0)
For each router leg, the least signficant byte is configured per router leg using
VMID:VRRP_CFG.RLEG_IP4_VRID. Up to two VRID values are supported per router leg.
Figure 4-36. Ingress Router Leg MAC Address Matching for Unicast Packets
RLEG_IP4/6_VRID_ENA
RLEG_IP4/6_VRID
Normal base MAC address
COMMON:RLEG_CFG_1.RLEG_MAC_MSB
COMMON:RLEG_CFG_0.RLEG_MAC_LSB
24 24
IVMID
Classified VID +
0
RLEG selector
48 8
COMMON:RLEG_CFG_1.RLEG_MAC_TYPE_SEL
Frame’s DMAC matches
Router’s MAC address
(47:0) =?
The packet is a candidate for unicast routing if a frame’s DMAC matches one of the router leg MAC addresses.
Packets sent to the router itself will also match the router leg MAC address, but these will be caught through entries
in the ARP table.
Despite matching a router leg MAC address, routing is not performed for any of the following reasons. If any of
following criteria are met, the frame may be redirected to the CPU, depending on configuration parameters.
• It is not an IP packet (for example, an ARP reply).
• There are IP header errors.
• DIP or SIP address is illegal (optional).
• Packet contains IPv4 options/IPv6 hop-by-hop options.
• IPv4 TTL or IPv6 HL is less than two.
o n m a b c
VLAN1 VLAN2
IPv4 network 1.1.1.0/24 IPv4 network: 2.2.2.0/24
Host B1
Host A1 IPv4: 2.2.2.1
IPv4: 1.1.1.1 MAC: 0x000002020201
MAC: 0x000001010101 Host B3
IPv4: 2.2.2.3
MAC: 0x000002020203 Router B2
Host A2 Router A3 IPv4: 2.2.2.2
IPv4: 1.1.1.2 IPv4: 1.1.1.3 MAC: 0x000002020202
MAC: 0x000001010102 MAC: 0x000001010103
Default Router
IPv4 network
*.*.*.*/0
IPv4 network 3.3.0.0/16 IPv4 network
5.5.0.0/12 IPv4 network 4.4.0.0/16
LPM VCAP
VCAP Entries VCAP Actions ARP Table
Prefix
Index Valid DIP ECMP ARP IDX CPU DMAC EVMID
Length
0 x x x x x x x
... ...
m+7 1 1.1.1.0 32 0 m+7 1 000000000000 X
Known
3K IPv4 entries / 1.5K IPv6 entries per super VCAP block
2, 048 entries
m+1 1 2.2.2.2 32 0 m+1 0 000002020202 2
m 1 2.2.2.3 32 0 m 0 000002020203 2
... ...
n+5 1 1.1.1.0 24 0 n+5 1 000000000000 x
Known
n+4 1 2.2.2.0 24 0 n+5 0 000001010103 1 Network
n 0 x x x x x x x
... ...
0 1 0.0.0.0 0 0 0 0 000002020202 2 Default gateway
Ports o, n, and m are connected to Router A3, Host A1, and Host A2. These stations are included in an IP subnet
associated with VLAN 1 and connected to the router by router leg 1. Router leg 1’s MAC address is shown.
Ports a, b, and c are connected to Router B2, Host B1, and Host B3. These stations are included in an IP subnet
associated with VLAN 2 and connected to the router by router leg 2.
The router leg MAC addresses in the example offsets the base MAC address by the respective router leg’s VMID.
Traffic destined within a subnet is L2-forwarded. For example, traffic from Host A1 to Host A2 is L2 forwarded.
Traffic destined outside a subnet is sent to the router using the router leg’s MAC address. The router performs the
routing decision as follows:
1. Known local host: If the destination IP address is known to be a local host (with the full IP address installed
in the VCAP LPM table), the router takes the local host DMAC address and egress router leg VMID (EVMID)
from the ARP table entry pointed to by the ARP_IDX of the VCAP Action. For example, if traffic sent from Host
A1 to B1 is routed using LPM entry m+2 (2.2.2.1/32) and ARP entry m + 2, the local host’s DMAC address is
found to be 0x000002020201 and egress router leg to be RLEG2 (that is, VMID = 2).
2. Known longest prefix: If the full destination IP address is not known, the router finds the longest matching IP
prefix and uses it to determine the next hop DMAC address and egress router leg. For example, traffic sent
from host A1 to host 4.4.4.2 is routed using LPM entry n + 2 (the 4.4.0.0 subnet is reached through Router B2)
and using ARP entry 0, the next hop’s DMAC address is found to be 0x000002020202 and egress router leg
to be RLEG2 (for example, VMID = 2).
3. Known equal cost multiple paths (ECMP): If the full destination IP address is not known by the router and the
longest matching IP prefix is an equal cost path, the next hop DMAC address and egress router leg is derived
from one of up to 16 ARP entries. For example, traffic sent from host A1 to host 5.5.5.13 is routed using
VCAP LPM entry n + 1. The corresponding VCAP action has ECMP = 1, so the ARP table entry is chosen
to be either n + 2 or n + 3, based on an ECMP aggregation code, see 4.14.1.10 ECMP Aggregation Code
Generation. If entry n + 2 is chosen, the next hop’s DMAC address is found to be 0x000001010103 (Router
A3) and egress router leg to be RLEG1. If entry n + 3 is chosen, the next hop’s DMAC address is found to be
0x000002020202 (Router B2) and egress router leg to be RLEG2.
4. Default gateway: In order to forward packets destined to unknown subnets to a default router, a default rule
can be configured for the VCAP LPM. This is illustrated in the IP Unicast Routing example as a “0.0.0.0” rule.
For example, traffic sent from host A1 to host 8.9.4.2 is routed using LPM entry 0 (the default router is reached
through Router B2) and ARP entry 0, the next hop’s DMAC address is found to be 0x000002020202 and
egress Router Leg to be RLEG2.
When routing packets, the router replaces the frame’s DMAC with the ARP table’s DMAC and replaces the
SMAC with MAC address associated with the egress router leg. The classified VID is replaced by the egress VID
(VMID:RLEG_CTRL.RLEG_EVID). The TTL/HL is decremented by 1. Note that the VMID tables (ANA_L3:VMID and
REW:VMID) and the router leg MAC address must be configured consistently in the analyzer Layer 3 and rewriter.
If host A2 wants to send traffic to a host in subnet 3.3.0.0/16, the host issues an ARP request and gets a response to
send traffic to router A3. Host A2 can choose to ignore this request, in which case, the router routes to router A3 in
the same VLAN.
Local networks 1.1.1.0/24 and 2.2.2.0/24 are also configured. Hosts and routers located in these networks can be
directly L2 accessed. This includes IP addresses 1.1.1.0 and 2.2.2.0, which are the IP addresses of the router in the
respective subnets to be used for IP management traffic, for example.
• Source independent IP multicast groups, where the group IP address uniquely identifies the IP multicast flow.
Such groups are denoted (*,G).
IPv4 multicast groups occupies two entries in the VCAP LPM, and IPv6 multicast groups occupies eight entries.
Source-specific multicast groups must be placed with higher precedence than source-independent multicast groups.
A matching entry in the VCAP LPM results in an index (L3MC_IDX) to an entry in the L3MC Table.
Each L3MC table entry contains a list of egress router legs to which frames are routed. Upon removing the
ingress router leg from the list, the required number of routed multicast copies is calculated and this number
(L3MC_COPY_CNT) is sent to VD0.
Stage 1 L2 forwards the frame. ANA_ACL can be used to limit the L2 forwarding, for example, to support IGMP/MLD
snooping.
For each L3MC entry, it can optionally be configured that routing is only performed if the frame was received
by a specific ingress router leg. This is termed reverse path forwarding check and is configured using
L3MC:L3MC_CTRL.RPF_CHK_ENA and L3MC:L3MC_CTRL.RPF_VMID.
Note that this RPF check is unrelated to the SIP RPF check. For more information about the SIP RPF check, see
4.18.2.1.5 SIP RPF Check.
Reverse path forwarding check does not affect the L2 forwarding decision.
In stage 2, VD0 replicates the frame according to L3MC_COPY_CNT, and L3MC_IDX is written into the frame’s IFH.
For each copy, which ANA_L3 receives from VD0 during stage 2, L3MC_IDX from IFH is used to lookup the L3MC
table entry and thus find the list of egress router legs that require a routed copy. The egress router leg is used to
determine the egress VID which in turn is used to perform (VID, DMAC) lookup in the MAC table for L2 forwarding
within the egress VLAN.
For each egress router leg, it can be configured that frames are only L3 forwarded to the router leg if the
TTL/HL of the packet is above a certain value. This is configured using VMID:VMID_MC.RLEG_IP4_MC_TTL and
VMID:VMID_MC.RLEG_IP6_MC_TTL.
In stage 2, both learning and ingress filtering is disabled.
The following figure shows an IPv4 multicast routing example. IPv6 multicast routing works identically to IPv4
multicast routing, with the exception that the IPv6 entries occupies four times as much space in VCAP LPM.
Router
Router Router
VLAN 1 leg 1 leg 2 VLAN 2
IP network 1.1.1.0/24 IP network 2.2.2.0/24
8 9 10 11
1.1.1.1 2.2.2.1
LPM VCAP
VCAP
Index VCAP Entries Actions Index L3MC Table
EVMID_MASK
RPF_CHK_ RPF_
Valid G SIP l3mc_idx CPU (Router leg bit mask)
ENA VMID
128 bits
Search Direction
2048 entries
n+2 1 230.1.1.1 2.2.2.2 1 1 1 0xFF 0 x
n 1 230.1.1.2 2.2.2.2 1 2 x x x x
...
...
0
1 230.1.1.1 x x 1023 x x x x
A sender host with IPv4 address 1.1.1.3 is transmitting IPv4 multicast frames to the group address 230.1.1.1 and
DMAC = 0x01005E010101. The frames must be L2 forwarded to receivers in VLAN 1 and L3 forwarded to receivers
in VLAN 2. For the latter, an entry for the (1.1.1.3, 230.1.1.1) pair is added to the VCAP LPM.
Stage 1
• Lookup of (SIP,G) = (1.1.1.3, 230.1.1.1) in VCAP LPM returns L3MC_IDX = 0 and a corresponding entry in
L3MC table. L3MC_IDX = 0 is inserted into the IFH.
• The L3MC entry has RPF check enabled (RPF_ENA = 1). Because the frame has been received through the
specified router leg, L3 forwarding is allowed.
• The L3MC entry specifies that frames are forwarded to router leg 1 and 2. Because the frame has been received
on router leg 1, only router leg 2 needs a routed copy. In other words, the number of L3 frame copies required is
set to 1.
• If the frame’s TTL is <2, then the frame is not L3 forwarded.
• Lookup of (DMAC, VID) = (0x01005E010101, 1) in the MAC table returns a destination set with port 8 and 9.
Port 8 is source filtered due to normal L2 source port filtering, so the resulting destination set consists only of
port 9.
• As a result of the first stage, the frame has been L2 forwarded to port 9 and a copy with L3MC_IDX = 0 and L3
copies required = 1 has been forwarded to the VD0.
Stage 2
• A frame is received once from VD0 with L3MC_IDX = 0 and L3MC_COPY_CNT = 1.
• Lookup of L3MC_IDX = 0 in the L3MC table returns the same entry as used in stage 1. Because this is the first
routed copy, the new EVMID is 2, and through lookup in the VMID table, the corresponding EVID is 2.
• If Frame.IP.TTL < VMID.VMID_MC.RLEG_IP4_MC_TTL, the frame is not L3 forwarded.
• The frame’s TTL is decremented.
• Lookup of (DMAC, VID) = (0x01005E010101, 2) in the MAC table returns a destination set with port 10 and 11.
Because this is a routed copy, no source port filtering is applied.
• The result is a routed copy to ports 10 and 11 with replaced SMAC and VID from VMID = 2 and TTL
decremented.
0 13/14 (1)
127
EVMID ... EVMID EVMID Count (1)
0
1 128 ...
2 3 ... ENCAP_ID RSDX EVMID ENCAP_ID RSDX EVMID Count (2)
EVMID_MASK_MODE is configurable per L3MC entry and the entries in a linked list of L3MC entries may use different values of EVMID_MASK_MODE.
EVMID_MASK_MODE=1 is intended for backwards compatibility and cannot be used in a linked list of L3MC entries.
Unused bits.
Rleg mode cannot be used for ECMP LPM entries, because each route is only accepted by one router leg. In
Rleg mode, no SIP RPF check is performed if SIP is reachable using an ECMP path.
• Combined mode: This is a combination of RGID mode and Rleg mode. If the SIP LPM lookup results in an LPM
entry with ECMP_CNT = 0, an Rleg mode check is performed, otherwise a RGID Mode check is performed.
RFC3704 defines a number of different SIP RPF modes, which can be supported by the device as follows:
• Strict RPF: Use Rleg mode or Combined mode to also support ECMP.
• Loose RPF: Use RGID mode and configure RGID_MASK to all-ones. For example, any RGID value is
acceptable.
• Loose RPF ignoring default routes: Use RGID mode and configure a separate RGID value for the default route.
Exclude this value in router leg’s RGID_MASK.
• Feasible RPF: Use RGID mode, group LPM entries using RGID and enable only the accepted groups in the
router leg’s RGID_MASK.
Note that SIP RPF is unrelated to the L3MC RPF check enabled in L3MC:L3MC_CTRL.RPF_CHK_ENA, which
validates that a given IP multicast flow (identified by (S,G) or (*,G) was received by the expected router leg.
Frames that are not routed due to SIP RPF check can optionally be
redirected to CPU by configuring COMMON:ROUTING_CFG.RLEG_IP4_SIP_RPF_REDIR_ENA and
COMMON:ROUTING_CFG.RLEG_IP6_SIP_RPF_REDIR_ENA.
4.18.3 Statistics
For each frame, ANA_L3 generates a number of events that can be counted in ANA_AC’s statistics block. Events are
generated separately for ingress and egress router legs, and in ANA_AC, event counting is further split into IPv4 and
IPv6.
Event Description
ivmid_ip_uc_received IP unicast frame received by router.
ivmid_ip_mc_received IP multicast frame received by router.
ivmid_ip_uc_routed IP unicast frame received and L3 forwarded by router.
ivmid_ip_mc_routed IP multicast frame received and L3 forwarded by router.
ivmid_ip_mc_rpf_discarded IP multicast frame received by router, but discarded due to MC RPF check.
ivmid_ip_ttl_discarded IP multicast frame received by router, but discarded due to TTL <2.
ivmid_ip_acl_discarded IP frame received by router, but discarded by ACL rules in ANA_AC.
For counting of ingress router leg events, eight counter pairs are provided per router leg. Each pair consists of a
counter for IPv4 and a counter for IPv6, for a total of 16 counters that are available per router leg.
For each of the eight counter pairs, an event mask can be configured, specifying which of the Ingress router leg
events listed will trigger the counter. Each counter pair can be configured to count either bytes or frames.
An example usage of the counters is shown in the following table.
Table 4-134. Ingress Router Leg Statistics Example
ivmid_ip_mc_rpf_discarded
ivmid_ip_acl_discarded
ivmid_ip_ttl_discarded
ivmid_ip_mc_received
ivmid_ip_uc_received
ivmid_ip_mc_routed
ivmid_ip_uc_routed
Event Description
evmid_ip_uc_routed IP unicast frame L3 forwarded by router.
evmid_ip_mc_routed IP multicast frame L3 forwarded by router.
evmid_ip_mc_switched IP multicast frame L2 forwarded by switch.
evmid_ip_mc_ttl_discarded IP multicast frame discarded by router due to TTL value configured
for egress router leg. See VMID:VMID_MC:RLEG_IP4_MC_TTL and
VMID:VMID_MC:RLEG_IP6_MC_TTL.
evmid_ip_acl_discarded IP frame discarded by ACL rules in ANA_AC.
For counting of egress router leg events, eight counter pairs are provided per router leg. Each pair consists of a
counter for IPv4 and a counter for IPv6, for a total of 16 counters available per router leg.
For each of the eight counter pairs, an event mask can be configured to specify which of the events listed in the
following table will trigger the counter. Each counter pair can be configured to count either bytes or frames.
An example usage of the counters is shown in the following table.
Table 4-136. Egress Router Leg Statistics Example
evmid_ip_acl_discarded
evmid_ip_mc_switched
evmid_ip_ttl_discarded
evmid_ip_mc_routed
evmid_ip_uc_routed
To implement the required data forwarding rules for an IGMP/MLD snooping switch, the VCAP IS2 lookup in
ANA_ACL must be used.
For each IP multicast flow, the VCAP IS2 lookup can be used to limit the forwarding within each VLAN using the
following key types.
• IGMP snooping switch: IP4_VID
• MLD snooping switch: IP6_VID
Both key types include SIP, DIP, and VID such that snooping switches can be supported for IGMPv3 and MLDv2.
In the action of the VCAP rules, the following fields can be used to limit the forwarding.
• PORT_MASK. The ports to which the frame is forwarded within the VLAN.
• MASK_MODE. Should normally be set to 1 (AND_VLANMASK).
When IP multicast routing is combined with snooping, a lookup in VCAP IS2 is made for each copy of the
IP multicast packet. The VID in each such lookup is the VID of the egress VLAN (of that copy). In order for
the VCAP rules to use the EVID in the IP4_VID/IP6_VID key, the second VCAP lookup must be used, and
ANA_ACL::VCAP_S2_CFG.SEC_ROUTE_HANDLING_ENA must be set to 1.
4.18.5 IP-in-IPv4
This section discusses IP-in-IPv4.
4.18.5.1 Overview
When IP-in-IPv4 is being used, the device is situated between two routing domains and IP-in-IP is used to forward
frames from one routing domain through the other routing domain.
The inner IP layer may be either IPv4 or IPv6. The outer IP layer must be IPv4.
The following shows a configuration, where IP-in-IPv4 "tunnels" are used to tunnel IP frames from a blue IP domain,
through a green IPv4 domain to other "islands" of the blue IP domain.
When entering a tunnel, frames are being routed in the blue IP domain, encapsulated in an IP layer of the green
domain and afterwards the frame is being routed in the green domain. When exiting a tunnel, frames are being
routed in the green domain, decapsulated and afterwards the frame is routed in the blue domain.
Before and after routing in the two domains, frames are bridged in the ingress and egress VLANs. Each of the
bridges (marked with "X") in the following represent bridging within a VLAN.
Figure 4-41. Router Leg-Based IP-in-IP Tunneling
IPv4
IPv4 or
MCHP Device R IPv6
R
R
X X
IPv4 IPv4
R
or
IPv6 R R R
R or
IPv6
X X R
R
R IPv4
or
IPv6
The frames forwarded between the blue and the green routers are pure IP packets, i.e. they have no associated
Ethernet protocol layer including no associated VLAN or ingress port number.
The blue and the green IP domains may co-exist in the same VLAN, in which case a configuration as shown in the
following may result.
X
R R
X X
In order to have the device route the frame twice (once for the blue IP domain and once for the green IP domain), the
frame must be processed twice by ANA-QSYS-REW.
This is done by forwarding the frame to Virtual Device 2 (VD2) after the first processing round together with
information on which router leg the frame is to be received on for the second processing round.
In the first round:
1. L2 forward the frame within the ingress VLAN.
2. When encapsulating:
– Route within the inner IP domain.
– Pop the Ethernet layer.
– Push an IP layer as well as a possibe GRE layer for the outer IP domain.
3. When decapsulating:
– Route within the outer IP domain.
– Pop the Ethernet layer.
– Verify validity of the outer IP layer.
– Pop the outer IP layer as well as a possible GRE layer.
4. Forward the frame to VD2 for second round processing.
In the second round:
1. When encapsulating: Route within the outer IP domain.
2. When decapsulating: Route within the inner IP domain.
3. L2 forward the frame within the egress VLAN.
The following figure shows the forwarding flow for an IP unicast packet being forwarded from the blue domain to the
green domain.
For IP multicast packets, each round consists of two passes: One pass for possibly L2 forwarding and one pass
(through VD0) for L3 forwarding into each of the egress VLAN(s).
ANA_L3:VMID:VMID_ENCAP.DECAP_ENCAP_TYPE
When an IP MC frame is decapsulated, the DMAC for the new Ethernet layer is generated (in the second round)
based on and RFC 1112 and RFC 2464.
The following code-block shows an example of IPv4/IPv6 over GRE (without checksum) over IPv4 (without options)
encapsulation format for which the frame reception GRE checksum is supported.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| IHL |Type of Service| Total Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification |Flags| Fragment Offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time to Live | Protocol=47 | Header Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|C| Reserved0 | Ver | Protocol Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | Reserved1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Version=4/6
...........continued
Key Name Key Size Number of Words Key Type
MAC_ETYPE 288 bits 6 words X6 type
ARP 226 bits
IP4_TCP_UDP 293 bits
IP4_OTHER 292 bits
CUSTOM_2 285 bits
IP6_VID 302 bits
IP_7TUPLE 613 bits 12 words X12 type
CUSTOM_1 608 bits
The following table lists details for all VCAP IS2 keys and fields. When programming an entry in VCAP IS2, the
associated key fields must be programmed in the listed order with the first field in the table starting at bit 0 in the
entry. As an example, for a MAC_ETYPE entry, the first field X6_TYPE must be programmed at bits 3:0 of the entry,
the second field FIRST must be programmed at bit 4, and so on.
Table 4-138. VCAP IS2 Key Overview
IP4_TCP_UDP
MAC_ETYPE
IP4_OTHER
CUSTOM_2
CUSTOM_1
IP_7TUPLE
IP4_VID
IP6_VID
ARP
Size
X6_TYPE X6 type. 4 x x x x x x
0: MAC_ETYPE
3: ARP 4: IP4_TCPUDP
5: IP4_OTHER
8: CUSTOM_2
9: IP6_VID
...........continued
Field Name Description
IP4_TCP_UDP
MAC_ETYPE
IP4_OTHER
CUSTOM_2
CUSTOM_1
IP_7TUPLE
IP4_VID
IP6_VID
ARP
Size
IGR_PORT_MASK_ If set, IGR_PORT_MASK, 1 x x x x x x x
L3 IGR_PORT_MASK_RNG, and
IGR_PORT_MASK_SEL are used to specify
L3 interfaces.
...........continued
Field Name Description
IP4_TCP_UDP
MAC_ETYPE
IP4_OTHER
CUSTOM_2
CUSTOM_1
IP_7TUPLE
IP4_VID
IP6_VID
ARP
Size
IGR_PORT_MASK_SEL: MASQUERADE x x x x x x x
Set for masqueraded frames if
ANA_ACL::VCAP_S2_MISC_CTRL.MASQ_I
GR_MAS K_ENA == 1. A frame is
masqueraded when
IFH.MISC.PIPELINE_ACT == INJ_MASQ.
The bit corresponding to the masqueraded
port is set.
IGR_PORT_MASK_SEL: CPU_VD x x x x x x x
Set for the following frame types:
IGR_PORT_MASK_SEL: CPU_VD x x x x x x x
32-bit IGR_PORT_MASK
For CPU and VD frame types:
Bits 4:0: Bit set if physical src port is VD2,
VD1, VD0, CPU1, or CPU0
Bits 5:11: Src port (possibly masqueraded)
Bits 12:16: ifh.misc.pipeline_pt
Bits 17:19: ifh.misc.pipeline_act
In addition, IGR_PORT_MASK_RNG is set
to 0.
...........continued
Field Name Description
IP4_TCP_UDP
MAC_ETYPE
IP4_OTHER
CUSTOM_2
CUSTOM_1
IP_7TUPLE
IP4_VID
IP6_VID
ARP
Size
SERVICE_FRM Set if classified ISDX > 0. 1 x x x x x x x x x
...........continued
Field Name Description
IP4_TCP_UDP
MAC_ETYPE
IP4_OTHER
CUSTOM_2
CUSTOM_1
IP_7TUPLE
IP4_VID
IP6_VID
ARP
Size
ETYPE Frame’s EtherType Overloading: OAM 16 x
Y.1731 frames: ETYPE[6:0] contains
OAM MEL flags, see the following.
OAM_Y1731 is set to 1 to indicate the
overloading of ETYPE. OAM MEL flags:
Encoding of MD level/MEG level (MEL). One
bit for each level where lowest level encoded
as zero.
The following keys can be generated:
MEL=0: 0b0000000
MEL=1: 0b0000001
MEL=2: 0b0000011
MEL=3: 0b0000111
MEL=4: 0b0001111
MEL=5: 0b0011111 MEL=6: 0b0111111
MEL=7: 0b1111111
Together with the mask, the following kinds
of rules may be created:
• Exact match. Fx. MEL = 2: 0b0000011
• Below. Fx. MEL< = 4: 0b000XXXX
• Above. Fx. MEL> = 5: 0bXX11111
• Between. Fx. 3< = MEL< = 5:
0b00XX111
Where, 'X' means don't care.
...........continued
Field Name Description
IP4_TCP_UDP
MAC_ETYPE
IP4_OTHER
CUSTOM_2
CUSTOM_1
IP_7TUPLE
IP4_VID
IP6_VID
ARP
Size
L3_FRAGMENT_TY L3 Fragmentation type: 2 x x
PE
0: No Fragments: MF==0 && FO==0
1: Initial Fragments: MF==1 && FO == 0
2: Suspicious Fragment: FO!=0 && FO <=
FRAGMENT_OFFSET_THRES
3: Valid Follow-up Fragment: FO >
FRAGMENT_OFFSET_THRES
Where, FRAGMENT_OFFSET_THRES is
programmed in
ANA_ACL::VCAP_S2_FRAGMENT_CFG.F
RAGMEN T_OFFSET_THRES.
MF: More Fragments flag in IPv4 header FO:
Fragments Offset in IPv4 header
...........continued
Field Name Description
IP4_TCP_UDP
MAC_ETYPE
IP4_OTHER
CUSTOM_2
CUSTOM_1
IP_7TUPLE
IP4_VID
IP6_VID
ARP
Size
L3_TOS Frame's IPv4/IPv6 DSCP and ECN fields. 8 x x x
...........continued
Field Name Description
IP4_TCP_UDP
MAC_ETYPE
IP4_OTHER
CUSTOM_2
CUSTOM_1
IP_7TUPLE
IP4_VID
IP6_VID
ARP
Size
SEQUENCE_EQ0 Set if TCP sequence number is 0. 1 x x
2: ANA_PORT_VOE
3: ANA_CL
4: ANA_CLM
5: ANA_IPT_PROT
6: ANA_OU_MIP
7: ANA_OU_SW
8: ANA_OU_PROT
9: ANA_OU_VOE
10: ANA_MID_PROT
11: ANA_IN_VOE
12: ANA_IN_PROT
13: ANA_IN_SW
14: ANA_IN_MIP
15: ANA_VLAN
16: ANA_DONE
HIT_ME_ONCE If set, the next frame hitting the rule is copied to CPU 1
using CPU_QU_NUM. CPU_COPY_ENA overrules HIT_ME_ONCE
implying that if CPU_COPY_ENA is also set, all frames hitting the
rule are copied to the CPU.
...........continued
Action Name Description Size
IGNORE_PIPELINE_CTRL Ignore ingress pipeline control. This enforces the use of the VCAP 1
IS2 action even when the pipeline control has terminated the frame
before VCAP IS2.
...........continued
Action Name Description Size
TCP_UDP_ENA If set, frame's TCP/UDP DPORT and SPORT are replaced with 1
TCP_UDP_DPORT and TCP_UDP_SPORT.
MATCH_ID Logical ID for the entry. The MATCH_ID is extracted together with 16
the frame if the frame is forwarded to the CPU (CPU_COPY_ENA).
The result is placed in IFH.CL_RSLT.
CNT_ID Counter ID, used per lookup to index the 4K frame counters 12
(ANA_ACL:CNT_TBL). Multiple VCAP IS2 entries can use the same
counter.
...........continued
Action Name Description Size
ROUTING mode:
ACL_RT_MODE[3] = 0 (ROUTING mode):
ACL_RT_MODE[0] = 1: Enable Unicast routing updates in
ANA_ACL.
ACL_RT_MODE[1] = 1: Enable Multicast routing updates in
ANA_ACL.
ACL_RT_MODE[2] = 1: Enable overloading of ACL_MAC field.
SWAPPING mode:
ACL_RT_MODE(3) = 1:
MAC address used to replace either SMAC or DMAC based on
ACL_RT_MODE.
...........continued
Action Name Description Size
EGR_ACL_ENA If set, ACL is acting after the router as an E-RACL in terms of routing 1
statistics. EGR_ACL_ENA takes precedence over IGR_ACL_ENA.
Applies when RT_DIS is set.
(R)ARP frame The Type/Len field is equal to 0x0806 (ARP) or 0x8035 (RARP).
OAM Y.1731 frame The Type/Len field is equal to 0x8902 (ITU-T Y.1731).
SNAP frame The Type/Len field is less than 0x600.
The Destination Service Access Point field, DSAP is equal to 0xAA.
The Source Service Access Point field, SSAP is equal to 0xAA.
The Control field is equal to 0x3.
...........continued
Frame Type Condition
ETYPE frame The Type/Len field is greater than or equal to 0x600, and the Type field does not
indicate any of the previously mentioned frame types, that is, ARP, RARP, OAM,
IPv4, or IPv6.
Each of the two lookups in VCAP IS2 must be enabled before use (VCAP_S2_CFG.SEC_ENA) for a key to be
generated and a match to be used. If a lookup is disabled on a port, frames received by the port are not matched
against rules in VCAP IS2 for that lookup.
Each port controls the key selection for each of the two lookups in VCAP IS2 through the VCAP_S2_KEY_SEL
register. For some frame type (OAM Y.1731, SNAP, LLC, EYTYPE) the key selection is given as only the
MAC_ETYPE key can be used. For others frame types (ARP and IP) multiple keys can be selected from. The
following table lists the applicable key types available for each frame type listed in Table 4-140.
Table 4-142. VCAP IS2 Key Selection
...........continued
Frame Type Applicable VCAP IS2 keys
LLC frames MAC_ETYPE
ETYPE frames MAC_ETYPE
Note:
The key selection is overruled if VCAP CLM instructs the use of a custom key, where data from the frame is extracted
at a VCAP CLM-selected point. For more information, see 4.20.1.3 VCAP IS2 Custom Keys.
For information about VCAP IS2 keys and actions, see 4.19 VCAP IS2 Keys and Actions.
ANA_ACL:KEY_SEL:VCAP_S2_KEY_ Configuration of the key selection and key 134 per lookup
SEL generation for the VCAP IS2
ANA_L3:VMID:VMID_MISC.IRLEG_S2 Key selection index for routed frames associated Per VMID
_KEY_SEL_IDX with the ingress router leg. Index is offset with 70
into ANA_ACL:KEY_SEL:VCAP_S2_KEY_SEL.
ANA_L3:VMID:VMID_MISC.IRLEG_S2 Key selection index for routed frames associated Per VMID
_KEY_SEL_IDX with the egress router leg. Index is offset with 70 into
ANA_ACL:KEY_SEL:VCAP_S2_KEY_SEL.
VCAP CLM action S2_KEY_SEL Key selection index for VCAP CLM initiated Per VCAP CLM
rules. Index is offset with 70 into action
ANA_ACL:KEY_SEL:VCAP_S2_KEY_SEL.
Each of the four lookups in VCAP IS2 must be enabled before use (VCAP_S2_CFG.SEC_ENA) for a key to be
generated and a match to be used. If a lookup is disabled on a port, frames received by the port are not matched
against rules in VCAP IS2 for that lookup.
The key selection for VCAP IS2 is governed by one of four sources:
• The ingress port (logical port). Using the ingress port is the default behavior and applies to all frames. This is
intended for implementing port ACLs (PACL) or VLAN ACLs (VACL).
• The ingress router leg. This applies only to routed frames. This is intended for implementing ingress router ACLs
(I-RACL) using the ingress router interface (IRLEG) as port information.
• The egress router leg. This applies only to routed frames.This is intended for implementing egress router ACLs
(E-RACL) using the egress router interface (ERLEG) as port information.
• VCAP CLM actions. This applies only to frames matching a VCAP CLM entry with action S2_KEY_SEL_ENA
set. This is intended for exception handling and special user-defined ACLs.
For each lookup, the key selection for each of the four sources is retrieved and evaluated in a prioritized order.
Use the key selection configuration indexed by VCAP CLM if applicable and the selected configuration has
VCAP_S2_KEY_SEL.KEY_SEL_ENA set.
Use the key selection configuration indexed by the ERLEG if the frame is routed and the selected configuration has
VCAP_S2_KEY_SEL.KEY_SEL_ENA set.
Use the key selection configuration indexed by the IRLEG if the frame is routed and the selected configuration has
VCAP_S2_KEY_SEL.KEY_SEL_ENA set.
Use the key selection configuration indexed by the ingress port.
The resulting key selection configuration controls the key selection for the lookup in VCAP IS2. For some frame
types (OAM Y.1731, SNAP, LLC, EYTYPE) the key selection is given as only the MAC_ETYPE key can be used. For
others frame types (ARP and IP) multiple keys can be selected from. The following table lists the applicable key types
available for each frame type listed in Table 4-140.
Table 4-144. VCAP IS2 Key Selection
Note: The key selection is overruled if VCAP CLM instructs the use of a custom key, where data from the frame is
extracted at a VCAP CLM-selected point. For more information, see 4.20.1.3 VCAP IS2 Custom Keys.
In addition to the selected key type, specific key fields are controlled by the key selection configuration and its source.
Key selection configurations used by ingress or egress router legs must set
ANA_ACL:KEY_SEL:VCAP_S2_KEY_SEL.IGR_PORT_MASK_SEL in order to use the router leg as port interface
instead of the physical port normally used in VCAP IS2 keys. The following table lists key fields that are encoded
differently depending on the source.
IGR_PORT_MASK_L3 0 1 1
L3_DST 0 0 1
For information about VCAP IS2 keys and actions, see 4.19 VCAP IS2 Keys and Actions.
Sixteen global VCAP IS2 range checkers are supported by keys MAC_ETYPE, ARP, IP4_TCP_UDP, IP4_OTHER,
and IP_7TUPLE. All frames using these keys are compared against the range checkers and a 1-bit range “match/no
match” flag is returned for each range checker. The combined 16 match/no match flags are used in the L4_RNG key
field. So, it is possible to include for example ranges of DSCP values and/or ranges of TCP source port numbers in
the ACLs.
Note, VCAP CLM also supports range checkers but they are independent of the VCAP IS2 range checkers.
The range key is generated for each frame based on extracted frame data and the configuration in
ANA_ACL::VCAP_S2_RNG_CTRL. Each of the 16 range checkers can be configured to one of the following range
types.
• TCP/UDP destination port range:
Input to the range is a selected 16-bit wide field from the frame. The field is selected using the offset value
configured in ANA_ACL::VCAP_S2_RNG_OFFSET_CFG. The offset starts at the Type/Len field in the frame
after up to 3 VLAN tags have been skipped. Note that only one selected value can be configured for all eight
range checkers.
Range is applicable to all frames.
Range start points and range end points are configured in ANA_ACL::VCAP_S2_RNG_VALUE_CFG with both the
start point and the end point being included in the range. A range matches if the input value to the range (for instance
the frame’s TCP/UDP destination port) is within the range defined by the start point and the end point.
All VCAP IS2 keys except IP4_VID and IP6_VID contain the field IGR_PORT_MASK_SEL and IGR_PORT_MASK.
For frames received on a front port, IGR_PORT_MASK_SEL is set to 0 and the bit corresponding to the frame’s
physical ingress port number is set in IGR_PORT_MASK. The following lists some settings for frames received on
other interfaces and how this can be configured through register VCAP_S2_MISC_CTRL.
• Loopback frames:
By default, IGR_PORT_MASK_SEL = 1 and IGR_PORT_MASK has one bit set corresponding to the physical
port which the frame was looped on. Optionally use IGR_PORT_MASK_SEL = 3.
• Masqueraded frames:
By default, IGR_PORT_MASK_SEL=0 and IGR_PORT_MASK has one bit set corresponding to the
masquerade port. Optionally, use IGR_PORT_MASK_SEL = 2.
• VStaX frames:
By default, frames received with a VStaX header on a front port use IGR_PORT_MASK_SEL = 0. Optionally,
use IGR_PORT_MASK_SEL=3.
• Virtual device frames:
By default, IGR_PORT_MASK_SEL=0 and IGR_PORT_MASK has one bit set corresponding to the original
physical ingress port. Optionally use IGR_PORT_MASK_SEL = 3.
• CPU injected frames:
By default, IGR_PORT_MASK_SEL = 0 and IGR_PORT_MASK has none bits set. Optionally use
IGR_PORT_MASK_SEL = 3.
For more information about the contents of IGR_PORT_MASK_SEL and IGR_PORT_MASK, seeTable 4-138.
Each key type use in a lookup in VCAP IS2 triggers a sticky bit being set in ANA_ACL::SEC_LOOKUP_STICKY. A
sticky bit is cleared by writing 1 to it.
Each action returned by VCAP IS2 triggers a counter to be incremented. This applies to both actions from matches
and default actions. The index into the counters is provided by VCAP IS2 action CNT_ID. The CNT_ID is fully flexible
meaning multiple actions can point to the same counter. However, actions returned by the first or second lookup use
counters in ANA_ACL:CNT_A while actions returned by the third or fourth lookup use counters in ANA_ACL:CNT_B.
All counters are writable so they can be preset to any value. A counter is cleared by writing 0.
The first and the third lookups are done in parallel in separate TCAMs. The same applies to the second and the
fourth lookups. Consequently, the actions from the first and the third lookups are processed before the actions from
the second and the fourth lookups. The order of processing is given as:
1. Process first action if the first’s action IS_INNER_ACL is 0.
2. Process third action if the third’s action IS_INNER_ACL is 0.
3. Process second action if the second’s action IS_INNER_ACL is 0.
4. Process fourth action if the fourth’s action IS_INNER_ACL is 0.
5. Process first action if the first’s action IS_INNER_ACL is 1.
6. Process third action if the third’s action IS_INNER_ACL is 1.
7. Process second action if the second’s action IS_INNER_ACL is 1.
8. Process fourth action if the fourth’s action IS_INNER_ACL is 1.
This implies that any action can be processed in ANA_OU_SW pipeline point and in ANA_IN_SW pipeline point. All
actions can also be placed at the same pipeline point.
The reason for the third action being processed before the second is due to the first and third lookups being done in
parallel in separate TCAMs.
Processing of each action obeys the frame’s current pipeline information (pipeline point and pipeline action). For
instance if the frame has been redirected at pipeline point ANA_CLM then neither of the VCAP IS2 actions are
applied. However, VCAP IS2 action IGNORE_PIPELINE_CTRL can overrule this.
Furthermore, frame processing between pipeline points ANA_OU_SW and ANA_IN_SW such as OAM filtering,
protection switching, or routing can influence the processing of the VCAP IS2 actions so that only an action belonging
to pipeline point ANA_OU_SW is processed.
The following table lists how the four VCAP IS2 action are combined when being processed. For most cases,
the processing is sequential, meaning that if more than one action has settings for the same (for instance
MIRROR_PROBE), the last action processed takes precedence. Others are sticky meaning they cannot be undone
by a subsequent action if already set by an earlier action.
Table 4-149. Combining VCAP IS2 Actions
PIPELINE_FORCE_ENA Processed individually for each action. Subsequent processing uses the result
from the previous processing which can prevent its processing if the pipeline
information from previous processing disables the subsequent processing.
HIT_ME_ONCE Sticky.
INTR_ENA Sticky.
CPU_COPY_ENA Sticky.
CPU_QU_NUM Sticky (each action can generate a CPU copy and based on configuration in
ANA_AC:PS_COMMON:CPU_CFG.ONE_CPU_COPY_ONLY_MASK, each copy
can be sent to CPU).
CPU_DIS Processed individually for each action. Subsequent processing may clear CPU
copy from previous processing.
LRN_DIS Sticky.
RT_DIS Sticky.
POLICE_ENA Sticky.
...........continued
Action Name Combining Actions
MASK_MODE Processed individually for each action. Subsequent processing uses the result
from the previous processing. (If the previous processing is sticky, the subsequent
processing is not applied). MASK_MODE is sticky for the following values:
3: REPLACE_ALL
4: REDIR_PGID
6: VSTAX
RSDX_ENA Sticky.
REW_CMD Subsequent actions take precedence same functions are triggered by additional
actions. If different functions are used, all are applied.
TTL_UPDATE_ENA Sticky.
SAM_SEQ_ENA Sticky.
TCP_UDP_ENA Sticky.
MATCH_ID Processed individually for each action. Subsequent processing uses the result
from the previous processing.
MATCH_ID_MASK Processed individually for each action. Subsequent processing uses the result
from the previous processing.
CNT_ID Processed individually for each action. Four counters are updated, one for each
action.
SWAP_MAC_ENA Sticky.
DMAC_OFFSET_ENA Sticky
...........continued
Action Name Combining Actions
If a routed frame is discarded by a VCAP IS2 rule by setting RT_DIS, it is configurable how the frame is counted in
terms of ingress and egress router leg statistics.
VCAP IS2 actions IGR_KEY_ENA and EGR_KEY_ENA select whether the frame is discarded during the ingress
router processing or during the egress router processing. VCAP IS2 action RLEG_STAT_IDX selects an ingress and
an egress router leg statistics mask (ANA_ACL::VCAP_S2_RLEG_STAT) that program which router leg statistics to
clear by the discard. For more details about the router leg statistics, see 4.18.3 Statistics.
Before an ingress discard is applied, it is verified that ANA_L3 has received the IP frame by checking that either
ingress router leg events ivmid_ip_uc_received or ivmid_ip_mc_received is set. The following actions are then
applied.
• Clear ingress router leg statistics events according to VCAP_S2_RLEG_STAT.IRLEG_STAT_MASK.
• Clear egress router leg statistics events according to VCAP_S2_RLEG_STAT.ERLEG_STAT_MASK.
• Set ivmid_ip_acl_discarded when also set in VCAP_S2_RLEG_STAT.IRLEG_STAT_MASK.
An egress discard is applied to any frame marked as routed by ANA_L3. The following actions are applied.
• Keep ingress router leg statistics events as signaled by ANA_L3 because the frame is discarded after the
routing.
• Clear egress router leg statistics events according to VCAP_S2_RLEG_STAT.ERLEG_STAT_MASK.
• Set evmid_ip_acl_discarded when also set in VCAP_S2_RLEG_STAT.ERLEG_STAT_MASK.
VCAP IS2 action ACL_RT_MODE can enable the following rewrite modes.
• Replace DMAC: The frame’s DMAC is replaced with the MAC address specified in VCAP IS2 action
ACL_MAC. It is selectable to only replace part of the DMAC (for instance the OUI only). This is
enabled with VCAP IS2 action DMAC_OFFSET_ENA, and the number of bits to replace is set in
ANA_ACL::SWAP_IP_CTRL.DMAC_REPL_OFFSET_VAL.
• Replace SMAC: The frame’s SMAC is replaced with the MAC address specificed in VCAP IS2 action
ACL_MAC.
• Swap MAC addresses and replace SMAC if MC: The frame’s MAC addresses are swapped. If the new SMAC is
a multicast MAC, it is replaced with the MAC address specificed in VCAP IS2 action ACL_MAC.
• Swap MAC addresses if UC else replace SMAC if MC: The frame’s MAC addresses are swapped if the frame’s
DMAC is unicast. Otherwise, the frame’s SMAC is replaced with the MAC address specificed in VCAP IS2
action ACL_MAC.
• Swap MAC and IP addresses and replace SIP and SMAC if MC: The frame’s MAC addresses are swapped
and the frame’s IP addresses are swapped. If the new SMAC is a multicast MAC, it is replaced with the MAC
address specificed in VCAP IS2 action ACL_MAC. If the new SIP is a multicast, it is replaced with an IP address
from the IP address table ANA_ACL::SWAP_SIP.
• Swap MAC and IP addresses if UC else replace SIP and SMAC if MC: The frame’s MAC addresses are
swapped if the frame’s DMAC is unicast. Otherwise, the frame’s SMAC is replaced with the MAC address
specificed in VCAP IS2 action ACL_MAC. The frame’s IP addresses are swapped if the frame’s DIP is unicast.
Otherwise, the frame’s SIP is replaced with an IP address from the IP address table ANA_ACL::SWAP_SIP.
• Swap IP addresses and replace SIP if MC: The frame’s IP addresses are swapped. If the new SIP is a multicast,
it is replaced with an IP address from the IP address table ANA_ACL::SWAP_SIP.
• Replace SMAC, swap IP addresses, and replace SIP if MC: The frame’s SMAC is replaced with the MAC
address specificed in VCAP IS2 action ACL_MAC. The frame’s IP addresses are swapped. If the new SIP is a
multicast, it is replaced with an IP address from the IP address table ANA_ACL::SWAP_SIP.
The IP address table (ANA_ACL::SWAP_SIP) used by some of the above mentioned modes is indexed using VCAP
IS2 action SIP_IDX. The IP address table can contain 32 IPv4 addresses or 8 IPv6 addresses.
When swapping IP addresses or replacing the source IP address, it is also possible to preset the IPv4 TTL or the
IPv6 hop limit. This is enabled by VCAP IS2 action TTL_UPDATE_ENA. The new TTL value for IPv4 frames is
configured in ANA_ACL::SWAP_IP_CTRL.IP_SWAP_IP4_TTL_VAL and the new hop limit value for IPv6 frames is
configured in ANA_ACL::SWAP_IP_CTRL.IP_SWAP_IP4_TTL_VAL.
IPv4 and IPv6 TCP/UDP frames have the option to replace the source and destination port numbers with new values.
This is enabled through VCAP IS2 action TCP_UDP_ENA and new port numbers are provided by VCAP IS2 actions
TCP_UDP_DPORT and TCP_UDP_SPORT.
The IPv4 header checksum is updated whenever required by above mentioned frame rewrites. The UDP checksum
is updated whenever required for IPv6 frames and cleared for IPv4 frames.
If PTP and routing is to be supported concurrently, then some routing related frame rewrites must be done in
ANA_ACL instead of in the rewriter. This is enabled in ANA_ACL::VCAP_S2_MISC_CTRL.ACL_RT_SEL or by
setting VCAP IS2 action ACL_RT_MODE. When enabled, the frame’s DMAC is changed to the next-hop MAC
address specified by ANA_L3 and the rewriter is informed not to rewrite the DMAC.
The frame’s classified VID is set to the egress VID (ANA_L3:VMID:RLEG_CTRL.RLEG_EVID).
In addition, ANA_L3 must be setup to change the source MAC address with the address belonging to the egress
router leg (ANA_L3::ROUTING_CFG.RT_SMAC_UPDATE_ENA). The IPv4 TTL or IPv6 hop limit is still decremented
by the rewriter.
...........continued
Field Bits Description
VLAN_IGNORE 1 Used for ignoring the VLAN_PORT_MASK contribution from the VLAN table
when forwarding frames to this station. Can optionally be used for source port
ignore (ANA_L2::FWD_CFG.FILTER_MODE_SEL).
ADDR 12 Stored entry address used for forwarding and port move detection. The field is
encoded according to ADDR_TYPE.
ADDR_TYPE 3 This field encodes how to interpret the ADDR field.
Encoded as:
ADDR_TYPE= UPSID_PN(0): Unicast entry address. Used to associate the
entry with a unique {UPSID, UPSPN} port.
ADDR(9:5) = UPSID
ADDR(4:0) = UPSPN
ADDR_TYPE=GCPU_UPS(1): CPU management entry address. Used to
associate the entry with a unique global CPU port or internal port.
ADDR(9:5) = UPSID
ADDR(11) = 0:
ADDR(3:0) = CPU port number.
ADDR(11) = 1:
ADDR(3:0) = 0xe: Internal port number.
ADDR(3:0) = 0xf: Local lookup at destination unit (UPSID).
ADDR_TYPE=GLAG(2): Unicast GLAG address. Used to associate the entry
with a global aggregated port.
ADDR = GLAGID.
ADDR_TYPE=MC_IDX(3): Multicast entry address. Used to associate the entry
with an entry in the PGID table. Specifies forwarding to the ports found in the
PGID table entry indexed by mc_idx.
ADDR = mc_idx.
ISDX_LIMIT_IDX 11 Configures the ISDX learn limit index associated with the entry.
CPU access to the MAC table is performed by an indirect command-based interface where a number
of fields are configured (in LRN::MAC_TABLE_ACCESS_CFG_*) followed by specifying the command (in
LRN::COMMON_ACCESS_CTRL.CPU_ACCESS_CMD). The access is initiated by a shot bit that is cleared upon
completion of the command (LRN::COMMON_ACCESS_CTRL.MAC_TABLE_ACCESS_SHOT). It is possible to
trigger CPU interrupt upon completion (ANA_L2:COMMON:INTR.LRN_ACCESS_COMPLETE_INTR).
The following table lists the types of access possible.
Unlearn/Forget Delete/unlearn entry in MAC Configure MAC and FID of the entry to be unlearned in
table given by (MAC, FID). LRN::MAC_ACCESS_CFG_0 and
Position given by HASH(MAC, LRN::MAC_ACCESS_CFG_1.
FID).
Status of operation returned in:
LRN::EVENT_STICKY.CPU_UNLEARN_STICKY and
LRN::EVENT_STICKY.CPU_UNLEARN_FAILED_STICKY.
Lookup Lookup entry in MAC table given Configure MAC and FID of the entry to
by (MAC, FID). be looked up in LRN::MAC_ACCESS_CFG_0 and
LRN::MAC_ACCESS_CFG_1.
Position given by HASH(MAC,
FID) Status of lookup operation returned in:
LRN::EVENT_STICKY.CPU_LOOKUP_STICKY and
LRN::EVENT_STICKY.CPU_LOOKUP_FAILED_STICKY
Entry fields are returned in LRN::MAC_ACCESS_CFG_2 if
lookup succeeded.
Read direct Read entry in MAC table indexed Configure the index of the entry to read in
by (row, column) LRN::COMMON_ACCESS_CTRL.CPU_ACCESS_DIRECT_R
OW,
LRN::COMMON_ACCESS_CTRL.CPU_ACCESS_DIRECT_C
OL and
LRN::COMMON_ACCESS_CTRL.CPU_ACCESS_DIRECT_T
YPE.
Status of read operation returned in
LRN::EVENT_STICKY.CPU_READ_DIRECT_STICKY
Entry fields are returned in
LRN::MAC_ACCESS_CFG_0, LRN::MAC_ACCESS_CFG_1
and LRN::MAC_ACCESS_CFG_2 if read succeeded.
...........continued
Command Purpose Use
Write direct Write entry in MAC table indexed Configure the index of the entry to write in
by (row, column) LRN::COMMON_ACCESS_CTRL.CPU_ACCESS_DIRECT_R
OW,
LRN::COMMON_ACCESS_CTRL.CPU_ACCESS_DIRECT_C
OL and
LRN::COMMON_ACCESS_CTRL.CPU_ACCESS_DIRECT_T
YPE.
Configure entry fields in
LRN::MAC_ACCESS_CFG_0, LRN::MAC_ACCESS_CFG_1
and LRN::MAC_ACCESS_CFG_2
Status of write operation returned in
LRN::EVENT_STICKY.CPU_WRITE_DIRECT_STICKY
Scan Find next/Find all Configure the starting row for the scan in:
LRN::COMMON_ACCESS_CTRL.CPU_ACCESS_DIRECT_R
Searches through the MAC
OW,
table and either stops at the
LRN::COMMON_ACCESS_CTRL.CPU_ACCESS_DIRECT_C
first row with entries matching
OL and
the specified filter conditions or
LRN::COMMON_ACCESS_CTRL.CPU_ACCESS_DIRECT_T
perform the specified actions on
YPE.
all entries matching the specified
filter conditions. Configure an ending row for the scan (if searching
through the complete table is not required):
LRN::SCAN_LAST_ROW_CFG.SCAN_LAST_ROW
For information about search filters and corresponding actions,
see 4.21.4 SCAN Command.
Find smallest Get the smallest entry in the Configure MAC and FID of the starting point
MAC table numerically larger for the search in LRN::MAC_ACCESS_CFG_0 and
than the specified (FID, MAC). LRN::MAC_ACCESS_CFG_1.
FID, and MAC are evaluated as a Configure search filters to be used during find smallest:
61 bit number with the FID being
Use
most significant.
LRN::SCAN_NEXT_CFG.SCAN_NEXT_IGNORE_LOCKED_
ENA to only search among entries with
LRN::MAC_ACCESS_CFG_2.MAC_ENTRY_LOCKED
cleared.
Use LRN::SCAN_NEXT_CFG.FID_FILTER_ENA to only
search among entries with the VID/FID specified in
LRN::MAC_ACCESS_CFG_0.MAC_ENTRY_FID.
Use LRN::SCAN_NEXT_CFG.ADDR_FILTER_ENA to only
search among entries with the address specified
in LRN::MAC_ACCESS_CFG_2.MAC_ENTRY_ADDR and
LRN::MAC_ACCESS_CFG_2.MAC_ENTRY_ADDR_TYPE
Automatic age scan LRN::SCAN_NEXT_CFG.SCAN_USE_POR Configures a port filter used for defining
port filter T_FILTER_ENA which ports are applicable for automatic
ANA_L2::FILTER_OTHER_CTRL aging.
ANA_L2::FILTER_LOCAL_CTRL
Non-locked only filter LRN::SCAN_NEXT_CFG.SCAN_NEXT_IGN Finds non locked entries.
ORE_LOCKED_ENA
Aged only filter LRN::SCAN_NEXT_CFG.SCAN_NEXT_AG Finds only aged entries, that is,
ED_ONLY_ENA AGE_FLAG equal to maximum (configured
in ANA_L2::LRN_CFG.AGE_SIZE).
AGE_INTERVAL filter LRN::SCAN_NEXT_CFG.SCAN_AGE_INTE Finds entries with a specific
RVAL_MASK AGE_INTERVAL.
AGE_FLAG filter LRN::SCAN_NEXT_CFG.SCAN_AGE_FILT Finds only entries with a specific value.
ER_SEL
MAC_ACCESS_CFG_2.MAC_ENTRY_AGE
_FLAG
...........continued
Action Type Target::Register.Field Description
Update AGE_FLAG LRN::SCAN_NEXT_CFG.SCAN_AGE_FLA Updates AGE_FLAG for found entries. See
G_UPDATE_SEL LRN::SCAN_NEXT_CFG.
Set LRN::SCAN_NEXT_CFG.ADDR_FILTER_ENA = 1.
Set LRN::MAC_ACCESS_CFG_2.MAC_ENTRY_ADDR_TYPE = 0 to specify address type UPSID_PN.
Set LRN::MAC_ACCESS_CFG_2.MAC_ENTRY_ADDR = <UPSID, UPSPN> to specify UPSID and UPSPN.
• Specify the new address:
Set LRN::SCAN_NEXT_CFG_1.PORT_MOVE_NEW_ADDR = <new UPSID, new UPSPN>
Set LRN::COMMON_ACCESS_CTRL.CPU_ACCESS_CMD = 5.
Set LRN::COMMON_ACCESS_CTRL.MAC_TABLE_ACCESS_SHOT = 1.
• Wait until LRN::COMMON_ACCESS_CTRL.MAC_TABLE_ACCESS_SHOT is cleared.
DMAC MAC
lookup performed
true
false
true
true false
req.cpu_dest_set(
req.cpu_dest_set(mac_entry.cpu_qu) := 1
ANA_L2::FWD_CFG.CPU_DMAC_QU) := 1
false
true
req.vlan_mask :=
req.ignore_src_mask := true
”ALL_ONES”
false
...........continued
Target::Register.Field Description Replication
ANA_L2::LRN_SECUR_LOCKE Configures secure forwarding for static locked entries 1
D_CFG per port.
ANA_L2::LRN_COPY_CFG Configures CPU copy of learn frames per port. 1
ANA_L2::MOVELOG_STICKY Identifies ports with moved stations. 1
ANA_L2::LRN_CFG Configures common learning properties. 1
ANA_L3:VLAN:VLAN_CFG.VLA Configures filtering identifier (FID) to be used for Per VLAN
N_FID learning.
LRN::AUTO_LRN_CFG Configures automatic learning options. 1
LRN::EVENT_STICKY Signal various sticky learning events. 1
ANA_L2:PORT_LIMIT:PORT_LI Controls automatic learn limits per logical port and per port and GLAG
MIT_ CTRL GLAG. (97 instances)
ANA_L2:PORT_LIMIT:PORT_LI Status for port limits. per port and GLAG
MIT_ STATUS (97 instances)
ANA_L2:LRN_LIMIT:FID_LIMIT_ Controls automatic learn limits per FID. per FID (5,120
CTRL instances)
ANA_L2:LRN_LIMIT:FID_LIMIT_ Status for FID limits. per FID (5,120
STATUS instances)
ANA_L2:ISDX_LIMIT:ISDX_LIMI Controls automatic learn limits per ISDX limiter. per ISDX limiter
T_CTRL (1,536 instances)
ANA_L2:ISDX_LIMIT:ISDX_LIMI Status for ISDX limits. per ISDX limiter
T_ STATUS (1,536 instances)
The device learns addresses from each received frame’s SMAC field, so that subsequently forwarded frames whose
destination addresses have been learned can be used to restrict transmission to the port or ports necessary to reach
their destination.
The analyzer performs source lookup of the received {SMAC, IFID} in the MAC table to determine if the source
station is known or unknown. For more information, see Figure 4-46. If the source station is known, a port
move detection is performed by checking that the frame was received at the expected port as specified by the
ADDR_TYPE and ADDR stored in the source entry. The expected port can be a logical port (represented as UPSID,
UPSPN) or a global aggregated port (represented as GLAGID). Failing source checks can trigger a number of
associated actions:
• Secure forwarding: Disable forwarding from unknown or moved stations. This action can be triggered by two
configurations:
VLAN-based Secure forwarding controlled per VLAN (ANA_L3:VLAN:VLAN_CFG.VLAN_SEC_FWD_ENA).
true
# Automatic learning?
ANA_L2::AUTO_LRN_CFG[req.port_num]==1? Put mac_entry into auto LRN
true
queue
true
false
req.l2_fwd := 0
req.cpu_dest_set(mac_entry.cpu_qu) := 1 true
req.vlan_mask := 0
false
# Secure port forwarding?
ANA_L2::LRN_SECUR_CFG[req.port_num]=
=1?
false
false
The source lookup is also used to clear an Age flag (used as activity indication) in the MAC table to allow inactive
MAC table entries to be pruned.
Port move detection is not performed for locked MAC table entries unless enabled
(ANA_L2::LRN_CFG.LOCKED_PORTMOVE_DETECT_ENA).
Frames failing locked port move detection can be copied to CPU queue (ANA_L2::LRN_CFG.CPU_LRN_QU and
ANA_L2::LRN_CFG.LOCKED_PORTMOVE_COPY_ENA).
• MAC_CPU_COPY (LRN::AUTO_LRN_CFG.AUTO_LRN_CPU_COPY)
• MAC_CPU_QU (LRN::AUTO_LRN_CFG.AUTO_LRN_CPU_QU)
• SRC_KILL (LRN::AUTO_LRN_CFG.AUTO_LRN_SRC_KILL_FWD)
• IGNORE_VLAN (LRN::AUTO_LRN_CFG.AUTO_LRN_IGNORE_VLAN)
• MIRROR (LRN::AUTO_LRN_CFG.AUTO_LRN_MIRROR)
• AGE_INTERVAL (LRN::AUTO_LRN_CFG.AUTO_AGE_INTERVAL)
• ISDX_LIMIT_IDX set to frame’s REQ.ISDX_LIMIT_IDX retrieved from the ISDX table.
• All other fields are cleared
When a frame is received from a known station, that is, the MAC table already contains an entry for the received
frame’s (SMAC, VID/FID), the analyzer clears the AGED_FLAG for unlocked entries (LOCKED flag cleared) and
optionally, locked entries (ANA_L2:COMMON:LRN_CFG.AGE_LOCKED_ENA). A cleared AGE_FLAG implies that
the station is active. For more information, 4.21.7 Automated Aging (AUTOAGE).
For unlocked entries, ADDR_TYPE and ADDR fields are compared against the following:
• UPSID_PN if received on a non aggregated port
• GLAG if received on a global aggregated port
•
If there is a difference, the source entry ADDR_TYPE and ADDR is updated, which implies the station has moved to
a new port.
Source check for entries stored with ADDR_TYPE=MC_IDX (=3) can be ignored
(ANA_L2::LRN_CFG.IGNORE_MCIDX_PORTMOVE_ENA).
Entry AGE_FLAG is used to detect inactive sources. The AGE_FLAG field is cleared upon receiving traffic from a
given source station and is periodically incremented by hardware to detect and delete inactive source entries.
The automated age scan scans the MAC table and checks age candidates (entries with LOCK flag set to 0) for
activity.
If an entry’s AGE_FLAG is set to maximum value (configured in ANA_L2::LRN_CFG.AGE_SIZE), the entry is
deemed inactive and removed. If an entry’s AGE_FLAG is less than the maximum value, the AGE_FLAG is
incremented.
The flag is cleared when receiving frames from the station identified by the MAC table entry.
It is possible to configure and forget AUTOAGE, which means that once configured automated aging is performed
without any further CPU assistance.
The interval between automatic aging can be controlled by specifying AGE_FLAG size
(ANA_L2::LRN_CFG.AGE_SIZE), unit size (LRN::AUTOAGE_CFG.UNIT_SIZE), and the number of units between
aging (LRN::AUTOAGE_CFG.PERIOD_VAL).
Setting LRN::AUTOAGE_CFG.UNIT_SIZE different from 0 to start the automatic aging.
To temporarily disable the automatic aging, set LRN::AUTOAGE_CFG. PAUSE_AUTO_AGE_ENA
to 1. Additional control of automatic aging allows for instantaneously start
and stop of current age scan (LRN::AUTOAGE_CFG_1.FORCE_HW_SCAN_SHOT and
LRN::AUTOAGE_CFG_1.FORCE_HW_SCAN_STOP_SHOT).
It is also possible to do a controlled stopping of current age scan after it completes
(LRN::AUTOAGE_CFG_1.FORCE_IDLE_ENA).
It is possible to selectively do age filtering of local ports specified in
ANA_L2::FILTER_LOCAL_CTRL.FILTER_FRONTPORT_ENA or selectively do age filtering of entries learned on
remote devices in a multichip configuration (ANA_L2::FILTER_OTHER_CTRL.FILTER_REMOTE_ENA). Both types
must be enabled (LRN::AUTOAGE_CFG_1.USE_PORT_FILTER_ENA).
A sticky status of all interrupt sources in the analyzer is available (ANA_L2::INTR), and all interrupt sources can
individually be configured to trigger CPU interrupts (ANA_L2::INTR_ENA). The current CPU interrupt status is
available (ANA_L2::INTR_IDENT).
The following analyzer interrupt sources exist.
• VCAP IS2 can be setup to trigger CPU interrupt (VCAP_S2_INTR) when an entry with enabled interrupt is hit
(VCAP IS2 action INTR_ENA).
• It is possible to trigger interrupt (PORT_LRN_LIMIT_INTR) when learning on
a port attempt to exceed a configured port learn limit (configured in
ANA_L2:PORT_LIMIT:PORT_LIMIT_CTRL.PORT_LIMIT_EXCEED_IRQ_ENA).
• It is possible to trigger interrupt (FID_LIMIT_INTR) when learning on a FID attempt to exceed a configured limit
(configured in ANA_L2:LRN_LIMIT:FID_LIMIT_CTRL.FID_LIMIT_EXCEED_IRQ_ENA).
• It is possible to trigger interrupt (ISDX_LIMIT_INTR) when learning on an ISDX limiter attempt to exceed a
configured limit (configured in ANA_L2:ISDX_LIMIT:ISDX_LIMIT_CTRL.ISDX_LIMIT_EXCEED_IRQ_ENA).
• LRN access to the MAC table can be configured to trigger interrupt (LRN_ACCESS_COMPLETE_INTR) after
completion. This is useful when multiple CPU scans must be performed as fast as possible, for example, when
sorting the MAC addresses extracted from the entire MAC table using SCAN commands. For more information
about using the SCAN command, see 4.21.4 SCAN Command.
• PGID port mask from ANA_AC:PGID: This mask is based on the DMAC lookup in the PGID table. One of the
six flood PGID entries is used, if the DMAC is unknown. For DMAC known in the MAC table, the associated
address is used to select the used PGID entry. The virtual forwarder selects between one of 32 sets of flooding
and unicast port masks.
• Source port mask from ANA_AC:SRC: This mask is used to ensure frames are never forwarded to the port. It
was received on and the used entry is found by looking up the source port.
• Global source port mask from ANA_AC:SRC: This mask is used to ensure frames are never forwarded to the
global port. It was received on and the used entry is found by looking up the global stacking source port.
• Aggregation port mask from ANA_AC:AGGR: This mask is used to ensure frames are forwarded to one port
within each aggregate destination port.
• Conversation-sensitive distribution (CSC) port mask from ANA_AC:CSD: This mask is used to ensure frames
are forwarded to one port within each aggregate destination port.
• LAG reset port mask from ANA_AC:LAG_RST: This mask removes link aggregations globally defined by the
aggregation or CSC port masks that do not apply to the virtual forwarder.
• REQ.port_mask and REQ.mask_mode: This mask is special in the sense that it is a general purpose mask that
can be used for various security features and protection. The mask is controlled by VCAP CLM and VCAP IS2.
The following sections provide more information about the different port masks.
PGID address
fv_lag_idx = 31 -> 3289
ST
fv_lag_idx = 1 -> 1089
AC
glag 31 mbr 7, mc_idx = 1023 -> 1088
K_
TY
GLAG
PE
_E
glag 0 mbr 0 -> 833
N
A
832
Dedicated general purpose
71
70
Flood
mc_idx = 0 -> 65
64
Unicast
fv_lag_idx = 0 -> 0
The forwarding process generates a forwarding decision that is used to perform a lookup in the PGID table. The
following forwarding decisions are possible.
• Flood forwarding to one of the six flood masks located from address 65 to address 70 in the PGID table is used
as destination mask.
• Unicast forwarding to {UPSID,UPSPN}. UPSID is checked against
ANA_AC::COMMON_VSTAX_CFG.OWN_UPSID:
If identical, destination mask is found based on lookup of UPSPN within the front port destinations of the PGID
table (address 0 to 64).
If not identical, destination mask is found based on lookup of UPSID in ANA_AC:UPSID:UPSID_CFG.
• The frame’s forwarder virtual LAG profile (ANA_L3:VLAN:MISC.FV_LAG_IDX) offsets the PGID table for flood
and unicast forwarding.
• Multicast forwarding: mc_idx is looked up in the PGID table with an offset of 65. Based on the returned entry’s
stack type bit:
If cleared, the returned entry mask is interpreted as a destination mask.
If set, the returned entry mask is {UPSID,UPSPN} and the destination mask is found based on lookup of UPSID
in ANA_AC:UPSID:UPSID_CFG.
• REQ destination set (REQ.COMMON.PORT_MASK when REQ.COMMON.MASK_MODE=REPLACE_PGID).
Destination set (REQ.COMMON.PORT_MASK from VCAP CLM or VCAP IS2 is directly used as destination
mask without PGID lookup.
• REQ.L2_FWD cleared. Frame is discarded.
It is possible to generate a CPU copy when using the PGID lookup. If
ANA_AC:PGID:PGID_MISC_CFG.PGID_CPU_COPY_ENA is set in the used PGID entry, a copy is sent to
CPU queue specified by ANA_AC:PGID:PGID_MISC_CFG.PGID_CPU_QU.
The following figure shows the PGID lookup decision.
false
false
PGID_OFFSET := 0
Flood decison
#Unknown DMAC? # Unicast flood
true req.l2_uc=1? true
Req.Flood? PGID_ENTRY := PGID_TBL(65 + PGID_OFFSET)
true
false
true
# L2 MC flood
false
PGID_ENTRY := PGID_TBL(66 + PGID_OFFSET)
PGID_ENTRY := PGID_TBL(65
req.dst.fwd_type==MC_IDX? true
+ req.dst.fwd_addr.mc_idx)
false
PGID_ENTRY := PGID_TBL(req.dst.fwd_addr.upspn
req.dst.fwd_type==UPSID_PN? true IsOwnUpsid(req.dst.fwd_addr.upsid)? true
+ PGID_OFFSET)
false
IFH.VSTAX.GEN := FWD_LOGICAL
IFH.VSTAX.DST:UPSID := req.dst.fwd_addr.upsid;
false IFH.VSTAX.DST:UPSPN := req.dst.fwd_addr.upspn;
do_stack_upsid_fwd := true;
Done selecting
No PGID lookup
PGID entry
These events can be counted in the port statistics block by setting the corresponding counter mask:
ANA_AC:PS_STICKY_MASK:STICKY_MASK.
Source port filtering for each ingress port can be configured to ensure that frames are not bridged back to the port it
was received on (ANA_AC:SRC[0-69]:SRC_CFG).
Ports part of a link aggregation group (LAG) are configured with identical source masks, with all member ports
removed (bits corresponding to the member ports are cleared).
By default, the source port filtering table is indexed using the physical ingress port. Alternatively, the logical ingress
port can be used (ANA_AC::PS_COMMON_CFG.SRC_LOOKUP_LPORT_ENA).
If a port is part of a global link aggregation group, a filter is applied to ensure that frames received at this port
are not bridged back to any of the ports in the global link aggregation group of which the source port is part
(ANA_AC:SRC[70-101]:SRC_CFG).
Local device ports part of a global link aggregation group must be cleared in the global aggregation source mask (via
ANA_AC:SRC[70-101]:SRC_CFG).
Source port filtering can be disabled when VCAP CLM or VCAP IS2 action MASK_MODE is set to 4 (=
REDIR_PGID).
Source port filtering is not applied when a frame is routed.
The purpose of the aggregation table is to ensure that when a frame is destined for an aggregation group, it is
forwarded to exactly one of the group’s member ports.
The aggregation code REQ.AGGR_CODE generated in the classifier is used to look up an aggregation mask in the
aggregation table. Aggregation mask is configured in ANA_AC:AGGR:AGGR_CFG.
For non-aggregated ports, there is a one-to-one correspondence between logical port (ANA_CL:PORT:
PORT_ID_CFG.LPORT_NUM) and physical port, and the aggregation table does not change the forwarding
decision.
For aggregated ports, all physical ports in the aggregation group map to the same logical port, and destination entries
for a logical port in the PGID table must include all physical ports, which are members of the aggregation group.
Therefore, all but one LAG member port must be removed from the destination port set.
The aggregation contribution can be disabled when VCAP CLM or VCAP IS2 action MASK_MODE is set to 4 (=
REDIR_PGID).
For more information about link aggregation, see 4.14.1.9 Link Aggregation Code Generation
The device performs a final port of exit (POE) calculation in ingress device when destination is a global aggregated
port. GLAG POE calculation must be enabled (ANA_AC::COMMON_VSTAX_CFG.VSTAX2_GLAG_ENA). When
enabled, GLAG forwarding uses a portion of the PGID table (addresses 833 to 1088). These addresses must use
UPSID and UPSPN encoding by setting the stack interpret bit.
POE calculation, which selects one of the global aggregated as destination port, is shown in the following figure.
Figure 4-49. GLAG Port of Exit Calculation
The purpose of the CSD table is to assign a conversation identifier and to use that to select a link aggregation
member port when forwarded to an aggregation group. Conversation-sensitive distribution is an alternative to
aggregation based on an aggregation code.
The conversation identifier is assigned to one of the following ways:
• Use frame’s outer VID. The outer VID is derived after removing the number of VLAN tags specified in
IFH.TAGGING.POP_CNT. Note that pushing of new VLAN tags are not taken into account.
• Use frame’s classified VID (IFH.VSTAX.TAG.VID).
• Use frame’s classified GVID (IFH.ENCAP.GVID).
The conversation identifier is used as index to look up a CSD mask in the CSD table.
For non-aggregated ports, there is a one-to-one correspondence between logical port (ANA_CL:PORT:
PORT_ID_CFG.LPORT_NUM) and physical port, and the CSD table does not change the forwarding decision.
For aggregated ports, all physical ports in the aggregation group map to the same logical port, and destination entries
for a logical port in the PGID table must include all physical ports, which are members of the aggregation group.
Therefore, all but one LAG member port must be removed from the destination port set.
The CSD contribution can be disabled when VCAP CLM or VCAP IS2 action MASK_MODE is set to 4
(= REDIR_PGID).
The purpose of the link aggregation reset table is to remove link aggregation groups not applying to the virtual
forwarder. This is done by resetting specific bits in the aggregation and CSD port masks before applying the
aggregation contribution to the forwarding decision.
The link aggregation reset table is indexed using the forwarder virtual LAG profile retrieved from the VLAN table
(ANA_L3:VLAN:MISC.FV_LAG_IDX).
Mask Operation
# Prepare masks
src_mask := SrcTable(REQ.COMMON.PORTNUM)
aggr_mask := AggrTable(REQ.COMMON.AC)
csd_mask := CSDTable(conversation_id)
lag_rst_mask := LAG_ResetTable(REQ.FV_LAG_IDX)
# Forwarding controlled
from VCAP CLM or IS2?
REQ.COMMON.MASK_MODE == REPLACE_ALL?
false
false
true
# Normal PGID forwarding
pgid_mask := PgidLookupSel(REQ)
false
false
false
false
false
false
4.22.2 Policing
This section describes the functions of the polices. The following table lists the applicable registers.
Table 4-168. Policer Control Registers
ASP statistics
Outer ACL BUM Service and Bundle Inner ACL Port Global
policers policers priority policers policers policers storm
policers policers
No
ISDX <>0 AND Yes isdx based isdx based ISDX <>0 AND
SDLB IDX <>0? SERVICE_BYPA
index index SS_ENA?
Port
Pol
Port Port Pol
Port
Port No Yes PortPol Port
Pol
#2 Yes VCAP Pol
#3 Pol
#7
Pol
#1
VCAP DLB
based
Port based Pol
#1 Pol
#1
enable? index
#0 #0 #0
index
No priority
based
index
(SLB) (3x SLB) (DLB) (DLB) (SLB) (2x SLB) (8x SLB)
Either outer or
Inner ACL policer
exists selectable per
VCAP_S2 lookup
At most, each frame can see one ACL policer. ACL policing can occur as either outer or inner ACL-based. VCAP IS2
action IS_INNER_ACL allows ACL policing to occur before or after service DLB policing and service statistics.
The ACL, port, broadcast/unicast/multicast (BUM), and storm policers are single leaky bucket (SLB) policers,
whereas, the service and bundle policers are dual leaky bucket (DLB) policers. The service policers are MEF10.3
compliant policers.
The BUM policers group the leaky buckets into sets of three, covering broadcast, unicast, and multicast traffic.
The service policers can be used as priority policers for non-service traffic
when ISDX is zero and ISDX_SDLB index is zero. The priority policer
operation is controlled through ANA_L2:COMMON:FWD_CFG.QUEUE_DEFAULT_SDLB_ENA and
ANA_L2:COMMON:PORT_DLB_CFG.QUEUE_DLB_IDX.
The bundle policers are only available for services. The index is controlled through
ANA_L2:ISDX:MISC_CFG.BDLB_IDX. However, it is possible to use the bundle policers
as port policers for non-service traffic when ISDX is zero. The port policer
operation is controlled through ANA_L2:COMMON:FWD_CFG.PORT_DEFAULT_BDLB_ENA and
ANA_L2:COMMON:PORT_DLB_CFG.PORT_DLB_IDX.
It is possible to specify a pipeline point for the service policers (ANA_L2:ISDX:MISC_CFG.PIPELINE_PT). This can
be used to specify where in the processing flow BUM, SDLB, and BDLB policers are active (default set to NONE,
which disables any pipeline effect).
The service statistics reflect the decisions made by the service policer. This implies that if a service policer marks a
frame yellow, then the yellow service counter is incremented even though the frame might be discarded by one of the
subsequent policers.
All policers can be configured to add between –64 and 63 bytes per frame to adjust the counted frame size for
inter-frame gap and/or encapsulation.
The following table provides an overview of the main parameters associated with the supported policers. Note that
the bursts and rate values shown for the service policers are examples only. The service policers are programmable
and other combinations are possible. See 4.23 Leaky Bucket for SDLB.
Note:
1. One Kilobyte = 1,024 bytes, 1 Megabit/sec = 1,000,000 bits/sec.
...........continued
Field Bits Description
ANA_AC_POL:BUM_SLB:SLB_CFG.ENCA 1 Configures if stripped encapsulation data
P_DATA_DIS (normalized data) is policed by the policer.
ANA_AC_POL:BUM_SLB:MISC_CFG.FRA 1 Configures frame rate operation.
ME_RATE_ENA
The BUM policers are indexed through the VLAN table (ANA_L3:VLAN:BUM_CFG.BUM_SLB_IDX). This
indexing can be overruled for services through the ISDX table (ANA_L2:ISDX:MISC_CFG.BUM_SLB_IDX and
ANA_L2:ISDX:MISC_CFG.BUM_SLB_ENA).
Each BUM policer contains three leaky buckets. Rates and thresholds are configured through
ANA_AC_POL:BUM_SLB:LB_CFG).
Traffic for the three BUM leaky buckets is configurable in
ANA_AC_POL:COMMON_BUM_SLB:TRAFFIC_MASK_CFG. This provides a flexible allocation of traffic for the
policers. For example, it is possible to have BUM configured as:
• Leaky bucket 0: Broadcast traffic
(ANA_AC_POL:COMMON_BUM_SLB:TRAFFIC_MASK_CFG[0].TRAFFIC_TYPE_MASK = 1)
• Leaky bucket 1: Unknown unicast traffic
(ANA_AC_POL:COMMON_BUM_SLB:TRAFFIC_MASK_CFG[1].TRAFFIC_TYPE_MASK = 4)
• Leaky bucket 2: Unknown multicast traffic (ANA_AC_POL:COMMON_BUM_SLB:TRAFFIC_MASK_CFG[2].
TRAFFIC_TYPE_MASK = 2)
BUM policers can be configured as frame-based policers
(ANA_AC_POL:BUM_SLB:MISC_CFG.FRAME_RATE_ENA).
The BUM policers’ unit size can be adjusted (ANA_AC_POL:COMMON_BUM_SLB:DLB_CTRL.BASE_TICK_CNT)
to configure the smallest rate granularity. The granularity scaling can be configured using the TIMESCALE_VAL
configuration parameter.
The BUM statistics count on the following events (configured through
ANA_AC:STAT_GLOBAL_CFG_BUM:STAT_GLOBAL_EVENT_MASK):
• Bit 0: Count Broadcast traffic discarded by BUM policer
• Bit 1: Count Multicast traffic discarded by BUM policer
• Bit 2: Count Unicast traffic discarded by BUM policer
• Bit 3: Count Broadcast traffic applicable for BUM policer, but not discarded
• Bit 4: Count Multicast traffic applicable for BUM policer, but not discarded
• Bit 5: Count Unicast traffic applicable for BUM policer, but not discarded.
Field Description
ANA_L2::FWD.QUEUE_DEFAULT_SDLB_ENA Enables priority policers for non-service frames.
ANA_L2:PORT:PORT_DLB_CFG.QUEUE_DLB_I Specifies which DLB policers are used for priority policing.
DX
Non-service frames (which ISDX = 0 and ANA_L2:ISDX:DLB_CFG.DLB_IDX = 0) can use the service policers as
priority policers. This is enabled in ANA_L2::FWD_CFG.QUEUE_DEFAULT_SDLB_ENA. The frame’s ingress port
and classified QoS class select the priority policer. The configuration of the priority policer follows the configuration of
the service policers. For more information, see 4.22.2.4 Bundle Dual Leaky Bucket (DLB) Policing.
Note that a DLB policer index enabled by VCAP IS2 action ACL_MAC[16] takes precedence over the priority policing.
In that case, the frame is policed by the VCAP selected policer and not the priority policer.
If COUPLING_MODE = 1,
LB_CFG[0].RATE_VAL must be configured to MEF CIR.
LB_CFG[0].THRES_VAL must be configured to MEF
CBS.
LB_CFG[1].RATE_VAL must be configured to MEF EIR
+ MEF CIR.
LB_CFG[1].THRES_VAL must be configured to MEF
EBS + MEF CBS.
At most, a frame can trigger one ACL policer. ACL policers are enabled by specifying a rate in
ANA_AC_POL:POL_ALL_CFG:POL_ACL_RATE_CFG.ACL_RATE and also enabled by a VCAP IS2 hit. For more
information, see 4.10.3.4 VCAP IS2.
...........continued
Field Bits Description
FC_STATE 1 Current flow control state.
DP_BYPASS_LVL 2 Controls the lowest DP level that is taken into
account. That is, traffic with DP_BYPASS_LVL
below this value is ignored and not policed.
GAP_VALUE 7 Configures the leaky bucket calculation to include
or exclude preamble, inter-frame gap, and optional
encapsulation through configuration.
PORT_THRES0 6 Configures port policer burst capacity.
PORT_THRES1 6 Configures port policer hysteresis size when a port
policer is in flow control mode (see FC_ENA).
PORT_RATE 20 Configures port policer rate.
Frames applicable for policing are for any frames received by the MAC and forwarded to the classifier. Short frames
(less than 148 bytes) with errors, pause frames, or MAC control frames are not forwarded by the MAC, and therefore,
not accounted for in the policers. That is, they are not policed and do not add to the rate measured by the policers.
Port policers are enabled by configuring the traffic type to be policed
(ANA_AC_POL:POL_PORT_CTRL:POL_PORT_CFG.TRAFFIC_TYPE_MASK) and specifying a corresponding rate
(ANA_AC_POL:POL_PORT_CFG:POL_PORT_RATE_CFG.PORT_RATE).
The policer burst capacity can be specified in
ANA_AC_POL:POL_PORT_CFG:POL_PORT_THRES_CFG_0.PORT_THRES0.
Policing of traffic destined for CPU port or ports can be controlled (in
ANA_AC_POL:POL_PORT_CTRL:POL_PORT_CFG.TRAFFIC_TYPE_MASK(7) = 0 and CPU bypass mask in
ANA_AC_POL:POL_PORT_CTRL:POL_PORT_CFG.CPU_QU_MASK).
Port policers can individually be configured to affect frames towards CPU
ports (ANA_AC_POL:POL_PORT_CTRL:POL_PORT_CFG.LIMIT_CPU_TRAFFIC_ENA) or front ports
(ANA_AC_POL:POL_PORT_CTRL:POL_PORT_CFG.LIMIT_NONCPU_TRAFFIC_ENA).
The port policers can be configured for either serial or parallel operation
(ANA_AC_POL::POL_ALL_CFG.PORT_POL_IN_PARALLEL_ENA):
• Serial: The policers are checked one after another. If a policer is closed, the frame is discarded and the
subsequent policer buckets are not updated with the frame.
• Parallel: The policers are working in parallel independently of each other. Each frame is added to a policer
bucket, if the policer is open, otherwise, the frame is discarded. A frame may be added to one policer although
another policer is closed.
The following parameters can also be configured per policer.
• The leaky bucket calculation can be configured to include or exclude preamble, inter-frame gap and an optional
encapsulation (ANA_AC_POL:POL_PORT_CTRL:POL_PORT_GAP.GAP_VALUE).
• Each policer can be configured to measure frame rates instead of bit rates
(ANA_AC_POL:POL_PORT_CTRL:POL_PORT_CFG.FRAME_RATE_ENA).
• Traffic with DP level below a certain level can be configured to bypass the policers
(ANA_AC_POL:POL_PORT_CTRL:POL_PORT_CFG.DP_BYPASS_LVL)
By default, a policer discards frames (to the affected port type: CPU and/or front port or ports) while the policer is
closed. A discarded frame is not forwarded to any ports (including the CPU).
However, each port policer has the option to run in flow control where the policer
instead of discarding frames instructs the MAC to issue flow control pause frames
(ANA_AC_POL:POL_ALL_CFG:POL_PORT_FC_CFG.FC_ENA). When operating in Flow control mode, it is
possible to specify a hysteresis, which controls when the policer can re-open after having closed
Frames applicable for policing are any frame received by the MAC and forwarded to the classifier. Short frames (less
than 148 bytes) with errors, pause frames, or MAC control frames are not forwarded by the MAC and therefore not
accounted for in the policers. That is, they are not policed and do not add to the rate measured by the policers.
Storm policers are enabled by configuring the traffic type to be policed
(POL_STORM_CTRL.STORM_TRAFFIC_TYPE_MASK) and specifying a corresponding rate
(POL_STORM_RATE_CFG.STORM_RATE).
The policer burst capacity can be specified in POL_STORM_THRES_CFG.
Policing of traffic destined for CPU port or ports can be controlled
(POL_STORM_CTRL.STORM_TRAFFIC_TYPE_MASK(7) = 0 and CPU bypass mask in
POL_STORM_CTRL.STORM_CPU_QU_MASK).
Storm policers can be configured individually to affect frames towards
CPU ports (POL_STORM_CTRL.STORM_LIMIT_CPU_TRAFFIC_ENA) or front ports
(POL_STORM_CTRL.STORM_LIMIT_NONCPU_TRAFFIC_ENA).
The following parameters can also be configured per policer.
• Leaky bucket calculation can be configured to include or exclude preamble, inter-frame gap, and an optional
encapsulation (POL_ALL_CFG.STORM_GAP_VALUE).
• Each policer can be configured to measure frame rates instead of bit rates
(POL_STORM_CTRL.STORM_FRAME_RATE_ENA).
Traffic dropped by a storm policer can be counted by the port statistic block.
The following storm policer debug events are available.
• Dropping of traffic towards CPU due to policer can be identified
(POL_STICKY.POL_STORM_DROP_CPU_STICKY).
• Dropping of traffic towards front port due to policer can be identified
(POL_STICKY.POL_STORM_DROP_FWD_STICKY).
• Policers that are active, but not closed, can be identified per policer
(POL_STICKY.POL_STORM_ACTIVE_STICKY).
...........continued
Target::Register.Field Description Replication
The port statistics block allows counting of a wide variety of frame events. These are represented by a 12-bit event
mask.
• Bits 0–3 represent any stick bit contribution from preceding blocks in ANA.
• Bits 4–11 represent port policer events.
• Bits 12–15 represent storm and ACL policer events and loopback frames.
The propagation of the event mask from the preceding blocks in the analyzer
to ANA_AC is shown in the following figure, except for bits 8–11. See
ANA_AC:STAT_GLOBAL_CFG_PORT:STAT_GLOBAL_EVENT_MASK.GLOBAL_EVENT_MASK.
Figure 4-52. Sticky Events Available as Global Events
global events[7:0]
The global events [3:0] are typically allocated for detected control frames, frames dropped due to wrong
configuration, frames dropped due to VLAN filtering, and so on.
As an example, a particular event that is of interest during debug, ANA_L2: STICKY.VLAN_IGNORE_STICKY can be
configured to be the global event 0 in ANA_L2:STICKY_MASK.VLAN_IGNORE_STICKY_MASK(0).
The following figure shows the configuration and status available for each port statistics counter.
Port_num
0
1
7
t
t
cn
t
cn
cn
SB SK
NT
TE
NT
_M MA
BY
_C
_C
ST NT_
SB
_
ST RIO
_L
C
P
AT
G_
AT
G_
CF
CF
Before using the statistic counters, they must be initialized to clear all counter values and sticky bits
(ANA_AC:STAT_GLOBAL_CFG_PORT:STAT_RESET.RESET).
For each counter, the type of frames that are counted must be configured
(ANA_AC:STAT_CNT_CFG_PORT.STAT_CFG.CFG_CNT_FRM_TYPE).
Note: Frames without any destination are seen by the port statistics block as aborted.
Each counter must be configured, if bytes or frames are counted
(ANA_AC:STAT_CNT_CFG_PORT.STAT_CFG.CFG_CNT_BYTE).
It is possible to limit counting to certain priorities (ANA_AC:STAT_CNT_CFG_PORT.STAT_CFG.CFG_PRIO_MASK).
Counter events that can trigger counting can be selected among the global events
(ANA_AC:STAT_GLOBAL_CFG_PORT. STAT_GLOBAL_EVENT_MASK). There is one common event mask for
each of the four counter sets.
Each 40-bit counter consists of an MSB part and an LSB part (ANA_AC:STAT_CNT_CFG_PORT. STAT_MSB_CNT
and ANA_AC:STAT_CNT_CFG_PORT.STAT_LSB_CNT). The MSB part of the counter is latched to a shadow
register when the LSB part is read. As a result, the LSB part must always be read first, and the MSB part must
be read immediately after the LSB part. When writing to the counter, the LSB part must be written first, followed by
the MSB part.
The following pseudo code shows the port statistics functionality.
case 0x2:
if (frame.error && event_match) count = 1;
break;
case 0x3:
if (event_match) count = 1;
break;
case 0x4:
if (frame.error && !event_match) count = 1;
break;
case 0x5:
if (frame.error) count = 1;
break;
}
if (count) {
if (STAT_CNT_CFG_PORT[frame.igr_port].STAT_CFG[port_counter_idx].CFG_CNT_BYTE) {
STAT_xSB_CNT[port_counter_idx] += frame.bytes;
} else {
STAT_xSB_CNT[port_counter_idx]++;
}
}
}
}
Example: To set up port counter 3 to count bytes filtered by VLAN ingress filter, the following configuration is required.
• Enable VLAN drop events as global event 3:
Set ANA_L3:L3_STICKY_MASK:VLAN_MSTP_STICKY_MASK[3].VLAN_IGR_FILTER_STICKY_MASK = 1.
• Initialize counters:
Set ANA_AC:STAT_GLOBAL_CFG_PORT:STAT_RESET.RESET = 1.
• Set up port counters. For each active Ethernet port:
Set ANA_AC:STAT_CNT_CFG_PORT[port].STAT_CFG[3].CFG_CNT_FRM_TYPE = 3.
Set ANA_AC:STAT_CNT_CFG_PORT[port].STAT_CFG[3].CFG_CNT_BYTE = 1.
Set ANA_AC:STAT_CNT_CFG_PORT[port].STAT_CFG[3].CFG_PRIO_MASK = 0xFF.
• Enable global event 3 as trigger:
...........continued
Target::Register.Field Description Replication
The following figure shows the configuration and status available for each priority statistics counter.
Figure 4-54. Priority Statistics
1
0
NT
NT
t
t
cn
cn
_C
C
B_
SB
LS
M
_
_
AT
AT
ST
ST
Each counter type must be configured to count either bytes or frames (ANA_AC:STAT_GLOBAL_CFG_QUEUE:
STAT_GLOBAL_CFG.CFG_CNT_BYTE).
ACL events that can trigger counting can be selected among the following events:
• Count traffic applicable for priority policer, but not discarded
• Count traffic discarded by priority policer
There is one common event mask for each of the two priority counter types
(ANA_AC:STAT_GLOBAL_CFG_QUEUE:STAT_GLOBAL_EVENT_MASK).
Each 40-bit counter consists of an MSB part and an LSB part (ANA_AC:STAT_CNT_CFG_QUEUE.STAT_MSB_CNT
and ANA_AC:STAT_CNT_CFG_QUEUE.STAT_LSB_CNT). The MSB part of the counter is latched to a shadow
register, when the LSB part is read. As a result, the LSB part must always be read first, and the MSB part must be
read immediately after the LSB part. When writing to the counter, the MSB part must be written first, followed by the
LSB part.
...........continued
Target::Register.Field Description Replication
ANA_AC:STAT_CNT_CFG_BUM.STAT_MS Most significant 8 bits of counters per BUM per BUM policer
B_CNT policer index. index × 2
The following figure shows the configuration and status available for each BUM policer.
Figure 4-55. BUM Policer Statistics
T
NT
1
CN
cn 0
cn 4
t
t
t
_C
t
cn
cn
B_
SB
LS
M
_
_
AT
AT
ST
ST
Each of the two counters in a counter set can be configured to which frames are counted and, whether bytes or
frames are counted. This configuration is shared among all counter sets.
The BUM event mask supports counting the following frame types:
• Broadcast traffic discarded by BUM policer
• Multicast traffic discarded by BUM policer
• Unicast traffic discarded by BUM policer
• Broadcast traffic applicable for BUM policer, but not discarded
• Multicast traffic applicable for BUM policer, but not discarded
• Unicast traffic applicable for BUM policer, but not discarded
The event mask is configured in ANA_AC:STAT_GLOBAL_CFG_BUM:STAT_GLOBAL_EVENT_MASK.
Each 40-bit counter consists of an MSB part and an LSB part (ANA_AC:STAT_CNT_CFG_BUM.STAT_MSB_CNT
and ANA_AC:STAT_CNT_CFG_ BUM.STAT_LSB_CNT). The MSB part of the counter is latched to a shadow
register, when the LSB part is read. As a result, the LSB part must always be read first, and the MSB part must
be read immediately after the LSB part. When writing to the counter, the MSB part must be written first, followed by
the LSB part.
The following figure shows the configuration and status available for each ACL policer statistics counter.
Figure 4-56. ACL Policer Statistics
index = VCAP_S2.POLICE_IDX
T
NT
1
CN
0
t
_C
t
cn
cn
B_
SB
LS
M
_
_
AT
AT
ST
ST
Each counter type must be configured whether bytes or frames are counted (ANA_AC:STAT_GLOBAL_CFG_ACL:
STAT_GLOBAL_CFG.CFG_CNT_BYTE).
ACL events that can trigger counting can be selected among the following events. ACL events that can trigger
counting can be selected among the following events. If an ACL policer is triggered by an IS2 action, with
IS_INNER_ACL = 1, it is termed as inner. Otherwise, it is termed as outer.
• Count CPU traffic applicable for outer ACL policer, but not discarded
• Count front port traffic applicable for outer ACL policer, but not discarded
• Count CPU traffic discarded by outer ACL policer
• Count front port traffic discarded by outer ACL policer
• Count CPU traffic applicable for inner ACL policer, but not discarded
• Count front port traffic applicable for inner ACL policer, but not discarded
• Count CPU traffic discarded by inner ACL policer
• Count front port traffic discarded by inner ACL policer
There is one common event mask for each of the two ACL policer counter types
(ANA_AC:STAT_GLOBAL_CFG_ACL:STAT_GLOBAL_EVENT_MASK).
Each 40-bit counter consists of an MSB part and an LSB part (ANA_AC:STAT_CNT_CFG_ACL.STAT_MSB_CNT
and ANA_AC:STAT_CNT_CFG_ACL.STAT_LSB_CNT). The MSB part of the counter is latched to a shadow register,
when the LSB part is read. As a result, the LSB part must always be read first, and the MSB part must be read
immediately after the LSB part. When writing to the counter, the MSB part must be written first, followed by the LSB
part.
...........continued
Target::Register.Field Description Replication
ANA_AC:STAT_CNT_CFG_IRLEG.STAT_MSB_CN Most significant 8 bits of ingress router Per RLEG per
T leg counters. IP_version × 8
ANA_AC:STAT_GLOBAL_CFG_ERLEG: Configures counting of bytes or frames 8
STAT_GLOBAL_CFG per egress router leg counter.
ANA_AC:STAT_GLOBAL_CFG_ERLEG: Configures the global event mask per 8
STAT_GLOBAL_EVENT_MASK egress router leg counter.
ANA_AC:STAT_CNT_CFG_ERLEG.STAT_LSB_CN Least significant 32 bits of egress router Per RLEG per
T leg counters. IP_version × 8
ANA_AC:STAT_CNT_CFG_ERLEG.STAT_MSB_CN Most significant 8 bits of egress router leg Per RLEG per
T counters. IP_version × 8
The following figure shows the configuration and status available for ingress router leg and egress router leg statistics
counter sets. For this device, the RLEG_CNT is 512.
Figure 4-57. Ingress and Egress Routing Statistics per Router Leg per IP Version
7
1
0
0
7
t
t
t
t
t
cn
t
cn
cn
cn
cn
cn
NT
NT
NT
NT
_C
_C
_C
_C
SB
B
SB
LS
LS
M_
_
AT
AT
AT
_
AT
ST
ST
ST
ST
• acl_discarded - frame applicable for routing but discarded due to VCAP IS2 egress discard action (VCAP IS2
lookup with action RT_DIS set).
• unicast_routed traffic - frame is unicast routed.
• multicast_routed traffic - frame is multicast routed.
• ip_multicast_switched traffic - frame is bridged within ingress VLAN.
• ip_multicast_ttl_discarded - frame discarded due to TTL less than ERLEG configured TTL value.
There is a common event mask for each of the eight ERLEG counter types
(ANA_AC:STAT_GLOBAL_CFG_ERLEG:STAT_GLOBAL_EVENT_MASK).
Each 40-bit counter consists of an MSB part (ANA_AC:STAT_CNT_CFG_IRLEG.STAT_MSB_CNT
or ANA_AC:STAT_CNT_CFG_ERLEG.STAT_MSB_CNT) and an LSB part
(ANA_AC:STAT_CNT_CFG_IRLEG.STAT_LSB_CNT or ANA_AC:STAT_CNT_CFG_ERLEG.STAT_LSB_CNT). The
MSB part of the counter is latched to a shadow register, when the LSB part is read. As a result, the LSB part must
always be read first, and the MSB part must be read immediately after the LSB part. When writing to the counter, the
MSB part must be written first.
sFlow is a standard for monitoring high-speed switched networks through statistical sampling of incoming and
outgoing frames. Each port in the device can be set up as an sFlow agent, monitoring the particular link
and generating the sFlow data. If a frame is sFlow sampled, it is copied to the sFlow CPU extraction queue
(ANA_AC::SFLOW_CFG.SFLOW_CPU_QU).
An sFlow agent is configured through ANA_AC::SFLOW_CFG with the following options:
• SFLOW_SAMPLE_RATE specifies the probability that the sampler copies a frame to the CPU. Each frame
being candidate for the sampler has the same probability of being sampled. The probability is set in steps of
1/32767.
• SFLOW_DIR_SEL(0) enables incoming frames on the port as candidates for the sampler.
• SFLOW_DIR_SEL(1) enables outgoing frames on the port as candidates for the sampler.
Rx and Tx sampling can be enabled independently. If both are enabled, all incoming and outgoing traffic on the port is
subject to the statistical sampling given by the rate in SFLOW_SAMPLE_RATE.
The CPU can extract information about a frame’s sFlow handling in IFH field FWD.SFLOW_ID including sampling
direction and sampler identify. Note that a given frame can only be sampled by one sFlow sampler. Although, it might
be a candidate for sampling by multiple samplers.
A variety of sticky events allows debug of the sFlow setup. These events can furthermore be counted
in the port statistics block by enabling the corresponding *_MASK. The following events are reported (in
ANA_AC:PS_STICKY:STICKY):
4.22.5 Mirroring
This section describes how to configure mirroring. The following table lists the applicable registers.
Table 4-182. ANA_AC Mirror Registers
To debug network problems, selected traffic can be mirrored using configurable probes, to a mirror port where a
frame analyzer can be attached to analyze the frame flow.
The device has three independent mirroring probes. Each probe can be configured with a separate set of filtering
conditions that must be fulfilled before traffic is mirrored. If multiple filtering conditions are enabled for a given probe
they must all be fulfilled before mirroring occurs. For example, mirror probe 1 can be set up to only Rx mirror traffic
from a given host in a specific VLAN, whereas probe 2 can be set up to mirror frames matching criteria in VCAP IS2.
If a frame is mirrored by more than one mirror probe, the highest numbered probe is selected. This implies that only
one mirror copy is made per frame, even if multiple probes are active.
The following traffic mirror conditions can be configured per probe:
• All frames received on a given port, also known as ingress mirroring (enabled in
ANA_AC:MIRROR_PROBE[x].PROBE_CFG.PROBE_DIRECTION(1) = 1 and ports to be RX mirrored set in
ANA_AC:MIRROR_PROBE[x].PROBE_PORT_CFG)
• All frames transmitted on a given port, also known as egress mirroring (enabled in
ANA_AC:MIRROR_PROBE[x].PROBE_CFG.PROBE_DIRECTION(0) = 1 and ports to be TX mirrored set in
ANA_AC:MIRROR_PROBE[x].PROBE_PORT_CFG)
• All frames sent to a specific CPU port (may be useful for software debugging) (enabled in
ANA_AC:MIRROR_PROBE[x].PROBE_CFG.PROBE_DIRECTION(0) = 1 and CPU ports to be mirrored set in
ANA_AC:MIRROR_PROBE[x].PROBE_CFG.PROBE_CPU_SET)
• All frames classified to a specific VID (enabled in ANA_AC:MIRROR_PROBE[x]. PROBE_CFG.
PROBE_VLAN_MODE == 2 and VID set in ANA_AC:MIRROR_PROBE[x].PROBE_CFG.PROBE_VID)
• All frames classified to VLANs with VLAN -> VLAN_MIRROR_ENA set (enabled in
ANA_AC:MIRROR_PROBE[x].PROBE_CFG.PROBE_VLAN_MODE == 1).
• All frames received from a known station with MAC -> MIRROR set (enabled in
ANA_AC:MIRROR_PROBE[x].PROBE_CFG.PROBE_MAC_MODE(1) = 1).
• All frames send to a known station with MAC -> MIRROR set (enabled in
ANA_AC:MIRROR_PROBE[x].PROBE_CFG. PROBE_MAC_MODE(0) = 1). This can also be flooded traffic
(enabled via ANA_L2::FWD_CFG.FLOOD_MIRROR_ENA).
• Frames selected through configured VCAP entries (enabled by VCAP IS2 action MIRROR_PROBE). For such
frames, the only other applicable mirror criteria is PROBE_DIRECTION.
• All frames received from CPU, also known as CPU ingress mirroring (enabled in
ANA_AC:MIRROR_PROBE[x].PROBE_CFG.PROBE_DIRECTION(1) = 1 and CPU ports to be RX mirrored set
in ANA_AC:MIRROR_PROBE[x].PROBE_RX_CPU_AND_VD).
The mirror port configured per probe (QFWD:SYSTEM:FRAME_COPY_CFG[8-11]) can be any port on the device,
including the CPU.
Rx-mirrored traffic sent to the mirror port is sent as received optionally with an additional Q-tag (enabled in
REW::MIRROR_PROBE_CFG.REMOTE_MIRROR_CFG).
Tx-mirrored traffic sent to the mirror port is modified according to a configured Tx port
(REW:COMMON:MIRROR_PROBE_CFG.MIRROR_TX_PORT) optionally with an additional Q-tag (enabled in
REW::MIRROR_PROBE_CFG.REMOTE_MIRROR_CFG).
For information about possible rewriter options for mirrored frames, see 4.28.16 Mirror Frames.
Example: Ingress port mirroring in specific VLAN
All traffic only in VLAN 3 from host B on port 3 (the probe port) is mirrored to port 11 (the mirror port) using probe 1,
as shown in the following figure.
Figure 4-58. Ingress Mirroring in Specific VLAN
Switch
2 3 4 11
VLAN 3
VLAN 2
ANA_AC:MIRROR_PROBE[1].PROBE_CFG.PROBE_DIRECTION = 2 (= Rx only).
ANA_AC:MIRROR_PROBE[1].PROBE_PORT_CFG = 0x8 (port 3).
• Enable VID filtering:
ANA_AC:MIRROR_PROBE[1].PROBE_CFG.PROBE_VLAN_MODE = 2 and
ANA_AC:MIRROR_PROBE[1].PROBE_CFG. PROBE_VID = 3.
LB Set
LB LB
FRM_RATE_ENA Enable frame rate mode, that is, count frames Per LB Set
not bytes.
...........continued
Parameter Description Replication
frm_adj Number of tokens to subtract from bucket, Per LB Set or per LB Group
when SoF is encountered.
The rate at which tokens are added to an LB is calculated as follows (tokens per second):
Rate = PUP_TOKENS x clk_frequency / PUP_INTERVAL
Each LB is allowed to contain a maximum number of tokens, the threshold. The threshold is configurable using the
following parameters.
Table 4-184. Threshold Configuration Parameters
For a given product, software—at startup—configures a set of LB Groups that supports the ranges of rates required
for the product, and as LBs get configured they are placed in one of the configured LB Groups.
4. Each XLB must be placed in the LB Group with the highest PUP_INTERVAL, that spans a rate interval
covering the rates of the LBs within the XLB.
The preceding rules are referred to as "Rule I/II/III/IV".
To avoid violating Rule II, LB Groups with small PUP_INTERVAL and many XLBs must be avoided.
lbgrp_idx PUP_INTERV Max XLBs in Min Rate & Max Rate Min Rate (= Max Rate
AL LB Group Granularity (PUP_TOKEN Max Rate of
(bps)
(PUP_INTERV (PUP_TOKEN S=4094) prev. LB
(Clock
AL/4) S=1) Group)
cycles) (bps)
(LBs) (bps) (bps)
1 4094
In the preceding example, it is possible for an end-user to attempt to configure an unsupported LB setup. For
example, if the following is configured,
• 200 XLBs of rate 1,030,000,000 bps (LB Group 1), threshold = 4096 bytes
• 2000 XLBs of rate 103,000,000 (LB Group 2) , threshold = 4096 bytes
then Rule II will be violated and SW reports an "out of resources" error.
However, such configuration represents an over-subscription of the system bandwidth of > 300% and may thus be
considered unrealistic or unsupported. If such configuration is deemed realistic, then more groups can be added. The
following table lists the LB Group configuration with more LB Groups.
Table 4-186. LB Group Configuration with More LB Groups
lbgrp_idx PUP_INTERV Max XLBs in Min Rate & Max Rate Min Rate ( = Max Rate
AL LB Group Granularity (PUP_TOKEN Max Rate of
(bps)
(PUP_INTERV (PUP_TOKEN S = 4094) prev. LB
(Clock
AL/4) S = 1) Group)
cycles) (bps)
(LBs) (bps) (bps)
1 4094
Using fhe LB Group configuration in the preceding table, the 200 XLBs of rate 1,030,000,000 bps now belong to LB
Group 2 and contribute with 200/2000 = 0.1 to the sum of Rule II and similarly the 2000 XLBs of rate 103,000,000
bps belong to LB Group 4 and also contribute with 0.1, thus leaving 80% of the PUP bandwidth for other buckets
(further, oversubscribing the system bandwidth).
As mentioned in Rule IV, XLBs must be placed in the XLB Group with the highest PUP_INTERVAL, that spans a rate
interval covering the XLB's rate. For example, if you create an XLB with a rate set to 1,030,000,000 bps, then this
XLB must be placed in LB Group 2, not LB Group 1 or 0. If there is no room for more XLBs in LB Group 2 (due to
Rule I), then an error is reported.
As a refinement to this algorithm, the LB's threshold may also be considered. Thus in above example if width of
PUP_TOKENS is 13 and XLB's threshold is set to >= 8000, then the XLB may be placed in LB Group 3 and
PUP_TOKENS for the XLB set to 8000. If you reconfigure the threshold to a value smaller than 8000 later, then the
XLB must be moved to LB Group 2.
For more fore information about the recommended LB Group selection algorithm, see 4.23.2.3 LB Group Selection
Algorithm.
4.23.2.3 LB Group Selection Algorithm
The following pseudo code shows the recommended algorithm for selecting LB Group for an SLB/DLB.
if (INH_TOKENS_WID == 0) {
lbgrp_idx0 = GetBestLbGrpForLb(lb_ir0, lb_thres0);
if (coupling_flag) {
// MEF 10.2, i.e. no CIRmax/EIRmax
lbgrp_idx1 = GetBestLbGrpForLb(lb_ir0 + lb_ir1, lb_thres1);
} else {
lbgrp_idx1 = GetBestLbGrpForLb(lb_ir1, lb_thres1);
}
} else {
// MEF 10.3
int lb_rate0, lb_rate1;
int GetBestLbGrpForLb(
int lb_rate, // Rate, bps
int lb_thres // Threshold, bytes
)
{
int lbgrp_idx;
4.23.3 Inheritance
In order to support MEF 10.2 and MEF 10.3 bandwidth profiles (that are, CF, Envelope, and Rank), an inheritor LB
can be configured for each LB. The inheritor LB receives any tokens overflowing from the ancestor LB.
Each LB (the "ancestor LB") has at most one inheritor LB. An inheritor LB may have multiple ancestor LBs, though,
normally it has at most one ancestor LB.
LBs within a given LB Set can only have inheritor LBs in current LB Set or in one other LB Set.
The following figure shows an inheritance example. The arrows show the inheritance order. LBA0 has no ancestors
and LBC1 has no inheritors. Any tokens overflowing in LBC1 are lost.
Figure 4-60. MEF 10.3 Inheritance Example
lb_idx: 0 1
CIR EIR
Envelope
As illustrated in the preceding figure, multiple levels of inheritance may be configured, that is, if the inheritor LB
overflows, then this spillover may be inherited by another LB.
The following figure shows how to configure the inheritance of example as in the preceding figure.
lb_idx: 0 1
CIR EIR
LB Set A
INH_MODE=1 INH_MODE=1
INH_LBSET_ADDR = 18
INH_LB=0
INH_LBSET_ADDR=19
INH_LB=1
lbset_addr=17
INH_MODE=1 INH_MODE=1
LB Set B INH_LBSET_ADDR = 19
INH_LB=0
INH_LBSET_ADDR=19
INH_LB=1
lbset_addr=18
INH_MODE=1
LB Set C INH_LBSET_ADDR = 17
INH_LB=1
INH_MODE=0 lbset_addr=19
If only MEF 10.2 bandwidth profiles are required, then the LB Set must be configured as shown in the following
figure.
Figure 4-62. MEF 10.2 Inheritance Example Configuration
lb_idx: 0 1
CIR EIR
LB Set INH_MODE=2 INH_MODE=0
LB Set
XLB XLB
xlb_start
LB Group 0
LB Group 1
xlb_next
LB Group 2
LB Group 3 xlb_start
...
When adding or removing XLBs to and from an LB Group, the procedures described in the following sections must be
used.
The related parameters are listed in the following table.
Table 4-188. LB List Related Parameters
...........continued
Parameter Width Description Replication
(bits)
pup_lb_dt 12 Delta time between updating XLBs within an LB Set, Per LB Group
that is, PUP_LB_DT specifies the number of clock
cycles between each XLB update within the LB Set.
It can be used to avoid many XLBs opening
concurrently.
It should be set to PUP_INTERVAL/<number of
XLBs in LB Group>.
2. Set LBSET_NEXT and XLB_NEXT of the preceding XLB to point to the new XLB.
LB Group LB Group
xlb_start xlb_start
... ...
Wrong! Wrong!
xlb_idx: 0 1
LB Set
LB Groups
SLB SLB
LB Group
xlb_start
...
Correct
DLBs within an LB Group can be order arbitrarily.
...........continued
Key Name Number of Words Key Type
ARP
IP4_TCP_UDP
IP4_OTHER
IP6_VID
The following table lists details for all VCAP ES2 keys and fields. When programming an entry in VCAP IS2, the
associated key fields must be programmed in the listed order with the first field in the table starting at bit 0 in the
entry. As an example, for a MAC_ETYPE entry, the first field X6_TYPE must be programmed at bits 3:0 of the entry,
the second field FIRST must be programmed at bit 4, and so on.
Table 4-190. VCAP ES2 Key Details
X6_TYPE X6 type: 3 x x x x x
0: MAC_ETYPE.
1: ARP.
2: IP4_TCPUDP.
3: IP4_OTHER.
5: IP6_VID.
...........continued
Field Name Description Siz IP4 MA AR IP4 IP4 IP6 IP_
e _VI C_ P _T _O _VI 7T
D ET CP TH D UP
YP _U ER LE
E DP
...........continued
Field Name Description Siz IP4 MA AR IP4 IP4 IP6 IP_
e _VI C_ P _T _O _VI 7T
D ET CP TH D UP
YP _U ER LE
E DP
MEL=0: 0b0000000
MEL=1: 0b0000001
MEL=2: 0b0000011
MEL=3: 0b0000111
MEL=4: 0b0001111
MEL=5: 0b0011111
MEL=6: 0b0111111
MEL=7: 0b1111111
Together with the mask, the following kinds of
rules may be created:
...........continued
Field Name Description Siz IP4 MA AR IP4 IP4 IP6 IP_
e _VI C_ P _T _O _VI 7T
D ET CP TH D UP
YP _U ER LE
E DP
...........continued
Field Name Description Siz IP4 MA AR IP4 IP4 IP6 IP_
e _VI C_ P _T _O _VI 7T
D ET CP TH D UP
YP _U ER LE
E DP
0: ARP request.
1: ARP reply.
2: RARP request.
3: RARP reply.
L3_OPTIONS Set if IPv4 frame contains options (IP len > 5). IP 1 x x
options are not parsed.
...........continued
Field Name Description Siz IP4 MA AR IP4 IP4 IP6 IP_
e _VI C_ P _T _O _VI 7T
D ET CP TH D UP
YP _U ER LE
E DP
...........continued
Field Name Description Siz IP4 MA AR IP4 IP4 IP6 IP_
e _VI C_ P _T _O _VI 7T
D ET CP TH D UP
YP _U ER LE
E DP
HIT_ME_ONCE If set, the next frame hitting the rule is copied to CPU using 1
CPU_QUEUE_NUM.
CPU_COPY overrules HIT_ME_ONCE implying that if CPU_COPY is also
set, all frames hitting the rule are copied to the CPU.
COPY_PORT_NUM QSYS port number when FWD_MODE is redirect or copy. Same encoding 7
as in AFI:DTI_TBL:DTI_PORT_QU
MIRROR_PROBE_ID Signals a mirror probe to be placed in the IFH. Only possible when 2
FWD_MODE is copy.
0: No mirroring.
1–3: Use mirror probe 0-2.
POLICE_REMARK If set, frames exceeding policer rates are marked as yellow but not 1
discarded.
...........continued
Action Name Description Size
CNT_ID Counter ID, used per lookup to index the VCAP counters 11
(EACL:CNT_TBL).
Multiple VCAP ES2 entries can use the same counter.
IGNORE_PIPELINE_CTRL Ignore pipeline control. This enforces the use of the VCAP ES2 action 1
even when the pipeline control has terminated the frame before VCAP
ES2., for instance when the pipeline action is LBK_QS or the pipeline
action is an inject action and the pipeline point is located in REW.
XVID 0
PW Physical Port #7
PW
XVID 2
5 P/L Port
5
VPORT Tabel in QSYS 5
64
65
01 5 7 dport 19 64 +65
qgrp(default_vid) 5 9 Virt IF
qgrp(xvid_1) 19 17
19 17
qgrp(xvid_2)
19 33 129
19 34 130
CPU
qgrp(xvid_3) 5 63 137
5 63
5 63
4095
qgrp(xvid_0)
Physical/Logical Port # Virtual Interface # ACL Group
vld
vld
0 6 7 13 16 23
To TCAM Match
The result of the interface map table lookup is used for two purposes:
• Provides a port number or interface number and an ACL group identifier to be used in the VCAP ES2 lookup
• Selects a VCAP ES2 key selection profile.
The interface map table instructs whether the physical/logical port number or the virtual interface number is to be
used for the key selection profile and the VCAP ES2 key.
EACL::VCAP_ES2_KEY_SEL Configuration and enabling of the key selection for Per profile per lookup
the VCAP ES2
(R)ARP frame The Type/Len field is equal to 0x0806 (ARP) or 0x8035 (RARP).
OAM Y.1731 frame The Type/Len field is equal to 0x8902 (ITU-T Y.1731).
...........continued
Frame Type Condition
ETYPE frame The Type/Len field is greater than or equal to 0x600, and the Type field does not
indicate any of the previously mentioned frame types, that is, ARP, RARP, OAM,
IPv4, or IPv6.
Each profile controls the key selection for each of the two lookups in VCAP ES2 through the VCAP_ES2_KEY_SEL
register. For some frame types (OAM Y.1731, SNAP, LLC, EYTYPE) the key selection is given as only the
MAC_ETYPE key can be used. For others frame types (ARP and IP) multiple keys can be selected from. The
following table lists the applicable key types available for each frame type listed in Table 126, page 294.
Table 4-194. VCAP ES2 Key Selection
For information about VCAP ES2 keys and actions, see 4.24 VCAP ES2 Keys and Actions.
EACL::VCAP_ES2_RNG_VALUE_CF Configuration of range start and end points Per range checker
G
VCAP ES2 supports 16 global range checkers in the IP4_TCP_UDP, IP_7TUPLE, IP4_VID keys. All frames using
these keys are compared against the range checkers and a 1-bit range “match/no match” flag is returned for each
range checker. The combined 16 match/no match flags are used in the L4_RNG key field. So, it is possible to include
for example ranges of DSCP values and/or ranges of TCP source port numbers in the ACLs.
Note, VCAP CLM and VCAP IS2 also supports range checkers but they are independent of the VCAP ES2 range
checkers.
The range key is generated for each frame based on extracted frame data and the configuration in
EACL::VCAP_ES2_RNG_CTRL. Each of the 16 range checkers can be configured to one of the following range
types.
• TCP/UDP destination port range:
VCAP ES2 must be configured to identify VLAN tags and other supported tags. By default, customer tags (C-tags)
and service tags (S-tags) are identified by TPIDs 0x8100 and 0x88A8. In addition, custom TPIDs can be identified
by programming EACL_TPID_CFG. This should be done in accordance with ANA_CL::VLAN_STAG_CFG and
REW::TPID_CFG.
Awareness of E-TAGs (IEEE 802.1BR Bridge Port Extension) and R-TAGs (IEEE 802.1CB Frame Replication and
Elimination for Reliability) are enabled individually.
VCAP ES2 may experience an exhaustion of resources during which VCAP ES2 lookups no longer can be
performed. It is configurable whether to discard or forward frames experiencing this.
HIT_ME_ONCE Sticky.
INTR_ENA Sticky.
CPU_COPY Sticky.
POLICE_REMARK Second lookup takes precedence if both actions have POLICE_ENA set to 1.
POLICE_IDX Second lookup takes precedence if both actions have POLICE_ENA set to 1.
The FWD_MODE resolution function is described in FWD_MODE Resolution Function. The action resulting from
a combination of REDIRECT and DISCARD is configured in EACL::ES2_CTRL.ACTION_REDIR_DISCARD_SEL.
The destination resulting from a combination of two REDIRECTs or two DISCARDs is configured in
EACL::ES2_CTRL.ACTION_REDIR_COPY_SEL.
In case the resolved action from the FWD_MODE resolution function is redirect or copy and the policer result is to
discard the respective frame copy, it is configurable through EACL::ES2_CTRL.EACL_ALLOW_FP_COPY whether
the copied or redirected frame copy is discarded.
In case both actions result in a CPU copy request, EACL::ES2_CTRL.ACTION_CPU_COPY_SEL defines which of
the CPU_QUEUE_NUM values is used as destination CPU queue.
In case a CPU copy action occurs and the original frame is to be discarded by the policer, it is configurable by
EACL::ES2_CTRL.EACL_ALLOW_CPU_COPY whether a CPU copy is to be done although the original frame copy
was discarded. Note that a CPU copy can either be triggered by a CPU copy action or by a HIT_ME_ONCE action.
If both actions are valid, ACTION_REW_CMD_SEL defines how the command to the rewriter is generated. It can be
either the first lookup result, the second lookup result, a logical OR of both lookup results or a logical AND of both
results.
EACL::SEC_LOOKUP_STICKY Sticky bits for each key type used in VCAP ES2. Per lookup
EACL::ES2_CNT VCAP ES2 match counters. Indexed with VCAP ES2 2,048
action CNT_ID.
Each key type use in a lookup in VCAP ES2 triggers a sticky bit being set in EACL::SEC_LOOKUP_STICKY. A sticky
bit is cleared by writing 1 to it.
Each action returned by VCAP ES2 triggers one of 2,048 counters (EACL::ES2_CNT) to be incremented. This
applies to both actions from matches and default actions. The index into the counters is provided by VCAP ES2
action CNT_ID. The CNT_ID is fully flexible meaning multiple actions can point to the same counter. The counters
are writable so they can be preset to any value. A counter is cleared by writing 0.
Ports Connection
0–64 Front ports, 10 Mbps to 10 Gbps depending on port number
...........continued
Ports Connection
65–66 Frame injection and extraction CPU ports. The CPU connects these ports to DMA logic or a
register interface.
Frames are stored in the packet memory and linked into the ingress queue for the logical source port along with the
analyzer result.
The analyzer result is then processed by a frame forwarder, frame by frame. Each of the frame transmission requests
are added to an egress queue in the queue system attached to a specific egress port. A transmission request can
be a normal switching request to another port, a mirror copy, for stacking updates, and for a CPU connected to one
of the egress ports. For VD0, it can do multiple copies of the request. The frame forwarder can also request that a
specific frame copy be discarded.
The frame forwarder is efficient because only frame references are switched. The frame data itself is not moved
within the queue system.
The forwarding request is passed through a queue mapper, which then selects an egress queue based on the
classified properties of the frame. For example, a simple switch may use the classified QoS class only and an
advanced carrier switch may use MPLS-classified traffic class (TC).
A congestion control system can decide to discard some or all copies of the frame. This decision is based on
consumption per QoS level. The queue mapper can be configured to change the drop decision using a congestion
control mechanism based on queue sizes rather than only QoS class.
Each destination port has a part of the total shared queue pool attached. Transmission is scheduled towards the
destination ports through a hierarchical scheduling system, where all queues belonging to each port are arbitrated.
On the way out, frames pass through the rewriter where the frame data can be modified due to for instance routing or
VLAN tagging. The queue system does not change the original frame data.
An ingress port operates in one of three basic modes: drop mode, port flow control, or priority-based flow control. The
following table lists the modes and flow definitions.
Table 4-201. Ingress Port Modes
Mode Flow
Drop mode (DROP) The link partner is unaware of congestion and all frames received by the port are
evaluated by the congestion control function where copies of the frame can be
discarded.
Port flow control (FC) The link partner is informed through pause frames (full-duplex) or collisions
(half-duplex) that the port cannot accept more data. If the link partner obeys the
pause requests, no incoming data is discarded by the port. If the pause frames
are disobeyed by the link partner, the buffer control function in the queue system
discards data before it reaches the ingress queues.
Priority-based flow control (PFC) The link partner is informed about which QoS classes in the queue system are
congested and the link partner should stop scheduling more frames belonging to
these QoS classes. If the pause frames are disobeyed by the link partner, the
buffer control function in the queue system discards data before it reaches the
ingress queues.
...........continued
Group Field Function
Queue mapping QGRP Queue group for service-based egress queuing.
Statistics OAM type Service counters can be configured to only count certain
OAM frame types.
4.26.3 Forwarding
The frame forwarder processes frames at the head of the per-port ingress queues by adding references to the
egress queues for each of the frames’ destination ports. The reference points from the egress queues to the stored
frames. The forwarder can add from 312.5 million to 625 million references per second depending on the frame size
distribution.
The ingress queues are selected by a weighted round-robin search, where the weights are configured in
QFWD::SWITCH_PORT_MODE.FWD_URGENCY.
Each frame is processed as either a drop-mode frame or a flow control frame, which influences how the congestion
control works. For a drop-mode frame, the congestion control can discard frame copies while for a flow control frame,
it lets the frame stay at the head of the ingress queue blocking further processing of frames from the port until the
congestion situation is over. A frame is processed as a drop-mode frame if one of the following conditions is met.
• The ingress port is configured to be an ingress drop port.
• The egress port is configured to be an egress drop port.
• The frame itself is analyzed to be a drop frame.
In terms of discarding frames, the forwarder can work in an ingress-focused statistics mode or an egressfocused
statistics mode. The mode is configured per ingress port in XQS::STAT_CNT_CFG, which determines whether a
frame received and discarded to a particular port is counted in the statistics for the egress port that lost a frame, or
for the ingress port. If a frame is discarded towards several egress ports and the mode is set to ingress-focused, only
one discard is counted. For the egress-focused mode, each dropped copy is counted.
Field Function
Destination set Set of ports to receive a normal switched copy. All ports except the internal extraction
ports have a bit in this mask.
CPUQ Set of CPU queues to receive a copy
Mirror Request mirror copy
Learn-all Request learn copy to stack ports
The destination set selects specific egress ports and the CPUQ, mirror, and learn-all fields are indirect frame
destinations and must be translated to transmit requests through the frame copy configuration table. The table
provides a specific egress port and QoS class to use in congestion control. The table is accessed through the
QFWD::FRAME_COPY_CFG register.
The following illustration shows the translation of transmit requests.
Figure 4-67. Translation of Transmit Requests
Mirror request
Translate Egress ports
requests to
egress ports
LearnAll request
The CPUQ field instructs which of the eight CPU extraction queues should get a copy of this frame. Each queue in
the queue system is translated into either one of the two internal CPU ports or to a front port. The egress QoS class
can be set to the same value as the ingress QoS class or to a specific value per CPU extraction queue. A super
priority can also be used. For more information, see 4.26.9.2 Super Priorities.
The mirror field is the mirror probe number, which is set by the analyzer if the frame must be mirrored. There are
three mirror probes available, and for each of the probes, associated egress port and egress QoS class can be set by
the translation table.
Finally, if the learn-all field is set, the frame should also be forwarded to the stacking links. It is selectable to forward
the frame to either of the two stacking links or to both, depending on the stacking topology.
The following table lists the configuration registers associated with the forwarding function.
Table 4-207. Frame Forwarder Registers Overview
...........continued
Register Description Replication
QFWD::MIRROR_CFG Configures whether discarded copies should still generate None
a mirror copy.
Field Function
Drop mode This frame can be dropped even if port is setup for flow control. This function is mainly
used by the analyzer for stacking use where the ingress unit's source port determines how
congestion should be handled.
DP Drop precedence level. A value 0-3, telling how yellow the frame is.
QoS class Frame's ingress QoS class
The current consumption of resources in the congestion controller is updated when a reference is added to one of the
egress queues. The congestion controller tracks four different resources:
• Ingress packet memory consumption. Each frame uses a number of 184-byte words.
• Egress packet memory consumption. Each frame uses a number of 184-byte words.
• Ingress frame reference consumption. Each frame uses one frame reference per frame copy.
• Egress frame reference consumption. Each uses one frame reference per frame copy.
There are 22,795 memory words and 22,795 frame references in total.
The accounting is done based on QoS classes and port numbers. Each account has a threshold associated
specifying how many resources the account is permitted to consume. The accounts are as follows:
• Consumption per port per QoS class. This is a reservation account.
• Consumption per port. A frame does not consume resources from this account before the resources belonging
to the previous account are consumed. This is a reservation account.
• Consumption per QoS class. A frame does not consume resources from this account before the resources
belonging to the previous two accounts are consumed. This is a sharing account.
• Consumption in addition to the above. A frame does not consume from this account before the resources
belonging to the previous three accounts are consumed. This is a sharing account.
The congestion controller updates an accounting sheet with the listed accounts for each of the tracked resources.
The following illustration shows reservation accounts for the packet memory accounting sheets when a 700-byte
frame from port 0 forwarded to ports 1 and 5 with QoS class 2 is added. The frame size requires the use of five
words in the packet memory. The account for ingress port 0, QoS class 2 is reserved three words. Before the frame
is added, it is checked if the account was fully utilized. If the account was not fully used, the frame is allowed into the
queue system. After the frame is added, the account is updated with the five words and therefore uses two more than
was reserved. These are consumed from the port account. The port account is reserved 0 words and the added two
words therefore also close the port account. This affects further frame reception.
In the egress side, there are no words reserved for the account per port per QoS class. The port account for port 1 is
8 words and 0 words for port 5.
Figure 4-68. Accounting Sheet Example
For PFC purposes, the congestion controller contains an additional accounting sheet of the ingress memory
consumption. The sheet has its own set of thresholds. The result of the accounting is whether to send PFC pause
frames towards the link partner.
The combined rule for allowing a frame copy is if both of the following are true.
• Either ingress or egress memory evaluation must allow the frame copy.
• Either the ingress or egress reference evaluation must allow the frame copy.
When the reserved accounts are closed, the shared accounts spanning multiple ports are checked. Various rules for
regarding these accounts as open or closed exist. These rules are explained in the following through three major
resource modes, which the congestion controller is intended to be used in.
Figure 4-69. Reserved and Shared Resource Overview
The resource modes are defined by the way the shared resources are distributed between classes of frames. Note,
that there are many options for configuring different resource mode than the modes described in the following. This is
outside the scope of this document.
Consumption
QoS class 4 limit u
so
d Re
QoS class 3 limit e
ar
QoS class 2 limit Sh
QoS class 1 limit
QoS class 0 limit
One important property of this mode is that higher QoS classes can block lower QoS classes. A congested flow with
a high QoS class uses all of the shared resources up to its threshold setting and frame with lower QoS classes are
thus affected (lower burst capacity).
The following table shows the configuration settings for strict priority sharing mode.
Table 4-209. Strict Priority Sharing Configuration Settings
Configuration Setting
Reservation thresholds These can be set to any desired value. The amount set
aside for each account should be subtracted from the overall
resource size, before the sharing thresholds are set up.
Ingress QoS class thresholds Levels at which each QoS class should start to reject
further enqueuing. Frames with multiple destinations are only
accounted once because they are physically only stored once.
Ingress color thresholds Set to their maximum value to disable. The color is not
considered in this mode.
WRED group memberships Disable all.
Egress sharing thresholds Set all to 0 to only use ingress sharing control. Egress would
account for multiple copies, which is not intended.
QoS reservation (QRES::RES_QOS_MODE) Disable for all. No shared resources are set aside per QoS
class.
DP=0 limit
rce
DP=1 limit esou
ed R
Shar
DP=2 limit
DP=3 limit
QoS class 0
QoS class 1
QoS class 2
QoS class 3
QoS class 4
QoS class 5
QoS class 6
QoS class 7
The following table shows the configuration settings for per priority sharing mode.
Table 4-210. Per Priority Sharing Configuration Settings
Configuration Setting
Reservation thresholds These can be set to any desired value, except for ingress per port
reservation. The algorithm requires these to be zeroed.
Ingress QoS class thresholds Set to amount of shared memory which should be set aside for each QoS
class. The sum of all these should not exceed the amount of memory left
after all the reservations has been subtracted.
Ingress color thresholds Subtracting all reservations including QoS class shared areas may end
up in some unused memory. Set the color thresholds to various levels to
guarantee more space the greener.
WRED group memberships Disable all.
Egress sharing thresholds Set all to 0, as we only use ingress sharing control. Egress would account
for multiple copies, which is not intended.
QoS reservation Enable for all.
(QRES::RES_QOS_MODE)
DP = 0 limit
ce
sour
ed re
Shar
QoS class 0
QoS class 1
QoS class 2
QoS class 3
QoS class 4
QoS class 5
QoS class 6
QoS class 7
QoS class 0
QoS class 1
QoS class 2
QoS class 3
QoS class 4
QoS class 5
QoS class 6
QoS class 7
QoS class 0
QoS class 1
QoS class 2
QoS class 3
QoS class 4
QoS class 5
QoS class 6
QoS class 7
WRED Group 0 WRED Group 1 WRED Group 2
The following illustration shows an example of the WRED profiles for a QoS class within a WRED group. Thresholds
are shown for DP = 2 only.
Figure 4-73. WRED Profiles
Drop probability
100%
3 1
2
P= DP=
P=
D
D
O
W GH
_L _ HI
ED E D WRED group
_R _R consumption for
M M
W W QoS class
The WRED sharing is operating as an egress algorithm. The following table shows the configuration setting.
Table 4-211. WRED Sharing Configuration
Configuration Setting
Reservation thresholds These can be set to any desired value, except for ingress per port
reservation. The algorithm requires these to be zeroed.
Ingress priority thresholds Set to their maximum value, as the QoS classes should not have any
sharing across WRED groups.
Ingress color thresholds Set to their maximum.
WRED group memberships Set to define the WRED groups. For each group, define as well the up
to 24 WRED profiles (per QoS class and DP level)
Egress sharing thresholds Set the QoS class thresholds to the highest possible consumption
before any profile hits 100% probability. The color thresholds can then
operate on the remainder of the resource in control and can all be set
to the same value, allowing use of all the remaining. A discard due to
the WRED profile takes precedence over other sharing states, so the
area outside the group sections is only available for green traffic.
QoS reservation Disable for all.
(QRES::RES_QOS_MODE)
Register Description
QRES::RES_STAT (replicated same Returns maximum value the corresponding threshold has been compared
way as RES_CFG) with.
QRES::RES_STAT_CUR (replicated Returns current value this threshold is being compared with.
as RES_CFG)
QRES::WRED_PROFILE (72 Profile description. 3 (grp) × 3 (DP) × 8 (prio) profiles exist.
profiles)
QRES::WRED_GROUP WRED group membership configuration per port.
QRES::RES_QOS_MODE Enable QoS reservation for QoS classes.
QFWD::SWITCH_PORT_MODE Controls whether yellow traffic can use reserved space (YEL_RSVD). Allows
ports to use shared space (IGR_NO_SHARING, EGR_NO_SHARING).
Register Description
XQS::FWD_DROP_EVENTS Sticky bits per port telling if drops from each individual ingress port occurred.
XQS::FWD_CPU_DROP_CNT Counts number of frames not forwarded to the CPU due to congestion.
XQS::FWD_STAT_CNT Counts number of frame copies added to the egress queues in total.
QFWD::FWD_PRESS_DROP_CNT Counts number of frame copies discarded due to forward pressure. Value is
the total discards across all ports.
QSYS::MMGT_IQ_STAT Returns current ingress queue size.
QSYS::MMGT Returns number of free references for the egress queues.
the hierarchy type in XQS::QMAP_PORT_MODE. The mode is found for frames with classified qgrp = 0 in the
QMAP_MODE_NONSERVICE field and in QMAP_MODE_SERVICE for qgrp >0. Note that service and non-service
mappings can be combined at the higher layers, in order to combine the two basic types of traffic in the application.
An overview of the queue mapping tables is shown in the following figure. The drop statistics mode is also found by
looking up information in these tables. For more information, see 4.26.9.4 Statistics.
Figure 4-75. Queue Mapping Tables
• Mode 2: Microwave Backhaul (MBH) mode. This mode is used when many queue groups need to be arbitrated
per queuing class, and they share a common outgoing quality of service policy. For example, it may be possible
to have 768 queues per queuing class arbitrated on level 0 and 1, and class selected on level 2. In this case, the
SE table is used by SE = QMAP_SE_TBL (vport + qc), Inp = qgrp MOD 64.
The following table lists the registers associated with assigning queues for each egress port.
Table 4-215. Queue Mapping Registers Overview
Configuration Description
QMAP_PORT_MODE Selects queue layer hierarchy type
QMAP_VPORT_TBL 1 Map (qgrp,dport) into a virtual port
QMAP_QOS_TBL1 Selects per vport from which queueing QoS it should be derived
QMAP_SE_TBL1 Selects per vport a scheduling element
Note:
1. The QMAP_xx_TBLs are indirectly accessed by setting the target index in
XQS:MAP_CFG_CFG.MAP_CFG_CFG following read or write to replication 0 of the register.
of frame counting. Optionally, all 28 bits can be used for frame counting. For more information about drop statistics,
see 4.34.2.3 Statistics.
The queue limitation function checks the queue size against various configurable and dynamic values and may
change a transmit request to a discard by canceling the request to the scheduler.
The queue limitation system uses queue sizes (in terms of packet memory usage) of all queues. Each queue is
assigned to a share. The share is a configuration parameter for the port to which the queue belongs, as set in
the QLIMIT_PORT_CFG register. A set of watermarks is afterwards used to control some queue limitation drop
mechanisms, trying to discard data for congested queues without affecting well-balanced traffic.
The queue limitation must be enabled both for ingress and egress port in the potential forwarding. In addition, both
ports must be enabled for using shared memory, otherwise only a fixed amount of memory is available for the queue.
These configuration choices must be applied in QLIMIT_PORT_CFG.
A dynamic watermark in each memory share is constantly updated. It informs the current number of congested
scheduling element the appropriate amount of memory requirement for each, in order for all the congested flows to
have the same burst capacity through the switch. If the memory share is filled above a certain level, and the queues
and SE elements use more than the fair part, frame copies will be discarded.
The drop precedence level is used to find a level below the fair share at which the drop condition kicks in. This is
configured in QLIMIT_DP_CFG, where it also can be configured whether yellow traffic can be guaranteed a minimum
consumption.
To support WRED behavior, the dynamic watermark can be added random noise with a configurable amplitude,
which makes the drop probability for all flows vary randomly around the desired watermark. This is set up in
QLIMIT_SHR_QDIVMAX_CFG.
To support DLB shaping, an SE can be set up to enable the EIR bucket when the filling exceeds a certain level.
The conditions under which a frame is discarded is shown in the following illustration The watermarks shown are
defined per shared account and per color. If yellow traffic is present, it can be discarded fairly without affecting the
green traffic.
...........continued
Register Groups Description
QLIMIT_SE1 Reads current SE queue sum and congestion count.
QLIMIT_CFG Assigns ports to shares. Configures DP levels in common for all ports.
QLIMIT_SHR Configures watermarks for share and monitor filling and dynamic watermarks.
QLIMIT_MON Reads the status for each of the logical shares.
Note:
1. The QLIMIT_QUEUE registers are indirectly accessed by setting the target index in
XQS:MAP_CFG_CFG.MAP_CFG_CFG following the read or write to replication 0 of the register
4.26.7 Scheduling
All egress queues are combined in a tree structure where the root is connected to an egress port. The scheduling
capabilities consist of the following three aspects.
• Structure of the hierarchy
• Bandwidth limitation (shaping)
• Bandwidth distribution (arbitration between inputs)
• Data rate shapers are connected in a linked list, which is traversed every 10 μs. The shaper rate granularity
becomes 100 kbps.
• Frame rate shapers are connected in a linked list, which is traversed every 1 ms. The shaper rate granularity
becomes 1 kilo frames per second.
Each scheduler element includes two leaky buckets to support DLB shaping. The committed information rate (CIR)
bucket is open when the filling is below the configured limit. The excess information rate (EIR) shaper is always
closed, unless the congestion control reports that a threshold is reached. Which congestion thresholds to react on are
configurable for each shaper and should depend on the traffic groups the particular element is a part of. The effect of
the DLB shaper is that the rate out of the shaper is CIR or CIR plus EIR, depending of the accumulation of data in the
queue system.
The following table lists the registers associated with shaping.
Table 4-218. Shaper Registers Overview
Register Description
HSCH::SE_CFG Selects filling mode
HSCH::CIR_CFG Configures leak rate and burst capacity for CIR bucket
HSCH::EIR_CFG Configures leak rate and burst capacity for EIR bucket
HSCH::SE_DLB_SENSE Selects thresholds to control EIR with.
HSCH::HSCH_LEAK_LIST Configures leak list periods and starting index
HSCH::SE_CONNECT Links to next in leaking lists
HSCH::CIR_STATE Returns current CIR bucket filling
HSCH::EIR_STATE Returns current EIR bucket filling
HSCH::SE_STATE Returns whether or not the shaper is open
The lower indexes are arbitrated in the effort to achieve a bandwidth ratio between them. In this regard, the
bandwidth can be measured in frames, data bits, or line bits (including IFG). Each input is configured with a cost
setting, and the algorithm strives to give n times more bandwidth to input A than B, if the cost configuration for A is n
times lower than B.
Example: Input 4 has cost 7, and input 6 has cost 11. If the total bandwidth shaped out of the scheduler element is
180 Mbps, input 4 will get the 110 Mbps of it.
Example: All inputs have cost 1, and the element is configured for frames per second arbitration. Algorithm will by this
strive to send an equal number of frames from each input.
Configuring costs is done indirectly by setting the HSCH_CFG_CFG.DWRR_IDX first (pointing to the scheduler
element to configure), after which the costs are accessible through the HSCH_DWRR registers.
The following table lists the registers associated with the arbitration algorithm.
Table 4-219. Scheduler Arbitration Registers Overview
Register Description
HSCH::SE_CFG Selects arbitration mode (data/line/frame) and number of inputs running DWRR
HSCH::CFG_CFG Selects for which element to configure/monitor DWRR algorithm
HSCH::DWRR_ENTRY Configures costs for each input
HSCH::INP_STATE Returns input states for a scheduler element
The leak process operates as for the SE shapers and must be configured in HSCH:HSCH_LEAK_LISTS[3].
The indexes of shapers allocated to a set of queues are only used in the QSHP_BASE settings. The shapers
are accessed afterwards through the QSHP_CFG and QSHP_STATUS registers, accessed indirectly after setting
HSCH_CFG_CFG.CFG_SE_IDX to the desired scheduling element.
For example, to configure the shaper on input 6 of element 118 to shape to 1.2 Mbps, set
HSCH::HSCH_CFG_CFG.CFG_SE_IDX := 118 and HSCH:QSHP_CFG[6].QSHP_CIR_CFG.CIR_RATE := 12
(assuming the leak chain is configured for unit 100 kbps).
Field Description
LEAK_DIS Disable leaking process.
FRM_ADJ Sets the byte difference between line and data rate calculations.
DEQUEUE_DIS Disables transmissions per port.
4.26.9.4 Statistics
The queue system counts frame discards and successful transmissions. Each counted event updates a counter
instance, counting octets in a 40-bit counter and frames in a 32-bit counter. A frame is counted as discarded when
none of the frame’s destination ports are reached, excluding mirror and learn-all copies. If a frame is discarded, a
counter instance, per ingress port, per QoS class per color, is updated. The color granularity here is only green or
yellow, mapped from the analyzed DP value through the QSYS::DP_MAP settings. A frame transmission is a frame
leaving the queue system towards the rewriter. In this direction, a counter instance per egress port, per QoS class
per color, is updated. An abort counter instance per egress port counts frames discarded due to frame aging, queue
system flushing, or abort requests from the rewriter.
There are statistics available per service counter index, which is provided by the analyzer for ingress service discard
statistics and from the rewriter for egress service transmission statistics. The service counters are available per
counter index, per color.
Access to the statistics is indirect. The XQS::STAT_CFG configuration register must be set to the port or service
counter index to be accessed, and all counters related to this index can afterwards be read in the XQS::CNT
registers. The following table lists the available port counters and how they are mapped. Unused addresses return
undefined values. In the expressions, yel = 1 for reading yellow counters and yel = 0 for green. The mapping from
classified DP to color is made in the QSYS::DP_MAP register.
The following table shows the addresses of the frame counters. The equivalent octet counters are found at the frame
counter address plus 64 for the 32 least significant bits and at the frame counter address plus 128 for the eight most
significant bits.
Table 4-222. Statistics Address Mapping
The service counters are reduced in size; 10 bits for the frame part and 18 bits for the octet part. However,
STAT_CFG.STAT_SRV_PKT_ONLY can be set to use all 28 bits for frame counting.
All the counters wrap at their maximum capacity. The STAT_CFG.STAT_WRAP_DIS, however, can be set to change
the behavior to clear on read and to saturate at the maximum value.
Tail drops done by the buffer control are accessible in the QSYS::MMGT_TAIL_DROP registers.
The following tables lists the registers associated with statistics access.
Table 4-223. Statistics Registers Overview
Examples:
To read number of transmitted yellow frames for service counter 714:
1. Write 714 to STAT_VIEW in XQS::STAT_CFG.
2. Read XQS::CNT[385].
To read number of discarded green octets with QoS class 4 on port 9:
1. Write 9 to STAT_VIEW in XQS::STAT_CFG.
2. Read XQS::CNT[76] for the least significant bits.
3. Read XQS::CNT[140] for the most significant bits.
To read number of aborted frames on port 53:
1. Write 53 to STAT_VIEW in XQS::STAT_CFG.
2. Read XQS::CNT[272].
To read all counters for port 19:
1. Write 19 to STAT_VIEW in XQS::STAT_CFG.
2. Read XQS::CNT[0:15, 256:272].
3. Add 64 and 128 to above indices for octets.
Example: Configure the device to power up the PHYs when 10 frames are pending.
Only ports 3 through 6 should regard their data as urgent and only for priorities 6 and 7. All other data should get
transmitted when the EEE controller in the port has seen pending data for the controller configured time.
1. Write 10 to QSYS::EEE_THRES:EEE_HIGH_FRAMES.
2. Write 0xC0 to QSYS::EEE_CFG[3–6]::EEE_FAST_QUEUES.
The following illustration shows an overview of the internal busses. All ports are connected to a port data bus (taxi
bus) and granted access to the chip core through a mux obeying the calendar decision. Similarly, on the path towards
the transmit interface, a mux controls which port transmits the next time.
Figure 4-81. Internal Bus
The front ports are connected to taxi busses and must be guaranteed bandwidth corresponding to their line speed.
In any port configuration, a subset of the ports is enabled. The calendar algorithm is the central place where
bandwidth is distributed between the ports. The calendar algorithm can be controlled by two methods: automatic or
sequenced.
In the automatic calendar configuration, a configuration per port defines how much egress bandwidth is granted to
it, and that must not be lower than the physical interface speed. The CAL_AUTO registers set the granted speed for
each port in the range 0-10 Gbps.
In the sequenced operation, a specific sequence of port numbers forms the calendar. The port sequence controls
which port is granted the cycle, per bus cycle (two system clock periods).
The algorithm mode is configured in CAL_CTRL.CAL_MODE. It is possible through this register to program a manual
sequence, to halt the calendar, and to select between sequenced and automatic calendars.
Both calendar modes may leave some slots unallocated and therefore idle on the busses. These idle cycles can be
used for configuration access (which will wait for unused cycles) and other slow operations in the system (MAC table
scan, for example). Slots allocated for a port and not used due to lack of data to transfer can be used by the internal
ports through the HSCH::OUTB_* registers, where it is, per internal port, configured how often it will seek granting of
an unused cycle. Setting internal CPU port 0 to seek access every 100 cycles means that it can get up to one frame
transfer every 100 x 1.6 ns, or approximately 5 Gbps.
In the ingress side, the loopback paths use idle cycles to feed frame data into the ingress path.
The following table list the registers associated with configuring the calendar function.
Table 4-225. Calendar Registers Overview
Register Description
CAL_CTRL Calendar function mode. Configures auto-grant rate.
OUTB_SHARE_ENA Enables granting unused bus cycles to the internal ports (CPU and VD) on the
egress side.
OUTB_CPU_SHARE_ENA Configures bandwidth sharing between the two internal CPU ports.
CAL_SEQ Interface to the sequence memory. See register list.
CAL_AUTO Per port setting with requested bus bandwidth.
For each frame, jitter can be enabled for the associated injection timer.
Delay triggered injection can be combined with TTI, such that DTI is used to inject a (high) background load
(imitating normal user traffic), and TTI is used to inject OAM PDUs for measuring IR, FLR, FTD, and FDV.
32 entries
inj_cnt next_ptr
... 3
Second frame. To be injected 3 times. TTI Ticks
7
Delay 6
5
4
... 1 3
2
First frame of OoS injection frame sequence 1
0
Delay
Delay between the 3 injections of previous frame in ... 11 end_ptr
chain.
... 1 TTI Calendar
Fifth and last frame.
start_ptr
4 calendar
Delay 0
slots
... n/a n/a
4K entries
... 7
FRM_NEXT_AND_TYPE ENTRY_TYPE Entry type: Frame or Delay entry. Does not apply for TTI.
ENTRY_TYPE=Frame INJ_CNT Number of times to inject frame. Does not apply for TTI.
FRM_ENTRY_PART0 FRM_RM Frame removal. See 4.27.9 Removing Injection Frames.
FRM_GONE Frame removal.
FRM_INFO Frame information. See
MISC:NEW_FRM_INFO.FRM_INFO.
ENTRY_TYPE=Delay DELAY Delay between injection of start of frames. Unit is one
system clock cycle. Does not apply for TTI.
FRM_ENTRY_PART0
Frame entries in a DTI sequence may point to the same frame in the queue system’s buffer memory. For example,
shown in the following illustration, frame A and frame B shown may point to the same frame in the buffer memory.
The delay entries in a DTI sequence must be configured such that they are longer than the transmission time (given
the port speed) of the preceding frame in the sequence.
If a DTI sequence is configured with two consecutive frame entries, then these will be injected with a minimum delay
of approximately 14 clock cycles.
FIRST_PTR
NEXT_PTR
NEXT_PTR
NEXT_PTR
NEXT_PTR
NEXT_PTR
NEXT_PTR
Frame A Delay Frame B Delay Delay Frame C Delay
INJ_CNT=2 DELAY=150 INJ_CNT=2 DELAY=100 DELAY=200 INJ_CNT=1 DELAY=125
NEXT_PTR=0
FIRST_PTR
NEXT_PTR
NEXT_PTR
NEXT_PTR=0
By combining the setting of INJ_CNT and the DELAY value of the last delay depicted, the bandwidth of the DTI
sequence can be controlled with high granularity, because the additional (blue) delay will only be applied for every
INJ_CNT injections of frame A.
The bandwidth adjustment mechanism shown may be insufficient for controlling the bandwidth of multi-frame
sequences (sequences with different frames), because the last delay will be applied for every injection of the frame
sequence.
FIRST_PTR
NEXT_PTR
NEXT_PTR
NEXT_PTR
NEXT_PTR
NEXT_PTR
Delay Frame B Delay Delay Delay
Frame A
DELAY=150 INJ_CNT=2 DELAY=100 DELAY=50 DELAY=1
NEXT_PTR=0
Inject forever
DTI (In other words, until DTI is stopped)
FIRST_PTR
NEXT_PTR
NEXT_PTR
NEXT_PTR
NEXT_PTR
NEXT_PTR
DTI #1 DTI #3
MODE=2 MODE=0
CNT=3 CNT=10
DTI_NEXT=3
NEXT_PTR
NEXT_PTR
completes
NEXT_PTR=0 NEXT_PTR=0
• TTI_TIMER.TICK_IDX. For each TTI, one of eight configurable timer ticks shown in the following table must be
chosen.
• TTI_TIMER.TIMER_LEN. The number of timer ticks that must elapse between each injection.
That is, the period between each injection becomes tick_period × TIMER_LEN.
The following table lists the registers associated with TTI timer tickers.
Table 4-229. TTI Timer Ticks Registers Overview
The following table lists the registers associated with configuring parameters for each of the 4K entries in the TTI
table.
Table 4-230. TTI Parameters (4096)
...........continued
Register Field Description Replication
TTI_TIMER TIMER_LEN Number of timer ticks between each injection of this frame. Per TTI
0: Disables timer.
0xff: Injects frame next time the entry is serviced. After
servicing, hardware sets TIMER_LEN to 0. This is intended
to be used during removal of frame from buffer memory. See
4.27.9 Removing Injection Frames.
TTI_FRM FRM_PTR Points to the frame (in frame table), which the TTI injects. Per TTI
TTI_TICKS TICK_CNT Number of ticks until next injection. Should be set to a random Per TTI
value in the range 1-TIMER_LEN before starting TTI.
TTI_MISC_CF INJ_CNT_ENA Enables counting of injected frames in Per TTI
G TTI_MISC:TTI_INJ_CNT.TTI_INJ_CNT.
An entry in the TTI table is checked approximately every two clock cycles. If the TTI’s tick (configured through
TICK_IDX) has changed, then the TICK_CNT is decremented. If it becomes zero, the frame is injected, and
TICK_CNT is set to TIMER_LEN.
The following figure shows a configuration for the TTI calendar. In this case, only TTI entry 0-1023 are being used.
TTI Table
TTI
0-255
Calendar
start=0
TTI_CAL_LEN=2
end=255
cnt=2
start=256
end=1023
256-1023
cnt=1
start
end
cnt
start
end
cnt
In the example, it takes (256/2) × (1 + 2) × 4 = 1536 clock cycles to service all TTIs in the blue section. With a clock
cycle for instance 4 ns, the TTIs in the blue section must not use ticks faster than 1536 × 4 = 6144 ns.
Similarly, the 768 TTIs in the red section must not use ticks faster than
(768/1) × (1 + 2) × 4 × 4 ns = ~36.9 μs
The following TTI parameters can be used as part of the TUPE criteria.
• PORT_NUM
• QU_NUM
• TUPE_CTRL
The parameters prefixed “CMD” specify the commands, which are applied to any TTIs, which fulfill the TUPE criteria.
Using the TUPE command parameters, the following TTI parameters can be changed.
• TIMER_ENA
Timers can be enabled/disabled.
• PORT_NUM
Injections can be moved to a different port.
• QU_NUM
Injections can be moved to a different queue.
While TUPE is running no injections will be performed for any TTIs which match the configured TUPE criteria and fall
within the configured TUPE address range.
The TUPE_CTRL field in the TTI Table can be used to classify TTIs into different groups, such that a TUPE
command can easily address all TTIs within such group.
The following figure shows the AFI TUPE functionality.
Figure 4-89. AFI TUPE
TUPE_START_ADDR
TUPE_END_ADDR
AFI TUPE
Criteria (CRIT)
and AFI TUPE Algorithm
Command (CMD)
Parameters
The full algorithm used by AFI TUPE is shown in the following pseudo code. Configuration parameters are prefixed
“csr.”
bool tupe_ctrl_match;
tupe_ctrl_match = FALSE;
for (i = 0; i < 2; i++) {
if ((tti_tbl_entry.tupe_ctrl & csr.crit_tupe_ctrl_mask) ==
csr.crit_tupe_ctrl_val[i]) {
tupe_ctrl_match = TRUE;
}
}
if (
(// Check matching TUPE_CTRL value
tupe_ctrl_match)
&&
(// If enabled, check if TTI's PORT_NUM matches csr.crit_port_num_val
!csr.crit_port_num_ena
||
(tti_tbl_entry.port_num == csr.crit_port_num_val))
&&
(// If enabled, check if TTI's QU_NUM matches csr.crit_qu_num_val
!csr.crit_qu_num_ena
||
(tti_tbl_entry.qu_num == csr.crit_qu_num_val))
) {
// TTI fulfills criterias => Apply TUPE command to TTI
// timer_ena
if (csr.cmd_timer_ena_ena) {
tti_tbl_entry.timer_ena = csr.cmd_timer_ena_val;
}
// port_num
if (csr.cmd_port_num_ena) {
tti_tbl_entry.port_num = csr.cmd_port_num_val;
}
// qu_num
if (csr.cmd_qu_num_ena) {
tti_tbl_entry.qu_num = csr.cmd_qu_num_val;
}
Injected frames are injected into the tail of the queue, but due to the high priority, the queue will normally be
(almost) empty.
• Port injection queue with shaping: These queues, one for each port, inject frames on the port with higher priority
than normal queues. The state of the port shaper is respected and is updated with the size of the transmitted
frame.
Injected frames are injected into the tail of the queue, but due to the high priority, the queue will normally be
(almost) empty.
The queue into which a TTI or DTI injects frames is controlled by the QU_NUM parameter. The actual value to be
used for this parameter depends on the HSCH configuration. For more information, see 4.26.5 Queue Mapping.
For injections into the ingress data path, frames must be looped through VD1 and QU_NUM must be configured to
select a VD1 queue.
Configure other DTI parameters. For more information, see Table 4-228.
If PFC is used in conjunction with automatic frame injection, then either all frames must be injected into queues
controlled by the same flow control priority, or all frames must be injected into queues that cannot be stopped by
PFC.
If EEE is used in conjunction with automatic frame injection, then all frames for that port must be injected into queues
with the same urgent configuration.
Setting FRM_OUT_MAX = 0 will stop all injections on port.
Table 4-234. Port Parameters
4.28 Rewriter
The switch core includes a rewriter (REW) that is common for all ports. The rewriter performs all frame editing prior to
frame transmission. Each frame can be handled multiple times by the rewriter
• One time per destination port.
• One time towards the mirror target port.
• One time when copied or redirected to internal and/or external CPU.
• One time when looped back to the analyzer.
All frames that are input to the rewriter can be modified by previous blocks of the frame processing flow. The internal
frame header informs the rewriter what ingress frame manipulations (popping) are performed on any given frame.
The same ingress frame manipulation is performed for each copy of a frame, while the rewriter may perform per
destination specific egress frame manipulations (pushing) to the frame.
The rewriter is the final step in the frame processing flow of the device.
ES0_CTRL. Through ES0, it is possible to loop frames back to the analyzer using None
the LOOP_ENA and FWD_SEL actions. If this bit is set, a frame can
ES0_FRM_LBK_CFG
only be looped once by ES0.
...........continued
Register Description Replication
RTAG_ETAG_CTRL. Force ES0 lookups to use a specific key, independently of the ISDX Ports
value and IFH.ES0_ISDX_KEY_ENA. Encoding:
ES0_ISDX_KEY_ENA
0: Normal selection
1: Force ISDX lookups
2: Force VID lookups
PORT_CTRL. Maps the configuration port to a logical port number to be used by Ports
ES0 keys. The port used in the lookup can be Tx-mirrored.
ES0_LPORT_NUM
VCAP_ES0 lookup is enabled by setting REW::ES0_CTRL.ES0_LU_ENA = 1. The ES0 lookup is done for all frames
when ES0 is enabled. Frames destined to CPU ports are not rewritten by ES0 actions unless this is configured in
REW::IFH_CTRL_CPUVD.KEEP_IFH_SEL_CPUVD.
All ES0 actions are ignored when VCAP_ES0 lookups are disabled.
There are two ES0 key types: VID and ISDX. The key selection can be forced for each port by setting
REW::RTAG_ETAG_CTRL.ES0_ISDX_KEY_ENA. The key selection is done as described below.
The VID key is used when RTAG_ETAG_CTRL.ES0_ISDX_KEY_ENA is different from 1 and at least one of the
following four conditions are true.
1. IFH.FWD.ES0_ISDX_KEY_ENA = 0
2. REW::ES0_CTRL.ES0_BY_RLEG = 1 and (IFH.FWD.DST_MODE = L3UC_ROUTING or
IFH.FWD.DST_MODE = L3MC_ROUTING)
3. REW::ES0_CTRL.ES0_BY_RT_FWD = 1 and IFH.ENCAP.RT_FWD = 1 and
IFH.ENCAP.ENCAP_ID_RLEG_MODE = 3
4. RTAG_ETAG_CTRL.ES0_ISDX_KEY_ENA = 2
Because there are only two key types, the ISDX key is used when a VID key is not used.
Table 4-236. VCAP_ES0 Keys
X1_TYPE X1 type. 1 x x
0: ISDX
1: VID
...........continued
Key Field Description Size ISDX VID
When ES0_CTRL.ES0_DPORT_ENA = 0:
Configuration port mapped via
REW::PORT_CTRL.ES0_LPORT_NUM. The default is no
mapping (EGR_PORT = configuration port number).
The configuration port is either the physical port or a Tx-
mirror port number.
...........continued
Key Field Description Size ISDX VID
...........continued
Key Field Description Size ISDX VID
The following table shows the actions available in VCAP_ES0. Default actions are selected by
PORT_CTRL.ES0_LPORT_NUM when no ES0 entry is hit. When REW::ES0_CTRL.ES0_LU_ENA = 1, all of the
default actions must be initialized to ensure correct frame handling.
...........continued
Field Name Description Width
...........continued
Field Name Description Width
...........continued
Field Name Description Width
UNTAG_VID_ENA Controls insertion of tag C. Untag or insert mode can be selected. See 1
PUSH_CUSTOMER_TAG.
...........continued
Field Name Description Width
TAG_C_VID_SEL Selects VID for ES0 tag C. The resulting VID is termed C-TAG.VID. 2
0: Classified VID.
1: VID_C_VAL.
2: IFH.ENCAP.GVID.
3: Reserved.
PUSH_ETAG Enable pushing of IEEE802.1BR Bridge Port Extender tag (E-TAG). The 1
E-TAG is always pushed as the outermost tag before any VLAN tags.
0: No E-TAG pushed
1: Push E-TAG if enabled by REW::COMMON_CTRL.ETAG_TPID_ENA
...........continued
Field Name Description Width
...........continued
Field Name Description Width
...........continued
Field Name Description Width
ESDX_BASE Egress service index. Used to index egress service counter set 13
(REW::CNT_CTRL.STAT_MODE).
...........continued
Field Name Description Width
...........continued
Field Name Description Width
REPLACE_DMAC_ENA When enabled, the frame’s DMAC is replaced by the DMAC located at 1
address ES0.MAC_IDX in the REW::MAC_TBL table. The DMAC is only
replaced for frames where IFH.ENCAP.TYPE_AFTER = ETH.
0: No action
1: Replace DMAC with MAC obtained from REW::MAC_TBL[MAC_IDX].
QS_INFO This field is not used by the rewriter. It is passed directly to the QSYS and 12
used by the HSCH in QSYS to do frame dependent adjustments of the
scheduling algorithm.
Two 6-bit frame adjustment values used in layer 0 and layer 1 scheduling
elements. Interpreted as two's complement (signed) values:
Bits 5–0: –32 to 31
Bits 11–6: –32 to 31
Each point in the flow assigns one of the possible pipeline actions listed in the following table.
Table 4-239. Pipeline Actions
Frames looped by the analyzer (PIPELINE_ACT = LBK_QS) have their ANA pipeline point changed to a REW
pipeline point, which indicates the point in the rewriter flow in REW where they appear again after being looped. The
following pipeline point translations are handled.
• PIPELINE_PT = ANA_PORT_VOE is changed to REW_PORT_VOE
• PIPELINE_PT = ANA_OU_VOE is changed to REW_OU_VOE
• PIPELINE_PT = ANA_IN_VOE is changed to REW_IN_VOE
Frame forward and counter updates are done based on the assigned pipeline points and actions. In the rewriter,
pipeline points and actions can be assigned by ES0, the MIP, and the VOP.
Frames injected by a CPU can also have pipeline point and actions set in the injection IFH.
The rules listed in the following table apply when pipeline points are updated.
Table 4-240. Pipeline Point Updating Rules
...........continued
Pipeline Action Rule
Inject If a frame is injected in pipeline point N, the forwarding cannot be changed in pipeline point
N-1 and it will not be counted in the N-1 point. Logically the frame does not exist in the N-1
point.
Example: A frame is injected in the REW_VRAP pipeline point (Pipeline point =
REW_VRAP, Action = INJ). The SW-MEP is configured to loop the same frame in the
pipeline point REW_SAT. The frame will not be looped, because it was injected later in the
pipeline (REW_VRAP > REW_SAT). The frame will not be counted by the egress service
statics, which is located in the REW_PORT_VOE pipeline point for injected frames.
Extract If a frame is extracted in pipeline point N the forwarding cannot be changed in pipeline point
N+1 and it will not be counted in the N+1 point. Logically the frame does not exist in the N+1
point.
Example: A frame is extracted in the REW_IN_MIP pipeline point (Pipeline point =
REW_IN_MIP, Action = XTR). The SW-MEP is configured to loop the same frame in
the pipeline point REW_SAT. The frame will not be looped because it has already been
extracted earlier in the pipeline (REW_IN_MIP < REW_SAT). The frame will not be counted
by the egress service statics, which is located in the REW_OU_SW pipeline point for
extracted frames.
To DSM
No action or Copy
F
DA SA Changed Payload C
S
From OQS
To LBK
F Rewriter Copy or Redirect
IFH DA SA Payload C
F
S
IFH(*1) SA(*2) DA(*2) Payload C
S
Discard
Terminate
The following table lists the registers associated with the frame loopback options.
Table 4-241. Frame Loopback Options
Frame forwarding is changed if allowed by the current frame pipeline point and action. For more information, see
4.28.5.1 Rewriter Pipeline Handling.
The following table shows the pipeline action when the frame forwarding is changed.
Table 4-242. Pipeline Action Updates
The pipeline updating rules ensures that a REDIR or DISCARD decision cannot be changed at a later pipeline point.
A COPY may be changed at a later point to either a REDIR or DISCARD action.
• If a copy is changed to a discard, the CPU still receives the frame copy.
• If a copy is changed to a redirection, the CPU receives a copy and the frame is looped back or also sent to the
redirection queue.
When frames are copied or redirected the IFH is updated as described in the following table.
Table 4-243. Loopback IFH Updates
...........continued
IFH Field Condition for Update
MISC.PIPELINE_PT COPY or REDIR. The pipeline point in which the frame forwarding was updated.
MISC.PIPELINE_ACT COPY or REDIR. The pipeline action assigned to the frame.
MISC.CPU_MASK Any operation. A CPU copy may be generated by all forward selections.
FWD.DO_LBK Rewriter loopback (ES0.LOOP_ENA). Set this bit to indicate that the frame has been
looped. Can optionally be used to prevent multiple loops of the same frame.
FWD.UPDATE_FCS VOP. Set by the VOP if a looped frame is edited.
VSTAX.MISC.ISDX VOP. The frame ISDX can be changed by the VOP.
VSTAX.QOS.DP VOP. The DP level can be set to 0 by the VOP.
...........continued
Register Description Replication
PORT_CTRL. Configures the port statistics pipeline point location. Two locations
PORT_STAT_INNER_ENA can be selected:
Outer: The port statistics is located after REW_VRAP. All frames
extracted in REW are not counted. All frames injected in REW are
counted.
Inner: The port statistics is located before REW_IN_MIP. All frames
extracted in REW are counted. All frames injected in REW are not
counted.
This configuration only affects frames that are either injected or
extracted in the rewriter. Other frames are always counted by the
ports statistics regardless of the inner- or outer location.
0: Outer location
1: Inner location
PORT_CTRL.XTR_STAT_PIPE Configures the extraction statistics pipeline point. Frames extracted Port
LINE_PT before the configured pipeline point are not counted by the ESDX
counters.
Configuring the REW_IN_MIP value causes all extracted frames to
be counted.
Default is REW_OU_SW.
PORT_CTRL.INJ_STAT_PIPEL Configures the injection statistics pipeline point. Frames injected Port
INE_PT after the configured pipeline point are not counted by the ESDX
counters.
Configuring the REW_VRAP value causes all injected frames to be
counted.
Default is REW_OU_VOE.
STAT_MODE Description
0 Use ESDX if available:
ESDX is available if ES0 lookup is enabled and if ES0.ESDX_BASE is different
from 0.
Index = ES0.ESDX_BASE +
ES0.ESDX_COSID_OFFSET(IFH.VSTAX.MISC.COSID).
If ESDX is not available:
Index = IFH.VSTAX.MISC.ISDX (only 4096 available)
Regardless of the index selection, the frame color is:
Color = DP_MAP.DP(IFH.VSTAX.QOS.DP)
3 Use VID:
Index = Classified VID (IFH.VSTAX.TAG.VID), if no tag is pushed
Index = VID of outermost pushed tag, if a tag is pushed
Index = REW:VMID:RLEG_CTRL.RLEG_EVID (IFH.DST..ERLEG) if L3.
The frame color is used to count multicast frames:
Color = FRAME.ETH_LINK_LAYER.DMAC (bit 40).
Both port counters and ESDX counters are updated based on pipeline points and actions. For more information, see
4.28.5.1 Rewriter Pipeline Handling. The ESDX statistics pipeline points are fixed.
The following table shows when the counters are updated.
Table 4-246. Egress Statistics Update
...........continued
Counter Condition for Update
ESDX The egress port is a physical port.
The frame matches the parameters configured in CNT_CTRL.STAT_MODE.
For extracted frames (Action: XTR, XTR_UPMEP and LBK_ASM):
The egress statics is located in the pipeline point,
PORT_CTRL.XTR_STAT_PIPELINE_PT. Frames extracted in or after this point are
counted.
For injected frames (Action: INJ, INJ_x, LBK_QS):
The egress statics is located the pipeline point,
PORT_CTRL.INJ_STAT_PIPELINE_PT. Frames injected in or before this point are
counted.
Frame is transmitted (abort = 0).
The pipeline action is different from XTR_LATE_REW.
Each of the two resources provide all the fields listed. Two lookups are done in each resource for every frame. This
generates four mapping results per frame.
The four lookups implement mapping table 0 to 3. The address used for each lookup is controlled by the ES0 actions
MAP_n_KEY and MAP_n_IDX (n = 0:3).
A mapping table address consists of two parts:
• A base index: ES0.MAP_n_IDX. This controls the MSB part of the table address.
• One of 15 different keys that use classified frame properties to generate the LSB of the table address. For more
information about each key, see Table 4-235.
The following figure shows the mapping table functionality.
Figure 4-91. Mapping Tables
The mapping tables provide a flexible way to update frame fields. The following example shows how to configure and
use mapping table 1.
Update PCP in VLAN tag A using mapping table 1. Use frame DSCP as index:
• Enable ES0
• Program an ES0 key
• Set ES0 action TAG_A_PCP_SEL to 5 for selected key
• Set ES0 action PUSH_OUTER_TAG = 1
• Update PCP by using Table 1:
Select a base address in resource A. Base address 256 is used in this example
Set ES0 action MAP_1_IDX = 256/8 = 32
• Use frame DSCP as key: Set ES0 action MAP_1_KEY = 2
• Program the PCP mapping in table 1: Addr = 256 to 256 + 63 (all DSCP values)
• Write REW:MAP_RES_A:$Addr/MAP_VAL_A PCP_VAL <New PCP>
Frame DSCP is used as key in this example. If the DSCP is not available (frame is non IP), the mapping is
considered invalid and the PCP value is selected using this fallback method:
• Use mapping table 1 if key is valid, otherwise use mapping table 0.
• Use mapping table 0 if key is valid, otherwise use a fixed value.
In the example, a PCP value from table 0 is used instead for non IP frames, if the table 0 key is valid. Otherwise, the
ES0 action PCP_A_VAL is used. Mapping tables 2 and 3 have the same functionality.
Mapping tables 0 and 1 share the 4096 addresses available in Resource A. Table 2 and 3 share 4096 addresses in
Resource B.
TAG_CTRL:TAG_CFG_OBEY_WAS_T Controls how port tags are added. If this bit is set, Ports
AGGED the IFH field VSTAX.TAG.WAS_TAGGED must be
1 before a port tag is added to a frame.
PORT:PCP_MAP_DEx Mapping table. Maps DP level and QoS class to Per port per Q per
new PCP values. DE
PORT:DEI_MAP_DEx Mapping table. Maps DP level and QoS class to Per port per Q per
new DEI values. DE
The total number of popped tags (tot_pop_cnt) is calculated as described by the pseudo code below:
# rew_push_cnt: Number of Q-tags pushed by ES0 actions, see Table 193, page 377 for details
The analyzer can only push tags controlled by VACP_ES0 actions. The VCAP_ES0 action hit by a frame will
determine how the pushed tags are formatted. If VCAP ES0 is disabled, the tag pushing cannot be controlled by the
IFH.TAGGING.PUSH_CNT field.
The default value of IFH.TAGGING.PUSH_CNT is 0. The analyzer controls the value of this IFH field through VCAP
CLM.
The number of tags pushed by the ES0 actions (rew_push_cnt) and the ES0 action POP_VAL (see pseudo
code) determines how many additional tags that can be pushed by the analyzer. When the analyzer is used to
modify the push count, the ES0 push actions should be configured as shown in the below table. Although it is
possible to push tags combinations like A+C or B+C or C, that would be a misconfiguration in combination with
IFH.TAGGING.PUSH_CNT.
PUSH_OUTER_TAG = 1 1 0 1 TAG_A
PUSH_INNER_TAG = 0 1 2 TAG_A, TAG_B
PUSH_CUSTOMER_TAG = 0
2 or 3 3 TAG_A, TAG_B, TAG_C
rew_push_cnt is 1 when
TAG_A is pushed
Note:
1. rew_push_cnt is the result of the settings in this column.
Q-tags are always pushed in the following order:
• Total push count = 1: Push TAG A (outer).
• Total push count = 2: Push TAG A (outer), TAG B (inner).
• Total push count = 3: Push TAG A (outer), TAG B (inner), TAG C (customer).
Two additional tags can be added for mirrored or GCPU frames. These special tags will always be the outermost
ones.
Special tags(1)
PUSH_OUTER_TAG = 1 Don not care ES0 tag A is pushed as outer tag. No inner tag is
pushed unless this is requested by the analyzer by setting
PUSH_INNER_TAG = 0
IFH.TAGGING.PUSH_CNT
PUSH_OUTER_TAG = 2 Don not care Port tag is pushed as outer tag. This overrules port settings in
TAG_CFG. No inner tag.
PUSH_INNER_TAG = 0
PUSH_OUTER_TAG = 3 Don not care No outer tag is pushed unless this is requested by the
analyzer by setting IFH.TAGGING.PUSH_CNT.
PUSH_INNER_TAG = 0
...........continued
ES0_ACTION TAG_CFG Tagging Action
PUSH_OUTER_TAG = 0 Controls port tag Port tag is pushed according to TAG_CFG as outermost tag.
The following options are available:
PUSH_INNER_TAG = 1
• Tag all frames with port tag.
• Tag all frames with port tag, except if classified VID = 0 or
classified VID = PORT_TAG_DEFAULT.PORT_TCI_VID.
• Tag all frames with port tag, except if classified VID = 0.
• No port tag.
TAG_CTRL.TAG_VID_CFG select between classified- or
fixed-port VID.
ES0 tag B is pushed as inner tag.
ES0 tag B is effectively the outer tag if the port tag is not
pushed.
PUSH_OUTER_TAG = 2 Don not care Port tag is pushed as outer tag. This overrules port settings in
TAG_CFG.
PUSH_INNER_TAG = 1
ES0 tag B is pushed as inner tag.
PUSH_OUTER_TAG = 3 Don not care No outer tag is pushed. This overrules port settings in
TAG_CFG.
PUSH_INNER_TAG = 1
ES0 tag B is pushed as inner tag.
ES0 tag B is effectively the outer tag, because no outer tag is
pushed.
Tag C is controlled separately and will always be the inner most tag.
All combinations of tags A to C are allowed.
PUSH_CUSTOMER_TAG = Controls port tag Does not push customer tag (tag C) unless this is requested
0 by the analyzer by setting IFH.TAGGING.PUSH_CNT.
PUSH_CUSTOMER_TAG = Controls port tag Push tag C if IFH.VSTAX.TAG.WAS_TAGGED = 1.
1
PUSH_CUSTOMER_TAG = Controls port tag Push tag C if IFH.VSTAX.TAG.WAS_TAGGED = 0.
2
PUSH_CUSTOMER_TAG = Controls port tag 3: Push tag C if UNTAG_VID_ENA = 0 or (C-
3 TAG.VID ! = VID_C_VAL) C-TAG.VID is controlled by
TAG_C_VID_SEL.
UNTAG_VID_ENA Controls port tag See PUSH_CUSTOMER_TAG = 3.
D
TPID PCP E VID
I
The port tags (ES0.PUSH_OUTER_TAG = [0[2]), the ES0 tags A to C, and the special tags have individual
configurations.
DSCP actions from ES0 override any remarking done by the port.
DSCP_REMAP:DSCP_REMAP Full one-to one DSCP remapping table common for all None
ports.
...........continued
Register Description Replication
Bytes 7-4:
E
TPID EPCP D ingr_ECID_base
EI
The R-TAG can be placed as outer, middle or inner tag. The rewriter will identify the R-TAG position and recognize
up to three VLAN tags and one R-TAG in the frame. The analyzer has a similar functionality and will set the
IFH.TAGGING.RTAG_ETAG_AVAIL field when a R-TAG is found in any of the positions described below.
The possible R-TAG locations in both ingress- and egress frames are:
• Triple tagged:
DA-SA-QTAG-QTAG-QTAG-ETYPE. RTAG position = 0. No RTAG present (IFH.TAGGING.RTAG_ETAG_AVAIL
= 0).
DA-SA-RTAG-QTAG-QTAG-ETYPE. RTAG position = 1 (outer).
DA-SA-QTAG-RTAG-QTAG-ETYPE. RTAG position = 2 (middle).
DA-SA-QTAG-QTAG-RTAG-ETYPE. RTAG position = 3 (inner).
• Double tagged:
DA-SA-QTAG-QTAG-ETYPE. RTAG position = 0. No RTAG present (IFH.TAGGING.RTAG_ETAG_AVAIL = 0).
DA-SA-RTAG-QTAG-ETYPE. RTAG position = 1 (outer).
DA-SA-QTAG-RTAG-ETYPE. RTAG position = 2 (middle).
• Single tagged:
DA-SA-QTAG-ETYPE. RTAG position = 0. No RTAG present (IFH.TAGGING.RTAG_ETAG_AVAIL = 0).
DA-SA-RTAG-ETYPE. RTAG position = 1 (outer).
The R-TAG operations done by the rewriter are controlled by two ES0 actions ES0.ACTION.RTAG_POP_ENA and
ES0.ACTION.RTAG_PUSH_SEL. For more details, see, 4.28.5 VCAP_ES0 Lookup.
The R-TAG cannot be popped unless all VLAN tags in front of it are also popped. If the R-TAG is not popped it
will remain unmodified in the egress frame regardless of the RTAG_PUSH_SEL configuration. The R-TAG is always
popped if possible when RTAG_POP_ENA = 1 and IFH.RTAG_ETAG_AVAIL = 1.
Transparent R-TAG mode (no change to incoming frame in terms of R-TAG) is achieved by not configuring anything
except COMMON_CTRL.RTAG_TPID_ENA. The transparent R-TAG is always pushed in the innermost tag position if
VLAN tags are also pushed or remain in position if all VLAN tags in front of it is not popped.
The rewriter will push a new R-TAG into the egress frame when either the existing R-TAG is popped or when the
ingress frame does not contain an R-TAG (IFH.RTAG_ETAG_AVAIL = 0). A maximum of 3 tags in total can be
pushed by ES0. A pushed R-TAG will replace a pushed VLAN tag in the position configured by RTAG_PUSH_SEL.
The possible R-TAG push positions are outer (1), middle (2), or inner (3).
RTAG_POP_ENA and RTAG_PUSH_SEL can be set at the same time, effectively replacing the SEQ_NO sequence
number field with a new sequence number.
...........continued
Register Description Replication
VSTAX_PORT_GRP_CFG. Controls whether forwarding modes specific 2
VSTAX_MODE to VStaX AF are translated to BF forwarding
modes.
If set to 0, the following translation is performed:
fwd_logical -> fwd_lookup
fwd_mc -> fwd_lookup
If set to 1, no translation is performed.
Translation is only required for advanced
forwarding switches operating in a basic
forwarding stack.
GCPU_CFG.GCPU_DO_NO Used when GCPU frames are forwarded to a front port. Per CPU Q
T_REW
Frames are not modified when forwarded to the GCPU except for
the optional tags configured in GCPU_CFG.GCPU_TAG_SEL.
GCPU_CFG.GCPU_TAG_SE The destination port type determines the functionality. Per CPU Q
L
When a GCPU frame is forwarded to a stack port: Force a change of
the VSTAX.TAG to the configured values in GCPU_TAG_CFG:0.
When a GCPU frame is forwarded to a front port:
Optionally add one or two Q-tags to the frame. The tags are
configured using GCPU_TAG_CFG.
GCPU_CFG.GCPU_FWD_M Used when GCPU frames are forwarded to a stack port. Per CPU Q
ODE
Configure forward mode of GCPU frames on stack ports by selecting
value of VSTAX.GEN.FWD_MODE.
...........continued
Register Description Replication
CPU_CFG.GCPU_UPSPN Used when GCPU frames are forwarded to a stack port. Per CPU Q
CPU QUEUE to be used as destination queue for global
CPU transmission. The value depends on configuration and the
value of GCPU_CFG.GCPU_FWD_MODE. Controls the value of
VSTAX.DST.DST_PN.
GCPU_CFG.GCPU_UPSID Used when GCPU frames are forwarded to a stack port. Per CPU Q
UPSID to be used as destination in the VStaX header. Sets
VSTAX.DST.DST_UPSID to configured value.
The IFH.MISC.CPU_MASK field is used to select the GCPU forwarding configuration. If multiple bits
are set in this mask, the most significant bit is always used to control the GCPU forwarding. The
ANA_AC::CPU_CFG.ONE_CPU_COPY_ONLY_MASK register is used to control how the CPU_MASK is set before
the frame enters the rewriter. If the CPU_MASK field is 0, all GCPU forwarding is disabled.
GCPU frame forwarding must be enabled in the OQS per CPU queue using the
QFWD::FRAME_COPY_CFG.FRMC_PORT_VAL registers.
4.28.13 IP-in-IPv4
The rewriter supports encapsulation and decapsulation of IP-in-IPv4 frames sent to the VD2 loopback port. The
analyzer uses fields in the IFH to control which IP-in-IPv4 operations the rewriter must do to each frame on the VD2
interface. See 4.2.2 Internal Frame Header Layout for more details.
The frame is identified as an IP-in-IPv4 frame when the IFH field IFH.ENCAP.TYPE_AFTER_POP is CW and the first
four bits of frame data located at position IFH.ENCAP.POP_W16_CNT*2 is either 4 (inner IPv4 frame) or 6 (inner
IPv6 frame). The IFH.ENCAP.POP_W16_CNT field points to the inner IP header.
The IP-in-IPv4 flow requires that frames are looped back to the analyzer on the VD2 loopback port. The rewriter will
only do the encapsulation and decapsulations rewrites when frames are sent to the VD2 interface.
IP-in-IPv4 decapsulation:
• The rewriter pops frame data located in front of the inner IP header and then adds a DMAC, SMAC and ETYPE
to the frame. The version field of the inner IP header determines the value of ETYPE. This will decapsulate an
IP-in-IPv4 frames.
• The analyzer replaces the inserted DMAC and SMAC when it receives the frame from the VD2 interface.
IP-in-IPv4 encapsulation:
• The rewriter pops frame data located in front of the inner IP header and then adds an outer IPv4 header to the
frame when IFH.ENCAP.ENCAP_ID_RLEG_MODE = 1 and IFH.ENCAP.ENCAP_ID_RLEG > 0.
• The rewriter also adds DMAC, SMAC and ETYPE (0x0800) in front of the outer IPv4 header. This will create an
IP-in-IPv4 frame.
The IFH.ENCAP.ENCAP_ID_RLEG field is used to lookup the outer IPv4 header in the ENCAP_IP4 table. The
following table shows the IP-in-IPv4 encapsulation configuration registers.
Table 4-256. IP-in-IPv4 Encapsulation Configuration Registers
IPV4_ENCAP_CFG The encapsulation table can be used to control IP-in-IPv4 encapsulations. 1,024
Must be set to 1 when an entry is used for IP-in-IPv4 encapsulation
SIP_CFG Source IPv4 address for outer IPv4 header in IP-in-IPv4 frames. 1,024
DIP_CFG Destination IPv4 address for outer IPv4 header in IP-in-IPv4 frames. 1,024
The IFH.DST.L3_[MC|UC]ROUTING.ERLEG fields are used to select the VID of routed frames using the Egress
Mapped VLAN (VMID) configuration registers listed in the following table.
MAC_TBL_CFG. Number of bits in frame's MAC counting from LSB which 128
MAC_REPL_OFFSET_VAL are not replaced if replacing the MAC address. For
example, if set to 16, the 16 LSB bits in the frame's
MAC address are not replaced while the 32 MSB bits are
replaced with corresponding 32 bits from the associated
MAC address.
EACL_MAC_HIGH. MAC address bits 47:32 used for EACL MAC translation 128
EACL_MAC_HIGH
EACL_MAC_LOW. MAC address bits 31:0 used for EACL MAC translation 128
EACL_MAC_LOW
...........continued
Register Description Replication
MIRROR_PROBE_CFG.REMOTE_MI Enables encapsulation of mirrored frames. One or
RROR_CFG two Q-tags (Q-in-Q) or the encapsulation table can
be used. In tag mode, the VLAN tags are added to
the outer most position after the SMAC.
In encapsulation mode, an entry in the ENCAP
table is used for encapsulation. This overrides any
encapsulation selected by ES0 for the frame.
The device supports mirroring frames from either Rx ports (ingress mirror) or Tx ports (egress mirror). Frames either
received on a port (Rx mirror) or frames sent to a port (Tx mirror) are copied to a mirror destination port.
For Tx mirroring, the rewriter rewrites the frame sent to the mirror destination port, exactly as the original frame copy
is rewritten when forwarded to the mirror probe port. The mirror probe port number must be configured in the rewriter
using register MIRROR_TX_PORT.
For Rx mirroring, the rewriter makes no modifications to the frame, so an exact copy of the original frame as received
on the mirror probe port (ingress port) is sent out on the mirror destination port.
The analyzer controls both Rx and Tx mirroring. For more information, see 4.22.5 Mirroring. The rewriter obtains
mirror information for the frame from the internal frame header. IFH.FWD.MIRROR_PROBE indicates if the frame is a
mirror copy and if so, to which of three mirror probes the frame belongs. Encoding is as follows.
• MIRROR_PROBE = 0: Frame is not a mirror copy
• MIRROR_PROBE = 1: Frame is mirrored using mirror probe set 1
• MIRROR_PROBE = 2: Frame is mirrored using mirror probe set 2
• MIRROR_PROBE = 3: Frame is mirrored using mirror probe set 3
In addition, the IFH.FWD.RX_MIRROR bit indicates if the frame is Rx mirrored (1) or Tx mirrored (0).
When mirroring traffic to a device that is not directly attached to the device, it may be required to push one or two
VLAN tags to mirrored frame copies as to not violate general VLAN membership for the mirror destination port. These
VLAN tags are called “remote mirror VLAN tags” and can be configured individually for each mirror probe set. When
enabled, the remote mirror VLAN tags are pushed onto all mirrored traffic by the rewriter whether it is an Rx mirrored
frame or a Tx mirrored frame.
For Tx mirroring, care must be taken if maximum frame expansion is already required by the rewriter for the TX mirror
probe port. In this case enabling remote mirror VLAN tags or encapsulation would add an extra frame expansion,
which can cause frame disruption on the mirror destination port. It is not possible to add remote mirror encapsulation
to a frame that already has encapsulation added by ES0. In this case the remote mirror encapsulation ID will replace
the ID selected by the ES0.ENCAP_ID action.
Insertion of the IFH can be configured on any port, but it is intended for frames forwarded to the internal CPU and the
NPI port (external CPU). When IFH insertion is enabled on a given port, all frames leaving that port contain the IFH. It
is possible to change the IFH configuration for Virtual devices VD0 to VD2 and the CPU ports, but this should not be
done for normal operation.
The following table lists the registers for configuring the insertion of extraction IFH into the frame.
Table 4-261. IFH Configuration Registers
KEEP_IFH_SEL = 0
Rewrite frame
KEEP_IFH_SEL = 1 F
IFH DA SA Payload C
F S
IFH DA SA Payload C Rewriter
S F
KEEP_IFH_SEL = 2 Microchip ET
DA SA IFH DA SA Payload C
& protocol ID
S
KEEP_IFH_SEL = 3 F
Encapsulation
IFH DA SA Payload C
(ES0.ENCAP_ID)
S
Note that for KEEP_IFH_SEL = 1, the frames transmitted on external ports are not valid Ethernet frames, because
the extraction IFH precedes the DMAC. This format cannot be used for forwarding to a standard Ethernet device. The
CPU ports, VD0 and VD1 keep the IFH and use KEEP_IFH_SEL = 1.
The frame formats using KEEP_IFH_SEL = 2 or KEEP_IFH_SEL = 3 are primarily used on a port that is directly
attached to an external CPU. When the IFH is included using these frame formats, the IFH is included in the frame’s
FCS calculation and a valid Ethernet frame is transmitted.
4.29 Disassembler
This section provides information about the disassembler (DSM) block. The disassembler is mainly responsible
for disassembling cells into Taxi words and forwarding them to the port modules. In addition, it has several other
responsibilities, such as:
• MAC Control sublayer PAUSE function with generation of PAUSE frames and stop forwarding traffic on
reception of PAUSE frames
• Aging of frames that are stopped by flow control
• Controlling transmit data rate according to IEEE802.3ar
• Handle preemptable traffic
The following table lists replication terminology.
Table 4-262. Replication Terminology
Before a buffer is flushed, ensure that no data is forwarded to this port by stopping the QSYS forwarding
and disabling FC/PFC so that frames waiting for transmission will be sent. FC can be disabled in
DSM::RX_PAUSE_CFG.RX_PAUSE_EN.
Programming sequence:
1. Write CAL_PGM_ENA to 1.
2. For each slot i in 0 to L-1 (where L is the length of the desired calendar) write first CAL_IDX to i and then
PGM_VAL to the Taxi index that the slot is allocated to. In order to leave a slot empty, write PGM_VAL to a
Taxi index that is not assigned to a port.
3. Write CAL_PGM_ENA to 0.
DSM::MAC_CFG.TX_PAUSE_VAL defines the timer value for generated PAUSE frames. If the state does not change
by half of the time specified in this bit group, a new PAUSE frame is generated.
To generate a zero value pause frame when the reason for pausing has disappeared, set
DSM::MAC_CFG.TX_PAUSE_XON_XOFF to 1.
The DMAC of a generated pause frame is always the globally assigned 48-bit multicast address 01 80 C2 00 00 01.
The SMAC of a generated pause frame is defined by DSM::MAC_ADDR_BASE_HIGH_CFG.MAC_ADDR_HIGH and
DSM::MAC_ADDR_BASE_LOW_CFG.MAC_ADDR_LOW.
To enable half-duplex flow control, DSM::MAC_CFG.HDX_BACKPRESSURE must be set to 1. In this mode, the
disassembler forwards the FC status to the port modules, which then collides incoming frames.
If more than one of the rate limiting modes previously mentioned are enabled, the additional inter-packet
gap is the maximum of each of the values generated by one of the enabled modes. However, if only the
frame overhead and the data payload data rate modes are enabled, the additional inter-packet gap can be
calculated as the sum of the additional gaps retrieved from each of the two modes. To enable the function, set
DSM::TX_RATE_LIMIT_MODE.TX_RATE_LIMIT_ACCUM_MODE_ENA to 1.
If the preamble of a frame is not to be counted as payload, set DSM::TX_RATE_LIMIT_MODE.PAYLOAD_CFG to 0.
In addition, if parts of the frame are to be seen as header
and not counted as payload, set DSM::TX_RATE_LIMIT_MODE.PAYLOAD_CFG to 1.
DSM::TX_RATE_LIMIT_HDR_CFG.TX_RATE_LIMIT_HDR_SIZE defines how much of the frame that
should be considered as header. Note that this register is global for all ports enabled by
DSM::TX_RATE_LIMIT_MODE.PAYLOAD_CFG. The payload configuration applies to Payload Data Rate and Frame
Rate mode.
To enable bandwidth limiting down to very low data rates, the calculated IPG can be scaled. In other words, multiplied
by a power of 2 in the range 2 to 1,024. By this it is possible to limit the data rate down to 2.3% (for 1536 byte
frames).
If one or both of BUF_OFLW_STICKY and BUF_UFLW_STICKY sticky bits are set, the port module was set up
erroneously.
TX_RATE_LIMIT_STICKY is set when an IPG of a frame is increased due to one of the three rate limiting modes.
Register Description
HSIOWRAP::SYNC_ETH_CFG Configures recovered clock output. Replicated per recovered
clock output.
CLKGEN:LCPLL1:LCPLL1_SYNCE_CFG Additional LCPLL recovered clock configuration.
SD_LANE[0-32]:SYNC_ETH_CFG Additional recovered clock configurations. Replicated per
SERDES.
The recovered clock outputs are mapped on GPIO overlaid functions. For more information, see 5.10.8.1 GPIO
Overlaid Functions.
It is possible to recover receive timing from any of the serDes ports. For aggregated port interfaces line QSGMII and
USXGMII links, timing must be recovered in the PHY, because the QSGMII/USXGMII link retimes during aggregation
of data streams.
The HSIOWRAP:SYNC_ETH_CFG register provides per recovered clock divider configuration, allowing division
before sending out clock frequency.
The recovered clock outputs also have individual divider configuration (through SD_LANE[0-32]:SYNC_ETH_CFG) to
allow division of SerDes receive frequency. Note that division with 32/66 will result in a gapped clock that normally is
not recommended for SyncE operation.
The recovered clocks are single-ended outputs. The suggested divider settings in the following tables are selected
to make sure to not output too high frequency via the input and outputs. A maximum frequency of 161.33 MHz is
allowed.
Table 4-278. Recovered Clock Settings for 1 GE or Lower
...........continued
Lane Output Frequency Register Settings for Output n, Lane m
0–32 31.25 MHz SYNC_ETH_CFG[n].RECO_CLK_ENA=1,
SYNC_ETH_CFG[n].SEL_RECO_CLK_DIV=1, and
SYNC_ETH_CFG[n].SEL_RECO_CLK_SRC=(DEV+1)
SD_LANE[m]:SYNC_ETH_CFG:SYNC_ETH_SD_CFG.
SD_RECO_CLK_DIV=0
It is possible to automatically squelch the clock output when the device detects a loss of signal or PCS loss of lock
on an incoming data stream. This can be used for failover in external timing recovery solutions. Auto squelching is
enabled by setting SD_LANE[n]:SYNC_ETH_CFG:SYNC_ETH_SD_CFG.SD_AUTO_SQUELCH_ENA.
The signal detect pin can also be used to squelch the recovered clock. This is enabled by setting
SD_LANE[n]:SD_CFG:SD_CFG.SD_ENA and should be used when the ports are connected to optical modules.
When squelching the clock, it will stop when detecting loss of signal (or PLL lock). The clock will stop on either on
high or low level.
...........continued
Register Description Replication
DEVCPU_GCB::VRAP_ACCESS_STAT VRAP access status. None
The VRAP engine processes incoming VRAP frames that are redirected to the VRAP CPU extraction queue by
the basic classifier. For more information about the VRAP filter in the classifier, see 4.14.1.11 CPU Forwarding
Determination.
The VRAP engine is enabled by allocating one of the two CPU ports as a dedicated VRAP CPU
port (DEVCPU_QS:XTR:XTR_GRP_CFG.MODE and DEVCPU_QS:INJ:INJ_GRP_CFG.MODE). The VRAP CPU
extraction queue (ANA_CL::CPU_PROTO_QU_CFG.CPU_VRAP_QU) must be mapped as the only CPU extraction
queue to the VRAP CPU port (QFWD:SYSTEM:FRAME_COPY_CFG.FRMC_PORT_VAL). In addition, the VRAP
CPU port must enable the use of IFH without prefix and without preamble (ASM::PORT_CFG)
The complete VRAP functionality can be enabled automatically at chip startup by using special chip boot modes. For
more information, see 5.1 VCore Configurations.
VRAP request frames can optionally be VLAN tagged with one VLAN tag.
The EtherType = 0x8880 and the Ethernet Protocol Identifier (EPID) = 0x0004 identify the VRAP frames. The
subsequent VRAP header is used in both request and response frames.
The VRAP commands included in the request frame are the actual register access commands. The VRAP engine
supports the following five VRAP commands:
• READ: Returns the 32-bit contents of any register in the device.
• WRITE: Writes a 32-bit value to any register in the device.
• READ-MODIFY-WRITE: Does read/modify/write of any 32-bit register in the device.
• IDLE: Does not access registers; however, it is useful for padding and identification purposes.
• PAUSE: Does not access registers, but causes the VRAP engine to pause between register access.
Each of the VRAP commands are described in the following sections. Each VRAP request frame can contain multiple
VRAP commands. Commands are processed sequentially starting with VRAP command 1, 2, and so on. There are
no restrictions on the order or number of commands in the frame.
31 28 27 24 23 0
Version:
Set to 0x1 in VRAP response frames.
VRAP request frames are ignored if Version <> 1
Flags:
4 bits are used for Flags. Only one flag is defined:
R Rsv
3 0
R: 0=Request, 1=Response
Rsv: Set to 0 in VRAP response frames and ignored in VRAP
request frames.
Reserved:
Set to 0 in VRAP response frames and ignored in VRAP
request frames.
Request: Response:
Register address, bits 31:2 01 Register read data
32 bits 32 bits
Request:
Register address, bits 31:2 10 Register write data
32 bits 32 bits
Request:
Register address, bits 31:2 11 Register write data Overwrite mask
Request: Response:
32 bits 32 bits
Request:
32 bits
LPI
EMPTY
Port queue(s) in
LPI OQS exceed
NONEMPTY FWD_PRESS_THRES
watermark
EEE_TIMER_AGE passed
OR
Port queue(s) in OQS exceed
FWD_PRESS_THRES watermark
ACTIVATING
EEE_TIMER_WAKEUP passed
ACTIVE
NONEMPTY
Transmitting
EEE_TIMER_HOLDOFF passed
For ports that are shaped to a low bandwidth, the forward pressure watermark in OQS should be set a low value,
such that it is mainly the port shaping that controls when to exit LPI.
CPU extracted frames include an IFH (36-bytes) placed in front of the DMAC. The IFH contains relevant side band
information about the frame, such as the frame’s classification result (VLAN tag information, DSCP, QoS class) and
the reason for sending the frame to the CPU. For more information about the contents of the IFH, 4.2 Frame
Headers.
4.34.1.2 Disassembler
The disassembler (DSM) stores the congestion status per queue (per port, per priority) and generates PFC PDU
based on the information. For more information about the available PFC configuration registers, see 4.29.4.3 PFC
Pause Frame Generation.
The following figure shows the algorithm controlling the generation of PFC frames for each port. The 8-bit congestion
state from the queue system is fc_qs. TX_PAUSE_VAL and PFC_MIN_UPDATE_TIME are configurable per port. The
TX_PAUSE_VAL configuration is shared between LLFC and PFC.
When a priority gets congested, a PFC PDU is generated to flow control this priority. When half of the signaled timer
value has expired, and the queue is still congested, a new PFC PDU is generated. If other priorities get congested
while the timer is running, then PFC_MIN_UPDATE_TIME is used to speed up the generation of the next PFC PDU.
The timer is shared between all priorities per port.
Every PFC PDU signals the flow control state for all priorities of the port. In other words, the priority_enable_vector of
the PFC PDU is always set to 0x00ff, independent of whether or not a priority is enabled for flow control. For disabled
priorities, the pause time value is always set to 0.
Figure 4-105. PFC Generation per Port
FC Inactive
fc_qs != 0x00
&&
(timer == 0 || !PFC_XOFF_MIN_UPDATE_ENA)
fc_qs == 0x00
&& PFC Sent
timer < (TX_PAUSE_VAL – fc_qs unchanged
PFC_MIN_UPDATE_TIME)
fc_qs != 0x00
fc_qs == fc_txed fc_qs != fc_txed &&
timer < (TX_PAUSE_VAL –
PFC_MIN_UPDATE_TIME)
PFC Sent
fc_qs changed
4.34.1.3 Statistics
The number of transmitted pause frames is counted in the TX_PAUSE_CNT counter and shared with the counter for
transmitted link-layer flow control pause frames. Statistics are handled locally in the DEV10G port modules. For other
port module types, the assembler handles the statistics.
4.34.2.1 Assembler
The assembler identifies PFC PDUs and stores the received pause time values in a set of counters. The counters are
decremented according to the link speed of the port. The assembler signals a stop indication to the queue system for
all (port, priority) with pause times different from 0.
For information about the PFC configuration of the assembler, see 4.9.4 Setting Up PFC.
4.34.2.3 Statistics
PFC pause frames are recognized as control frames and counted in the RX_UNSUP_OPCODE_CNT counter.
Statistics are handled locally in the DEV10G port modules. For other port module types, the assembler handles the
statistics.
Ethernet Switch A
0 1 2 3 4 5 6 7 8
The following table shows the configuration of the VLAN table of switch A. The VLAN_PORT_MASK bit shows only
the value for the ring ports. For the other ports (ports 2-6), the VLAN_PORT_MASK bits are assumed to be 0.
Table 4-283. VLAN Table Configuration Before APS
...........continued
Address (VID) TUPE_CTRL VLAN_PORT_MASK VLAN_FID
10–19 0x03 0x0083 10–19
31–32 0x01 0x0003 31–32
20–30, 40–50 0x02 0x0080 20–30, 40–50
VID 4–9 and 31–32 are only used by ring 1, so only bit 0 is set in TUPE_CTRL. VLAN_PORT_MASK includes the
two ring ports of ring 1, port 0, and port 1.
VID 10–19 are used by both ring 1 and ring 2, so bit 0 and bit 1 are both set in TUPE_CTRL. VLAN_PORT_MASK
includes the ring ports of ring 1 as well as port 7, used by ring 2. Port 8 is not included, because it is in blocking state.
VID 20–30 and 40–50 are only used by ring 2, so only bit 1 is set in TUPE_CTRL. VLAN_PORT_MASK includes port
7.
In this example, independently learning is used for all VLANs; that is, a separate FID is used for each VID.
To also block reception of frames on any blocking ports, ANA_L3:COMMON:VLAN_FILTER_CTRL must
be configured to include all ring ports. In this example ports 0,1,7 and 8 must be set in
ANA_L3:COMMON:VLAN_FILTER_CTRL.
The following illustration shows the same set up as the previous illustration, but now a link in ring 2 has failed. As a
result, the RPL of ring 2 must be activated, meaning port 8 of switch A must be changed to forwarding state.
Figure 4-107. Ethernet Ring with Failure
Ethernet Switch A
0 1 2 3 4 5 6 7 8
To avoid having to perform write access to the VLAN_PORT_MASKs of each of VID 10–30 and 40–50, VLAN TUPE
can be used instead. The following table lists the VLAN TUPE parameters to reconfigure the VLAN table.
Table 4-284. VLAN TUPE Command for Ring Protection Switching
...........continued
Field Value Comment
TUPE_START 1 Starts VLAN TUPE. The device clears TUPE_START when
TUPE is completed.
After the VLAN TUPE command is completed, the VLAN table is updated as shown in the following table.
Table 4-285. VLAN Table Configuration After APS
The TUPE_CTRL field is 16 bits wide, so using the described approach allows up 16 Ethernet rings with VLAN TUPE
assisted protection switching. However, any unused bits in the 65-bit wide VLAN_PORT_MASK can be used in the
same manner as TUPE_CTRL bits. For example, a 24-port switch only using bits 0–23 in the VLAN_PORT_MASK
have an additional 41 bits, which can be used as an extension of the TUPE_CTRL field.
For Ethernet rings using only a few VIDs, there is little to gain in using VLAN TUPE and new values could instead be
written directly to the VLAN_PORT_MASK of the relevant VIDs.
In addition to running the VLAN TUPE commands listed in the previous table, any MAC addresses learned on the
ring ports of ring 2 must be flushed from the MAC table. In the above example, ring 2 uses 32 VIDs for forwarding
traffic. Each of these use a specific FID. In this example, FID is set equal to VID. MAC addresses for up to 16 FIDs
can be flushed at a time, so to flush MAC addresses for 32 FIDs, two flush commands must be executed. The first
flush command is shown in the following table. The second flush command is identical, except SCAN_FID_VAL is set
to 26–30, 40–50.
Table 4-286. MAC Table Flush, First Command
...........continued
Field Value Comment
LRN::COMMON_ACCESS_CTRL.MAC_TABLE_ 1 Start flushing.
ACCESS_SHOT
The device clears
MAC_TABLE_ACCESS_SHOT when
flushing has completed.
If desirable the device can be configured
to generate an interrupt when flushing has
completed. This can be used to trigger any
subsequent flush commands.
Flushing MAC addresses from the MAC table usually takes longer than running VLAN TUPE. As a result, to have the
protection switching complete as fast as possible, start MAC table flushing first, followed by VLAN TUPE. The two will
then run in parallel, and when both have completed, the protection switching is done.
through Ethernet)
(Register access
VCore CPU IC(2)
Card Controller
PCIe Inbound
Frame DMA
MIIM Slave
VCore CPU
SI Slave(1)
VRAP
DMA
Vcore CPU L2
UART x 2
memory MIIM Switch Core
Masters × 3 Registers
VCore Shared Bus (SBA)
Card controller
PCIe Outbound
cfg
VCore Secondary
VCore sub-CPU
Bus Access/Arbiter 1. When the VCore CPU boots up from the
SI Flash, the SI is reserved as boot
interface and cannot be used by an external
CPU.
VCore Secondary Bus (SBB)
UART
2. The VCore CPU Interrupt Controller has
both a master and a slave port to access
the DDR and to receive message-triggered
TWI Timers x 3 interrupts.
VCore_CF Behavior
G [3:0]
0000 The VCore sub-CPU is enabled and boots from SI (the SI slave is disabled).
0001 The VCore sub-CPU is enabled and boots from SI (the SI slave is disabled).
0010 The VCore sub-CPU is enabled and boots from SI (the SI slave is disabled).
0011 The VCore sub-CPU is enabled and boots from SI (the SI slave is disabled).
0100 The VCore sub-CPU is enabled and boots from SI (the SI slave is disabled).
0101 The VCore sub-CPU is enabled and boots from SI (the SI slave is disabled).
0110 The VCore sub-CPU is enabled and boots from SI (the SI slave is disabled).
0111 The VCore sub-CPU is enabled and boots from SI (the SI slave is disabled).
1000 The VCore CPU is enabled and boots from SI (the SI slave is disabled).
1001 The VCore CPU is enabled and boots from SI (the SI slave is disabled).
1010 The VCore CPU is enabled and boots from SI (the SI slave is disabled).
1011 The VCore CPU is enabled and boots from SI (the SI slave is disabled).
1100 The VCore CPU is enabled and boots from SI (the SI slave is disabled).
1101 Reserved
1110 MIIM slave is enabled (MIIM slave pins are overlaid on GPIOs.) Automatic boot is disabled, and SI
slave is enabled.
The strapping value determines the reset value for the CPU::GENERAL_CTRL and CPU::SUBCPU_SYS_CFG
registers. After startup, the behavior of the VCore system can be modified by changing some of the fields in this
register. Common scenarios are:
• After starting the device with automatic boot disabled, an external CPU can manually
boot the VCore CPU from SI Flash by writing CPU::GENERAL_CTRL.IF_SI_OWNER = 1,
CPU::GENERAL_CTRL.BOOT_MODE_ENA = 1, and CPU::GENERAL_CTRL.VCORE_CPU_DIS = 0. Setting
GENERAL_CTRL.IF_SI_OWNER=1 will disable the SI slave, so the external CPU must be using another
interface than SI.
• After starting the device with automatic boot disabled, an external CPU can manually boot
the VCore sub-CPU from SI Flash by writing CPU::GENERAL_CTRL.IF_SI_OWNER = 1,
CPU::SUBCPU_SYS_CFG.SUBCPU_SYS_RST_FORCE = 1, CPU::SUBCPU_SYS_CFG.SUBCPU_SYS_DIS
Register Description
The VCore CPU runs 1 GHz, the DDR controller runs 625 MHz, and the rest of the VCore system runs at 500 MHz
and 250 MHz.
The VCore can be soft-reset by setting RESET.VCORE_RST. By default, this resets both the VCore CPU and the
VCore system. Refer to CPU::RESET and CPU::RESET_PROT_STAT for a fine-grain soft reset scheme for the
various VCore system components.
The frame DMA must be disabled prior to a soft reset of the VCore system. When a soft reset of the VCore CPU is
issued, the PCIe and DDR controllers are not affected and will continue to operate throughout the soft reset of the
VCore CPU.
The VCore system comprises all the blocks attached to the VCore Shared Bus (SBA), including the PCIe, DDR,
frame DMA, SI slave, and MIIM slave blocks. The device includes all the blocks attached to the Switch Core Register
Bus (CSR) including the VRAP slave. For more information about the VCore System blocks, see Figure 5-1.
The device can be soft-reset by writing SOFT_RST.SOFT_CHIP_RST. The VCore system and CPU can be protected
from a device soft-reset by writing RESET_PROT_STAT.SYS_RST_PROT_VCORE = 1 before initiating soft-reset. In
this case, a chip-level soft reset is applied to all other blocks except the VCore system and the VCore CPU. When
protecting the VCore system and CPU from a soft reset, the frame DMA must be disabled prior to a chip-level soft
reset. The SERDES and PLL blocks can be protected from reset by writing to SOFT_RST.SOFT_SWC_RST instead
of SOFT_CHIP_RST.
The VCore general purpose registers (CPU::GPR) and GPIO alternate modes (DEVCPU_GCB::GPIO_ALT) are not
affected by a soft-reset. These registers are only reset when an external reset is asserted.
Register Description
WDT::WDT_CR Control
The watchdog timer can be configured to generate an interrupt on the first timeout and a reset
on the second, or trigger a reset on the first timeout. After the watchdog timer is enabled, it
must be regularly restarted by software by writing WDT::WDT_CRR = 0x76. Restarting the watchdog
timer automatically clears the interrupt. The reset pulse width is configurable. The watchdog timer
resets the entire VCore system, including itself. The watchdog timer can be protected from its own
reset or from a RESET.VCORE_RST by setting RESET_PROT_STAT.VCORE_WDT_RST_PROT_WDT and
RESET_PROT_STAT.VCORE_RST_PROT_WDT respectively. The components of the VCore system may
be protected from a watchdog timer reset through RESET_PROT_STAT.VCORE_RST_PROT_AMBA and
RESET_PROT_STAT.VCORE_RST_PROT_PDBG. The VCore CPU cannot be protected and is always affected by a
watchdog timer timeout.
The shared bus uses byte addresses, and transfers of 8, 16, 32, 64, or 128 bits can be made. To increase
performance, bursting of multiple words on the shared bus can be performed. Additionally, multiple outstanding
transactions may be invoked to hide latency and maximize performance further. Such an example would be the
Frame DMA using PCIe Outbound to access the memory of an external CPU.
All slaves are mapped into the VCore address space and can be accessed directly by masters on the shared bus.
Two possible mappings of VCore shared bus slaves are boot mode and normal mode.
• Boot mode: Boot mode is active after power-up and reset of the VCore system. In this mode, the SI Flash Boot
Master is mirrored into the lowest address region.
• Normal mode: In normal mode, the DDR controller is mirrored into the lowest address region.
Changing between boot mode and normal mode is done by first writing and then reading
CPU::GENERAL_CTRL.BOOT_MODE_ENA. A change takes effect during the read.
The device supports up to 8 gigabyte (GB) of DDR memory.
Table 5-4. Shared Bus Memory Map
0x000000000 0x000000000
4 GB Mirror SPI 8 GB Mirror DDR3/4
0x100000000 boot Flash
28 GB PCIe 28 GB PCIe
0xFFFFFFFFF 0xFFFFFFFFF
Outbound Outbound
Note:
When the VCore system is protected from a soft reset using
CPU::RESET_PROT_STAT.VCORE_RST_PROT_AMBA, a soft reset will not change shared bus memory mapping.
For more information about protecting the VCore system when using a soft reset, see 5.5.1 Register Access and
Multimaster Systems.
If the boot process copies the SI Flash image to DDR, and if the contents of the SI memory and the DDR memory
are the same, software can execute from the mirrored region when swapping from boot mode to normal mode.
Otherwise, software must be executing from the fixed SI Flash region when changing from boot mode to normal
mode.
The DDR region is available only to VCore CPU and VCore CPU IC. Dedicated hardware resources ensure that
access to DDR is arbitrated only between these two masters with full bandwidth, without being affected by any other
ongoing transactions. Other masters that need to access DDR have to go through the L2 memory of the VCore CPU.
The VCore shared bus arbitrates between masters that want to access the bus. A strict prioritized arbitration scheme
is used to regulate the accesses. The following table shows the priority order of the masters on the VCore shared
bus.
Table 5-6. SBA Master Interfaces Ordered High To Low Priority
Master interface
VCore CPU IC
VCore CPU
PCIe inbound
MIIM slave
SI slave
VRAP
Frame DMA
The VCore shared bus is also accessible from the VCore sub-CPU system. For more information, see 5.11 VCore
Sub-CPU System.
The registers in the 0x600000000 through 0x60FFFFFFF region are physically located inside the VCore System, so
read and write access to these registers is fast (done in a few clock cycles). All registers in this region are considered
fast registers.
Registers in the 0x610000000 through 0x61FFFFFFF region are located inside the switch core; access to registers in
this range takes approximately 500 ns (system clock at 500 MHz). The DEVCPU_ORG and DEVCPU_QS targets are
special; registers inside these two targets are faster; access to these two targets takes approximately 100 ns.
When more than one CPU is accessing registers, the access time may be increased. For more information, see
5.5.1 Register Access and Multimaster Systems.
ACP interface of the processor is used by FDMA or PCI-E end-points for frame injection/extraction. ACP interface
serves to reduce software cache maintenance operations while making coherent requests to shared memory across
multiple masters enabling them to allocate data into L2 cache coherently.
The L2 memory system integrates the snoop control unit (SCU) which maintains coherency between the caches of
both the cores. SCU uses ACE bus interface to access the main memory system (DDR3/4).
Virtual timer 11
Hypervisor timer 10
SPIs are dedicated pins to GIC, which are connected to the various interrupt sources across the chip. The following
table lists the SPI interrupts.
Table 5-8. List Of Spi Interrupts
Reserved 2 Reserved.
MSHC_WAKE 3 eMMC/SD card controller wake interrupt. See 5.10.14 Mobile Storage
Host Controller.
MSHC 4 eMMC/SD card controller interrupt. See 5.10.14 Mobile Storage Host
Controller.
...........continued
Source Name Index Description
FDMA 25 Frame DMA interrupt. See 5.7.4 FDMA Events and Interrupts.
...........continued
Source Name Index Description
PROC_EXT_ERR 146 External error triggered from AXI bus towards processor.
LPIs are special message based interrupts, which are triggered by writes to a memory-mapped register
(GITS_TRANSLATER) in the generic interrupt controller (GIC-500). PCIe end-points target a write to this register
to trigger LPIs to the processor.
Register Description
DEVCPU_GCB::SI_SLV_SS Select which GPIO-mapped SPI_nCS[n] to use when owning the SPI2 interface
The serial interface implements a SPI-compatible protocol that allows an external CPU to perform read and write
access to register targets within the device. Endianness and bit order is configurable, and several options for high
frequencies are supported.
The serial interface is available to an external CPU when the VCore CPU does not use the SI for Flash or external SI
access.
The following table lists the serial interface pins when the SI slave is configured as owner of SI interface through
GENERAL_CTRL.IF_SI_OWNER.
Table 5-10. SI Slave Mode Pins
Alternatively, the SI slave may be configured to own the SPI2 interface (which is mapped on GPIOs) through
GENERAL_CTRL.IF_SI2_OWNER. In this case, DEVCPU_GCB::SI_SLV_SS selects which SPI_nCS[n]/GPIO to use
for the SI slave. For more information, see 5.10.8.1 GPIO Overlaid Functions.
SI_DI is sampled on rising edge of SI_Clk. SI_DO is driven on falling edge of SI_Clk. There are no requirements on
the logical values of the SI_Clk and SI_DI inputs when SI_nEn is asserted or deasserted, they can be either 0 or 1.
SI_DO is only driven during read-access when read-data is shifted out of the device.
The external CPU initiates access by asserting chip select and then transmitting one bit read/write indication, 23
address bits, and 32 bits of write-data (or don't care bits when reading).
With the register address of a specific register (REG_ADDR), the SI address (SI_ADDR) is calculated as:
SI_ADDR = (REG_ADDR & 0x01FFFFFF)>>2
Data word endianness is configured through IF_CTRL[0]. The order of the data bits is configured using IF_CTRL[1].
The following figure shows various configurations for write access. The order of the data bits during writing, as
depicted, is also used when the device is transmitting data during read operations.
Figure 5-3. Write Sequence for SI
SI_nEn
SI_Clk
SI_DO
When reading registers using the SI interface, the device needs to prepare read data after receiving the last address
bit. The access time of the register that is read must be satisfied before shifting out the first bit of read data. For
information about access time, see 5.5.1 Register Access and Multimaster Systems. The external CPU must apply
one of the following solutions to satisfy read access time.
• Use SI_Clk with a period of minimum twice the access time for the register target. For example, for normal
switch core targets (single Master): 1/(2 × 400 ns) = 1.25 MHz (maximum).
• Pause the SI_Clk between shifting of serial address bit 0 and the first data bit with enough time to satisfy the
access time for the register target.
• Configure the device to send out padding bytes before transmitting the read data to satisfy the access time for
the register target. For example, 1 dummy byte allows enough read-time for the SI clock to run up to 16 MHz in
a single master system (see below for calculation).
The device is configured for inserting padding bytes by writing to IF_CFGSTAT.IF_CFG, these bytes are transmitted
before the read data. The maximum frequency of the SI clock is calculated as:
(IF_CFGSTAT.IF_CFG × 8 – 1.5)/access-time. For example, for normal switch core targets (single Master), 1 byte
padding give (1 × 8 – 1.5) / 400 ns = 16 MHz (maximum).
The maximum applicable SI clock frequency depends on the implementation of the external SI master, as well as the
timing characteristics of the SI pins. The SI_DO output is kept tristated until the actual read data is transmitted.
The following figures show the options for serial read access. The following figures show only one mapping of read
data, little endian with most significant bit first. Any of the mappings can be configured and applied to the read data in
the same way as for the write data.
Figure 5-4. Read Sequence for SI_Clk Slow
SI_nEn
SI_Clk
Big endian mode (IF_CTRL[0]=1), Most significant bit first (IF_CTRL[1]=0), no padding (IF_CFGSTAT.IF_CFG=0)
2 2 2 1 1 1 1 1 1 1 1 1 1
SI_DI 2 1 0 9 8 7 6 5 4 3 2 1 0
9 8 7 6 5 4 3 2 1 0
Serial Data
SI_nEn
pause
SI_Clk
Big endian mode (IF_CTRL[0]=1), Most significant bit first (IF_CTRL[1]=0), no padding (IF_CFGSTAT.IF_CFG=0)
2 2 2 1 1 1 1 1 1 1 1 1 1
SI_DI 2 1 0 9 8 7 6 5 4 3 2 1 0
9 8 7 6 5 4 3 2 1 0
Serial Data
SI_nEn
SI_Clk
Big endian mode (IF_CTRL[0]=1), Most significant bit first (IF_CTRL[1]=0), one-byte padding (IF_CFGSTAT.IF_CFG=1)
2 2 2 1 1 1 1 1 1 1 1 1 1
SI_DI 2 1 0 9 8 7 6 5 4 3 2 1 0
9 8 7 6 5 4 3 2 1 0
When dummy bytes are enabled (IF_CFGSTAT.IF_CFG), the SI slave logic enables an error check that sends out
0x88888888 and sets IF_CFGSTAT.IF_STAT if the SI master does not provide enough time for register read.
When using SI, the external CPU must configure the IF_CTRL register after power-up, reset, or chip-level soft reset.
The IF_CTRL register is constructed so that it can be written what ever may be the state of the interface. For more
information about constructing write-data for this register, see the instructions in IF_CTRL.IF_CTRL.
MIIM_SLV_MDIO is sampled or changed on the rising edge of MIIM_SLV_MDC by the MIIM slave interface.
The MIIM slave can be configured to answer on one of the two different PHY addresses using the MIIM_SLV_ADDR
pin. Setting the MIIM_SLV_ADDR pin to 0 configures the MIIM slave to use PHY address 0, and setting it to 1
configures the MIIM slave to use PHY address 31.
The MIIM slave has seven 16-bit MIIM registers defined as listed in the following table.
Table 5-12. MIIM Slave Pins
0 ADDR_REG0 Bits 15:0 of the address to read or write. The address field must be
formatted as word address.
2 DATA_REG0 Bits 15:0 of the data to read or write. Returns 0x8888 if a register
read error occurred.
3 DATA_REG1 Bits 31:16 of the data to read or write. The read or write operation is
initiated after this register is read or written. Returns 0x8888 if read
while busy or a register read error occurred.
4 DATA_REG1_INCR Bits 31:16 of data to read or write. The read or write operation is
initiated after this register is read or written. When the operation
is complete, the address register is incremented by one. Returns
0x8888 if read while busy or a register read error occurred.
5 DATA_REG1_INERT Bits 31:16 of data to read or write. Reading or writing to this register
does not cause a register access to be initiated. Returns 0x8888 if a
register read error occurred.
6 STAT_REG The status register gives the status of any ongoing operations.
Bit 0: Busy. Set while a register read/write operation is in progress.
Bit 1: Busy_rd. Busy status during the last read or write operation.
Bit 2: Err. Set if a register access error occurred.
Others: Reserved.
A 32‑bit switch core register read or write transaction over the MIIM interface is done indirectly because of the limited
data width of the MIIM frame. First, the address of the register inside the device must be set in the two 16-bit address
registers of the MIIM slave using two MIIM write transactions. Afterwards the two 16-bit data registers can be read
or written to access the data value of the register inside the device. Thus, it requires up to four MIIM transactions to
perform a single read or write operation on a register target.
The address of the register to read/write is set in registers ADDR_REG0 and ADDR_REG1. The data to write to
the register pointed to by the address in ADDR_REG0 and ADDR_REG1 is first written to DATA_REG0 and then
to DATA_REG1. When the write transaction to DATA_REG1 is completed, the MIIM slave initiates the switch core
register write.
With the register address of a specific register (REG_ADDR), the MIIM address (MIIM_ADDR) is calculated as:
MIIM_ADDR = (REG_ADDR & 0x01FFFFFF)>>2
The following figure shows a single MIIM write transaction on the MIIM interface.
Figure 5-7. MIIM Slave Write Sequence
// // // //
MDC
// // // //
MDIO 1 0 1 0 1 1 0
// // // //
A read transaction is done in a similar way. First, read the DATA_REG0 and then read the DATA_REG1. As with a
write operation, the switch core register read is not initiated before the DATA_REG1 register is read. In other words,
the returned read value is from the previous read transaction.
The following figure shows a single MIIM read transaction on the MIIM interface.
Figure 5-8. MIIM Slave Read Sequence
// // //
MDC
//
// // // //
MDIO 1 0 1 1 0 Z 0
// // // //
Register Description
An external CPU performs 32-bit reads and writes to the VCore Shared Bus (SBA) through the VCore Access (VA)
registers. In the VCore system, a dedicated master on the shared bus handles VA access. For information about
arbitration between masters on the shared bus, see 5.3.1 VCore Shared Bus Access/Arbitration.
The SBA address is configured in VA_ADDR_LSB and VA_ADDR_MSB. Writing to VA_DATA starts an SBA write
with the 32-bit value that was written to VA_DATA. Reading from VA_DATA returns the current value of the register
and starts an SBA read access. When the read-access completes, the result is automatically stored in the VA_DATA
register.
The VA_DATA_INCR register behaves similar to VA_DATA, except that after starting an access, the VA_ADDR
register is incremented by four (so that it points to the next word address in the SBA domain). Reading from the
VA_DATA_INCR register returns the value of VA_DATA, writing to VA_DATA_INCR overwrites the value of VA_DATA.
Note:
By using VA_DATA_INCR, sequential word addresses can be accessed without having to manually increment the
VA_ADDR_LSB and VA_ADDR_MSB registers between each access.
The VA_DATA_INERT register provides direct access to the VA_DATA value without starting access on the SBA.
Reading from the VA_DATA_INERT register returns the value of VA_DATA, writing to VA_DATA_INERT overwrites
the value of VA_DATA.
The VCore shared bus is capable of returning error-indication when illegal register regions are accessed. If a VA
access results in an error-indication from the SBA, the VA_CTRL.VA_ERR field is set, and the VA_DATA is set to
0x88888888.
Note:
SBA error indications only occur when non-existing memory regions or illegal registers are accessed. This will not
happen during normal operation, so the VA_CTRL.VA_ERR indication is useful during debugging only.
Example: Reading from CPU::GRP[1] through the VA registers. The CPU::GPR[1] register is the second register in
the SBA VCore Registers region. Set VA_ADDR_MSB to 0x to 0x6 and VA_ADDR_LSB to 0x00000004, read once
from VA_DATA (and discard the read-value). Wait until VA_CTRL.VA_BUSY is cleared, then VA_DATA contains the
value of the CPU::GRP[1] register. Using VA_DATA_INERT (instead of VA_DATA) to read the data is appropriate
because this does not start a new SBA access.
Register Description
...........continued
Register Description
The mailbox is a 32-bit register that can be set and cleared atomically using any CPU interface (including the VCore
CPU). The MAILBOX register allows reading (and writing) of the current mailbox value. Atomic clear of individual bits
in the mailbox register is done by writing a mask to MAILBOX_CLR. Atomic setting of individual bits in the mailbox
register is done by writing a mask to MAILBOX_SET.
The device implements two independent semaphores per DEVCPU_ORG target. The semaphores are part of the
Switch Core Register Bus (CSR) block and are accessible by means of the fast switch core registers.
Any CPU can attempt to take a semaphore n by reading SEMA0.SEMA0 or SEMA1.SEMA1. If the result is 1,
the corresponding semaphore was successfully taken and is now owned by that interface. If the result is 0, the
semaphore was not free. After successfully taking a semaphore, all additional reads from the corresponding register
will return 0. To release a semaphore write 1 to SEMA0.SEMA0 or SEMA1.SEMA1.
Note:
Any CPU can release semaphores; it does not have to be the one that has taken the semaphore, this allows
implementation of handshaking protocols.
The current status for a semaphore is available in SEMA0_OWNER.SEMA0_OWNER and
SEMA1_OWNER.SEMA1_OWNER. See register description for encoding of owners.
Software interrupt is generated when semaphores are freed or taken. Interrupt polarity is configured through
SEMA_CFG.SEMA_INTR_POL. Semaphore 0 is hooked up to SW0 interrupt and semaphore 1 is hooked up to
SW1 interrupt. For configuration of software-interrupt, see 5.10.13 Outbound Interrupt Controller.
In addition to interrupting on semaphore state, software interrupt can be manually triggered by writing directly to the
CPU::INTR_FORCE register.
Software interrupts (SW0 and SW1) can be individually mapped to either the VCore CPU or to external interrupt
outputs (to an external CPU).
The defaults for the PCIe controller’s capabilities region and the extended capabilities region are listed in the
registers list’s description of the PCIe registers. The most important parameters are:
• Vendor (and subsystem vendor) ID: 0x101B (Vitesse Semiconductor)
• Device ID: 0xB006, device family ID
• Revision ID: 0x00, device family revision ID
• Class Code: 0x028000, Ethernet network controller
• Two physical functions in EP mode, non-Bridge, INTA, Message Signaled Interrupt (MSI), and MSI(-X) capable
device
By default, both physical functions have the same vendor ID, device ID, revision ID, class, subsystem device ID and
subsystem vendor ID. An external CPU may require that the two PCIe functions have different subsystem device
IDs to load the appropriate driver. These parameters can be customized before enabling the PCIe device. However,
this requires a manual bring-up procedure performed by software running locally on a VCore-IV CPU. The following
table shows the registers for customizing these parameters per function. For more information, see 5.6.2.2 End Point
Mode Initialization.
Table 5-15. Customization of device and vendor ID parameters for PCIe functions
Register Description
The device family 0xB006 covers several register compatible devices. The software drivers must determine the
actual device ID and revision by reading DEVCPU_GCB::CHIP_ID from the device’s memory mapped registers
region.
For information about base address registers, see 5.6.3.1 Base Address Registers.
The device is power management capable and implements PCI Bus Power Management Interface Specification
Revision 1.2. For more information, see 5.6.7 Power Management.
The device is MSI, MSIX capable. Up to four 64-bit outbound messages are supported in endpoint mode. Messages
can be generated on rising and falling edges of each of the two external VCore-IV interrupt destinations. Inbound
MSI/MSI-X messages can trigger interrupts towards the VCore CPU. For more information, see 5.4.2 VCore CPU
Interrupt Controller.
The remote root complex accesses the PCIe configuration space registers of the device through PCIe CfgWr/CfgRd
requests.
The remote root complex can access the MSI-X table of each function through PCIe MRd/MWr requests to BAR4
respectively. The ATU is accessible through BAR4 of Function 0. PCIe memory mappings of the device when acting
as an endpoint are described in 5.6.3.1 Base Address Registers.
The last step in initialization process enables the controller to start link training, and once the link is operational, the
root complex will then start the enumeration process and configure the PCIe endpoints for communication.
Register Description
...........continued
Register Description
Register Description
...........continued
Register Description
The IATU of the PCIE controller supports 16 inbound translation regions with configurable
modes, offsets and sizes per translation. The VCore-IV CPU can access these registers when
CPU:PCIE:PCIE_CFG.PCIE_DBI_ACCESS_ENA = 3.
Table 5-20. IATU Configuration Registers
Register Description
CPU:PCIE:PCIE_CFG.PCIE_DBI_ACCESS_ENA = 3
Register group PCIE_DM_RC:PF0_ATU_CAP
IATU_REGION_CTRL_2_OFF_INBOUND_<idx>.IATU_REGION_CTRL_2_OFF_INBOUND_<idx>_REGION_EN = 0x1
IATU_LWR_BASE_ADDR_OFF_INBOUND_<idx> = <Lower 32 bits of Base start address of region>
IATU_UPPER_BASE_ADDR_OFF_INBOUND_<idx> = <Upper 32 bits of Base start address of region>
IATU_REGION_CTRL_1_OFF_INBOUND_<idx>.IATU_REGION_CTRL_1_OFF_INBOUND_<idx>_INCREASE_REGION_SIZE
= 0x1
IATU_LIMIT_ADDR_OFF_INBOUND_<idx> = <Lower 32 bits of end address of region>
IATU_UPPR_LIMIT_ADDR_OFF_INBOUND_<idx> = <Upper 32 bits of end address of region>
register. Also, required information such as function number, traffic class, vector number need to be configured in
CPU:PCIE_INTR_CFG[0-1].
Register Description
To enable this interrupt, set PCIE_INTR_ENA.INTR_PM_STATE_ENA. The current state of the PCIe device interrupt
towards the VCore-IV interrupt controller is shown in PCIE_INTR_IDENT register (if different from zero, then interrupt
is active). The endpoint can emit PMEs if the PME_En bit is set in the PM Capability Register Set and if the
endpoint is in power-down mode. Outbound request from either SBA or FDMA trigger PME. A change in status for
an enabled outbound interrupt (either legacy or MSI or MSIX) triggers PME. This feature can be disabled by setting
CPU::PCIE_INTR_COMMON_CFG.WAKEUP_ON_INTR_DIS.
In the D3 state, the endpoint transmits a beacon. The beacon function can be disabled and instead drive the WAKE
output using the overlaid GPIO function. For more information, see 5.10.8.1 GPIO Overlaid Functions.
Disable WAKE by setting PCIE_CFG.WAKE_DIS. The polarity of the WAKE output is configured in
PCIE_CFG.WAKE_POL. The drive scheme is configured in PCIE_CFG.WAKE_OE.
Register Description
CPU::FDMA_CH_TRANSLATE Per channel translation offset added to DCB, status and DB pointers.
CPU::FDMA_CH_INJ_TOKEN_TICK_CNT Down-counter per injection channel used for the periodic addition of
tokens.
The FDMA implements two extraction channels, one per switch core port towards the VCore CPU system and a total
of six injection channels. Extraction channels are mapped one-to-one to the CPU ports, while injection channels can
be individually assigned to any CPU port.
NEXT PTR
Reserved INFO
DATA0 PTR
Reserved STATUS0
DATA1 PTR
Reserved STATUS1
DATA2 PTR
Reserved STATUS2
DATA3 PTR
Reserved STATUS3
DATA4 PTR
Reserved STATUS4
DATA5 PTR
Reserved STATUS5
DATA6 PTR
Reserved STATUS6
DATA7 PTR
Reserved STATUS7
DATA8 PTR
Reserved STATUS8
DATA9 PTR
Reserved STATUS9
DATA10 PTR
Reserved STATUS10
DATA11 PTR
Reserved STATUS11
DATA12 PTR
Reserved STATUS12
DATA13 PTR
Reserved STATUS13
DATA14 PTR
Reserved STATUS14
An Ethernet frame can be contained inside one data block (if the data block is big enough) or the frame can be
spread across multiple data blocks. A data block never contains more than one Ethernet frame. Data blocks that
contain start-of-frame and/or end-of-frame have special bits set in their status word in the DCB respectively.
The FDMA makes use of parallel accesses when fetching the data blocks, which may be served out of order. The
FDMA reorders the fetched data before processing and injecting the frames.
Regarding injection channels, frame data inside the data blocks can be placed at any byte offset and have any byte
length, provided that byte offset plus length does not exceed the size of the data block. Byte offset and length is
configured using special fields inside the status word of every data block. Software can specify both when setting up
injection DCBs.
For extraction channels, software should not specify the length of frame data in the data blocks; the FDMA
automatically calculates and updates length for extraction. The block offset is not used in extraction. The FDMA
will write the extracted data starting at the first address of a data block. The available space per data block is the
same for all the data blocks associated to a DCB and it is set in the information word of the DCB itself.
Figure 5-10. Encoding of INFO and STATUS fields of DCB.
File:DS1184-Parallel_FDMA.vsd, Sheet:DCB
BLOCKO is not used for XTR channels, during extraction offset inside datablock is always zero.
As mentioned before, the amount of data blocks that can be associated to a DCB is configurable. Moreover, a
DCB does not have to use all of them. The FDMA processes the data-block related fields of a DCB in-order, and
terminates the processing of a DCB when an invalid data-block field is encountered or when the end of the DCB is
reached. For extraction DCBs, a data-block field is invalid if the data-block pointer is not 64-bit aligned. For injection
DCBs, a data-block field is invalid if the block length is set to zero.
• Example for injection:
A DCB for injection is set-up. It is configured to carry 12 pointers to data blocks but only 3 of them are used.
The first, DATA0_PTR, points to a data block that contains a full frame. The frame data starts 5 bytes after the
location indicated by DATA0_PTR. STATUS0 has SOF and EOF bits set. BLOCKL carries the length of frame
data and BLOCKO indicates the offset between DATA0_PTR and frame data start location, which was said to be
5. The second and the third data blocks carry a frame that spreads across both of them. STATUS1 has SOF bit
set and STATUS2 has EOF bit set. Each of the two statuses (STATUS1 and STATUS2) have BLOCKL set to the
length of the partial frame that the respective data blocks hold. The frame data start 102 bytes after the location
pointed by DATA1_PTR, therefore BLOCKO of STATUS1 is set to 102. Likewise, BLOCKO of STATUS3 is set to
56. The DCB is terminated by writing 0 to BLOCKL of STATUS3.
• Example for extraction
A DCB for extraction is set-up. It is configured to carry 12 pointers to data blocks but only 3 of them are used.
Three data blocks of equal size have been allocated in memory. The DATAL field of the DCB INFO is set to this
size. DATA0_PTR, DATA1_PTR and DATA2_PTR are set to point to the 3 data blocks which were allocated in
memory. The DCB is terminated by invalidating DATA3_PTR with a non-64-bit aligned address.
DCBs are linked together by the DCB’s NEXT_PTR field. The last DCB in a chain must have an invalid
NEXT_PTR value. NEXT_PTR is invalid when it is not 64-bit aligned. Chains consisting of a single DCB are
allowed.
INTR_CH_ERR[ch]
OR
AND INTR_CH_IDENT[ch]
INTR_DCB[ch]
AND
INTR_DCB_ENA[ch]
INTR_DB[ch]
AND
INTR_DB_ENA[ch]
INTR_ENA[ch]
5.7.7 Counters
The FDMA implements the counters which are summarized in the following table.
FDMA_PORT_STAT[CPU port] PORT_INJ_FRM_CNT Per-port counter of frames that are injected to the
switch core.
0 65
1 66
Register Description
ASM::PORT_CFG Enables IFH and disables FCS recalculation (for injected frames).
5.8.1 Features
The DDR memory controller supports the following features.
• Supports 32-bit SDRAM data bit interface with an optional 8-bit sideband ECC support
• Supports 1 or 2 memory ranks
• Programmable support for Half Data-bus Width (16-bit) memory configuration
• Programmable SDRAM parameters
• DDR PHY Interface (DFI) support for easy integration with industry standard DFI 3.1 compliant PHYs
• Flexible address mapper logic to allow application specific mapping of row, column, bank, and rank bits
• Option ECC support
– Single error correction/double error detection (SEC/DED)
– Automatic data scrubbing of correctable errors
– Support for highly efficient read-modify-write when byte enables are used with ECC enabled
– Automatic logging of both correctable and uncorrectable errors
– Ability to “poison” the write data by adding correctable/uncorrectable errors, for use in testing ECC error
handling
• DDR4 protocol up to 1250 MT/s are supported by the DDR memory controller. The following DDR4 specific
features are supported:
– Data Bus Inversion (DBI)
– Maximum power saving mode
– Multi-purpose register (MPR) reads and writes
– Per DRAM addressability
– Fine granularity refresh
– Cyclic redundancy check (CRC) on write data
– Command/Address Parity
– Programmable Preamble
• APB interface for the memory controller software accessible registers
• Host port with AMBA AXI interface
5.8.2 Overview
The DDR memory controller has single AMBA 4 AXI port on the host side to accept memory access requests. The
configuration registers are programmed through the AMBA 3.0 APB software interface.
®
The memory controller works with JEDEC compliant DDR3/DDR4 memory modules. The controller operates at Max
500 MHz to support the speed of 2000 MT/s on DDR3 interface and it operates at Max 312.5 MHz to support the
speed of 1250 MT/s on DDR4 interface. It supports five-byte lanes (32-bit data bus along with 8-bit sideband ECC)
in either one or two ranks memory configuration. The controller supports SDRAM with memory data width = x8 or
x16. It also supports half data-bus width mode operation where it uses only lower 16-bit of total 32-bit data bus. The
controller supports up to 18-bit address bus. The maximum amount of physical memory that can be attached to the
controller (per byte lane) is 2 gigabytes.
The memory controller supports optional Single Bit Single Error Correction / Double Error Detection Error Correction
code (SECDED ECC) by using one of the byte lane (via DDR_UMCTL2::ECCCFG0.ECC_MODE = 0x4). In full bus
width mode, it uses fifth data lane for sending the ECC information, and in case of half bus width mode, it uses third
byte lane for sending the ECC information. The 8-bit ECC code will be stored in a separate SDRAM memory (n x 8)
where n is the size of the memory.
The memory controller receives read transaction, write transaction, and data through the AMBA 4 AXI port. These
transactions are queued internally and scheduled for access in order to the SDRAM while satisfying SDRAM protocol
timing requirements, transactions priorities, and dependencies between the transactions. The memory controller in
turn issues commands on the DDR PHY Interface (DFI) to the PHY module, which launches and captures data to
and from the SDRAM. Figure is the system-level block diagram of the DDR memory controller.
5.8.3 Initialization
This section and the subsequent sections describe the programming sequence that must be executed at power-up
to bring the DDR memory controller, the PHY, and the memories into a state where DDR reads and writes can be
performed.
core_ddrc_core_clk
aclk
presetn
presetn
areset_n
dfi_init_complete
SDRAM Initialization by
the controller
After power-up, the following steps are required to bring up the memory controller:
1. Assert the DDR controller reset (core_ddrc_rstn), AMBA AXI reset (aresetn_0), APB reset for DDR controller
and DDR PHY (presetn), and DDR PHY reset (ctl_rst_n)
2. Start the DDR clock (core_ddrc_core_clk), AMBA AXI clock (aclk_0), APB clock for DDR controller and DDR
PHY (pclk), and DDR PHY clock (phy_ctl_clk)
3. Deassert APB reset for DDR controller (presetn) once the clocks are active and stable
4. Allow 10 APB clock cycles for synchronization of APB reset (presetn) to DDR clock (core_ddrc_core_clk) and
AMBA AXI clock (aclk) domains and to permit initialization of end logic
5. Initialize the memory controller registers
6. Deassert the DDR controller reset (core_ddrc_rstn) and AMBA AXI reset (aresetn_0)
7. Deassert the DDR PHY reset (ctl_rst_n) and APB reset for DDR PHY (presetn)
The following table lists the registers that are used to control the clocks and resets of the DDR memory controller and
DDR PHY.
Table 5-28. Clocks and Resets registers for DDR controller and DDR PHY
Registers Description
The following table defines the value for DDR4 SDRAM timing parameters, which are required while configuring the
DDR memory controller and DDR PHY.
Table 5-29. DDR4 Timing and Mode Parameters
Parameter Value
tCK 1600 ps
...........continued
Parameter Value
tRFC(min) 2 Gb = 160 ns
4 Gb = 260 ns
8 Gb = 350 ns
16 Gb = 550 ns
tXPR tRFC(min) + 10 ns
DFI_CLK_PRD 3.2 ns
tZQINITc 1024 nCK
MR 0xA40
EMR 0x501
EMR2 0x20
EMR3 0x0
MR4 0x0
MR5 0x400
MR6 0x899
CLc 16 nCK
CWLc 14 nCK
RD_PREAMBLE 1
WR_PREAMBLE 1
tCAL 0
ALc 0 (AL disabled)
CLc – 1 nCK
CLc – 2 nCK
BL 8
tWRc 15
tWRc_CRC _DM (tWRc + 5) nCK
tFAWc_512 16 nCK
tFAWc_1K 21 nCK
tFAWc_2K 30 nCK
tFAWc x4 device = tFAWc_512
x8 device = tFAWc_1K
x16 device = tFAWc_2K
tRASc_MIN 33 nCK
tRASc_MAX 70200 nCK
tRCc 48 nCK
tXPc 6 nCK
...........continued
Parameter Value
tRTPc 8 nCK
tWTRc 8 nCK
tWTRc_L_CRC _DM (tWTRc + 5) nCK
tPLc 4 tCK
WLc (ALc + CWLc) nCK if CA parity is disabled
(ALc + CWLc + tPLc) nCK if CA Parity is
enabled
tMRDc 8
tMODc 24 nCK
tMODc_PAR (tMODc + tPLc) nCK
tMRDc_PAR (tMODc + tPLc) nCK
tMOD 0 if (tMODc == 24)
1 if (tMODc == 25)
2 if (tMODc == 26)
3 if (tMODc == 27)
4 if (tMODc == 28)
5 if (tMODc == 29)
6 if (tMODc == 30)
tRCDc 15 nCK
tRPc 15 nCK
tCCDc_L 6 nCK
tRRDc_L_512 6 nCK
tRRDc_L_1K 6 nCK
tRRDC_L_2K 7 nCK
tRRDc x4 device = tRRDc_L_512
x8 device = tRRDc_L_1K
x16 device = tRRDc_L_2K
tCKSRXc 10 nCK
tCKSREc 10 nCK
tCKEc 5 nCK
tXS_tRFCc Roundup(tXPR / tCK) nCK
tDLLKc 768 nCK
...........continued
Parameter Value
tXS_tRFC4c 2Gb = 100 nCK
4Gb = 120 nCK
8Gb = 170 nCK
16Gb = 270 nCK
tCCDc_S 4
tRRDc_S_512 4 nCK
tRRDc_S_1K 4 nCK
tRRDc_S_2K 6 nCK
tRRDc_S x4 device = tRRDc_S_512
x8 device = tRRDc_S_1K
x16 device = tRRDc_S_2K
tWTRc_S 3 nCK
tWTRc_S_CRC _DM (tWTRc_S + 5) nCK
tREFIc Roundup(7800000 / tCK) nCK
tRFCc_2G 160 nCK
tRFCc_4G 260 nCK
tRFCc_8G 350 nCK
tRFCc_16G 550 nCK
tRFCc 2Gb = tRFCc_2G
4Gb = tRFCc_4G
8Gb = tRFCc_8G
16Gb = tRFCc_16G
tPLc 4 tCK
The following table defines the value for DDR3 SDRAM timing parameters, which are required while configuring the
DDR memory controller and DDR PHY.
Table 5-30. DDR3 Timing and Mode Parameters
Parameter Value
tCK 2000 MT/s = 1000 ps
tRFC(min) 512 Mb = 90 ns
1 Gb = 110 ns
2 Gb = 160 ns
4 Gb = 260 ns
8 Gb = 350 ns
tXPR tRFC(min) + 10 ns
DFI_CLK_PRD 2000 MT/s = 2.0 ns
...........continued
Parameter Value
tZQINITc 640 nCK
MR 0x1124
EMR 0x0
EMR2 0x28
EMR3 0x0
CLc 2000 MT/s = 14 nCK
CWLc 2000 MT/s = 10 nCK
ALc 0 (AL disabled)
CLc – 1 nCK
CLc – 2 nCK
BL 8
tWRc 2000 MT/s = 15
tFAWc_1K 2000 MT/s = 25 nCK
tFAWc_2K 2000 MT/s = 35 nCK
tFAWc x4 device = tFAWc_2K if (DENSITY == 8 Gb) else tFAWc_1K
x8 device = tFAWc_2K if (DENSITY == 8 Gb) else tFAWc_1K
x16 device = tFAWc_2K
...........continued
Parameter Value
tRPc 2000 MT/s = 14 nCK
tCCDc 2000 MT/s = 4 nCK
tRRDc_1K 2000 MT/s = 5 nCK
tRRDC_2K 2000 MT/s = 6 nCK
tRRDc x4 device = tRRDc_2K if (DENSITY == 8 Gb) else tRRDc_1K
x8 device = tRRDc_2K if (DENSITY == 8 Gb) else tRRDc_1K
x16 device = tRRDc_2K
The following table describes the memory controller registers configuration for accessing DDR4 SDRAM. The values
for these registers are sampled directly in the destination domains (core_ddrc_core_clk/aclk_0 domains) without
synchronizing circuits. The deassertion of the signal presetn is synchronized to the destination domain clocks and
used to deassert the reset on the static registers in their destination domains. Therefore, these registers must be
programmed when core_ddrc_core_clk/aclk_0 are stable, present is deasserted (at least 4 cycles of clock in the
destination domain) and core_ddrc_rstn/aresetn_0 are asserted.
Table 5-31. Memory Controller Configuration for DDR4 SDRAM
...........continued
Register Field Description
DDR_UMCTL2::MSTR.ACTIVE_RANKS Set to 0x0 for one rank device
Set to 0x1 for two ranks device
...........continued
Register Field Description
DDR_UMCTL2::DRAMTMG3.T_MOD Set to Roundup((tMODc + tCAL) / 2)
DDR_UMCTL2::DRAMTMG4.T_RCD Set to Roundup((tRCDc – ALc) / 2)
DDR_UMCTL2::DRAMTMG4.T_RP Set to Rounddown(tRPc / 2) + 1
DDR_UMCTL2::DRAMTMG4.T_CCD Set to Roundup(tCCDc_L / 2)
DDR_UMCTL2::DRAMTMG4.T_RRD Set to Roundup(tRRDc / 2)
DDR_UMCTL2::DRAMTMG5.T_CKSRX Set to Roundup(tCKSRXc / 2)
DDR_UMCTL2::DRAMTMG5.T_CKSRE Set to Roundup(tCKSREc / 2)
DDR_UMCTL2::DRAMTMG5.T_CKESR Set to Roundup((tCKEc + 1) / 2)
DDR_UMCTL2::DRAMTMG5.T_CKE Set to Roundup(tCKEc / 2)
DDR_UMCTL2::DRAMTMG8.T_XS_FAST_x32 Set to Roundup(tXS_tRFC4c / (2 x 32)) + 1
DDR_UMCTL2::DRAMTMG8.T_XS_ABORT_x32 Set to Roundup(tXS_tRFC4c / (2 x 32))
DDR_UMCTL2::DRAMTMG8.T_XS_DLL_x32 Set to Roundup(tDLLKc / (2 x 32))
DDR_UMCTL2::DRAMTMG8.T_XS_x32 Set to Roundup(tXS_tRFCc / (2 x 32))
DDR_UMCTL2::DRAMTMG9.DDR4_WR_PREAMBLE Set to 0
DDR_UMCTL2::DRAMTMG9.T_CCD_S Set to Roundup((tCCDc_S + 1) / 2)
DDR_UMCTL2::DRAMTMG9.T_RRD_S Set to Roundup(tRRDc_S / 2)
DDR_UMCTL2::DRAMTMG9.WR2RD_S Set to Roundup((CWLc + (BL / 2) + tWTRc_S) / 2)
DDR_UMCTL2::DFITMG0.DFI_TPHY_WRLAT Set to ((WLc + tCAL - 2) / 2)
DDR_UMCTL2::DFITMG0.DFI_T_RDDATA_EN Set to ((RLc + tCAL – 4) / 2)
DDR_UMCTL2::DFITMG0.DFI_TPHY_WRDATA Set to 1
DDR_UMCTL2::DFITMG0.DFI_T_CTRL_DELAY Set to 2
DDR_UMCTL2::DFITMG1.DFI_T_DRAM_CLK_ENABLE Set to 1
DDR_UMCTL2::DFITMG1.DFI_T_DRAM_CLK_DISABLE Set to 2
DDR_UMCTL2::DFITMG1.DFI_T_CMD_LAT Set to tCAL
DDR_UMCTL2::DFITMG1.DFI_T_WRDATA_DELAY Set to 3
DDR_UMCTL2::DFIUPD0.DIS_AUTO_CTRLUPD_SRX Set to 1
DDR_UMCTL2::DFIUPD1 Set to 0x4000FF
DDR_UMCTL2::RFSHCTL0.REFRESH_BURST Set to 1
DDR_UMCTL2::RFSHTMG.T_RFC_NOM_x32 Set to (tREFIc / (2 x 32))
DDR_UMCTL2::RFSHTMG.T_RFC_MIN Set to (tRFCc / 2)
DDR_UMCTL2::RFSHCTL1 Set to 0x400020
DDR_UMCTL2::RANKCTL.DIFF_RANK_RD_GAP Set to 2
DDR_UMCTL2::RANKCTL.DIFF_RANK_WR_GAP Set to 2
DDR_UMCTL2::ADDRMAP0.ADDRMAP_CS_BIT0 x16 device = 23
x8 device = 24
...........continued
Register Field Description
DDR_UMCTL2::ADDRMAP1.ADDRMAP_BANK_B0 Set to 24
DDR_UMCTL2::ADDRMAP1.ADDRMAP_BANK_B1 Set to 24
DDR_UMCTL2::ADDRMAP1.ADDRMAP_BANK_B2 Set to 63
DDR_UMCTL2::ADDRMAP2 Set to 0x0
DDR_UMCTL2::ADDRMAP3 Set to 0x0
DDR_UMCTL2::ADDRMAP4.ADDMAP_COL_B10 Set to 31
DDR_UMCTL2::ADDRMAP4.ADDMAP_COL_B11 Set to 31
DDR_UMCTL2::ADDRMAP5 Set to 0x04040404
DDR_UMCTL2::ADDRMAP6 Set to 0x04040404
DDR_UMCTL2::ADDRMAP7 Set to 0x00000F0F
DDR_UMCTL2::ADDRMAP8.ADDRMAP_BG_B0 Set to 26
DDR_UMCTL2::ADDRMAP8.ADDRMAP_BG_B1 x16 device = 63
x8 device = 26
The following table describes the memory controller register configuration for accessing DDR3 SDRAM.
Table 5-32. Memory Controller Configuration for DDR3 SDRAM
...........continued
Register Field Description
DDR_UMCTL2::ODTCFG.WR_ODT_DELAY Set to 0x0
DDR_UMCTL2::ODTCFG.RD_ODT_HOLD Set to 0x6
DDR_UMCTL2::ODTCFG.RD_ODT_DELAY Set to (CLc – CWLc)
DDR_UMCTL2::DRAMTMG0.WR2PRE Set to ((WLc + (BL/2) + tWRc) / 2)
DDR_UMCTL2::DRAMTMG0.T_FAW Set to Roundup(tFAWc / 2)
DDR_UMCTL2::DRAMTMG0.T_RAS_MIN Set to Rounddown(tRASc_MIN / 2)
DDR_UMCTL2::DRAMTMG0.T_RAS_MAX Set to Rounddown((tRASc_MAX – 1) / (2 x 1024))
DDR_UMCTL2::DRAMTMG1.T_RC Set to Roundup(tRCc / 2)
DDR_UMCTL2::DRMATMG1.T_XP Set to Roundup(tXPc / 2)
DDR_UMCTL2::DRAMTMG1.RD2PRE Set to ((ALc + tRTPc) / 2)
DDR_UMCTL2::DRAMTMG2.WR2RD Set to Roundup((CWLc + (BL / 2) + tWTRc) / 2)
DDR_UMCTL2::DRAMTMG2.RD2WR Set to Roundup((RLc + (BL / 2) + 2 - WLc))
DDR_UMCTL2::DRAMTMG3.T_MRD Set to Roundup(tMRDc / 2)
DDR_UMCTL2::DRAMTMG3.T_MOD Set to Roundup(tMODc / 2)
DDR_UMCTL2::DRAMTMG4.T_RCD Set to Roundup((tRCDc – ALc) / 2)
DDR_UMCTL2::DRAMTMG4.T_RP Set to Rounddown(tRPc / 2) + 1
DDR_UMCTL2::DRAMTMG4.T_CCD Set to Roundup(tCCDc / 2)
DDR_UMCTL2::DRAMTMG4.T_RRD Set to Roundup(tRRDc / 2)
DDR_UMCTL2::DRAMTMG5.T_CKSRX Set to Roundup(tCKSRXc / 2)
DDR_UMCTL2::DRAMTMG5.T_CKSRE Set to Roundup(tCKSREc / 2)
DDR_UMCTL2::DRAMTMG5.T_CKESR Set to Roundup((tCKEc + 1) / 2)
DDR_UMCTL2::DRAMTMG5.T_CKE Set to Roundup(tCKEc / 2)
DDR_UMCTL2::DRAMTMG8.T_XS_DLL_x32 Set to Roundup(tDLLKc / (2 x 32))
DDR_UMCTL2::DRAMTMG8.T_XS_x32 Set to Roundup(tXS_tRFCc / (2 x 32))
DDR_UMCTL2::DFITMG0.DFI_TPHY_WRLAT Set to ((WLc - 2) / 2)
DDR_UMCTL2::DFITMG0.DFI_T_RDDATA_EN Set to ((RLc – 4) / 2)
DDR_UMCTL2::DFITMG0.DFI_TPHY_WRDATA Set to 1
DDR_UMCTL2::DFITMG0.DFI_T_CTRL_DELAY Set to 2
DDR_UMCTL2::DFITMG1.DFI_T_DRAM_CLK_ENABLE Set to 1
DDR_UMCTL2::DFITMG1.DFI_T_DRAM_CLK_DISABLE Set to 2
DDR_UMCTL2::DFITMG1.DFI_T_WRDATA_DELAY Set to 3
DDR_UMCTL2::DFIUPD0.DIS_AUTO_CTRLUPD_SRX Set to 1
DDR_UMCTL2::DFIUPD1 Set to 0x4000FF
DDR_UMCTL2::RFSHCTL0.REFRESH_BURST Set to 1
DDR_UMCTL2::RFSHTMG.T_RFC_NOM_x32 Set to (tREFIc / (2 x 32))
...........continued
Register Field Description
DDR_UMCTL2::RFSHTMG.T_RFC_MIN Set to (tRFCc / 2)
DDR_UMCTL2::RFSHCTL1 Set to 0x400020
DDR_UMCTL2::RANKCTL.DIFF_RANK_RD_GAP Set to 2
DDR_UMCTL2::RANKCTL.DIFF_RANK_WR_GAP Set to 2
Example Register configuration for ADDRMAP0-8 using DDR3_x16_4Gb device
DDR_UMCTL2::ADDRMAP0.ADDRMAP_CS_BIT0 Set to 22
DDR_UMCTL2::ADDRMAP1.ADDRMAP_BANK_B0 Set to 23
DDR_UMCTL2::ADDRMAP1.ADDRMAP_BANK_B1 Set to 23
DDR_UMCTL2::ADDRMAP1.ADDRMAP_BANK_B2 Set to 23
DDR_UMCTL2::ADDRMAP2 Set to 0x0
DDR_UMCTL2::ADDRMAP3 Set to 0x0
DDR_UMCTL2::ADDRMAP4.ADDMAP_COL_B10 Set to 31
DDR_UMCTL2::ADDRMAP4.ADDMAP_COL_B11 Set to 31
DDR_UMCTL2::ADDRMAP5 Set to 0x04040404
DDR_UMCTL2::ADDRMAP6 Set to 0x0F040404
DDR_UMCTL2::ADDRMAP7 Set to 0x00000F0F
DDR_UMCTL2::ADDRMAP8.ADDRMAP_BG_B0 Set to 63
DDR_UMCTL2::ADDRMAP8.ADDRMAP_BG_B1 Set to 63
DDR_UMCTL2::ECCCFG0.ECC_MODE Set to 0x4 to enable ECC mode (SECDED)
Configure PHY
Initialization
Trigger PHY
Initialization
Impedance
PLL Initialization Configure SDRAM
Calibration
Timing
and Data Training PHY
registers Initialization
Delay Line
Calibration
PHY Reset
PHY Initialized
Trigger SDRAM
Initialization and
Data Training
SDRAM
Initialization
SDRAM
Initialization
Write Leveling
DQS Gate
Training
Write Latency
Adjustment
Training
Static Read
Data Training
Training
VREF Training
(DDR4 only)
PHY READY
2 Start PHY initialization by accessing relevant PUB registers (for Please refer Table 5-34
example, DXnGCR, DCR, PTR*, MR*, DTPR*)
6 Set DDR_UMCTL2::SWCTL.SW_DONE to 0 —
8 Set DDR_UMCTL2::SWCTL.SW_DONE to 1 —
10 Wait for controller to move to “normal” operating mode by monitoring Controller performs SDRAM
STAT.OPERATING_MODE signal initialization automatically
The following table lists the PUB registers to be configured for the PLL initialization and delay line calibration.
Table 5-34. Configuration of PHY Initialization registers
DDR_PHY::ZQCR.PGWAIT Set to 7
PUB registers associated with the (DDR4) SDRAM timing and Data training sequence. Refer Table 5-29 for the
parameter values.
Table 5-35. PHY Utility Block (PUB) Configuration for DDR4 SDRAM
...........continued
Register Field Description
DDR_PHY::DTCR0.DTRPTN Set to 0xF
DDR_PHY::DTCR0.DTMPR Set to 1
DDR_PHY::DTCR0.RFSHDT Set to 2
DDR_PHY::DTCR1.RANKEN Set to number of ranks that are enabled for data-training and write-
levelling.
For one-rank device, set to 0x1
For two-rank device, set to 0x3
The following table lists the PUB registers associated with the (DDR3) SDRAM timing and Data training sequence.
Refer Table 5-30 for the parameter values.
Table 5-36. PHY Utility Block (PUB) Configuration for DDR3 SDRAM
...........continued
Register Field Description
DDR_PHY::DTPR1.TMOD Set to tMOD
DDR_PHY::DTPR1.TFAW Set to tFAWc
DDR_PHY::DTPR2.TXS Set to tXS_tRFCc
DDR_PHY::DTPR2.TCKE Set to (tCKEc + 1)
DDR_PHY::DTPR3.TDLLK Set to tDLLKc
DDR_PHY::DTPR4.TXP Set to tXPDLLc
DDR_PHY::DTPR4.TRFC Set to tRFCc
DDR_PHY::DTPR5.TWTR Set to tWTRc
DDR_PHY::DTPR5.TRCD Set to tRCDc
DDR_PHY::DTPR5.TRC Set to tRCc
DDR_PHY::PTR3.TDINIT0 Set to 0x7A120
DDR_PHY::PTR3.TDINIT1 Set to tXS_tRFCc
DDR_PHY::PTR4.TDINIT2 Set to 0x30D40
DDR_PHY::PTR4.TDINIT3 Set to tZQINITc
DDR_PHY::DXCCR.DQSRES Set to 0x4 for selecting the on-die pull-down resistor = 500 ohm for DQS
pins
DDR_PHY::DXCCR.DQSNRES Set to 0xC for selecting the on-die pull-up resistor = 500 ohm for DQSN
pins
DDR_PHY::DSGCR.CUAEN Set to 1
DDR_PHY::DSGCR.SDRMODE Set to 0x0
DDR_PHY::DTCR0.DTRPTN Set to 0xF
DDR_PHY::DTCR0.DTMPR Set to 1
DDR_PHY::DTCR0.RFSHDT Set to 2
DDR_PHY::DTCR1.RANKEN Set to number of ranks that are enabled for data-training and write-
levelling.
For one-rank device, set to 0x1
For two-rank device, set to 0x3
...........continued
Register Field Description
DDR_PHY::DX1GTR0.DX1GTR0_DGSL Set to 0x2
DDR_PHY::DX2GTR0.DX2GTR0_DGSL Set to 0x2
DDR_PHY::DX3GTR0.DX3GTR0_DGSL Set to 0x2
DDR_PHY::DX4GTR0.DX4GTR0_DGSL Set to 0x2
After the PHY PLLs have been initialized and the delay lines and PHY SSTL I/Os have been calibrated, the interface
is ready for initializing the SDRAMs. The SDRAM must be correctly initialized before further training of the PHY can
be executed. In order to perform SDRAM initialization by memory controller, the DDR_PHY::PIR register of the PUB
block must be programmed with 0x00040001 to transfer control of the DFI interface from the PUB to the PHY. This
is only required for the first SDRAM initialization triggered after reset. The status of the SDRAM initialization should
be monitored by polling the PUB register DDR_PHY::PGSR0.IDONE. The following table summarizes the DDR4
SDRAM initialization sequence executed by the memory controller.
Table 5-37. DDR4 SDRAM Initialization Sequence
Steps Description
1 Maintain dfi_reset_n low for duration specified by INIT1.DRAM_RSTN_X1024
2 Issue NOP/deselect for duration specified by INIT0.PRE_CKE_X1024
3 Assert CKE and issue NOP/deselect for INIT0.POST_CKE_X1024
4 Issue MRS (mode register set) command to load MR3 with INIT4.EMR3 value followed by NOP/deselect for
duration of DRAMTMG3.T_MRD
5 Issue MRS (mode register set) command to load MR6 with INIT7.MR6 value followed by NOP/deselect for
duration of DRAMTMG3.T_MRD
6 Issue MRS (mode register set) command to load MR5 with INIT6.MR5 value followed by NOP/deselect for
duration of DRAMTMG3.T_MRD.
7 Issue MRS (mode register set) command to load MR4 with INIT7.MR4 value followed by NOP/deselect for
duration of DRAMTMG3.T_MRD.
8 Issue MRS command to load MR2 with INIT4.EMR2 followed by NOP/deselect for duration of
DRAMTMG3.T_MRD.
9 Issue MRS command to load MR1 with INIT4.EMR followed by NOP/deselect for duration of
DRAMTMG3.T_MRD.
10 Issue MRS command to load MR0 with INIT3.MR followed by NOP/deselect for duration of
DRAMTMG3.T_MOD.
11 Issue ZQCL command to start ZQ calibration and wait for INIT5.DEV_ZQINIT_X32.
12 Wait for INIT5.DEV_ZQINIT_X32 counting to finish.
13 The controller is now ready for normal operation.
The following table summarizes the DDR3 SDRAM initialization sequence executed by the memory controller.
Table 5-38. DDR3 SDRAM Initialization Sequence
Steps Description
1 Maintain dfi_reset_n low for duration specified by INIT1.DRAM_RSTN_X1024
2 Issue NOP/deselect for duration specified by INIT0.PRE_CKE_X1024
3 Assert CKE and issue NOP/deselect for INIT0.POST_CKE_X1024
...........continued
Steps Description
4 Issue MRS (mode register set) command to load MR2 with INIT4.EMR2 value followed by NOP/deselect for
duration of DRAMTMG3.T_MRD
5 Issue MRS (mode register set) command to load MR3 with INIT4.EMR3 value followed by NOP/deselect for
duration of DRAMTMG3.T_MRD
6 Issue MRS (mode register set) command to load MR1 with INIT3.EMR value followed by NOP/deselect for
duration of DRAMTMG3.T_MRD.
7 Issue MRS (mode register set) command to load MR0 with INIT3.MR value followed by NOP/deselect for
duration of DRAMTMG3.T_MRD.
11 Issue ZQCL command to start ZQ calibration and wait for INIT5.DEV_ZQINIT_X32.
12 Wait for INIT5.DEV_ZQINIT_X32 counting to finish.
13 The controller is now ready for normal operation.
...........continued
Steps Description Notes
10 Assert the PHY FIFO reset (DDR_PHY::PGCR0.PHYFRST=0).
11 Deassert the PHY FIFO reset (DDR_PHY::PGCR0.PHYFRST=1).
12 Enable auto-refreshes by setting After successful
DDR_UMCTL2::RFSHCTL3.DIS_AUTO_REFRESH = 0, and set completion of the data
DDR_UMCTL2::DFIMISC.DFI_INIT_COMPLETE_EN to 1. training operation, keep
the power-down mode in
disable state as SDRAM
is now available for
normal write/read access.
The following table summarizes the data training procedure for DDR3 SDRAM.
Table 5-40. Data Training Procedure for DDR3 SDRAM
...........continued
Steps Description Notes
12 Enable auto-refreshes by setting After successful
DDR_UMCTL2::RFSHCTL3.DIS_AUTO_REFRESH = 0, and set completion of the data
DDR_UMCTL2::DFIMISC.DFI_INIT_COMPLETE_EN to 1. training operation, keep
the power-down mode in
disable state as SDRAM
is now available for
normal write/read access.
5.9.1 Features
DWC DDR4 multiPHY PUB supports the following features.
• DDR4, DDR3 operation
– Compatible with JEDEC standard DDR4 up to 1250 Mbps
5.9.2 Overview
The PHY Utility Block (PUB) provides control features to ease the customer implementation of digitally controlled
DDR PHY features such as initialization, read DQS training, data eye training, delay line calibration and VT
compensation, write leveling, output impedance calibration, and programmable configuration controls. The PUB has
built-in self-test features to provide support for production testing of the PHY. It also provides a DFI interface to the
PHY. The PUB performs, in sequence, various tasks required by the PHY before it can commence normal DDR
operations.
Access to the PUB internal control features and registers is through a dedicated APB interface. A JTAG interface is
also provided as an additional second configuration port to co-exist with the APB main configuration port.
The PUB is driven off two clocks, the controller clock (ctl_clk) and the configuration clock (pclk). The controller clock
is the same clock driving the memory controller and is half the frequency of the SDRAM clock (ck). The configuration
clock can run at a frequency equal to or less than the controller clock. The configuration clock is used only for
external configuration register write/read protocol. All internal PUB registers, including configuration registers, are on
the high-speed clock.
reset of the primary interface to the JTAG clock and JTAG reset, respectively. In this case, all the other inputs of the
primary interface must be driven to their inactive states.
Figure 5-14. JTAG Connectivity
tap_shift_dr
tms Data
Regsiter tap_capture_dr
Decode
Logic
Chip-Level PUB
tap_update_dr
TAP JTAG
Controller Control
tdo
tdo
pclk
A (2 + g + 32)-bit data register is used to create read/write transactions on the configuration port; g is the width of the
configuration port address. The JTAG instruction register is not supported. This also means that no JTAG instructions
are supported.
Table 5-41. TAP Data Register
[33+g : g+2] DATA Data: Data to be written to a register or read from a register
Note:
1. g = Width of the configuration port address. Valid value is 10.
To execute a register write, the register address and data for the write operation is shifted into the TAP data register
together with the write instruction (INSTR = 2'b10). Once this information has been shifted in, the actual write to the
register will complete a maximum of five JTAG test clock (tclk) cycles later.
To execute a read, the register address and read instruction is first shifted into the TAP data register. The actual
register read completes a maximum of eight JTAG test clock cycles later after which the read data is ready to be
shifted out of the TAP data register.
Register Description
By default the SI Boot Controller is operating in 24bit address mode. In this mode there are four programmable chip
selects when the VCore system controls the SI. Through individually mapped memory regions, each chip select can
address up to 16 megabytes (MB) of memory.
Figure 5-15. SI Boot Controller Memory Map in 24 bit Mode
The SI Boot Controller can be reconfigured for 32bit address mode via SPI_MST_CFG.A32B_ENA. In 32bit mode the
entire SI region of 256 megabytes (MB) is addressed via chip select 0.
Reading from the memory region for a specific SI chip select generates SI read on that chip select. The VCore CPU
can execute code directly from Flash by executing from the SI boot controller’s memory region. For 32 bit capable SI
FLASH devices the VCore must start up in 24 bit mode, during the boot-process it must then manually re-configure
the FLASH device (and SI Boot Controller) into 32 bit mode then continue booting.
The SI boot controller accepts 8-bit, 16-bit, and 32-bit read access with or without bursting. Writing to the SI requires
manual control of the SI pins using software. Setting SW_MODE.SW_PIN_CTRL_MODE places all SI pins under
software control. Output enable and the value of SI_Clk, SI_DO, SI_nEn[3:0] are controlled through the SW_MODE
register. The value of the SI_DI pin is available in SW_MODE.SW_SPI_SDI. The software control mode is provided
for legacy reasons, new implementations should use the dedicated master controller writing to the SI interface, for
more information, see 5.10.2 SI Master Controller.
Note:
The VCore CPU cannot execute code directly from the SI boot controller’s memory region at the same time as
manually writing to the serial interface.
The following table lists the serial interface pins when the SI Boot Controller is configured as owner of SI interface via
GENERAL_CTRL.IF_SI_OWNER.
Table 5-43. Serial Interface Pins
SI_nCS0 O Active low chip selects. Only one chip select can be active at
any time. Chip selects 1 through 3 are overlaid functions on
SI_nCS[3:1]/GPIO
the GPIOs. For more information, see 5.10.8.1 GPIO Overlaid
Functions.
The SI boot controller does speculative prefetching of data. After reading address n, the SI boot controller
automatically continues reading address n + 1, so that the next value is ready if requested by the VCore CPU.
This greatly optimizes reading from sequential addresses in the Flash, such as when copying data from Flash into
program memory.
SI_nEn
SI_Clk
2 2 2 2 1 1 1 1 1 1 1 1 1 1
SI_DO 3 2 1 0 9 8 7 6 5 4 3 2 1 0
9 8 7 6 5 4 3 2 1 0
SI_DI 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
SI_nEn
SI_Clk
2 2 2 2 1 1 1 1 1 1 1 1 1 1
SI_DO 3 2 1 0 9 8 7 6 5 4 3 2 1 0
9 8 7 6 5 4 3 2 1 0
SI_DI 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
The figures depicts 24 bit address mode, when controller is set to 32 bit mode (via SPI_MST_CFG.A32B_ENA) 32
address bits are transferred instead of 24.
The default timing of the SI boot controller operates with most serial interface Flash devices. Use the following
process to calculate the optimized SI parameters for a specific SI device.
1. Calculate an appropriate frequency divider value as described in SPI_MST_CFG.CLK_DIV. The SI operates
at no more than 25 MHz, and the maximum frequency of the SPI device must not be exceeded. The VCore
system frequency in the device is 250 MHz.
2. The SPI device may require a FAST_READ command rather than normal READ when the SI frequency
is increased. Setting SPI_MST_CFG.FAST_READ_ENA makes the SI boot controller use FAST_READ
commands.
3. Calculate SPI_MST_CFG.CS_DESELECT_TIME so that it matches how long the SPI device requires chip-
select to be deasserted between accesses. This value depends on the SI clock period that results from the
SPI_MST_CFG.CLK_DIV setting.
These parameters must be written to SPI_MST_CFG. The CLK_DIV field must either be written last or at the same
time as the other parameters. The SPI_MST_CFG register can be configured while also booting up from the SI.
When the VCore CPU boots from the SI interface, the default values of the SPI_MST_CFG register are used until
the SI_MST_CFG is reconfigured with optimized parameters. This implies that SI_Clk is operating at approximately
8.1 MHz, with normal read instructions, and maximum gap between chip select operations to the Flash.
Note The SPI boot master does optimized reading. SI_DI (from the Flash) is sampled just before driving falling edge
on SI_CLK (to the Flash). This greatly relaxes the round trip delay requirement for SI_CLK to SI_DI, allowing high
Flash clock frequencies.
Register Description
The SI Master Controller supports Motorola SPI and Texas Instruments SSP protocols. The default protocol is SPI,
enable SSP by setting CTRLR0.FRF = 1 and GENERAL_CTRL.SSP_MODE_ENA = 1. The protocol baud rate is
programmable via BAUDR.SCKDV; the maximum baud rate is 25 MHz.
Before the SI Master Controller can be used, it must be set as owner of the SI interface. This is done by writing
GENERAL_CTRL.IF_SI_OWNER = 2. Alternatively, the SI Slave may be configured to own the SPI2 interface (which
is mapped on GPIOs) via GENERAL_CTRL.IF_SI2_OWNER. For more information, see 5.10.8.1 GPIO Overlaid
Functions.
The SI Master Controller has a programmable frame size; the frame size is the smallest unit when transferring data
over the SI interface. Via CTRLR0.DFS the frame size is configured in the range 4 to 16 bits. When reading or writing
words from the transmit/receive FIFO, the number of bits that is stored per FIFO-word is always equal to frame size
(as programmed in CTRLR0.DFS).
The controller operates in one of three major modes (the mode is configured in CTRLR0.TMOD):
• Transmit and receive:
Software paces SI transactions. For every data frame that software writes to the transmission FIFO another data
frame is made available in the receive FIFO (receive data from the serial interface). Transaction will go on for as
long as there is data available in the transmission FIFO.
• Transmit only:
Software paces SI transactions. The controller only transmit data frames, receive data is discarded. Transaction
will go on for as long as there is data available in the transmission FIFO.
• Receive only:
The controller paces SI transactions. The controller only receive data, software requests a specific number
of data frames via CTRLR1.NDF, the transaction will go on until all data frames has been read from the SI
interface. Transaction is initiated by software writing one data frame to transmission FIFO, this frame is not used
for anything else than starting the transaction. The SI_DO output is undefined during “Receive Only” transfers.
Receive data frames is put into the receive FIFO as they are read from SI.
For SPI mode, chip-select will be asserted throughout transfers. Transmit transfers end when the transmit FIFO runs
out of data frames. This implies that software must make sure it is not interrupted while writing data for a multi-frame
transfer. When software wants multiple distinct transfers, then wait for SR.TFE=1 and SR.BUSY=0 before initiating
new transfer. SR.BUSY is an indication of ongoing transfers, however it is not asserted immediately when writing
frames to the FIFO, therefore software must also check the SR.TFE (transmit FIFO empty) indication.
The SI Master Controller support up to 16 chip-selects. Chip-select 0 is mapped to the SI_nEN pin of the SI interface,
the rest are available via overlaid GPIO functions. Software controls which chip-select(s) to activate for a transfer via
the SER register. For more information, see 5.10.8.1 GPIO Overlaid Functions.
Table 5-45. SI Master Controller Pins
SI_nCS0 O Active low chip selects. Chip selects 1 through 15 are overlaid
functions on the GPIOs. Chip select 0 is both on a dedicated pin
SPI_nCS[15:0]/GPIO
and a GPIO. For more information, see 5.10.8.1 GPIO Overlaid
Functions.
Writing to any DR replication index put data into the transmission FIFO, reading from any DR replication index take
out data from the receive FIFO. FIFO status indications are available via SR register’s TFE, TFNF, RFF, and RFNE
fields. It is possible to interrupt on FIFO status. For more information, see 5.10.2.3 SIMC Interrupts.
After doing all initial configurations, the SI Master Controller is enabled by writing SIMCEN.SIMCEN = 1. Some
registers can only be written when controller is in disabled state; this is noted in the register-descriptions for the
affected registers.
SI_Clk SI_Clk
SI_DO 7 6 5 4 3 2 1 0 SI_DO 7 6 5 4 3 2 1 0
SI_DI 7 6 5 4 3 2 1 0 SI_DI 7 6 5 4 3 2 1 0
SI_nEn SI_nEn
SI_Clk SI_Clk
SI_DO 7 6 5 4 3 2 1 0 SI_DO 7 6 5 4 3 2 1 0
SI_DI 7 6 5 4 3 2 1 0 SI_DI 7 6 5 4 3 2 1 0
SI_nEn
SI_Clk
SI_DO 3 2 1 0 3 2 1 0 3 2 1 0
SI_DI 3 2 1 0 3 2 1 0 3 2 1 0
SI_nEn
SI_Clk
SI_DO 5 4 3 2 1 0 5 4 3 2 1 0
SI_DI 5 4 3 2 1 0 5 4 3 2 1 0
6. Write DR[0] = 0xC040, 0x6A81, 0x8181, 0x8100 to configure SI Slave for big endian / most significant bit first
mode.
7. Wait for SR.TFE = 1 and SR.BUSY = 0 because chip select must be deasserted between accesses to the SI
slave.
8. Write DR[0] = 0xC040, 0x0101, 0x2345, 0x6700 to write DEVCPU_GCB::GPR in slave device.
9. Wait for SR.TFE = 1 and SR.BUSY = 0 then disable the SI Master Controller by writing SIMCEN = 0.
Note:
The above procedure disconnects the SI Boot Master from the SI interface, booting must be done before attempting
to overtake the boot-interface!.
When reading from the SI slave CTRLR0.TMOD must be configured for transmit and receive. One byte padding is
appropriate for a 1 MHz baud rate.
SI_nCS0 I/O Active low chip selects. Chip selects 1 through 15 are overlaid
functions on the GPIOs. Chip select 0 is both on a dedicated pin
SPI_nCS[15:0]/GPIO
and a GPIO. For more information, see 5.10.8.1 GPIO Overlaid
Functions.
The chip select pins of the device are shared among the 5.5.2 Serial Interface in Slave Mode, the 5.10.1 SI
Boot Controller, and the 5.10.2 SI Master Controller. It is the programmer’s responsibility to map the chip select
to the various drivers. The chip select driving value may be overridden by software through CPU::SS_FORCE and
CPU::SS_FORCE_ENA. For more information on chip select usage, read the detailed descriptions of the registers
listed in the following table.
Table 5-47. Slave-Select Registers
Register Description
Note:
When the VCore sub-CPU system is enabled, the GPIO mapping of SPI_nCS[8:5] may be overtaken by the VCore
sub-CPU system.
5.10.4 Timers
This section provides information about the timers. The following table lists the registers associated with timers.
Register Description
There are three decrementing 32-bit timers in the VCore system that run on the 250MHz clock. Software can access
each timer value through the TIMER1CURRENTVAL, TIMER2CURRENTVAL and TIMER3CURRENTVAL registers.
These registers are read-only.
When timer 1 is enabled through field TIMER1CONTROLREG_TIMER_ENABLE, it decrements
from TIMER1LOADCOUNT until it reaches zero. Depending on the mode configured in
TIMER1CONTROLREG_TIMER_MODE, the counter wraps to TIMER1LOADCOUNT in user-defined mode
or to its max value in free-running mode. If the timer 1 interrupt is unmasked through
TIMER1CONTROLREG_TIMER_INTERRUPT_MASK, then the timer generates an interrupt every time it crosses
through value 0. The interrupt status of this timer can be read at TIMER1INTSTAT. The timer interrupt is cleared by
reading TIMER1EOI. Similar configurations and functionality applies for timers 2 and 3.
The unmasked interrupt status of all timers can be read at TIMERSRAWINTSTATUS, while the masked interrupt
status for all timers is available at TIMERSINTSTATUS. Reading TIMERSEOI clears all active timer interrupts.
5.10.5 UARTs
This section provides information about the UART (Universal Asynchronous Receiver/Transmitter) controllers. There
are two independent UART controller instances in the VCore System: UART and UART2. These instances are
identical copies and anywhere in this description the word UART can be replaced by UART2.
The following table lists the registers associated with the UART.
Register Description
UART::SCR Scratchpad.
The VCore system UART is functionally based on the industry-standard 16550 UART (RS232 protocol). This
implementation features a 16-byte receive and a 16-byte transmit FIFO.
Figure 5-22. UART Timing
One Character
The number of data-bits, parity, parity-polarity, and stop-bit length are all programmable using LCR.
The UART pins on the device are overlaid functions on the GPIO interface. Before enabling the UART, the VCore
CPU must enable overlaid modes for the appropriate GPIO pins. For more information, see 5.10.8.1 GPIO Overlaid
Functions.
The following table lists the pins of the UART interfaces.
Table 5-50. UART Interface Pins
The baud rate of the UART is derived from the VCore system frequency. The divider value is indirectly set through
the RBR_THR and IER registers. The baud rate is equal to the VCore system clock frequency, divided by 16, and
multiplied by the value of the baud rate divisor. A divider of zero disables the baud rate generator and no serial
communications occur. The default value for the divisor register is zero.
Example: Configure a baud rate of 9600 in a 250 MHz VCore System. To generate a baud rate of 9600, the divisor
register must be set to 0x65C (250 MHz/(16 × 9600 Hz)). Set LCR.DLAB and write 0x5C to RBR_THR and 0x06 to
IER (this assumes that the UART is not in use). Finally, clear LCR.DLAB to change the RBR_THR and IER registers
back to the normal mode.
By default, the FIFO mode of the UART is disabled. Enabling the 16-byte receive and 16-byte transmit FIFOs
(through IIR_FCR) is recommended.
Note:
Although the UART itself supports RTS and CTS, these signals are not available on the pins of the device.
Register Description
...........continued
Register Description
TWI::IC_CLR_* Individual CLR_* registers are used for clearing specific interrupts.
See register descriptions for corresponding interrupts.
The two-wire serial interface controller is compatible with the industry standard two‑wire serial interface protocol. The
controller supports standard speed up to 100 kbps and fast speed up to 400 kbps. Multiple bus masters, as well as
both 7‑bit and 10‑bit addressing, are also supported.
By default, the two-wire serial interface controller operates as master only.
The two-wire serial interface pins on the device are overlaid functions on the GPIO interface. Before enabling the
two-wire serial interface, the VCore CPU must enable overlaid functions for the appropriate GPIO pins. For more
information, see 5.10.8.1 GPIO Overlaid Functions.
The following table lists the pins of the two-wire serial interface.
Table 5-52. Wire Serial Interface Pins
Setting IC_ENABLE.ENABLE enables the controller. The controller can be disabled by clearing the
IC_ENABLE.ENABLE field, there is a chance that disabling is not allowed (at the time when it is attempted); the
IC_ENABLE_STATUS register shows if the controller was successfully disabled.
The two-wire serial interface controller has an 8-byte combined receive and transmit FIFO.
Parameter Value
defines a range of applicable durations for FS_SCL_LOW, FS_SCL_HIGH, SS_SCL_LOW and SS_SCL_HIGH. The
values for the configuration registers are computed as:
• IC_SS_SCL_LCNT = ceil(SS_SCL_LOW / VCore clock period) – 1
• IC_SS_SCL_HCNT = ceil(SS_SCL_HIGH / VCore clock period) – 8
• IC_FS_SCL_LCNT = ceil(FS_SCL_LOW / VCore clock period) – 1
• IC_FS_SCL_HCNT = ceil(FS_SCL_HIGH / VCore clock period) – 8
When IC_FS_SPKLEN is used for spike suppression, care must be taken to ensure that the following constraints are
respected.
• IC_SS_SCL_LCNT > IC_FS_SPKLEN+7
• IC_FS_SCL_LCNT > IC_FS_SPKLEN+7
• IC_SS_SCL_HCNT > IC_FS_SPKLEN+5
• IC_FS_SCL_HCNT > IC_FS_SPKLEN+5
The following table shows how the configuration registers affect the timing parameters of the two-wire serial interface.
Depending on the requirements, the configuration registers should be trimmed accordingly to meet timing constraints.
Table 5-54. Two-Wire Serial Interface Timing Parameters
...........continued
Timing Parameter Symbol Standard Speed Fast Speed
Bus free time between a STOP and a START tBUF IC_SS_SCL_LCNT IC_FS_SCL_LCNT
condition
Some two-wire serial devices require a hold time on SDA after SCK when transmitting from the two-wire
serial interface controller. The device supports a configurable hold delay through the TWI::IC_SDA_HOLD and
CPU::TWI_CONFIG registers.
Figure 5-23. Two-Wire Serial Interface Timing for 7-bit Address Access
TWI_SCL 1 7 8 9 1 7 8 9
START STOP
Address / Command Data
During normal operation of the two-wire serial interface controller, the IC_STATUS register shows the activity and
FIFO states.
5.10.6.2 Two-Wire Serial Interface Addressing
To configure either 7-bit or 10‑bit addressing, use CFG.MASTER_10BITADDR.
The two-wire serial interface controller can generate both General Call and START Byte. Initiate this through
IC_TAR.SPECIAL or TAR.GC_OR_START. The target/slave address is configured using the TAR register.
5.10.6.3 Two-Wire Serial Interface Interrupt
The two-wire serial interface controller can generate a multitude of interrupts. All of these are described in the
RAW_INTR_STAT register. The IC_RAW_INTR_STAT register contains interrupt fields that are always set when
their trigger conditions occur. The IC_INTR_MASK register is used for masking interrupts and allowing interrupts
to propagate to the IC_INTR_STAT register. When set in the IC_INTR_STAT register, the two-wire serial interface
controller asserts an interrupt towards the VCore system.
The IC_RAW_INTR_STAT register also specifies what is required to clear the specific interrupts. When the source
of the interrupt is removed, reading the appropriate IC_CLR_* register (for example, IC_CLR_RX_OVER) clears the
interrupt.
5.10.6.4 Built-in Two-Wire Serial Multiplexer
The device has built-in support for connecting to multiple two-wire serial devices that use the same two-wire serial
address. This is done by using the multiplexed clock outputs (TWI_SCL_GATEn and TWI_SCL_GATEn_AD) for the
two‑wire serial devices rather than the TWI_SCL. Depending on which device or devices it needs to talk to, software
can then enable/disable the various clocks. This multiplexing feature is available for the 1’st TWI controller instance.
From the two‑wire serial controller’s point of view, it does not know if it is using TWI_SCL or TWI_SCL_GATEn/
TWI_SCL_GATEn_AD clocks. When using multiplexed mode, software needs to enable/disable individual clock
connections before initiating the access operation using the two‑wire serial controller. Feedback on the clock (from
slow two‑wire serial devices) is automatically done for the TWI_SCL_GATEn lines that are enabled. Clock stretching
is not supported on TWI_SCL_GATEn_AD lines.
To enable multiplexed clocks, first configure the TWI_SCL_GATEn/TWI_SCL_GATEn_AD overlaid mode in the
GPIO controller. Individual clocks are then enabled by writing 1 to the corresponding GPIO output bit (in
DEVCPU_GCB::GPIO_OUT). To disable the clock, write 0 to the GPIO output bit. Disabled clocks are not driven
during access and the feedback is disabled.
Note:
In multiprocessor systems, the DEVCPU_GCB::GPIO_OUT_SET and DEVCPU_GCB::GPIO_OUT_CLR registers
can be used to avoid race conditions.
Register Description
The device contains four MIIM controllers with the same functionality. Data is transferred on the MIIM interface
using the Management Frame Format protocol specified in IEEE 802.3, Clause 22 or the MDIO Manageable Device
protocol defined in IEEE 802.3, Clause 45. The Clause 45 protocol differs from the Clause 22 protocol by using
indirect register access to increase the address range. The controller supports both Clause 22 and Clause 45.
The MIIM interface pins for the second and third controllers are overlaid functions on the GPIO interface. Before
using these MIIM controllers, the overlaid functions for the appropriate GPIO pins must first be enabled. For more
information, see 5.10.8.1 GPIO Overlaid Functions.
Table 5-56. MIIM Management Controller Pins
...........continued
Pin Name I/O Description
The MDIO signal is changed or sampled on the falling edge of the MDC clock by the controller. The MDIO pin is
tri-stated in-between access and when expecting read data.
Figure 5-24. MII Management Timing
// // // //
MDC
// // // //
MDIO
// // // //
generated, or both. For example, the controller can be programmed to read the status registers of one or more PHYs
and detect if the Link Status changed since the sticky register was last read.
The PHYs are read sequentially with the low and high PHY numbers specified in MII_SCAN_0 as range
bounds. The accessed address within each of the PHYs is specified in MII_CMD.MIIM_CMD_REGAD. The
scanning begins when a 0x1 is written to MII_CMD.MIIM_CMD_SCAN and a read operation is specified in
MII_CMD.MIIM_CMD_OPR_FIELD. Setting MII_CMD.MIIM_CMD_SINGLE_SCAN stops the scanning after all PHYs
have been scanned once. The remaining fields of MII_CMD register are not used when scanning is enabled.
The expected value for the PHY register is set in MII_SCAN_1.MIIM_SCAN_EXPECT. The expected value is
compared to the read value after applying the mask set in MII_SCAN_1.MIIM_SCAN_MASK. To “don’t care” a
bit-position, write a 0 to the mask. If the expected value for a bit position differs from the read value during scanning,
and the mask register has a 1 for the corresponding bit, a mismatch for the PHY is registered.
The scan results from the most recent scan can be read in MII_SCAN_LAST_RSLTS. The register contains one bit
for each of the possible 32 PHYs. A mismatch during scanning is indicated by a 0. MII_SCAN_LAST_RSLTS_VLD
will indicate for each PHY if the read operation performed during the scan was successful. The sticky-bit register
MII_SCAN_RSLTS_STICKY has the mismatch bit set for all PHYs that had a mismatch during scanning since the
last read of the sticky-bit register. When the register is read, its value is reset to all-ones (no mismatches).
Register Description
The GPIO pins are individually programmable. GPIOs are inputs by default and can be individually changed to
outputs through GPIO_OE. The value of the GPIO pins is reflected in the GPIO_IN register. GPIOs that are in output
mode are driven to the value specified in GPIO_OUT.
In a system where multiple different CPU threads (or different CPUs) may work on the GPIOs at the same time, the
GPIO_OUT_SET and GPIO_OUT_CLR registers provide a way for each thread to safely control the output value of
individual GPIOs, without having to implement locked regions and semaphores.
The GPIO_ALT registers are only reset by external reset to the device. This means that software reset of the
DEVCPU_GCB is possible without affecting the mapping of overlaid functions on the GPIOs.
GPIO_5 SG1_DO — — — —
GPIO_10 UART_RxD — — — —
GPIO_11 UART_TxD — — — —
GPIO_13 SG1_DI — — — —
...........continued
Name Overlaid Overlaid Overlaid Interface Strapping
Function 1 Function2 14Function3
GPIO_15 TWI_SDA — — —
...........continued
Name Overlaid Overlaid Overlaid Interface Strapping
Function 1 Function2 14Function3
...........continued
Name Overlaid Overlaid Overlaid Interface Strapping
Function 1 Function2 14Function3
Register Description
...........continued
Register Description
The following table lists the pins of the SIO controllers; these are overlaid on GPIO pins. For more information, see
5.10.8.1 GPIO Overlaid Functions.
Table 5-61. SIO Controller Pins
The SIO controller works by shifting SGPIO values out on SGn_DO through a chain of shift registers on the PCB.
After shifting a configurable number of SGPIO bits, the SIO controller asserts SGn_LD, which causes the shift
registers to apply the values of the shifted bits to outputs. The SIO controller can also read inputs while shifting out
SGPIO values on SGn_DO by sampling the SGn_DI input. The values sampled on SGn_DI are made available to
software.
If the SIO controller is only used for outputs, the use of the load signal is optional. If the load signal is omitted, simpler
shift registers (without load) can be used, however, the outputs of these registers will toggle during shifting.
When driving LED outputs, it is acceptable that the outputs will toggle when SGPIO values are updated (shifted
through the chain). When the shift frequency is fast, the human eye is not able to see the shifting through the LEDs.
The number of shift registers in the chain is configurable. The SIO controller allows enabling of individual ports
through SIO_PORT_ENA; only enabled ports are shifted out on SGn_DO. Ports that are not enabled are skipped
during shifting of GPIO values.
Note:
SIO_PORT_ENA allows skipping of ports in the SGPIO output stream that are not in use. The number of GPIOs per
(enabled) port is configurable as well, through SIO_CFG.SIO_PORT_WIDTH, this can be set to 1, 2, 3, or 4 bits. The
number of bits per port is common for all enabled ports, so the number of shift registers on the PCB must be equal to
the number of enabled ports times the number of SGPIOs per port.
Enabling of ports and configuration of SGPIOs per port applies to both output mode and input mode. Unlike a regular
GPIO port, a single SGPIO position can be used both as output and input. That is, software can control the output
of the shift register AND read the input value at the same time. Using SGPIOs as inputs requires load-capable shift
registers.
Regular shift registers and load-capable shift-registers can be mixed, which is useful when driving LED indications for
integrated PHYs while supporting reading of link status from SFP modules, for example.
Figure 5-25. SIO Timing
Parallel to serial shift registers load Serial to parallel shift registers output
data on logical 0 data on rising edge
SGn_LD
28 ns
SGn_CLK
pN pN pN pN pN-1 pN-1 p0 p0 p0 p0 pN pN
SGn_DO b3 b2 b1 b0 b3 b2 b3 b2 b1 b0 b3 b2
p0 p0 p0 p0 p1 p1 p1 pN pN pN pN p0 p0
SGn_DI b0 b1 b2 b3 b0 b1 b2 b0 b1 b2 b3 b0 b1
Burst gap
The SGPIO values are output in bursts followed by assertion of the SGn_LD signal. Values can be output
as a single burst or as continuous bursts separated by a configurable burst gap. The maximum length of a
burst is 32 × 4 data cycles. The burst gap is configurable in steps through SIO_CFG.SIO_BURST_GAP_DIS,
SIO_CFG.SIO_BURST_GAP, and SIO_CFG.SIO_REDUCED_GAP.
A single burst is issued by setting SIO_CFG.SIO_SINGLE_SHOT. The field is automatically cleared by hardware
when the burst is finished. To issue continuous bursts, set SIO_CFG.SIO_AUTO_REPEAT. The SIO controller
continues to issue bursts until SIO_CFG.SIO_AUTO_REPEAT is cleared.
SGPIO output values are configured in SIO_PORT_CFG.BIT_SOURCE. The input value is available in
SIO_INPUT_DATA.
The following figure shows what happens when the number of SGPIOs per port is configured to two (through
SIO_CFG.SIO_PORT_WIDTH). Disabling of ports (through SIO_PORT_ENA) is handled in the same way as
disabling the SGPIO ports.
SGn_LD
SGn_CLK
The frequency of the SGn_CLK clock output is configured through SIO_CLOCK.SIO_CLK_FREQ. The SGn_LD
output is asserted after each burst; this output is asserted for a period of 25 ns to 30 ns. The polarity of SGn_LD is
configurable through SIO_CFG.SIO_LD_POLARITY.
The SGn_LD output can be used to ensure that outputs are stable when serial data is being shifted through the
registers. This can be done by using the SGn_LD output to shift the output values into serial-to-parallel registers
after the burst is completed. If serial-to-parallel registers are not used, the outputs will toggle while the burst is
being shifted through the chain of shift registers. A universal serial-to-parallel shift register outputs the data on a
positive-edge load signal, and a universal parallel-to-serial shift register shifts data when the load pin is high, so one
common load signal can be used for both input and output serial « parallel conversion.
The assertion of SGn_LD happens after the burst to ensure that after power up, the single burst will result in
well-defined output registers. Consequently, to sample input values one time, two consecutive bursts must be issued.
The first burst results in the input values being sampled by the serial-to-parallel registers, and the second burst shifts
the input values into the SIO controller.
The port order required in the serial bitstream depends on the physical layout of the shift register chain. Often the
input and output port orders must be opposite in the serial streams. The port order of the input and output bitstream is
independently configurable in SIO_CFG.SIO_REVERSE_INPUT and SIO_CFG.SIO_REVERSE_OUTPUT.
The following figure shows the port order.
Figure 5-27. SGPIO Output Order
SGn_CLK
Default order
pN pN pN pN pN-1 pN-1 pN-1 pN-1 pN-2 p0 p0 p0 p0
SGn_DO b3 b2 b1 b0 b3 b2 b1 b0 b3 b3 b2 b1 b0
p0 p0 p0 p0 p1 p1 p1 p1 p1 p2 pN pN pN pN
SGn_DI b0 b1 b2 b3 b0 b1 b2 b2 b3 b0 b0 b1 b2 b3
Reverse order
p0 p0 p0 p0 p1 p1 p1 p1 p1 p2 pN pN pN pN
SGn_DO b0 b1 b2 b3 b0 b1 b2 b2 b3 b0 b0 b1 b2 b3
• Static Mode:
The static mode is used to assign a fixed value to the SGPIO, for example, fixed 0 or fixed 1.
• Blink Mode:
The blink mode makes the SGPIO blink at a fixed rate. The SIO controller features two blink modes that
can be set independently. A SGPIO can then be configured to use either blink mode 0 or blink mode 1. The
blink outputs are configured in SIO_CFG.SIO_BMODE_0 and SIO_CFG.SIO_BMODE_1. To synchronize the
blink modes between different devices, reset the blink counter using SIO_CFG.SIO_BLINK_RESET. All the SIO
controllers on a device must be reset at same time to maintain the synchronization. The burst toggle mode of
blink mode 1 toggles the output with every burst.
Table 5-62. Blink Modes
Register Description
...........continued
SIO Port SG0 Mapping SG1 Mapping SG2 Mapping
The link activity mode uses an envelope signal to gate the selected blinking pattern (blink mode 0 or blink mode 1).
When the envelope signal is asserted, the output blinks, and when the envelope pattern is de-asserted, the output
is turned off. To ensure that even a single packet makes a visual blink, an activity pulse from the port module is
extended to minimum 100 ms. If another packet is sent while the envelope signal is asserted, the activity pulse is
extended by another 100 ms. The polarity of the link activity modes can be set in SIO_PORT_CFG.BIT_SOURCE.
The following figure shows the link activity timing.
100 ms pulse
MAC pulse
Envelope
Blink mode
Output
Register Description
The following table lists fan controller pins, which are overlaid on GPIOs. For more information, see 5.10.8.1 GPIO
Overlaid Functions.
Table 5-65. Fan Controller Pins
The PWM output can be configured to a variety of frequencies. For more information refer to the
DEVCPU_GCB::PWM_FREQ register description.
The low frequencies can be used for driving three-wire fans using a FET/transistor. Frequencies around 25 kHz
can be used for four-wire fans that use the PWM input internally to control the fan. The duty cycle of the PWM
output is programmable from 0% to 100%, with 8-bit accuracy. The polarity of the output can be controlled by
FAN_CFG.INV_POL, so a duty-cycle of 100%, for example, can be either always low or always high.
The PWM output pin can be configured to act as a normal output or as an open-collector output, where the output
value of the pin is kept low, but the output enable is toggled. The open-collector output mode is enabled by setting
FAN_CFG.PWM_OPEN_COL_ENA.
Note:
By using open-collector mode, it is possible to externally pull-up to a higher voltage than the maximum GPIO I/O
supply.
The speed of the fan is measured using a 16-bit counter that counts the rising edges on the TACHO input. A fan
usually gives one to four pulses per revolution, depending on the fan type. The counter value is available in the
FAN_CNT register. Depending on the value of FAN_CFG.FAN_STAT_CFG, the FAN_CNT register is updated in two
different ways:
• If FAN_CFG.FAN_STAT_CFG is set, the FAN_CNT register behaves as a 16-bit wrapping counter that shows
the total number of ticks on the TACHO input.
• If FAN_CFG.FAN_STAT_CFG is cleared, the FAN_CNT register is updated one time per second with the
number of TACHO ticks received during the last second.
Optionally, the TACHO input is gated by the polarity-corrected PWM output by setting FAN_CFG.GATE_ENA, so that
only TACHO pulses received while the polarity corrected PWM output is high are counted. Glitches on the TACHO
input can occur right after the PWM output goes high. As a result, the gate signal is delayed by 10 µs when PWM
goes high. There is no delay when PWM goes low, and the length of the delay is not configurable. Software must
read the counter value in FAN_CNT and calculate the RPM of the fan.
An example of how to calculate the RPM of the fan is if the fan controller is configured to 100 Hz and a 20% duty
cycle, each PWM pulse is high in 2 ms and low in 8 ms. If gating is enabled, the gating of the TACHO input is open
in 1.99 ms and closed in 8.01 ms. If the fan is turning with 100 RPMs and gives two TACHO pulses per revolution,
it will ideally give 200 pulses per minute. TACHO pulses are only counted in 19.99% of the time, so it will give
200 × 0.1999 = 39.98 pulses per minute. If the additional 10 µs gating time is ignored, the counter value is multiplied
by 2.5 to get the RPM value, because there is a 20% duty cycle with two TACHO pulses per revolution. By multiplying
with 2.5, the RPM value is calculated to 99.95, which is 0.05% off the correct value (due to the 10 µs gating time).
Register Description
The temperature sensor is enabled by setting TEMP_SENSOR_CFG.SAMPLE_ENA. After this the temperature
sensor will sample temperature every 16 ms and show current temperature via TEMP_SENSOR_STAT.TEMP.
The TEMP_SENSOR_CFG.CLK_CYCLES_1US register must be configured to match the system clock frequency.
The formula for converting TEMP field value to centigrade temperature is:
Temp(C) = TEMP_SENSOR_STAT.TEMP / 4096 * 352.3 – 109.4
It will take approximately 16 ms after setting SAMPLE_ENA until the first temperature sample is ready. The
TEMP_SENSOR_STAT.TEMP_VALID field will be set when the temperature value is available.
Register Description
The memory integrity monitor looks for memory soft-error indications. Correctable (single bit) and non-correctable
(multibit or parity) indications are detected during memory read and can be reported to software via “ITGR” software
interrupt, see 5.4.2 VCore CPU Interrupt Controller for how to enable this interrupt.
The memory integrity monitor operates in three different states: IDLE, LISTEN, and DETECT. After a reset, the
monitor starts in the IDLE state.
• IDLE:
The monitor is deactivated and in quiet mode. In this state, the memories still correct, detect, and store
indications locally, but they are not able to report indications to the monitor.
• LISTEN:
In is state, the monitor looks for indications in the memories. MEMITGR_STAT.INDICATION is set (and interrupt
is asserted) when indications are detected.
• DETECT:
This state is used when indications are read from the memories. It means that a valid indication is available in
MEMITGR_INFO and the corresponding memory index in MEMITGR_IDX.
The current state of the monitor is reported in MEMITGR_STAT.MODE_IDLE, MEMITGR_STAT.MODE_DETECT,
and MEMITGR_STAT.MODE_LISTEN. Software initiates transitions between states by setting the one-
shot MEMITGR_CTRL.ACTIVATE field. It may take some time to transition from one state to the
next. The MEMITGR_CTR.ACTIVATE field is not cleared before the next state is reached (also the
MEMITGR_STAT.MODE_BUSY field is set while transitioning between states).
Figure 5-29. Monitor State Diagram
LISTEN
DETECT
The first time after reset that MEMITGR_CTRL.ACTIVATE is set, the monitor resets the detection logic in all the
memories and transitions directly from IDLE to LISTEN state.
Before setting MEMITGR_CTRl.ACTIVATE for the first time, speed up the monitor by setting
MEMITGR_DIV.MEM_DIV to the value specified in the registers list. The VCore CPU memories implement another
error detection and correction mechanism and are not monitored.
The memories of the PCIe controller are clock-gated and bypassed when PCIe interface is not enabled; enable
monitoring of PCIe controller memories by setting CPU::PCIE_CFG.MEM_RING_CORE_ENA. This field must not
be set when PCIe interface is not enabled. The VCore sub-CPU system memories are monitored when the VCore
sub-CPU system is enabled and not forced into reset through CPU::SUBCPU_SYS_CFG. The VCore CPU, VCore
CPU Interrupt Controller, and DDR controller memories are not monitored by the memory integrity controller.
To read out indications, first transition from LISTEN to IDLE, then continue transitioning until the LISTEN state is
reached. Every time the monitor ends up in the DETECT state, an indication is available in the MEMITGR_INFO and
MEMITGR_IDX registers. Each memory stores one indication. Indications are cleared when they are read by way of
the monitor. Each indication contains four flags and one memory address.
• The MEM_ERR flag is set when a non-correctable upset is detected and the corresponding address is available
in MEM_ADDR.
• The MEM_ERR_OVF flag is set when a non-correctable upset is detected for which address could not be
stored.
• The MEM_COR flag is set when a correctable upset is detected and the corresponding address is available in
MEM_ADDR.
• The MEM_COR_OVF flag is set when a correctable upset is detected for which address could not be stored.
Information about non-correctable upsets is prioritized over correctable upsets. Address can only be saved when the
monitor is in LISTEN mode. The following flowchart shows how the detection logic sets flags and address.
Figure 5-30. Memory Detection Logic
Upset is detected
no no no
yes yes
Is MEM_ERR set? Is MEM_COR set?
no no
yes
Is upset correctable?
no
If the MEM_ERR_OVF or MEM_COR_OVF flag is set, at least one event has occurred for which the address could
not be stored.
The following table shows ECC-enabled memories in the device, their index, and the recommended approach for
handling indications. If the controller reports an index that is not mentioned in the list, the recommended approach is
to reboot the device.
Table 5-68. Memories with Integrity Support
Index Description
Others For unlisted indexes, the recommended approach is to reboot the device.
Reading from uninitialized memory locations has a high plausibility of triggering non‑correctable or correctable
indications. This is useful when developing integrity monitor software driver. For example, powering up a system
without initializing the VCAPs and reading actions and sticky bits will trigger monitor indications. Note that the
contents of memories are not changed by device reset, so power cycle is needed to reset the memories.
Register Description
...........continued
Register Description
The interrupt controller maps interrupt sources from VCore and switch-core blocks, port modules, and external
interrupt inputs to two interrupt destinations, which can be transmitted from the device using the overlaid functions on
GPIOs or using PCIe inband interrupt signaling.
The following table lists the available interrupt sources in the device. The index can be used to access the
appropriate bits in CPU::INTR_* and CPU::DST_INTR_* registers.
Table 5-70. Interrupt Sources
...........continued
Source Name Index Description
Reserved 5 Reserved.
...........continued
Source Name Index Description
FDMA 28 Frame DMA interrupt. See 5.7.4 FDMA Events and Interrupts.
The following table lists the available interrupt destinations in the device.
Table 5-71. Interrupt Destinations
Destination Description
Name
All interrupts, events, and indications inside in the interrupt controller are active high. If an interrupt source supports
polarity correction, it is applied before going into the interrupt controller. If an interrupt destination supports polarity
correction, it is applied after leaving the interrupt controller.
INTR_BYPASS.INTR_BYPASS[n]
INTR_TRIGGER.INTR_TRIGGER[n]
INTR_STICKY.INTR_STICKY[n]
INTR_IDENT.INTR_IDENT[n]
Filter Logic Sticky
00 Pass any. Hold interrupt
Interrupt Source n 01 Detect change.
indication until 0 To destination logic
10 Active to inactive.
11 Inactive to active. cleared by SW
1
AND
INTR_RAW.INTR_RAW[n]
n
n
Interrupt destination d
n
From source logic
AND OR (n to 1)
The interrupt destination can enable individual sources for interrupt by writing a mask to
DST_INTR_MAP[d].DST_INTR_MAP. When a source is enabled in DST_INTR_MAP then an interrupt from this
source will be propagated to the interrupt destination.
The currently active and enabled source interrupts for a destination can be seen by reading
DST_INTR_IDENT[d].DST_INTR_IDENT.
DEV_INTR_RAW.DEV_INTR_RAW[m]
For destination interrupts, it is possible to drive the output pin permanently or emulate open-collector output.
• To drive permanently configure EXT_INTR_DRV[e] = 0.
• To emulate open collector output configure EXT_INTR_DRV[e] = 1 and EXT_INTR_POL[e] = 0. To safely enable
open-collector output, the EXT_INTR_DRV and EXT_INTR_POL registers must be configured before enabling
the overlaid function in the GPIO controller.
Note:
Open collector output mode is needed when multiple interrupt sources are hooked up to the same interrupt wire
on the PCB and the wire is pulled high with a resistor. Each interrupt source can then drive the wire low via
open-collector output when they want to signal interrupt.
SD SDR12 25 1/4
SD SDR25 50 1/4
SD DDR50 50 1/4
The following table lists the registers of the mobile storage host controller. The controller interface is mapped on
GPIOs. For more information, see 5.10.8.1 GPIO Overlaid Functions.
Table 5-74. SD/eMMC Host Controller Registers
Register Description
...........continued
Register Description
...........continued
Register Description
CLK_CTRL_R.CLK_GEN_SELECT = 0
CLK_CTRL_R.UPPER_FREQ_SEL = 0
CLK_CTRL_R.FREQ_SEL = X,
Where X is:
128 for 390 kHz
2 for 25 MHz
1 for 50 MHz
0 for 100 MHz
CLK_CTRL_R.INTERNAL_CLK_EN = 1
CLK_CTRL_R.PLL_ENABLE = 1
Wait until CLK_CTRL_R.INTERNAL_CLK_STABLE becomes 1.
PWR_CTRL_R.SD_BUS_VOL_VDD1 = 7
TOUT_CTRL_R.TOUT_CNT = 3
HOST_CTRL2_R.UHS2_IF_ENABLE = 0
EMMC_CTRL_R.CARD_IS_EMMC = 1
Set card clock frequency to 390kHz through 5.10.14.1 Card Clock Frequency Configuration
HOST_CTRL2_R.HOST_VER4_ENABLE = 1
HOST_CTRL2_R.ADDRESSING = 1
HOST_CTRL2_R.UHS2_IF_ENABLE = 0
PWR_CTRL_R.SD_BUS_PWR_VDD1 = 1
HOST_CTRL2_r.UHS_MODE_SEL = 0
CLK_CTRL_R.SD_CLK_EN 1
PWR_CTRL_R.SD_BUS_VOL_VDD1 = 7
TOUT_CTRL_R.TOUT_CNT = 3
HOST_CTRL2_R.ADDRESSING = 1
HOST_CTRL2_R.ASYNC_INT_ENABLE = 1
PWR_CTRL_R.SD_BUS_PWR_VDD1 = 1
HOST_CTRL2_R.UHS_MODE_SEL = 0
CLK_CTRL_R.SD_CLK_EN 1
4. Registers CMD_R and XFER_MODE_R are mapped to the same 32 bit-aligned address. Refer to register
descriptions for details regarding their fields. Send a command to the card with an atomic write access
covering the combined fields of CMD_R and XFER_MODE_R.
5. Wait for NORMAL_INT_STAT_R.CMD_COMPLETE.
6. Clear NORMAL_INT_STAT_R.CMD_COMPLETE.
7. Response status is available at RESP01_R, RESP23_R, RESP45_R and RESP67_R.
To set the bus width, send to the SD card the command APP_CMD (CMD55), followed by SET_BUS_WIDTH
(ACMD6). Then configure HOST_CTRL1_R.DAT_XFER_WIDTH accordingly.
To set the speed, send the command SWITCH (CMD6) to the card. If mode SDR12 is chosen,
then HOST_CTRL1_R.HIGH_SPEED_EN must be cleared. Otherwise, it must be set. Configure
HOST_CTRL2_R.UHS_MODE_SEL with the desired mode and use the steps described in 5.10.14.1 Card Clock
Frequency Configuration to set the card clock frequency.
5.11.1 Features
The Vcore sub-CPU system operates at 100 MHz and features the following:
• ARM Cortex-M3 processor
– Little endian
– Memory protection unit
– SWJ-DP (Serial wire and JTAG, full debug with data matching)
– Integrated NVIC
• External interrupt input
• Peripherals
– UART
– I2C
– 2 x SPI master controllers with single chip select
– 3 x Timers
– WDT
• 64KB Code memory serving both as instruction and data memory
• 16KB Shared memory
• Reset controller
• Booting sources
– Code memory
– SPI flash
• Accessibility
– Main CPU system to sub-CPU system
– Sub-CPU system to main CPU system
5.11.2 Interfaces
The VCore sub-CPU system bears the following interfaces.
• Master interface towards the VCore Shared Bus Access/Arbiter (). It provides access to Mirror SPI boot Flash
and SPI boot Flash regions (), as well as to CPU Registers, FDMA Registers, and Switch Core Registers ().
• Slave interface to the VCore Shared Bus Access/Arbiter (). It provides access to the VCore sub-CPU system
from the VCore CPU or from an external CPU.
• Debug interface. For more information on accessing the debug interface, see 5.12 JTAG Interface.
system_rst global soft all all Soft chip reset. The entire sub-CPU
system may be protected.
poe_sys_rst_fo VCore CPU sys soft all fabric Soft force-reset that keeps the sub-
rce CPU system under reset. The fabric
domain may be protected. Typically
used for loading the program into the
code memory before releasing the sub-
CPU.
poe_rst_req sub-CPU sys soft all fabric, wdt Soft reset for the sub-CPU system,
triggered by the sub-CPU software.
lock_rst_req sub-CPU sys hard subcpu subcpu Hard reset due to sub-CPU entering
locked-up state.
wdt_rst_req sub-CPU sys hard all fabric, wdt Hard reset due to WDT timeout.
wdt_rst_force sub-CPU sys soft wdt - Force reset on WDT. Used to disable
the WDT.
The VCore sub-CPU reset scheme control and status registers are listed in the following table. For more information,
refer to the register descriptions.
Table 5-76. Reset Control and Status Registers
Register Description
CPU::SUBCPU_SYS_CFG Clock gating and soft reset control from VCore CPU system
towards VCore sub-CPU system.
Note:
When the fabric reset protection domain is active, a soft reset will not change shared bus memory mapping. For more
information about resets and protection, see 5.11.3 Clocking and Reset.
If the boot process copies the SI Flash image to Code memory, and if the contents of the SI memory and the Code
memory are the same, software can execute from the mirrored region when swapping from boot mode to normal
mode. Otherwise, software must be executing from the fixed SI Flash region when changing from boot mode to
normal mode.
5.11.6 VCore Sub-CPU system Mapping to VCore CPU System Memory Map
Certain regions of the sub-CPU system shared bus are mapped also to the main VCore Shared Bus (Sub-CPU
System in 5.3 Shared Bus). This mapping is shown in the following figure.
0x630000000
64 KB Code memory
0x630010000
1 KB SUBCPU_UART
0x630010400
1 KB SUBCPU_TWI
0x630010800
1 KB SUBCPU_SIMC
0x630010C00
1 KB SUBCPU_TIMERS
0x630011000
1 KB SUBCPU_WDT
0x630011400
1 KB SUBCPU_SIMC2
0x630011800
reserved
0x630020000
32 KB Shared memory
0x630028000
reserved
0x630030000
64 KB SUBCPU_SYS_CFG
0x630040000
reserved
0x63FFFFFFFF
5.11.7 Interrupts
The VCore sub-CPU has an integrated interrupt controller. The user is referred to the technical reference manual of
the VCore sub-CPU for information regarding the usage of the integrated interrupt controller. The interrupt sources
are listed in the following table.
Table 5-77. Interrupt Sources
Under certain error conditions the VCore sub-CPU may enter a lock-state. The lock state is communicated to the
main VCore CPU system through an outbound interrupt.
5.11.8.1 Timers
The VCore sub-CPU system SUBCPU_TIMERS are identical to the VCore CPU system TIMERS. The clock
frequency is 100MHz. For more information, see 5.10.4 Timers.
5.11.8.2 UART
The VCore sub-CPU system SUBCPU_UART is identical to the VCore CPU system. See 5.10.5 UARTs. The clock
frequency is 100 MHz. The interface is mapped on GPIOs as UART3. To enable the GPIO Interface mode for UART3
write SUBCPU_SYS_CFG::GENERAL_CTRL.UART_GPIOS_ENA to 1. For more information, see 5.10.8.1 GPIO
Overlaid Functions.
...........continued
JTAG_SEL0 JTAG_SEL1 JTAG Target
1 1 Scan chain
JTAG_TCK inout Test Clock Input: The test clock input (TCK) provides the clock for
the test logic
JTAG_TDI inout Test Data Input: Serial test instructions and data are received by the
test logic at TDI.
JTAG_TDO inout Test Data Output: TDO is the serial output for test instructions and
data from the test logic
JTAG_TMS inout Test Mode Select: The signal received at TMS is decoded by the
TAP controller to control test operations.
JTAG_NTRST inout Test Reset: The optional TRST* input provides for asynchronous
initialization of the TAP controller
6. Registers
Information about the registers for this product is available at github.com/microchip-ung/sparx-5_reginfo. To view or
print the information, navigate to the website.
The registers are common to the VSC7546 and VSC7549 devices. Registers not applicable to a specific device are
marked accordingly.
7. Electrical Specifications
This section provides the DC characteristics, AC characteristics, recommended operating conditions, and stress
ratings for the VSC7546 and VSC7549 SparX-5 devices.
7.1 DC Characteristics
This section contains the DC specifications for the devices.
Note:
1. Clock signal must be AC coupled.
Note:
1. Input common-mode voltage and amplitude must not exceed VDD18.
The DDR3 SDRAM interface supports the requirements of SDRAM devices as described in the JEDEC DDR3
specifications. The SDRAM interface signals are compatible with JESD79-3F (DDR3 SDRAM SPECIFICATION, July
2012) and JESD79-3-1A, January 2013. The SSTL I/O buffers have programmable on-die termination (ODT).
Note:
1. DDR_VREF is expected to track variations in VDD_IODDR. Peak-to-peak AC noise on DDR_VREF must not
exceed ±1 % of DDR_VREF.
Notes:
1. DDR_VREF is expected to track variations in VDD_IODDR. Peak-to-peak AC noise on DDR_VREF must not
exceed ±2% of DDR_VREF.
2. With 34 Ω output driver impedance.
Notes:
1. DDR_VREF is expected to track variations in VDD_IODDR. Peak-to-peak AC noise on DDR_VREF must not
exceed ±2% of DDR_VREF.
2. With 34 Ω output driver impedance.
7.1.5 SERDES6G/10G
This section provides the DC specifications for the 10G transceiver. The transceiver supports the following modes on
the S13 to S24 port.
• 100BASE-FX
• SGMII
• SFP
• 1000BASE-KX
• 2.5GBASE-KX
• QSGMII
• 5GBASE-KR
• 10GBASE-KR
• SFP+ (SFI)
• USXGMII
The transceiver supports the following modes on S0 to S12:
• 100BASE-FX
• SGMII
• SFP
• 1000BASE-KX
• 2.5GBASE-KX
• 5GBASE-KR
The following table lists the 10G transmitter specifications.
Table 7-7. 10G Transmitter
...........continued
Parameter Symbol Minimum Typical Maximum Unit Condition
Differential peak-to-peak output VO_DIFF 300 — 800 mVppd 100BASE-FX, SFP, SGMII,
voltage 1 QSGMII
Differential peak-to-peak output VO_DIFF 800 2 — 1200 mVppd 10GBASE-KR, 1000BASE-
voltage1 KX, 2.5GBASE-KX,
5GBASE-KR, USXGMII
Differential peak-to-peak output VOD_IDLE — — 30 mVppd —
voltage with Tx disabled
Notes:
1. Differential output swing is register configurable.
2. The minimum drive level is the lowest guaranteed drive level achievable with the maximum amplitude
configuration applied.
The following table lists the 10G receiver specifications.
Table 7-8. 10G Receiver
Note:
1. AC-coupling should be done at receiver.
7.1.6 SERDES25G
This section provides the DC specifications for the 25G transceiver. The transceiver supports the following modes:
• SGMII
• SFP
• 1000BASE-KX
• 2.5GBASE-KX
• 5GBASE-KR
• 10GBASE-KR
• SFP+ (SFI)
The following table lists the 25G transmitter specifications.
Table 7-9. 25G Transmitter
...........continued
Parameter Symbol Minimum Typical Maximum Unit Condition
Differential peak-to-peak output VOD_IDLE — — 30 mVppd —
voltage with Tx disabled
Notes:
1. Differential output swing is register configurable.
2. The minimum drive level is the lowest guaranteed drive level achievable with the maximum amplitude
configuration applied.
The following table lists the 25G receiver specifications.
Table 7-10. 25G Receiver
Note:
1. AC-coupling should be done at receiver.
7.1.7 PCIe
This section provides the DC specifications for the PCIe transceiver. The following table lists the PCIe transmitter
specifications.
Table 7-11. PCIe Transmitter
Notes:
1. Differential output swing is register configurable.
2. The minimum drive level is the lowest guaranteed drive level achievable with the maximum amplitude
configuration applied.
The following table lists the PCIe receiver specifications.
Table 7-12. PCIe Receiver
Note:
1. AC-coupling should be done at receiver.
The outputs and inputs meet or exceed the requirements of the LVTTL and LVCMOS standard, JEDEC JESD8-B
(September 1999) standard, unless otherwise stated. The inputs are Schmitt-trigger for noise immunity.
Table 7-14. GPIO, MIM, SI, JTAG, and Miscellaneous Signals DC Specifications
Notes:
1. GPIOs have programmable drive strength. Values apply when using drive strength two or higher.
2. Input high current and input low current equals the maximum leakage current, excluding the current in the
built-in pull resistors.
3. For MDIO0, SI_D0, SI_D1, SI_nCS0, and JTAG_TDO the IOH is -6 mA.
4. For MDIO0, SI_D0, SI_D1, SI_nCS0, and JTAG_TDO the IOL is 6 mA.
Note:
Microchip does not support or recommend operation of the thermal diode under reverse bias.
The following table provides the diode parameter and interface specifications with the pins connected internally to
VSS in the device.
Table 7-15. Thermal Diode Parameters
Note:
1. Typical value is device dependent.
The ideality factor, n, represents the deviation from ideal diode behavior as exemplified by the following diode
equation:
IFW =IS (e(qV)/(nkT)-1)
where, IS = saturation current, q = electron charge, VD = voltage across the diode, k = Boltzmann constant, and T =
absolute temperature (Kelvin).
7.2 AC Characteristics
This section provides the AC specifications for the VSC7546 and VSC7549 SparX-5 devices. All SerDes inputs and
outputs should be AC-coupled and work in differential mode.
Note:
1. Peak-to-peak values are typically higher than the RMS value by a factor of 10 to 14.
The following table lists the AC specifications for the REFCLK1 and REFCLK2 SerDes reference clocks.
Table 7-17. REFCLK1/REFCLK2 SerDes Reference Clocks
...........continued
REFCLK1/ Symbol Minimum Typical Maximu Unit Conditio
REFCLK2 m n
SerDes
Reference
ClocksPara
meter
Clock duty — 40 — 60 % Measure
cycle d at 50%
threshold
.
Rise time tR, tF 1 — 4 V/ns Differenti
and fall time al
±250 mV
threshold
.
Rise/fall tDiff — — 10 % Single-
matching ended
Random RJ — — 1.0 ps, rms% From 50
Jitter kHz to
10 MHz
bandwidt
h.
Jitter — — — 0.3 dB —
transfer from
REFCLK to
SerDes
outputs,
bandwidth
from 10 kHz
to 1 MHz
Jitter — — — 4 dB —
transfer from
REFCLK to
SerDes
outputs,
bandwidth
from 1 MHz
to 10 MHz
Jitter — — — 2 – 20 × dB —
transfer from log (ƒ/
REFCLK to 10 MHz)
SerDes
outputs,
bandwidth
above 10
MHz
...........continued
REFCLK1/ Symbol Minimum Typical Maximu Unit Conditio
REFCLK2 m n
SerDes
Reference
ClocksPara
meter
REFCLK — — — 20 ps To meet
input peak- G.8262
to-peak jitter, 1G
bandwidth SyncE
from 2.5 kHz jitter
and 10 generatio
MHz1 n
specificat
ion.
REFCLK — — — 4 ps To meet
input peak- G.8262
to-peak jitter, 10G
bandwidth SyncE
from 20 kHz jitter
and 20 generatio
MHz1 n
specificat
ion.
REFCLK — — — 4 ps To meet
input peak- G.8262
to-peak jitter, 25G
bandwidth SyncE
from 20 kHz jitter
and 20 generatio
MHz1 n
specificat
ion.
Note:
1. Peak-to-peak values are typically higher than the RMS value by a factor of 10 to 14.
The following illustration shows jitter transfer curves from REFCLK1 and REFCLK2 to all high-speed outputs.
0 dB
–3 dB
–6 dB
156.25 MHz
–9 dB
Gain (dB)
–12 dB
–15 dB
–18 dB
–21 dB
–24 dB
0.001 MHz 0.01 MHz 0.1 MHz 1 MHz 10 MHz 100 MHz
Frequency (MHz)
The following table lists the AC specifications for the REFCLK3 PCIe reference clocks.
Table 7-18. REFCLK3 PCIe Reference Clocks
...........continued
Parameter Symbol Minimum Typical Maximum Unit Condition
Jitter transfer from — — — 1 ps 8G PCIe mode.
REFCLK to SerDes
output, bandwidth from 4
MHz to 5 MHz.
Jitter transfer from — — — 1 – 20 × log (ƒ/ ps 8G PCIe mode.
REFCLK to SerDes 5 MHz)
output, bandwidth above
5 MHz
SSC frequency range FSSC 30 — 33 kHz —
SSC frequency deviation FSSC- –5000 — 0 ppm —
FREQ-
DEVIATION
Note:
1. Excluding the spread spectrum clocking.
7.2.2 SerDes
This section describes the AC specifications for the SerDes transceiver. The transceiver supports 100BASE-FX, SFP,
1000BASE-KX, and SGMII modes.
The following table lists the AC characteristics for the SerDes transmitter.
Table 7-19. 100BASE-FX, SGMII, SFP, 1000BASE-KX, 2.5G, 2.5GBASE-KX, 5GBASE-KR Transmitter
...........continued
Parameter Symbol Minimum Maximum Unit Condition
Differential output RLOSDD2 — –9 dB 5G-USXGMII (derived from clause
return loss 2 –9 + 12 x log 72, 10GBase-KR)
(ƒ/2500 MHz) 50 MHz ≤ f < 2500 MHz
2500 MHz ≤ f ≤ 3750 MHz.
Note:
1. Slew rate is programmable.
Note:
1. Jitter requirements represent high-frequency jitter (above 637 kHz) and not low-frequency jitter or wander.
The following table lists the AC characteristics for the QSGMII transmitter.
Notes:
1. Jitter requirements represent high-frequency jitter (above 637 kHz) and not low-frequency jitter or wander.
2. Slew rate is programmable.
The following table lists the AC characteristics for the QSGMII receiver.
Table 7-22. QSGMII Transmitter
...........continued
Parameter Symbol Minimum Maximum Unit Condition
Data-dependent jitter CBHPJ — 0.30 UIP-P —
(correlated bounded high-
probability jitter)
Total jitter TJ — 0.60 UIP-P Sinusoidal jitter excluded.
Eye mask R_X1 — 0.30 UIP-P —
Eye mask R_Y1 50 — mV —
Eye mask R_Y2 — 450 mV —
The following table lists the AC characteristics for the 10 transmitter output.
Table 7-23. 10G Transmitter Output (SFI Point B, Host)
Note:
1. With a jitter-free reference clock. Any RefClk jitter with a frequency content below 7 MHz will add to the jitter
generated at the 10G output.
The following table lists the AC characteristics for the 10 transmitter output for direct attach copper.
Table 7-24. 10G Transmitter Output (SFI Point B, Host) for Direct Attach Copper
The following table lists the AC characteristics for the 10G receiver input.
Table 7-25. 10G Receiver Input (SFI Point C and C“, Host)
...........continued
Parameter Symbol Minimum Maximum Unit Condition
Wideband SyncE jitter WJT 30000/f — UIP-P 12.1 Hz to 20 kHz (f).
tolerance Measured according to
ITU-T G.8262 section
9.2.
Wideband SyncE jitter WJT 1.5 — UIP-P 20 kHz to 40 kHz.
tolerance Measured according to
ITU-T G.8262 section
9.2.
The following table lists the AC characteristics for the 10G transmitter output for direct attach copper.
Table 7-26. 10G Receiver Input (SFI Point C, Host) for Direct Attach Copper
The following table lists the AC characteristics for the 10G transmitter output.
Table 7-27. 10G Transmitter Output (SFI Point A, ASIC)
...........continued
Parameter Symbol Minimum Maximum Unit Condition
Differential output return loss SDD22 — –12 UI —
Differential output return loss SDD22 — See note 1 UI —
Common-mode return loss 2 SCC22 85 –9 UI —
Common-mode return loss2 R_Y2 See note 3 UI —
Notes:
1. Return loss value is given by the equation SDD22(dB) = –8.15 + 13.33 Log10(f/5.5 GHz).
2. The test set common-mode reference impedance is 25 Ω
3. Return loss value is given by the equation SCC22(dB) = –8.15 + 13.33 Log10(f/5.5), with f in GHz.
The following table lists the AC characteristics for the SFI input receiver.
Table 7-28. SFI Input Receiver (SFI Point D, ASIC)
Differential input return loss SDD11 — –12 dB 0.01 GHz to 2.8 GHz
Differential input return loss SDD11 — See note 1 dB 2.8 GHz to 11.1 GHz
Differential to common-mode SCD11 — –15 dB 0.01 GHz to 11.1 GHz
conversion 2
Notes:
1. Return loss value is given by the equation SDD11(dB) = –8.15 + 13.33 Log10(f/5.5), with f in GHz.
2. The test set common-mode reference impedance is 25 Ω.
The following table lists the AC characteristics for the 10GBASE-KR transmitter.
Table 7-29. 10GBASE-KR Transmitter, 10G USXGMII (10.3125Gbps, 64b66b), 10G USGMII
...........continued
Parameter Symbol Minimum Maximum Unit Condition
Common-mode output RLOSCC22 — –6 + 12 x log (ƒ/ dB 2.5 GHz to 7.5 GHz
return loss 2.5 GHz)
Rise time and fall time tR, tF — 47 UIP-P —
Random jitter RJ — 0.15 UIP-P —
Deterministic jitter DJ — 0.15 UIP-P —
Duty cycle distortion (part of DCD — 0.035 UIP-P —
DJ)
Total jitter2 TJ — 0.28 UIP-P —
Notes:
1. Informative, system related: maximum insertion loss is 15 dB @ 5 GHz (10 Gbps) (vs ~25 dB based on the KR
spec). This is to allow low cost interface implementation, while meeting system requirements.
2. With a jitter-free reference clock. Any RefClk jitter with a frequency content below 7 MHz will add to the jitter
generated at the 10 Gbps output.
The following table lists the AC characteristics for the 10GBASE-KR receiver.
Table 7-30. 10GBASE-KR Receiver, 10G USXGMII (10.3125Gbps, 64b66b), 10G USGMII (Octal-USGMII, 8x
1.25Gbps, 8b10b)
Note:
1. Maximum insertion loss is 15 dB @ 5 GHz (10 Gbps) (vs ~25 dB based on the KR spec). This is to allow low
cost interface implementation, while meeting system requirements.
Note:
The following table lists the AC characteristics for the PCIe transmitter.
Table 7-31. PCIe Transmitter AC
...........continued
Parameter Symbol Minimum Maximum Unit Condition
TX boost ratio for full VTX-BOOST-FS 8 — dB 8G mode
swing
TX boost ratio for VTX-BOOST-RS 2.5 — dB 8G mode
reduced swing
Pseudo package loss PS21TX –3.0 — dB 8G mode
Lone pulse width TMIN-PULSE 0.9 — UI 5G mode
TX Eye opening TTX-EYE 0.75 — UI 2.5G and 5G modes
TX Eye median to TTX-EYE-MEDIAN-to-MAX-JITTER — 0.125 UI 2.5G mode
max jitter
Rise/fall time TRF-MISMATCH — 1 UI 5G mode, 20%/80%
mismatch
Differential output RLOSDD22 — –10 dB 0.05 to 1.25GHz
return loss
Differential output RLOSDD22 — –8 dB 1.25GHz to 2.5GHz
return loss
Differential output RLOSDD22 — –4 dB 2.5GHz to 4GHz
return loss
Common-mode RLOSCC22 — –6 dB 50 MHz to 2.5 GHz.
output return loss
Common-mode RLOSCC22 — –4 dB 2.5 GHz to 4 GHz.
output return loss
Peak AC common- VTX-CM-AC-P — 20 mVP 2.5G mode
mode voltage
Peak-peak AC VTX-CM-AC-PP — 150 mVPP 5G and 8G mode
common-mode
voltage
Peak-peak AC VTX-CM-AC_LF-PP — 100 mVPP 5G mode
common-mode
voltage below
500MHz
Peak-peak AC VTX-CM-AC_LF-PP — 50 mVPP 8G mode
common-mode
voltage below
500MHz
Differential peak VTX-IDLE-DIFF-AC — 20 mVpea —
output voltage with Tx k
disabled
Deterministic Jitter TTX-HF-DJ-DD — 0.15 UI 5G mode, jitter above
above 1.5MHz 1.5MHz
Jitter below 1.5MHz TTX-LF-RMS — 3 psRMS 5G mode, jitter above
1.5MHz
Total uncorrelated TTX-UTJ — 31.25 pspp 8G mode @10-12
jitter
...........continued
Parameter Symbol Minimum Maximum Unit Condition
Total uncorrelated TTX-UDJDD — 12 pspp 8G mode
deterministic jitter
Total uncorrelated TTX-UPW-TJ — 24 pspp 8G mode @10-12
PWJ
Deterministic DjDD TTX-UPW-DJDD — 10 pspp 8G mode
uncorrelated PWJ
Data Dependent Jitter TTX-DDJ — 18 pspp 8G mode
Note:
1. Excluding the spread spectrum clocking.
The following table lists the AC characteristics for the PCIe receiver.
Table 7-32. PCIe Receiver AC
...........continued
Parameter Symbol Minimum Maximum Unit Condition
Sinusoidal jitter tolerance TRX-ST-SJ-8G — 0.1 UIPP 8G mode, 10 MHz to 100
MHz
Note:
1. Excluding the spread spectrum clocking.
VDDxmin
VDDx
REFCLK
nRESET
Strapping
tHCFG tHCFG
The signal applied to the nRESET input must comply with the specifications listed in the following table at the reset
pin of the devices.
Table 7-33. nRESET Timing Specifications
tC
VIH(DC)MIN
MDC
VIL(DC)MAX
tW(CH) tW(CL)
MDIO VIH(DC)MIN
(Write) VIL(DC)MAX
tSU(W) tH(W)
MDIO VIH(DC)MIN
(Read) VIL(DC)MAX
tSU(R) tH(R)
The set up time of MDIO relative to the rising edge of MDC is defined as the length of time between when the MDIO
exits and remains out of the switching region and when MDC enters the switching region. The hold time of MDIO
relative to the rising edge of MDC is defined as the length of time between when MDC exits the switching region and
when MDIO enters the switching region.
All MIIM signals comply with the specifications in the following table. The MDIO signal requirements are requested at
the pin of the devices.
Table 7-34. MIIM Timing Specifications
Notes:
1. For the maximum value, the device supports an MDC clock speed of up to 20 MHz for faster communication
with the PHYs. If the standard frequency of 2.5 MHz is used, the MIIM interface is designed to meet or exceed
the IEEE 802.3 requirements of the minimum MDC high and low times of 160 ns and an MDC cycle time of
minimum 400 ns, which is not possible at faster speeds.
2. Value is for 250 MHz core clock. With 500 MHz core clock the value is 0.977 MHz.
3. Calculated as tC = 1/ƒ.
4. Value is for 250 MHz core clock. With 500 MHz core clock the value is 1024 ns.
...........continued
Parameter Symbol Minimum Maximum Unit Condition
Clock time high tW(CH) 16 — ns —
Clock time low tW(CL) 16 — ns —
Clock rise time and fall time tR, tF — 10 ns Between VIL(MAX) and VIH(MIN).
CL= 30 pF.
SI_DO setup time to clock tSU(DO) 10 — ns —
SI_DO hold time from clock tH(DO) 10 — ns —
Enable active before first clock tLEAD 10 — ns —
Enable inactive after clock tLAG 5 — ns —
SI_DI setup time to clock tSU(DI) 42 — ns —
SI_DI hold time from clock tH(DI) –10 — ns —
Note:
1. Frequency is programmable. The startup frequency is 8.1 MHz.
SI_nCS0
(output)
tLEAD tC tLAG
SI_CLK tW(CL)
(output) tW(CH)
tSU(DO) tH(DO)
SI_DO
(output)
tSU(DI) tH(DI)
SI_DI
(input)
All SI signals comply with the specifications shown in the following table. The SI input timing requirements are
requested at the pins of the devices.
Table 7-36. SI Timing Specifications for Master Mode
...........continued
Parameter Symbol Minimum Maximum Unit Condition
Enable active before first clock tLEAD 10 — ns —
Enable inactive after clock tLAG 15 — ns —
SI_DI setup time to clock tSU(DI) 48 — ns —
SI_DI hold time from clock tH(DI) –5 — ns —
Note:
1. Frequency is programmable. The startup frequency is 4 MHz.
SI_nCS0
(Input)
tC tLAG1
tW(CH) tF
SI_CLK
(Input)
tLEAD tW(CL) tR
SI_DO
High Impedance
(Output)
tSU(DI) tH(DI)
SI_DI
(Input)
SI_nCS0
(Input)
tLAG2
SI_CLK
(Input)
tV(C) tDIS1
tH(DO)
tDIS2
SI_DO
Last data bit
(Output)
SI_DI
(Input)
All SI signals comply with the specifications shown in the following table. The SI input timing requirements are
requested at the pins of the devices.
Table 7-37. SI Timing Specifications for Slave Mode
...........continued
Parameter Symbol Minimum Maximum Unit Condition
Clock cycle time tC 40 — ns —
Clock time high tW(CH) 16 — ns —
Clock time low tW(CL) 16 — ns —
SI_DI setup time to clock tSU(DI) 7 — ns —
SI_DI hold time from clock tH(DI) 1 — ns —
Enable active before first clock tLEAD 10 — ns —
Enable inactive after clock (input cycle) 1 tLAG1 25 — ns —
Enable inactive after clock (output cycle) tLAG2 See note2 — ns —
Enable inactive width tW(EH) 20 — ns —
SI_DO valid after clock tV(C) 52 ns CL = 30 pF.
SI_DO hold time from clock tH(DO) 11 — ns CL = 0 pF.
SI_DO disable time 3 tDIS1 — 20 ns See Figure 7-7.
SI_DO disable time 3 tDIS2 — 20 ns See Figure 7-7.
Notes:
1. tLAG1 is defined only for write operations to the devices, not for read operations.
2. The last rising edge on the clock is necessary for the external master to read in the data. The lag time
depends on the necessary hold time on the external master data input.
3. Pin begins to float when a 300 mV change from the loaded VOH or VOL level occurs.
Figure 7-8. SI_DO Disable Test Circuit
3.3 V
500 W
500 W 5 pF
...........continued
Parameter Symbol Minimum Typical Maximum Unit Condition
DDR4 average clock tCK(avg) 1600 — — ps —
period
DDR4 Absolute clock tCHL(abs) 0.45 — — tCK(a —
HIGH/LOW pulse width vg)
Note:
1. These requirements are dependent on the operation frequency of the DDR SDRAM interface. Stated limits are
for DDR4-1250.
The following table lists the AC specifications for the DDR4 SDRAM input signals.
Table 7-39. DDR4 SDRAM Output Signal AC Characteristics
Note:
1. These requirements are dependent on the operation frequency of the DDR SDRAM interface. Stated limits are
for DDR4-1250.
The following figure shows the DDR3/DDR3L SDRAM input timing diagram.
tCLK
DDR_UDQSn/DDR_LDQSn
DDR_UDQS/DDR_LDQS
t90 t90
DDR_DQ[15:0]
The following table lists the AC specifications for the DDR3 and DDR3L SDRAM input signals.
Table 7-40. DDR3/DDR3L SDRAM Input Signal AC Characteristics
Note:
1. These requirements are dependent on the operation frequency of the DDR SDRAM interface. Stated limits are
for DDR3-2000 (DDR3-2133).
The following figure shows the timing diagram for the DDR3 and DDR3L SDRAM outputs.
tCLK
DDR_CKn
DDR_CK
tAS/CS tAH/CH
R_Addr, DDR_BA/DDR_CKE,
DDR_nRAS, DDR_nCAS,
DR_nWE, DDR_nCS
tDQSPST
tDQSPRE
DDR_LDQS
DDR_UDQS
tCLKDQS
DDR_DQ[15:0]
DDR_LDM/UDM
The following table lists the AC characteristics for the DDR3 and DDR3L SDRAM output signals.
Table 7-41. DDR3/DDR3L SDRAM Output Signal AC Characteristics
Note:
1. Timing reference is DDR_CK/DDR_CKn crossing DDR_VREF. Actual max data rate is DDR3-2000.
The following figure shows the test load circuit for the DDR3 outputs.
Figure 7-11. Test Load Circuit for DDR3 Outputs
0.5 × VDD_IODDR
150 W
Outputs ZO = 60 W
tC
TCK
tW(CH) tW(CL)
TDI
TMS
tV(C) tSU tH
TDO
nTRST
tW(TL)
All JTAG signals comply with the specifications in the following table. The JTAG receive signal requirements are
requested at the pin of the devices.
The JTAG_nTRST signal is asynchronous to the clock and does not have a setup or hold time requirement.
Table 7-42. JTAG Interface AC Specifications
Note:
1. The pin begins to float when a 300 mV change from the actual VOH/VOL level occurs.
The following illustration shows the test circuit for the TDO disable time.
Figure 7-13. Test Circuit for TDO Disable Time
tW(CLK)
VIH(DC)
SG[2:0]_CLK
VIL(DC)
tV(DO) tH(DO)
VIH(DC)
SG[2:0]_DO
VIL(DC)
tPD(LATCH)
VIH(DC)
SG[2:0]_LD
VIL(DC)
tW(Latch)
VIH(DC)
SG[2:0]_DI
VIL(DC)
tSU(DI) tH(DI)
Note:
1. The SIO clock frequency is programmable.
33 W
50 W
8 pF
The following table lists the AC specifications for the recovered clock outputs.
Note:
1. Not valid when the SD_RECO_CLK_DIV register is configured with the divider 66/32 as this produces a
gabbed clock.
...........continued
Parameter Symbol Minimum Maximum Unit Condition
Clock low time tWL 6.5 — ns 50% of VDDIO33
Clock and signal rise/fall time tTHL/TLH — 3 ns Between minVIH and
max VIL. Maximum
30pF load
Output hold time tOH 0 — ns 50% of VDDIO33.
Maximum 30 pF load
Measured from rising
clock edge
Note:
1. The clock frequency is programmable.
tBUF
TWI_SDA
tSU_DAT tHD_STA
tSU_STO
tHD_DAT tSU_STA
tLOW
TWI_SCL
tHD_STA tHIGH
TWI_SDA
tVD_DAT
TWI_SCL
The following table lists the AC specifications for the serial interface. Standard mode is defined as 100 kHz and
fast mode is 400 kHz. The data in this table assumes that the software-configurable two-wire interface timing
parameters, SS_SCL_HCNT, SS_SCL_LCNT, FS_SCL_HCNT, and FS_SCL_LCNT, are set to valid values for the
selected speed.
Notes:
1. An external device must provide a hold time of at least 300 ns for the TWI_SDA signal to bridge the undefined
region of the falling edge of the TWI_SCL signal.
2. Some external devices may require more data in hold time (target device’s tHD_DAT) than what is provided by
tVD_DAT, for example, 300 ns to 900 ns. The minimum value of tVD_DAT is adjustable; the value given represents
the recommended minimum value, which is enabled in ICPU_CFG::TWI_CONFIG.TWI_DELAY_ENABLE.
Notes:
1. DDR3/DDR4 on-die termination is disabled.
2. Unloaded pins.
Note:
The values above are intended for power supply design only.
In many applications the total power consumption can be minimized if not all SerDes and Clock Management Units
are used. The following table shows the typical power consumption for some configurations excluding PCIe (~0.3W).
Table 7-49. Example configurations (Excluding PCIe)
VDD, VDD_IODDR, and VDDPLLDDR must power on simultaneously, or in the following sequence: VDD - VDD_IODDR -
VDDPLLDDR. It is recommended to power VDD before VDD_IODDR and VDD_IODDR before VDDPLLDDR.
During power on and off, VDD_IO33 must never be more than 1.8 V above VDD_IO18.
In summary, the following power up sequence should be followed: 0.9V before 1.0V before 1.2V before 1.35V/1.5V
before 1.8V before 3.3V.
The nRESET and JTAG_nTRST inputs must be held low until all power supply voltages have reached their
recommended operating condition values.
Notes:
1. When operating at line speeds above 12Gbps, the minimum voltage is 0.95 V.
2. Minimum specification is ambient temperature, and the maximum is junction temperature.
WARNING
Stresses listed in the following table may be applied to devices one at a time without causing permanent
damage. Functionality at or exceeding the values listed is not implied. Exposure to these values for
extended periods may affect device reliability.
This device can be damaged by electrostatic discharge (ESD) voltage. Microchip recommends that
WARNING
all integrated circuits be handled with appropriate precautions. Failure to observe proper handling and
installation procedures may adversely affect reliability of the device.
8. Pin Descriptions
The SparX-5 device has 672 pins, which are described in this section.
The pin information is also provided as an attached Microsoft Excel file, so that you can copy it electronically. In
Adobe Reader, double-click the attachment icon.
B S32_TXP VDDHS2_9 S31_TXP VDDHS2_10 S30_TXP VDDHS2_11 S29_TXP VDDHS2_12 S28_TXP VDDHS2_13 S27_TXP VDDHS2_14 S26_TXP VDDHS2_15 S25_TXP
C VSS_1 VSS_2 VSS_3 VSS_4 VSS_5 VSS_6 VSS_7 VSS_8 VSS_9 VSS_10 VSS_11 VSS_12 VSS_13 VSS_14 VSS_15
D S32_RXN VSS_27 S31_RXN VSS_28 S30_RXN VSS_29 S29_RXN VSS_30 S28_RXN VSS_31 S27_RXN VSS_32 S26_RXN VSS_33 S25_RXN
E S32_RXP VSS_40 S31_RXP VSS_41 S30_RXP VSS_42 S29_RXP VSS_43 S28_RXP VSS_44 S27_RXP VSS_45 S26_RXP VSS_46 S25_RXP
F VSS_49 VSS_50 VSS_51 VSS_52 VSS_53 VDDHV2_1 VSS_54 VDDHV2_2 VSS_55 VDDH18_1 VSS_56 VDDH18_2 VSS_57 VDDH18_3 VSS_58
G REFCLK2_N VSS_59 VSS_60 RESERVED_8 VSS_61 VDDHV2_3 VSS_62 VDDHV2_4 VSS_63 VDDH18_5 VSS_64 VDDH18_6 VSS_65 VDDH18_7 VSS_66
H REFCLK2_P VSS_71 VSS_72 VSS_73 VSS_74 VSS_75 VSS_76 VSS_77 VSS_78 VSS_79 VSS_80 VSS_81 VSS_82 VSS_83 VSS_84
J VSS_95 RESERVED_6 THERMDA THERMDC VDDIO18_1 VSS_96 VSS_97 VDD_1 VDD_2 VSS_98 VSS_99 VDD_3 VDD_4 VSS_100 VSS_101
K nRESET MDC0 MDIO0 RESERVED_0 VDDIO18_2 VSS_108 VSS_109 VDD_9 VDD_10 VSS_110 VSS_111 VDD_11 VDD_12 VSS_112 VSS_113
L GPIO_60 GPIO_61 GPIO_62 GPIO_63 VDDIO33_1 VSS_120 VSS_121 VDD_17 VDD_18 VSS_122 VSS_123 VDD_19 VDD_20 VSS_124 VSS_125
M GPIO_56 GPIO_57 GPIO_58 GPIO_59 VDDIO33_2 VSS_132 VSS_133 VDD_25 VDD_26 VSS_134 VSS_135 VDD_27 VDD_28 VSS_136 VSS_137
N GPIO_52 GPIO_53 GPIO_54 GPIO_55 VDDIO33_3 VSS_144 VSS_145 VDD_33 VDD_34 VSS_146 VSS_147 VDD_35 VDD_36 VSS_148 VSS_149
P GPIO_48 GPIO_49 GPIO_50 GPIO_51 VDDIO33_4 VSS_156 VSS_157 VDD_41 VDD_42 VSS_158 VSS_159 VDD_43 VDD_44 VSS_160 VSS_161
R GPIO_34 GPIO_35 GPIO_36 GPIO_37 VDDIO33_5 VSS_168 VSS_169 VDD_49 VDD_50 VSS_170 VSS_171 VDD_51 VDD_52 VSS_172 VSS_173
T GPIO_30 GPIO_31 GPIO_32 GPIO_33 VDDIO33_6 VSS_180 VSS_181 VDD_57 VDD_58 VSS_182 VSS_183 VDD_59 VDD_60 VSS_184 VSS_185
U GPIO_26 GPIO_27 GPIO_28 GPIO_29 VDDIO33_7 VSS_192 VSS_193 VDD_65 VDD_66 VSS_194 VSS_195 VDD_67 VDD_68 VSS_196 VSS_197
V GPIO_22 GPIO_23 GPIO_24 GPIO_25 VDDIO33_8 VSS_204 VSS_205 VDD_73 VDD_74 VSS_206 VSS_207 VDD_75 VDD_76 VSS_208 VSS_209
W GPIO_18 GPIO_19 GPIO_20 GPIO_21 VDDIO33_9 VSS_216 VSS_217 VDD_81 VDD_82 VSS_218 VSS_219 VDD_83 VDD_84 VSS_220 VSS_221
Y GPIO_14 GPIO_15 GPIO_16 GPIO_17 VDDIO33_1 0 VSS_228 VSS_229 VDD_89 VDD_90 VSS_230 VSS_231 VDD_91 VDD_92 VSS_232 VSS_233
AA GPIO_10 GPIO_11 GPIO_12 GPIO_13 VDDIO33_1 1 VSS_240 VSS_241 VDD_97 VDD_98 VSS_242 VSS_243 VDD_99 VDD_100 VSS_244 VSS_245
AB GPIO_4 GPIO_5 GPIO_6 GPIO_7 VDDIO33_1 2 VSS_252 VSS_253 VDD_105 VDD_106 VSS_254 VSS_255 VDD_107 VDD_108 VSS_256 VSS_257
AC GPIO_0 GPIO_1 GPIO_2 GPIO_3 VDDIO33_1 3 VSS_264 VSS_265 VSS_266 VSS_267 VSS_268 VSS_269 VSS_270 VSS_271 VSS_272 VSS_273
AD VDDIO18_3 VDDIO18_4 VSS_284 VSS_285 VSS_286 VDDHS_15 VSS_287 VDDHS_16 VSS_288 VDDHS_17 VSS_289 VDDHS_18 VSS_290 VDDHS_19 VSS_291
AE VSS_297 VSS_298 VSS_299 RESERVED_9 VDDH18_9 VDDHS_25 S1_RXP VDDHS_26 S3_RXP VDDHS_27 S5_RXP VDDHS_28 S7_RXP VDDHS_29 S9_RXP
AF VDDIO33_1 4 VDDIO33_1 5 VDDIO33_1 6 VSS_300 VDDH18_11 S0_RXP S1_RXN S2_RXP S3_RXN S4_RXP S5_RXN S6_RXP S7_RXN S8_RXP S9_RXN
AG SI_CLK JTAG_SEL0 JTAG_CPU_nRST VSS_301 REFCLK1_P S0_RXN VSS_302 S2_RXN VSS_303 S4_RXN VSS_304 S6_RXN VSS_305 S8_RXN VSS_306
AH SI_D0 JTAG_TDO JTAG_nTRST VSS_313 REFCLK1_N VSS_314 S1_TXP VSS_315 S3_TXP VSS_316 S5_TXP VSS_317 S7_TXP VSS_318 S9_TXP
AJ SI_D1 JTAG_TMS JTAG_TCK VSS_327 VDDHV_5 S0_TXP S1_TXN S2_TXP S3_TXN S4_TXP S5_TXN S6_TXP S7_TXN S8_TXP S9_TXN
AK SI_nCS0 JTAG_TDI JTAG_SEL1 VSS_328 VDDHV_8 S0_TXN NoBall_5 S2_TXN NoBall_6 S4_TXN NoBall_7 S6_TXN NoBall_8 S8_TXN NoBall_9
VDDHS2_16 S24_TXP S23_TXN S22_TXP S21_TXN S20_TXP S19_TXN S18_TXP S17_TXN VDDHS_2 PCIE_TXP VDDHV_3 PCIE_RXP VDDHV_4 REFCLK3_P B
VSS_16 VSS_17 S23_TXP VSS_18 S21_TXP VSS_19 S19_TXP VSS_20 S17_TXP VSS_21 VSS_22 VSS_23 VSS_24 VSS_25 VSS_26 C
VSS_34 S24_RXN VSS_35 S22_RXN VSS_36 S20_RXN VSS_37 S18_RXN VSS_38 VDDHS_3 VSS_39 DDR_DM4 DDR_DQ33 RESERVED_7 DDR_DM3 D
VSS_47 S24_RXP S23_RXN S22_RXP S21_RXN S20_RXP S19_RXN S18_RXP S17_RXN VDDHS_4 VSS_48 DDR_DQ35 DDR_DQ37 DDR_DQ25 DDR_DQ27 E
VDDH18_4 VDDHS_5 S23_RXP VDDHS_6 S21_RXP VDDHS_7 S19_RXP VDDHS_8 S17_RXP VDDHS_9 RESERVED_10 DDR_DQ39 DDR_DQ38 DDR_DQ29 DDR_DQ31 F
VDDH18_8 VDDHS_10 VSS_67 VDDHS_11 VSS_68 VDDHS_12 VSS_69 VDDHS_13 VSS_70 VDDHS_14 RESERVED_2 DDR_DQ36 DDR_DQ34 DDR_DQ30 DDR_DQ28 G
VSS_85 VSS_86 VSS_87 VSS_88 VSS_89 VSS_90 VSS_91 VSS_92 VSS_93 VSS_94 RESERVED_3 DDR_DQ32 DDR_DQS_t4 DDR_DQ26 DDR_DQ24 H
VSS_102 VSS_103 VDD_5 VDD_6 VSS_104 VSS_105 VDD_7 VDD_8 VSS_106 VSS_107 RESERVED_4 DDR_DQS_c4 DDR_ZCTRL DDR_DQS_t3 DDR_DQS_c3 J
VSS_114 VSS_115 VDD_13 VDD_14 VSS_116 VSS_117 VDD_15 VDD_16 VSS_118 VSS_119 VDDPLLDDR_1 DDR_A16 DDR_RZQ DDR_DM2 DDR_DQ17 K
VSS_126 VSS_127 VDD_21 VDD_22 VSS_128 VSS_129 VDD_23 VDD_24 VSS_130 VSS_131 VDDPLLDDR_2 DDR_BG1 DDR_BA1 DDR_DQ19 DDR_DQ21 L
VSS_138 VSS_139 VDD_29 VDD_30 VSS_140 VSS_141 VDD_31 VDD_32 VSS_142 VSS_143 VDDIODDR_1 DDR_A5 DDR_ALERT_n DDR_DQ23 DDR_DQ22 M
VSS_150 VSS_151 VDD_37 VDD_38 VSS_152 VSS_153 VDD_39 VDD_40 VSS_154 VSS_155 VDDIODDR_2 DDR_A7 DDR_A13 DDR_DQ20 DDR_DQ18 N
VSS_162 VSS_163 VDD_45 VDD_46 VSS_164 VSS_165 VDD_47 VDD_48 VSS_166 VSS_167 VDDIODDR_3 DDR_CK_c DDR_CK_t DDR_DQ16 DDR_DQS_t2 P
VSS_174 VSS_175 VDD_53 VDD_54 VSS_176 VSS_177 VDD_55 VDD_56 VSS_178 VSS_179 VDDIODDR_4 DDR_CS_n1 DDR_CS_n0 DDR_DQS_c2 DDR_VREFODQ R
VSS_186 VSS_187 VDD_61 VDD_62 VSS_188 VSS_189 VDD_63 VDD_64 VSS_190 VSS_191 VDDIODDR_5 DDR_A15 DDR_A12 DDR_DM1 DDR_DQ9 T
VSS_198 VSS_199 VDD_69 VDD_70 VSS_200 VSS_201 VDD_71 VDD_72 VSS_202 VSS_203 VDDIODDR_6 DDR_A3 DDR_A1 DDR_DQ11 DDR_DQ13 U
VSS_210 VSS_211 VDD_77 VDD_78 VSS_212 VSS_213 VDD_79 VDD_80 VSS_214 VSS_215 VDDIODDR_7 DDR_VREFOC A DDR_A17 DDR_DQ15 DDR_DQ14 V
VSS_222 VSS_223 VDD_85 VDD_86 VSS_224 VSS_225 VDD_87 VDD_88 VSS_226 VSS_227 VDDIODDR_8 DDR_A9 DDR_ODT1 DDR_DQ12 DDR_DQ10 W
VSS_234 VSS_235 VDD_93 VDD_94 VSS_236 VSS_237 VDD_95 VDD_96 VSS_238 VSS_239 VDDIODDR_9 DDR_ODT0 DDR_CKE1 DDR_DQ8 DDR_DQS_t1 Y
VSS_246 VSS_247 VDD_101 VDD_102 VSS_248 VSS_249 VDD_103 VDD_104 VSS_250 VSS_251 VDDIODDR_10 DDR_CKE0 DDR_ACT_n DDR_DQS_c1 DDR_DM0 AA
VSS_258 VSS_259 VDD_109 VDD_110 VSS_260 VSS_261 VDD_111 VDD_112 VSS_262 VSS_263 VDDIODDR_11 DDR_A10 DDR_A4 DDR_DQ5 DDR_DQ1 AB
VSS_274 VSS_275 VSS_276 VSS_277 VSS_278 VSS_279 VSS_280 VSS_281 VSS_282 VSS_283 VDDIODDR_12 DDR_A0 DDR_A6 DDR_DQ7 DDR_DQ3 AC
VDDHS_20 VSS_292 VDDHS_21 VSS_293 VDDHS_22 VSS_294 VDDHS_23 VSS_295 VDDHS_24 VSS_296 VDDPLLDDR_3 DDR_A2 DDR_PAR DDR_DQ6 DDR_DQ4 AD
VDDHS_30 S11_RXP VDDHS_31 VDDH18_10 VDDHS_32 S14_RXP VDDHS_33 S16_RXP VDDHS_34 VDDIO18_5 VDDPLLDDR_4 DDR_A8 DDR_A11 DDR_DQ2 DDR_DQ0 AE
S10_RXP S11_RXN S12_RXP VDDH18_12 S13_RXP S14_RXN S15_RXP S16_RXN VDDH18_13 VDDIO18_6 RESERVED_5 DDR_A14 DDR_BG0 DDR_DQS_t0 DDR_DQS_c0 AF
S10_RXN VSS_307 S12_RXN VSS_308 S13_RXN VSS_309 S15_RXN VSS_310 VDDH18_14 GPIO_8 VSS_311 DDR_BA0 DDR_RESETn RESERVED_1 VSS_312 AG
VSS_319 S11_TXP VSS_320 VSS_321 VSS_322 S14_TXP VSS_323 S16_TXP VSS_324 GPIO_9 VDDIO33_17 VSS_325 VDDIO33_18 VSS_326 VDDIO33_19 AH
S10_TXP S11_TXN S12_TXP VDDHV_6 S13_TXP S14_TXN S15_TXP S16_TXN VDDHV_7 GPIO_38 GPIO_40 GPIO_42 GPIO_44 GPIO_46 REFCLK0_P AJ
S10_TXN NoBall_10 S12_TXN VDDHV_9 S13_TXN NoBall_11 S15_TXN NoBall_12 VDDHV_10 GPIO_39 GPIO_41 GPIO_43 GPIO_45 GPIO_47 REFCLK0_N AK
...........continued
Symbol Pin Type Description
I/O Bidirectional Bidirectional input or output signal.
O Output Output signal.
OZ 3-state output Output.
LVDS Input or output Low voltage differential signal.
LVCMOS Input or output Low voltage CMOS signal.
SSTL Input or output Stub-series terminated logic signal.
CML Input or output Current mode logic signal.
PD Pull-down On-chip pull-down resistor to VSS.
PU Pull-up On-chip pull-up resistor to VDD_IO.
3V 3.3 V-tolerant.
ST Schmitt-trigger Input has Schmitt-trigger circuitry.
TD Termination differential Internal differential termination.
P Power Power supply.
The following table lists the functional pin descriptions for the (VSC7546 and VSC7549) SparX-5 device.
Table 8-2. Functional Pin Description
...........continued
Name Number Signal Type Level Description
VDDHV2_1 F6 P — Analog supply for SerDes.
VDDHV2_2 F8 P — Analog supply for SerDes.
VDDHV2_3 G6 P — Analog supply for SerDes.
VDDHV2_4 G8 P — Analog supply for SerDes.
REFCLK0_N AK30 I CML System reference clock input.
REFCLK0_P AJ30 I CML System reference clock input
REFCLK3_N A30 I CML PCIe reference clock input.
REFCLK3_P B30 I CML PCIe reference clock input.
REFCLK2_N G1 I CML Serdes reference clock input.
REFCLK2_P H1 I CML Serdes reference clock input.
REFCLK1_N AH5 I CML Serdes reference clock input.
REFCLK1_P AG5 I CML Serdes reference clock input.
DDR_RESETn AG28 O SSTL DDR reset output.
DDR_BA0 AG27 I/O SSTL DDR Bank Address.
DDR_BG0 AF28 B SSTL DDR4 Bank Group output. DDR3
bank address 2 (BA2) output.
DDR_A14 AF27 B SSTL DDR address.
DDR_A11 AE28 B SSTL DDR address.
DDR_A8 AE27 B SSTL DDR address.
DDR_PAR AD28 B SSTL DDR command and address parity
output.
DDR_A2 AD27 B SSTL DDR address.
DDR_A6 AC28 B SSTL DDR address.
DDR_A0 AC27 B SSTL DDR address.
DDR_A4 AB28 B SSTL DDR address.
DDR_A10 AB27 B SSTL DDR address.
DDR_ACT_n AA28 B SSTL DDR4 Activation command (ACT)
output. DDR3 Row Address Strobe
(RAS#).
DDR_CKE0 AA27 O SSTL DDR Clock Enable.
DDR_CKE1 Y28 O SSTL DDR Clock Enable.
DDR_ODT0 Y27 B SSTL DDR On Die Termination enable.
DDR_ODT1 W28 B SSTL DDR On Die Termination enable.
DDR_A9 W27 B SSTL DDR address.
DDR_A17 V28 B SSTL DDR4 address (A17). DDR3 Column
Address Strobe (CAS#).
DDR_CK_t P28 B SSTL DDR Clock output.
...........continued
Name Number Signal Type Level Description
DDR_CK_c P27 B SSTL DDR Clock output.
DDR_A1 U28 B SSTL DDR address.
DDR_A3 U27 B SSTL DDR address.
DDR_A12 T28 B SSTL DDR address.
DDR_A15 T27 B SSTL DDR address.
DDR_CS_n0 R28 B SSTL DDR Chip Select.
DDR_CS_n1 R27 B SSTL DDR Chip Select.
DDR_A13 N28 B SSTL DDR address.
DDR_A7 N27 B SSTL DDR address.
DDR_ALERT_n M28 B SSTL DDR alert.
DDR_A5 M27 B SSTL DDR address.
DDR_BA1 L28 B SSTL DDR Bank address.
DDR_BG1 L27 B SSTL DDR4 bank group output.
DDR_A16 K27 B SSTL DDR4 address (A16). DDR3 Write
Enable (WE#).
DDR_DQ0 AE30 B SSTL DDR data.
DDR_DQ2 AE29 B SSTL DDR data.
DDR_DQ4 AD30 B SSTL DDR data.
DDR_DQ6 AD29 B SSTL DDR data.
DDR_DQ7 AC29 B SSTL DDR data.
DDR_DQS_c0 AF30 B SSTL DDR data strobe.
DDR_DQS_t0 AF29 B SSTL DDR data strobe.
DDR_DQ5 AB29 B SSTL DDR data.
DDR_DQ3 AC30 B SSTL DDR data.
DDR_DQ1 AB30 B SSTL DDR data.
DDR_DM0 AA30 B SSTL DDR data mask and bus inversion
(DDR4).
DDR_DQ16 P29 B SSTL DDR data.
DDR_DQ18 N30 B SSTL DDR data.
DDR_DQ20 N29 B SSTL DDR data.
DDR_DQ22 M30 B SSTL DDR data.
DDR_DQ23 M29 B SSTL DDR data.
DDR_DQS_c2 R29 B SSTL DDR data strobe.
DDR_DQS_t2 P30 B SSTL DDR data strobe.
DDR_DQ21 L30 B SSTL DDR data.
DDR_DQ19 L29 B SSTL DDR data.
...........continued
Name Number Signal Type Level Description
DDR_DQ17 K30 B SSTL DDR data.
DDR_DM2 K29 B SSTL DDR data mask and bus inversion
(DDR4).
DDR_DQ32 H27 B SSTL DDR data.
DDR_DQ34 G28 B SSTL DDR data.
DDR_DQ36 G27 B SSTL DDR data.
DDR_DQ38 F28 B SSTL DDR data.
DDR_DQ39 F27 B SSTL DDR data.
DDR_DQS_c4 J27 B SSTL DDR data strobe.
DDR_DQS_t4 H28 B SSTL DDR data strobe.
DDR_DQ37 E28 B SSTL DDR data.
DDR_DQ35 E27 B SSTL DDR data.
DDR_DQ33 D28 B SSTL DDR data.
DDR_DM4 D27 B SSTL DDR data mask and bus inversion
(DDR4).
DDR_DQ8 Y29 B SSTL DDR data.
DDR_DQ10 W30 B SSTL DDR data.
DDR_DQ12 W29 B SSTL DDR data.
DDR_DQ14 V30 B SSTL DDR data.
DDR_DQ15 V29 B SSTL DDR data.
DDR_DQS_c1 AA29 B SSTL DDR data strobe.
DDR_DQS_t1 Y30 B SSTL DDR data strobe.
DDR_DQ13 U30 B SSTL DDR data.
DDR_DQ11 U29 B SSTL DDR data.
DDR_DQ9 T30 B SSTL DDR data.
DDR_DM1 T29 B SSTL DDR data mask and bus inversion
(DDR4).
DDR_DQ24 H30 B SSTL DDR data.
DDR_DQ26 H29 B SSTL DDR data.
DDR_DQ28 G30 B SSTL DDR data.
DDR_DQ30 G29 B SSTL DDR data.
DDR_DQ31 F30 B SSTL DDR data.
DDR_DQS_c3 J30 B SSTL DDR data strobe.
DDR_DQS_t3 J29 B SSTL DDR data strobe.
DDR_DQ29 F29 B SSTL DDR data.
DDR_DQ27 E30 B SSTL DDR data.
...........continued
Name Number Signal Type Level Description
DDR_DQ25 E29 B SSTL DDR data.
DDR_DM3 D30 B SSTL DDR data mask and bus inversion
(DDR4).
GPIO_63 L4 B, PU LVCMOS General purpose input/output.
GPIO_62 L3 B, PU LVCMOS General purpose input/output.
GPIO_61 L2 B, PU LVCMOS General purpose input/output.
GPIO_60 L1 B, PU LVCMOS General purpose input/output.
GPIO_59 M4 B, PU LVCMOS General purpose input/output.
GPIO_58 M3 B, PU LVCMOS General purpose input/output.
GPIO_57 M2 B, PU LVCMOS General purpose input/output.
GPIO_56 M1 B, PU LVCMOS General purpose input/output.
GPIO_55 N4 B, PU LVCMOS General purpose input/output.
GPIO_54 N3 B, PU LVCMOS General purpose input/output.
GPIO_53 N2 B, PU LVCMOS General purpose input/output.
GPIO_52 N1 B, PU LVCMOS General purpose input/output.
GPIO_51 P4 B, PU LVCMOS General purpose input/output.
GPIO_50 P3 B, PU LVCMOS General purpose input/output.
GPIO_49 P2 B, PU LVCMOS General purpose input/output.
GPIO_48 P1 B, PU LVCMOS General purpose input/output.
GPIO_37 R4 B, PU LVCMOS General purpose input/output.
GPIO_36 R3 B, PU LVCMOS General purpose input/output.
GPIO_35 R2 B, PU LVCMOS General purpose input/output.
GPIO_34 R1 B, PU LVCMOS General purpose input/output.
GPIO_33 T4 B, PU LVCMOS General purpose input/output.
GPIO_32 T3 B, PU LVCMOS General purpose input/output.
GPIO_31 T2 B, PU LVCMOS General purpose input/output.
GPIO_30 T1 B, PU LVCMOS General purpose input/output.
GPIO_29 U4 B, PU LVCMOS General purpose input/output.
GPIO_28 U3 B, PU LVCMOS General purpose input/output.
GPIO_27 U2 B, PU LVCMOS General purpose input/output.
GPIO_26 U1 B, PU LVCMOS General purpose input/output.
GPIO_25 V4 B, PU LVCMOS General purpose input/output.
GPIO_24 V3 B, PU LVCMOS General purpose input/output.
GPIO_23 V2 B, PU LVCMOS General purpose input/output.
GPIO_22 V1 B, PU LVCMOS General purpose input/output.
...........continued
Name Number Signal Type Level Description
GPIO_21 W4 B, PU LVCMOS General purpose input/output.
GPIO_20 W3 B, PU LVCMOS General purpose input/output.
GPIO_19 W2 B, PU LVCMOS General purpose input/output.
GPIO_18 W1 B, PU LVCMOS General purpose input/output.
GPIO_17 Y4 B, PU LVCMOS General purpose input/output.
GPIO_16 Y3 B, PU LVCMOS General purpose input/output.
GPIO_15 Y2 B, PU LVCMOS General purpose input/output.
GPIO_14 Y1 B, PU LVCMOS General purpose input/output.
GPIO_13 AA4 B, PU LVCMOS General purpose input/output.
GPIO_12 AA3 B, PU LVCMOS General purpose input/output.
GPIO_11 AA2 B, PU LVCMOS General purpose input/output.
GPIO_10 AA1 B, PU LVCMOS General purpose input/output.
GPIO_7 AB4 B, PU LVCMOS General purpose input/output.
GPIO_6 AB3 B, PU LVCMOS General purpose input/output.
GPIO_5 AB2 B, PU LVCMOS General purpose input/output.
GPIO_4 AB1 B, PU LVCMOS General purpose input/output.
GPIO_3 AC4 B, PU LVCMOS General purpose input/output.
GPIO_2 AC3 B, PU LVCMOS General purpose input/output.
GPIO_1 AC2 B, PU LVCMOS General purpose input/output.
GPIO_0 AC1 B, PU LVCMOS General purpose input/output.
GPIO_8 AG25 B, PU LVCMOS General purpose input/output.
GPIO_9 AH25 B, PU LVCMOS General purpose input/output.
GPIO_38 AJ25 B, PU LVCMOS General purpose input/output.
GPIO_39 AK25 B, PU LVCMOS General purpose input/output.
GPIO_40 AJ26 B, PU LVCMOS General purpose input/output.
GPIO_41 AK26 B, PU LVCMOS General purpose input/output.
GPIO_42 AJ27 B, PU LVCMOS General purpose input/output.
GPIO_43 AK27 B, PU LVCMOS General purpose input/output.
GPIO_44 AJ28 B, PU LVCMOS General purpose input/output.
GPIO_45 AK28 B, PU LVCMOS General purpose input/output.
GPIO_46 AJ29 B, PU LVCMOS General purpose input/output.
GPIO_47 AK29 B, PU LVCMOS General purpose input/output.
JTAG_SEL0 AG2 I, PD LVCMOS JTAG select.
JTAG_TMS AJ2 B, PU LVCMOS JTAG test mode select.
JTAG_TDI AK2 I, PU LVCMOS JTAG test data input.
...........continued
Name Number Signal Type Level Description
JTAG_TCK AJ3 I, PU LVCMOS JTAG clock.
JTAG_SEL1 AK3 I, PU LVCMOS JTAG select.
JTAG_TDO AH2 B, PU LVCMOS JTAG test data out.
JTAG_CPU_nRST AG3 I, PU LVCMOS JTAG CPU reset.
JTAG_nTRST AH3 I, PU LVCMOS JTAG Test Controller Reset
MDIO0 K3 B, PU LVCMOS MIIM I/O
MDC0 K2 B, PU LVCMOS MIIM clock.
THERMDC J4 A Analog On-die thermal diode cathode.
THERMDA J3 A Analog On-die thermal diode anode.
nRESET K1 I, PU LVCMOS Reset input. Active low
PCIE_TXP B26 O DIFF PCIe serdes output.
PCIE_TXN A26 O DIFF PCIe serdes output
PCIE_RXP B28 I DIFF PCIe serdes input.
PCIE_RXN A28 I DIFF PCIe serdes input.
RESERVED_5 AF26 A Analog Leave floating.
RESERVED_4 J26 B SSTL Leave floating.
RESERVED_3 H26 B SSTL Leave floating.
RESERVED_2 G26 A Analog Leave floating.
RESERVED_10 F26 A Analog Leave floating.
RESERVED_7 D29 A — Leave floating.
RESERVED_8 G4 A — Leave floating.
RESERVED_0 K4 I, PD LVCMOS Pull high.
RESERVED_6 J2 A Analog Leave floating.
RESERVED_9 AE4 A Leave floating.
RESERVED_1 AG29 P Connect to VSS.
S17_TXP C24 O DIFF Ethernet serdes output.
S17_TXN B24 O DIFF Ethernet serdes output.
S17_RXN E24 I DIFF Ethernet serdes input.
S17_RXP F24 I DIFF Ethernet serdes input.
S18_TXP B23 O DIFF Ethernet serdes output.
S18_TXN A23 O DIFF Ethernet serdes output.
S18_RXN D23 I DIFF Ethernet serdes input.
S18_RXP E23 I DIFF Ethernet serdes input.
S19_TXP C22 O DIFF Ethernet serdes output.
S19_TXN B22 O DIFF Ethernet serdes output.
...........continued
Name Number Signal Type Level Description
S19_RXN E22 I DIFF Ethernet serdes input.
S19_RXP F22 I DIFF Ethernet serdes input.
S20_TXP B21 O DIFF Ethernet serdes output.
S20_TXN A21 O DIFF Ethernet serdes output.
S20_RXN D21 I DIFF Ethernet serdes input.
S20_RXP E21 I DIFF Ethernet serdes input.
S21_TXP C20 O DIFF Ethernet serdes output.
S21_TXN B20 O DIFF Ethernet serdes output.
S21_RXN E20 I DIFF Ethernet serdes input.
S21_RXP F20 I DIFF Ethernet serdes input.
S22_TXP B19 O DIFF Ethernet serdes output.
S22_TXN A19 O DIFF Ethernet serdes output.
S22_RXN D19 I DIFF Ethernet serdes input.
S22_RXP E19 I DIFF Ethernet serdes input.
S23_TXP C18 O DIFF Ethernet serdes output
S23_TXN B18 O DIFF Ethernet serdes output.
S23_RXN E18 I DIFF Ethernet serdes input.
S23_RXP F18 I DIFF Ethernet serdes input.
S24_TXP B17 O DIFF Ethernet serdes output.
S24_TXN A17 O DIFF Ethernet serdes output.
S24_RXN D17 I DIFF Ethernet serdes input.
S24_RXP E17 I DIFF Ethernet serdes input.
S13_TXP AJ20 O DIFF Ethernet serdes output.
S13_TXN AK20 O DIFF Ethernet serdes output.
S13_RXN AG20 I DIFF Ethernet serdes input.
S13_RXP AF20 I DIFF Ethernet serdes input.
S14_TXP AH21 O DIFF Ethernet serdes output.
S14_TXN AJ21 O DIFF Ethernet serdes output.
S14_RXN AF21 I DIFF Ethernet serdes input.
S14_RXP AE21 I DIFF Ethernet serdes input.
S15_TXP AJ22 O DIFF Ethernet serdes output.
S15_TXN AK22 O DIFF Ethernet serdes output.
S15_RXN AG22 I DIFF Ethernet serdes input.
S15_RXP AF22 I DIFF Ethernet serdes input.
S16_TXP AH23 O DIFF Ethernet serdes output.
...........continued
Name Number Signal Type Level Description
S16_TXN AJ23 O DIFF Ethernet serdes output.
S16_RXN AF23 I DIFF Ethernet serdes input.
S16_RXP AE23 I DIFF Ethernet serdes input.
S25_TXP B15 O DIFF Ethernet serdes output.
S25_TXN A15 O DIFF Ethernet serdes output.
S25_RXN D15 I DIFF Ethernet serdes input.
S25_RXP E15 I DIFF Ethernet serdes input.
S26_TXP B13 O DIFF Ethernet serdes output.
S26_TXN A13 O DIFF Ethernet serdes output.
S26_RXN D13 I DIFF Ethernet serdes input.
S26_RXP E13 I DIFF Ethernet serdes input.
S27_TXP B11 O DIFF Ethernet serdes output.
S27_TXN A11 O DIFF Ethernet serdes output.
S27_RXN D11 I DIFF Ethernet serdes input.
S27_RXP E11 I DIFF Ethernet serdes input.
S28_TXP B9 O DIFF Ethernet serdes output.
S28_TXN A9 O DIFF Ethernet serdes output.
S28_RXN D9 I DIFF Ethernet serdes input.
S28_RXP E9 I DIFF Ethernet serdes input.
S29_TXP B7 O DIFF Ethernet serdes output.
S29_TXN A7 O DIFF Ethernet serdes output.
S29_RXN D7 I DIFF Ethernet serdes input.
S29_RXP E7 I DIFF Ethernet serdes input.
S30_TXP B5 O DIFF Ethernet serdes output.
S30_TXN A5 O DIFF Ethernet serdes output.
S30_RXN D5 I DIFF Ethernet serdes input.
S30_RXP E5 I DIFF Ethernet serdes input.
S31_TXP B3 O DIFF Ethernet serdes output.
S31_TXN A3 O DIFF Ethernet serdes output.
S31_RXN D3 I DIFF Ethernet serdes input.
S31_RXP E3 I DIFF Ethernet serdes input.
S32_TXP B1 O DIFF Ethernet serdes output.
S32_TXN A1 O DIFF Ethernet serdes output.
S32_RXN D1 I DIFF Ethernet serdes input.
S32_RXP E1 I DIFF Ethernet serdes input.
...........continued
Name Number Signal Type Level Description
S0_TXP AJ6 O DIFF Ethernet serdes output.
S0_TXN AK6 O DIFF Ethernet serdes output.
S0_RXN AG6 I DIFF Ethernet serdes input.
S0_RXP AF6 I DIFF Ethernet serdes input.
S1_TXP AH7 O DIFF Ethernet serdes output.
S1_TXN AJ7 O DIFF Ethernet serdes output.
S1_RXN AF7 I DIFF Ethernet serdes input.
S1_RXP AE7 I DIFF Ethernet serdes input.
S2_TXP AJ8 O DIFF Ethernet serdes output.
S2_TXN AK8 O DIFF Ethernet serdes output.
S2_RXN AG8 I DIFF Ethernet serdes input.
S2_RXP AF8 I DIFF Ethernet serdes input.
S3_TXP AH9 O DIFF Ethernet serdes output.
S3_TXN AJ9 O DIFF Ethernet serdes output.
S3_RXN AF9 I DIFF Ethernet serdes input.
S3_RXP AE9 I DIFF Ethernet serdes input.
S4_TXP AJ10 O DIFF Ethernet serdes output.
S4_TXN AK10 O DIFF Ethernet serdes output.
S4_RXN AG10 I DIFF Ethernet serdes input.
S4_RXP AF10 I DIFF Ethernet serdes input.
S5_TXP AH11 O DIFF Ethernet serdes output.
S5_TXN AJ11 O DIFF Ethernet serdes output.
S5_RXN AF11 I DIFF Ethernet serdes input.
S5_RXP AE11 I DIFF Ethernet serdes input.
S6_TXP AJ12 O DIFF Ethernet serdes output.
S6_TXN AK12 O DIFF Ethernet serdes output.
S6_RXN AG12 I DIFF Ethernet serdes input.
S6_RXP AF12 I DIFF Ethernet serdes input.
S7_TXP AH13 O DIFF Ethernet serdes output.
S7_TXN AJ13 O DIFF Ethernet serdes output.
S7_RXN AF13 I DIFF Ethernet serdes input.
S7_RXP AE13 I DIFF Ethernet serdes input.
S8_TXP AJ14 O DIFF Ethernet serdes output.
S8_TXN AK14 O DIFF Ethernet serdes output.
S8_RXN AG14 I DIFF Ethernet serdes input.
...........continued
Name Number Signal Type Level Description
S8_RXP AF14 I DIFF Ethernet serdes input.
S9_TXP AH15 O DIFF Ethernet serdes output.
S9_TXN AJ15 O DIFF Ethernet serdes output.
S9_RXN AF15 I DIFF Ethernet serdes input.
S9_RXP AE15 I DIFF Ethernet serdes input.
S10_TXP AJ16 O DIFF Ethernet serdes output.
S10_TXN AK16 O DIFF Ethernet serdes output.
S10_RXN AG16 I DIFF Ethernet serdes input.
S10_RXP AF16 I DIFF Ethernet serdes input.
S11_TXP AH17 O DIFF Ethernet serdes output.
S11_TXN AJ17 O DIFF Ethernet serdes output.
S11_RXN AF17 I DIFF Ethernet serdes input.
S11_RXP AE17 I DIFF Ethernet serdes input.
S12_TXP AJ18 O DIFF Ethernet serdes output.
S12_TXN AK18 O DIFF Ethernet serdes output.
S12_RXN AG18 I DIFF Ethernet serdes input.
S12_RXP AF18 I DIFF Ethernet serdes input.
SI_CLK AG1 B, PU LVCMOS Serial interface clock.
SI_D1 AJ1 B, PU LVCMOS Serial interface data in.
SI_D0 AH1 B, PU LVCMOS Serial Interface active low chip
select.
SI_nCS0 AK1 B, PU LVCMOS Serial interface clock.
VDD_1 J8 P — Core supply.
VDD_2 J9 P — Core supply.
VDD_3 J12 P — Core supply.
VDD_4 J13 P — Core supply.
VDD_5 J18 P — Core supply.
VDD_6 J19 P — Core supply.
VDD_7 J22 P — Core supply.
VDD_8 J23 P — Core supply.
VDD_9 K8 P — Core supply.
VDD_10 K9 P — Core supply.
VDD_11 K12 P — Core supply.
VDD_12 K13 P — Core supply.
VDD_13 K18 P — Core supply.
...........continued
Name Number Signal Type Level Description
VDD_14 K19 P — Core supply.
VDD_15 K22 P — Core supply.
VDD_16 K23 P — Core supply.
VDD_17 L8 P — Core supply.
VDD_18 L9 P — Core supply.
VDD_19 L12 P — Core supply.
VDD_20 L13 P — Core supply.
VDD_21 L18 P — Core supply.
VDD_22 L19 P — Core supply.
VDD_23 L22 P — Core supply.
VDD_24 L23 P — Core supply.
VDD_25 M8 P — Core supply.
VDD_26 M9 P — Core supply.
VDD_27 M12 P — Core supply.
VDD_28 M13 P — Core supply.
VDD_29 M18 P — Core supply.
VDD_30 M19 P — Core supply.
VDD_31 M22 P — Core supply.
VDD_32 M23 P — Core supply.
VDD_33 N8 P — Core supply.
VDD_34 N9 P — Core supply.
VDD_35 N12 P — Core supply.
VDD_36 N13 P — Core supply.
VDD_37 N18 P — Core supply.
VDD_38 N19 P — Core supply.
VDD_39 N22 P — Core supply.
VDD_40 N23 P — Core supply.
VDD_41 P8 P — Core supply.
VDD_42 P9 P — Core supply.
VDD_43 P12 P — Core supply.
VDD_44 P13 P — Core supply.
VDD_45 P18 P — Core supply.
VDD_46 P19 P — Core supply.
VDD_47 P22 P — Core supply.
VDD_48 P23 P — Core supply.
...........continued
Name Number Signal Type Level Description
VDD_49 R8 P — Core supply.
VDD_50 R9 P — Core supply.
VDD_51 R12 P — Core supply.
VDD_52 R13 P — Core supply.
VDD_53 R18 P — Core supply.
VDD_54 R19 P — Core supply.
VDD_55 R22 P — Core supply.
VDD_56 R23 P — Core supply.
VDD_57 T8 P — Core supply.
VDD_58 T9 P — Core supply.
VDD_59 T12 P — Core supply.
VDD_60 T13 P — Core supply.
VDD_61 T18 P — Core supply.
VDD_62 T19 P — Core supply.
VDD_63 T22 P — Core supply.
VDD_64 T23 P — Core supply.
VDD_65 U8 P — Core supply.
VDD_66 U9 P — Core supply.
VDD_67 U12 P — Core supply.
VDD_68 U13 P — Core supply.
VDD_69 U18 P — Core supply.
VDD_70 U19 P — Core supply.
VDD_71 U22 P — Core supply.
VDD_72 U23 P — Core supply.
VDD_73 V8 P — Core supply.
VDD_74 V9 P — Core supply.
VDD_75 V12 P — Core supply.
VDD_76 V13 P — Core supply.
VDD_77 V18 P — Core supply.
VDD_78 V19 P — Core supply.
VDD_79 V22 P — Core supply.
VDD_80 V23 P — Core supply.
VDD_81 W8 P — Core supply.
VDD_82 W9 P — Core supply.
VDD_83 W12 P — Core supply.
...........continued
Name Number Signal Type Level Description
VDD_84 W13 P — Core supply.
VDD_85 W18 P — Core supply.
VDD_86 W19 P — Core supply.
VDD_87 W22 P — Core supply.
VDD_88 W23 P — Core supply.
VDD_89 Y8 P — Core supply.
VDD_90 Y9 P — Core supply.
VDD_91 Y12 P — Core supply.
VDD_92 Y13 P — Core supply.
VDD_93 Y18 P — Core supply.
VDD_94 Y19 P — Core supply.
VDD_95 Y22 P — Core supply.
VDD_96 Y23 P — Core supply.
VDD_97 AA8 P — Core supply.
VDD_98 AA9 P — Core supply.
VDD_99 AA12 P — Core supply.
VDD_100 AA13 P — Core supply.
VDD_101 AA18 P — Core supply.
VDD_102 AA19 P — Core supply.
VDD_103 AA22 P — Core supply.
VDD_104 AA23 P — Core supply.
VDD_105 AB8 P — Core supply.
VDD_106 AB9 P — Core supply.
VDD_107 AB12 P — Core supply.
VDD_108 AB13 P — Core supply.
VDD_109 AB18 P — Core supply.
VDD_110 AB19 P — Core supply.
VDD_111 AB22 P — Core supply.
VDD_112 AB23 P — Core supply.
VDDHS_1 A25 P — Serdes supply for S0-S24.
VDDHS_2 B25 P — Serdes supply for S0-S24.
VDDHS_3 D25 P — Serdes supply for S0-S24.
VDDHS_4 E25 P — Serdes supply for S0-S24.
VDDHS_5 F17 P — Serdes supply for S0-S24.
VDDHS_6 F19 P — Serdes supply for S0-S24.
...........continued
Name Number Signal Type Level Description
VDDHS_7 F21 P — Serdes supply for S0-S24.
VDDHS_8 F23 P — Serdes supply for S0-S24.
VDDHS_9 F25 P — Serdes supply for S0-S24.
VDDHS_10 G17 P — Serdes supply for S0-S24.
VDDHS_11 G19 P — Serdes supply for S0-S24.
VDDHS_12 G21 P — Serdes supply for S0-S24.
VDDHS_13 G23 P — Serdes supply for S0-S24.
VDDHS_14 G25 P — Serdes supply for S0-S24.
VDDHS_15 AD6 P — Serdes supply for S0-S24.
VDDHS_16 AD8 P — Serdes supply for S0-S24.
VDDHS_17 AD10 P — Serdes supply for S0-S24.
VDDHS_18 AD12 P — Serdes supply for S0-S24.
VDDHS_19 AD14 P — Serdes supply for S0-S24.
VDDHS_20 AD16 P — Serdes supply for S0-S24.
VDDHS_21 AD18 P — Serdes supply for S0-S24.
VDDHS_22 AD20 P — Serdes supply for S0-S24.
VDDHS_23 AD22 P — Serdes supply for S0-S24.
VDDHS_24 AD24 P — Serdes supply for S0-S24.
VDDHS_25 AE6 P — Serdes supply for S0-S24.
VDDHS_26 AE8 P — Serdes supply for S0-S24.
VDDHS_27 AE10 P — Serdes supply for S0-S24.
VDDHS_28 AE12 P — Serdes supply for S0-S24.
VDDHS_29 AE14 P — Serdes supply for S0-S24.
VDDHS_30 AE16 P — Serdes supply for S0-S24.
VDDHS_31 AE18 P — Serdes supply for S0-S24.
VDDHS_32 AE20 P — Serdes supply for S0-S24.
VDDHS_33 AE22 P — Serdes supply for S0-S24.
VDDHS_34 AE24 P — Serdes supply for S0-S24.
VDDHS2_1 A2 P — Serdes supply for S25-S32.
VDDHS2_2 A4 P — Serdes supply for S25-S32.
VDDHS2_3 A6 P — Serdes supply for S25-S32.
VDDHS2_4 A8 P — Serdes supply for S25-S32.
VDDHS2_5 A10 P — Serdes supply for S25-S32.
VDDHS2_6 A12 P — Serdes supply for S25-S32.
VDDHS2_7 A14 P — Serdes supply for S25-S32.
...........continued
Name Number Signal Type Level Description
VDDHS2_8 A16 P — Serdes supply for S25-S32.
VDDHS2_9 B2 P — Serdes supply for S25-S32.
VDDHS2_10 B4 P — Serdes supply for S25-S32.
VDDHS2_11 B6 P — Serdes supply for S25-S32.
VDDHS2_12 B8 P — Serdes supply for S25-S32.
VDDHS2_13 B10 P — Serdes supply for S25-S32.
VDDHS2_14 B12 P — Serdes supply for S25-S32.
VDDHS2_15 B14 P — Serdes supply for S25-S32.
VDDHS2_16 B16 P — Serdes supply for S25-S32.
VDDH18_1 F10 P — Analog Serdes supply.
VDDH18_2 F12 P — Analog Serdes supply.
VDDH18_3 F14 P — Analog Serdes supply.
VDDH18_4 F16 P — Analog Serdes supply.
VDDH18_5 G10 P — Analog Serdes supply.
VDDH18_6 G12 P — Analog Serdes supply.
VDDH18_7 G14 P — Analog Serdes supply.
VDDH18_8 G16 P — Analog Serdes supply.
VDDH18_9 AE5 P — Analog Serdes supply.
VDDH18_10 AE19 P — Analog Serdes supply.
VDDH18_11 AF5 P — Analog Serdes supply.
VDDH18_12 AF19 P — Analog Serdes supply.
VDDH18_13 AF24 P — Analog Serdes supply.
VDDH18_14 AG24 P — Analog Serdes supply.
VDDIO18_1 J5 P — Analog Serdes supply.
VDDIO18_2 K5 P — Analog Serdes supply.
VDDIO18_3 AD1 P — Analog Serdes supply.
VDDIO18_4 AD2 P — Analog Serdes supply.
VDDIO18_5 AE25 P — Analog Serdes supply.
VDDIO18_6 AF25 P — Analog Serdes supply.
VDDPLLDDR_1 K26 P — DDR PLL supply.
VDDPLLDDR_2 L26 P — DDR PLL supply.
VDDPLLDDR_3 AD26 P — DDR PLL supply.
VDDPLLDDR_4 AE26 P — DDR PLL supply.
VDDIO33_1 L5 P — 3.3V I/O power supply.
VDDIO33_2 M5 P — 3.3V I/O power supply.
...........continued
Name Number Signal Type Level Description
VDDIO33_3 N5 P — 3.3V I/O power supply.
VDDIO33_4 P5 P — 3.3V I/O power supply.
VDDIO33_5 R5 P — 3.3V I/O power supply.
VDDIO33_6 T5 P — 3.3V I/O power supply.
VDDIO33_7 U5 P — 3.3V I/O power supply.
VDDIO33_8 V5 P — 3.3V I/O power supply.
VDDIO33_9 W5 P — 3.3V I/O power supply.
VDDIO33_10 Y5 P — 3.3V I/O power supply.
VDDIO33_11 AA5 P — 3.3V I/O power supply.
VDDIO33_12 AB5 P — 3.3V I/O power supply.
VDDIO33_13 AC5 P — 3.3V I/O power supply.
VDDIO33_14 AF1 P — 3.3V I/O power supply.
VDDIO33_15 AF2 P — 3.3V I/O power supply.
VDDIO33_16 AF3 P — 3.3V I/O power supply.
VDDIO33_17 AH26 P — 3.3V I/O power supply.
VDDIO33_18 AH28 P — 3.3V I/O power supply.
VDDIO33_19 AH30 P — 3.3V I/O power supply.
VDDIODDR_1 M26 P — 3.3V I/O power supply.
VDDIODDR_2 N26 P — 3.3V I/O power supply.
VDDIODDR_3 P26 P — 3.3V I/O power supply.
VDDIODDR_4 R26 P — 3.3V I/O power supply.
VDDIODDR_5 T26 P — 3.3V I/O power supply.
VDDIODDR_6 U26 P — 3.3V I/O power supply.
VDDIODDR_7 V26 P — 3.3V I/O power supply.
VDDIODDR_8 W26 P — 3.3V I/O power supply.
VDDIODDR_9 Y26 P — 3.3V I/O power supply.
VDDIODDR_10 AA26 P — 3.3V I/O power supply.
VDDIODDR_11 AB26 P — 3.3V I/O power supply.
VDDIODDR_12 AC26 P — 3.3V I/O power supply.
VSS_1 C1 P — Ground.
VSS_2 C2 P — Ground.
VSS_3 C3 P — Ground.
VSS_4 C4 P — Ground.
VSS_5 C5 P — Ground.
VSS_6 C6 P — Ground.
...........continued
Name Number Signal Type Level Description
VSS_7 C7 P — Ground.
VSS_8 C8 P — Ground.
VSS_9 C9 P — Ground.
VSS_10 C10 P — Ground.
VSS_11 C11 P — Ground.
VSS_12 C12 P — Ground.
VSS_13 C13 P — Ground.
VSS_14 C14 P — Ground.
VSS_15 C15 P — Ground.
VSS_16 C16 P — Ground.
VSS_17 C17 P — Ground.
VSS_18 C19 P — Ground.
VSS_19 C21 P — Ground.
VSS_20 C23 P — Ground.
VSS_21 C25 P — Ground.
VSS_22 C26 P — Ground.
VSS_23 C27 P — Ground.
VSS_24 C28 P — Ground.
VSS_25 C29 P — Ground.
VSS_26 C30 P — Ground.
VSS_27 D2 P — Ground.
VSS_28 D4 P — Ground.
VSS_29 D6 P — Ground.
VSS_30 D8 P — Ground.
VSS_31 D10 P — Ground.
VSS_32 D12 P — Ground.
VSS_33 D14 P — Ground.
VSS_34 D16 P — Ground.
VSS_35 D18 P — Ground.
VSS_36 D20 P — Ground.
VSS_37 D22 P — Ground.
VSS_38 D24 P — Ground.
VSS_39 D26 P — Ground.
VSS_40 E2 P — Ground.
VSS_41 E4 P — Ground.
...........continued
Name Number Signal Type Level Description
VSS_42 E6 P — Ground.
VSS_43 E8 P — Ground.
VSS_44 E10 P — Ground.
VSS_45 E12 P — Ground.
VSS_46 E14 P — Ground.
VSS_47 E16 P — Ground.
VSS_48 E26 P — Ground.
VSS_49 F1 P — Ground.
VSS_50 F2 P — Ground.
VSS_51 F3 P — Ground.
VSS_52 F4 P — Ground.
VSS_53 F5 P — Ground.
VSS_54 F7 P — Ground.
VSS_55 F9 P — Ground.
VSS_56 F11 P — Ground.
VSS_57 F13 P — Ground.
VSS_58 F15 P — Ground.
VSS_59 G2 P — Ground.
VSS_60 G3 P — Ground.
VSS_61 G5 P — Ground.
VSS_62 G7 P — Ground.
VSS_63 G9 P — Ground.
VSS_64 G11 P — Ground.
VSS_65 G13 P — Ground.
VSS_66 G15 P — Ground.
VSS_67 G18 P — Ground.
VSS_68 G20 P — Ground.
VSS_69 G22 P — Ground.
VSS_70 G24 P — Ground.
VSS_71 H2 P — Ground.
VSS_72 H3 P — Ground.
VSS_73 H4 P — Ground.
VSS_74 H5 P — Ground.
VSS_75 H6 P — Ground.
VSS_76 H7 P — Ground.
...........continued
Name Number Signal Type Level Description
VSS_77 H8 P — Ground.
VSS_78 H9 P — Ground.
VSS_79 H10 P — Ground.
VSS_80 H11 P — Ground.
VSS_81 H12 P — Ground.
VSS_82 H13 P — Ground.
VSS_83 H14 P — Ground.
VSS_84 H15 P — Ground.
VSS_85 H16 P — Ground.
VSS_86 H17 P — Ground.
VSS_87 H18 P — Ground.
VSS_88 H19 P — Ground.
VSS_89 H20 P — Ground.
VSS_90 H21 P — Ground.
VSS_91 H22 P — Ground.
VSS_92 H23 P — Ground.
VSS_93 H24 P — Ground.
VSS_94 H25 P — Ground.
VSS_95 J1 P — Ground.
VSS_96 J6 P — Ground.
VSS_97 J7 P — Ground.
VSS_98 J10 P — Ground.
VSS_99 J11 P — Ground.
VSS_100 J14 P — Ground.
VSS_101 J15 P — Ground.
VSS_102 J16 P — Ground.
VSS_103 J17 P — Ground.
VSS_104 J20 P — Ground.
VSS_105 J21 P — Ground.
VSS_106 J24 P — Ground.
VSS_107 J25 P — Ground.
VSS_108 K6 P — Ground.
VSS_109 K7 P — Ground.
VSS_110 K10 P — Ground.
VSS_111 K11 P — Ground.
...........continued
Name Number Signal Type Level Description
VSS_112 K14 P — Ground.
VSS_113 K15 P — Ground.
VSS_114 K16 P — Ground.
VSS_115 K17 P — Ground.
VSS_116 K20 P — Ground.
VSS_117 K21 P — Ground.
VSS_118 K24 P — Ground.
VSS_119 K25 P — Ground.
VSS_120 L6 P — Ground.
VSS_121 L7 P — Ground.
VSS_122 L10 P — Ground.
VSS_123 L11 P — Ground.
VSS_124 L14 P — Ground.
VSS_125 L15 P — Ground.
VSS_126 L16 P — Ground.
VSS_127 L17 P — Ground.
VSS_128 L20 P — Ground.
VSS_129 L21 P — Ground.
VSS_130 L24 P — Ground.
VSS_131 L25 P — Ground.
VSS_132 M6 P — Ground.
VSS_133 M7 P — Ground.
VSS_134 M10 P — Ground.
VSS_135 M11 P — Ground.
VSS_136 M14 P — Ground.
VSS_137 M15 P — Ground.
VSS_138 M16 P — Ground.
VSS_139 M17 P — Ground.
VSS_140 M20 P — Ground.
VSS_141 M21 P — Ground.
VSS_142 M24 P — Ground.
VSS_143 M25 P — Ground.
VSS_144 N6 P — Ground.
VSS_145 N7 P — Ground.
VSS_146 N10 P — Ground.
...........continued
Name Number Signal Type Level Description
VSS_147 N11 P — Ground.
VSS_148 N14 P — Ground.
VSS_149 N15 P — Ground.
VSS_150 N16 P — Ground.
VSS_151 N17 P — Ground.
VSS_152 N20 P — Ground.
VSS_153 N21 P — Ground.
VSS_154 N24 P — Ground.
VSS_155 N25 P — Ground.
VSS_156 P6 P — Ground.
VSS_157 P7 P — Ground.
VSS_158 P10 P — Ground.
VSS_159 P11 P — Ground.
VSS_160 P14 P — Ground.
VSS_161 P15 P — Ground.
VSS_162 P16 P — Ground.
VSS_163 P17 P — Ground.
VSS_164 P20 P — Ground.
VSS_165 P21 P — Ground.
VSS_166 P24 P — Ground.
VSS_167 P25 P — Ground.
VSS_168 R6 P — Ground.
VSS_169 R7 P — Ground.
VSS_170 R10 P — Ground.
VSS_171 R11 P — Ground.
VSS_172 R14 P — Ground.
VSS_173 R15 P — Ground.
VSS_174 R16 P — Ground.
VSS_175 R17 P — Ground.
VSS_176 R20 P — Ground.
VSS_177 R21 P — Ground.
VSS_178 R24 P — Ground.
VSS_179 R25 P — Ground.
VSS_180 T6 P — Ground.
VSS_181 T7 P — Ground.
...........continued
Name Number Signal Type Level Description
VSS_182 T10 P — Ground.
VSS_183 T11 P — Ground.
VSS_184 T14 P — Ground.
VSS_185 T15 P — Ground.
VSS_186 T16 P — Ground.
VSS_187 T17 P — Ground.
VSS_188 T20 P — Ground.
VSS_189 T21 P — Ground.
VSS_190 T24 P — Ground.
VSS_191 T25 P — Ground.
VSS_192 U6 P — Ground.
VSS_193 U7 P — Ground.
VSS_194 U10 P — Ground.
VSS_195 U11 P — Ground.
VSS_196 U14 P — Ground.
VSS_197 U15 P — Ground.
VSS_198 U16 P — Ground.
VSS_199 U17 P — Ground.
VSS_200 U20 P — Ground.
VSS_201 U21 P — Ground.
VSS_202 U24 P — Ground.
VSS_203 U25 P — Ground.
VSS_204 V6 P — Ground.
VSS_205 V7 P — Ground.
VSS_206 V10 P — Ground.
VSS_207 V11 P — Ground.
VSS_208 V14 P — Ground.
VSS_209 V15 P — Ground.
VSS_210 V16 P — Ground.
VSS_211 V17 P — Ground.
VSS_212 V20 P — Ground.
VSS_213 V21 P — Ground.
VSS_214 V24 P — Ground.
VSS_215 V25 P — Ground.
VSS_216 W6 P — Ground.
...........continued
Name Number Signal Type Level Description
VSS_217 W7 P — Ground.
VSS_218 W10 P — Ground.
VSS_219 W11 P — Ground.
VSS_220 W14 P — Ground.
VSS_221 W15 P — Ground.
VSS_222 W16 P — Ground.
VSS_223 W17 P — Ground.
VSS_224 W20 P — Ground.
VSS_225 W21 P — Ground.
VSS_226 W24 P — Ground.
VSS_227 W25 P — Ground.
VSS_228 Y6 P — Ground.
VSS_229 Y7 P — Ground.
VSS_230 Y10 P — Ground.
VSS_231 Y11 P — Ground.
VSS_232 Y14 P — Ground.
VSS_233 Y15 P — Ground.
VSS_234 Y16 P — Ground.
VSS_235 Y17 P — Ground.
VSS_236 Y20 P — Ground.
VSS_237 Y21 P — Ground.
VSS_238 Y24 P — Ground.
VSS_239 Y25 P — Ground.
VSS_240 AA6 P — Ground.
VSS_241 AA7 P — Ground.
VSS_242 AA10 P — Ground.
VSS_243 AA11 P — Ground.
VSS_244 AA14 P — Ground.
VSS_245 AA15 P — Ground.
VSS_246 AA16 P — Ground.
VSS_247 AA17 P — Ground.
VSS_248 AA20 P — Ground.
VSS_249 AA21 P — Ground.
VSS_250 AA24 P — Ground.
VSS_251 AA25 P — Ground.
...........continued
Name Number Signal Type Level Description
VSS_252 AB6 P — Ground.
VSS_253 AB7 P — Ground.
VSS_254 AB10 P — Ground.
VSS_255 AB11 P — Ground.
VSS_256 AB14 P — Ground.
VSS_257 AB15 P — Ground.
VSS_258 AB16 P — Ground.
VSS_259 AB17 P — Ground.
VSS_260 AB20 P — Ground.
VSS_261 AB21 P — Ground.
VSS_262 AB24 P — Ground.
VSS_263 AB25 P — Ground.
VSS_264 AC6 P — Ground.
VSS_265 AC7 P — Ground.
VSS_266 AC8 P — Ground.
VSS_267 AC9 P — Ground.
VSS_268 AC10 P — Ground.
VSS_269 AC11 P — Ground.
VSS_270 AC12 P — Ground.
VSS_271 AC13 P — Ground.
VSS_272 AC14 P — Ground.
VSS_273 AC15 P — Ground.
VSS_274 AC16 P — Ground.
VSS_275 AC17 P — Ground.
VSS_276 AC18 P — Ground.
VSS_277 AC19 P — Ground.
VSS_278 AC20 P — Ground.
VSS_279 AC21 P — Ground.
VSS_280 AC22 P — Ground.
VSS_281 AC23 P — Ground.
VSS_282 AC24 P — Ground.
VSS_283 AC25 P — Ground.
VSS_284 AD3 P — Ground.
VSS_285 AD4 P — Ground.
VSS_286 AD5 P — Ground.
...........continued
Name Number Signal Type Level Description
VSS_287 AD7 P — Ground.
VSS_288 AD9 P — Ground.
VSS_289 AD11 P — Ground.
VSS_290 AD13 P — Ground.
VSS_291 AD15 P — Ground.
VSS_292 AD17 P — Ground.
VSS_293 AD19 P — Ground.
VSS_294 AD21 P — Ground.
VSS_295 AD23 P — Ground.
VSS_296 AD25 P — Ground.
VSS_297 AE1 P — Ground.
VSS_298 AE2 P — Ground.
VSS_299 AE3 P — Ground.
VSS_300 AF4 P — Ground.
VSS_301 AG4 P — Ground.
VSS_302 AG7 P — Ground.
VSS_303 AG9 P — Ground.
VSS_304 AG11 P — Ground.
VSS_305 AG13 P — Ground.
VSS_306 AG15 P — Ground.
VSS_307 AG17 P — Ground.
VSS_308 AG19 P — Ground.
VSS_309 AG21 P — Ground.
VSS_310 AG23 P — Ground.
VSS_311 AG26 P — Ground.
VSS_312 AG30 P — Ground.
VSS_313 AH4 P — Ground.
VSS_314 AH6 P — Ground.
VSS_315 AH8 P — Ground.
VSS_316 AH10 P — Ground.
VSS_317 AH12 P — Ground.
VSS_318 AH14 P — Ground.
VSS_319 AH16 P — Ground.
VSS_320 AH18 P — Ground.
VSS_321 AH19 P — Ground.
...........continued
Name Number Signal Type Level Description
VSS_322 AH20 P — Ground.
VSS_323 AH22 P — Ground.
VSS_324 AH24 P — Ground.
VSS_325 AH27 P — Ground.
VSS_326 AH29 P — Ground.
VSS_327 AJ4 P — Ground.
VSS_328 AK4 P — Ground.
9. Package Information
The SparX-5 (VSC7546YKY and VSC7549YKY) package is lead-free (Pb-free), 888-pin, flip chip ball grid array
(FCBGA) with a 25 mm × 25 mm body size, 0.8 mm pin pitch, and 2.56 mm maximum height.
Lead-free products from Microchip comply with the temperatures and profiles defined in the joint IPC and JEDEC
standard IPC/JEDEC J-STD-020. For more information, see the IPC and JEDEC standard.
This section provides the package drawing, thermal specifications, and moisture sensitivity rating for the device.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
A A
B B
C C
D D
E E
0.80
F F
G G
H H
J J
K K
L L
M M
24.60 ±0.05
N N
18.60 Ref
P P
23.20
R R
25.00
T T
U U
V V
W W
Y Y
AA AA
AB AB
AC AC
AD AD
AE AE
AF AF
AG AG
AH AH
AJ AJ
AK AK
A
0.80
18.60 Ref
23.20
B
24.60 ±0.05
25.00
0.20(4×)
Detail A
1.30 ±0.05
Side View
0.35 C
0.50 ±0.05
0.20 C
Heat spreader
0.30–0.50
2.556 ±0.25
Seating plane
0.40–0.60
1.16 ±0.18
Detail A
Ø 0.10 M C
Ø 0.25 M C A B
Notes
1. All dimensions and tolerances are in millimeters (mm).
2. Radial true position is represented by typical values.
...........continued
Symbol °C/W Parameter
θJB 8.1 Die junction to printed circuit board
θJA 19.8 Die junction to ambient
θJMA at 1 m/s 14.5 Die junction to moving air measured at an air speed of 1 m/s
θJMA at 2 m/s 12.5 Die junction to moving air measured at an air speed of 2 m/s
To achieve results similar to the modeled thermal measurements, the guidelines for board design described in the
JESD51 family of publications must be applied. For information about applications using FCBGA packages, see the
following:
• JESD51-2A, Integrated Circuits Thermal Test Method Environmental Conditions, Natural Convection (Still Air)
• JESD51-6, Integrated Circuit Thermal Test Method Environmental Conditions, Forced Convection (Moving Air)
• JESD51-8, Integrated Circuit Thermal Test Method Environmental Conditions, Junction-to-Board
• JESD51-9, Test Boards for Area Array Surface Mount Package Thermal Measurements
A January 2021 Revision A was published in January 2021. It was the first
publication of this document.
Customer Support
Users of Microchip products can receive assistance through several channels:
• Distributor or Representative
• Local Sales Office
• Embedded Solutions Engineer (ESE)
• Technical Support
Customers should contact their distributor, representative or ESE for support. Local sales offices are also available to
help customers. A listing of sales offices and locations is included in this document.
Technical support is available through the website at: www.microchip.com/support
Legal Notice
Information contained in this publication regarding device applications and the like is provided only for your
convenience and may be superseded by updates. It is your responsibility to ensure that your application meets with
Trademarks
The Microchip name and logo, the Microchip logo, Adaptec, AnyRate, AVR, AVR logo, AVR Freaks, BesTime,
BitCloud, chipKIT, chipKIT logo, CryptoMemory, CryptoRF, dsPIC, FlashFlex, flexPWR, HELDO, IGLOO, JukeBlox,
KeeLoq, Kleer, LANCheck, LinkMD, maXStylus, maXTouch, MediaLB, megaAVR, Microsemi, Microsemi logo,
MOST, MOST logo, MPLAB, OptoLyzer, PackeTime, PIC, picoPower, PICSTART, PIC32 logo, PolarFire, Prochip
Designer, QTouch, SAM-BA, SenGenuity, SpyNIC, SST, SST Logo, SuperFlash, Symmetricom, SyncServer,
Tachyon, TempTrackr, TimeSource, tinyAVR, UNI/O, Vectron, and XMEGA are registered trademarks of Microchip
Technology Incorporated in the U.S.A. and other countries.
APT, ClockWorks, The Embedded Control Solutions Company, EtherSynch, FlashTec, Hyper Speed Control,
HyperLight Load, IntelliMOS, Libero, motorBench, mTouch, Powermite 3, Precision Edge, ProASIC, ProASIC Plus,
ProASIC Plus logo, Quiet-Wire, SmartFusion, SyncWorld, Temux, TimeCesium, TimeHub, TimePictra, TimeProvider,
Vite, WinPath, and ZL are registered trademarks of Microchip Technology Incorporated in the U.S.A.
Adjacent Key Suppression, AKS, Analog-for-the-Digital Age, Any Capacitor, AnyIn, AnyOut, BlueSky,
BodyCom, CodeGuard, CryptoAuthentication, CryptoAutomotive, CryptoCompanion, CryptoController, dsPICDEM,
dsPICDEM.net, Dynamic Average Matching, DAM, ECAN, EtherGREEN, In-Circuit Serial Programming, ICSP,
INICnet, Inter-Chip Connectivity, JitterBlocker, KleerNet, KleerNet logo, memBrain, Mindi, MiWi, MPASM,
MPF, MPLAB Certified logo, MPLIB, MPLINK, MultiTRAK, NetDetach, Omniscient Code Generation, PICDEM,
PICDEM.net, PICkit, PICtail, PowerSmart, PureSilicon, QMatrix, REAL ICE, Ripple Blocker, SAM-ICE, Serial
Quad I/O, SMART-I.S., SQI, SuperSwitcher, SuperSwitcher II, Total Endurance, TSHARC, USBCheck, VariSense,
ViewSpan, WiperLock, Wireless DNA, and ZENA are trademarks of Microchip Technology Incorporated in the U.S.A.
and other countries.
SQTP is a service mark of Microchip Technology Incorporated in the U.S.A.
The Adaptec logo, Frequency on Demand, Silicon Storage Technology, and Symmcom are registered trademarks of
Microchip Technology Inc. in other countries.
GestIC is a registered trademark of Microchip Technology Germany II GmbH & Co. KG, a subsidiary of Microchip
Technology Inc., in other countries.
All other trademarks mentioned herein are property of their respective companies.
© 2021, Microchip Technology Incorporated, Printed in the U.S.A., All Rights Reserved.
ISBN: 978-1-5224-7648-1