MindShare PCIe3.0 b.1.5
MindShare PCIe3.0 b.1.5
MindShare PCIe3.0 b.1.5
training@mindshare.com
1-800-633-1440
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Materials Download 3
www.mindshare.com/materials/
1. Login or
create
account
3. Click on My eBooks /
Presentations tab
Useful Links
4. Click on My eLearning /
Software tab
4. Click on
Software
menu item
Download the
Arbor application,
install on your
machine and
select Trial period
activation
Programming
OpenCL Programming
x86 Architecture Programming
MokiAnji
x86(moki@
Assemblysynopsys.com)
Language Basics
Do Not Distribute MindShare.com © 2013
MindShare Training Options 8
In-House classroom
Live, on-site Instructor Led Training (ILT)
Virtual classroom
Live ILT via WebEx (or similar tool)
eLearning Courses
Pre-recorded courses available online, 24/7 with unlimited
access for 90 days
Do Not www.mindshare.com
Moki Anji (moki@ synopsys.com)
Distribute MindShare.com © 2013
MindShare Arbor 10
www.mindshare.com/arbor
A software tool to view,
edit and verify the
configuration settings of a
computer
Decode data from live and
saved systems
Apply standard and custom
rule checks
Directly edit Config,
Memory and IO space
Everything driven from
open-format XML
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
PCI Express Topics vii 11
Part One: The Big Picture Part Five: Additional System Topics
1: Background 15: Error Detection and Handling
2: PCIe Architecture Overview 16: Power Management
3: Configuration Overview 17: Interrupt Support
4: Address Space and Transaction Routing 18: System Reset
Part Two: Transaction Layer 19: Hot Plug and Power Budgeting
5: TLP Elements 20: Overview of 2.1 Spec Changes
6: Flow Control 21: Overview of 3.1 Spec Changes
7: Quality of Service Part Six: Appendices
8: Transaction Ordering A: Details of Spec 2.1 Changes
Part Three: Data Link Layer B: Details of Spec 3.1 Changes
9: DLLP Elements C: IO Virtualization Support
10: Ack/Nak Protocol D: Add-In Cards and Connectors
E: Arbor Exercise Solutions
Part Four: Physical Layer
11: Physical Layer Logical (Gen1&2)
12: Physical Layer Logical (Gen 3)
13: Physical Layer Electrical (Gen1, 2, & 3)
14: Link Initialization & Training
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Part One: The Big Picture
PCI-X 2.0
133MHz 1066-2132 MB/s 1 (point-to-point)
(DDR)
PCI-X 2.0
133MHz 2132-4262 MB/s 1 (point-to-point)
(QDR)
Prefetchable space is
safe to read ahead: a
memory location can be
read, the contents
discarded and the same
content read again
without problems.
Bus
Idle
Address Attribute Response Data Data Data Data
Turnaround
Phase Phase Phase Phase Phase Phase Phase Cycle
1 2 3 4
1 2 3 4 5 6 7 8 9 10 11 12
CLK
la to
r
sfe
FRAME#
t
tran st
N ex
AD[31:0] Address ATTR Data-0 Data-1 Data-2 Data-3
IRDY#
TRDY#
DEVSEL# Decode
A
Transmitter Receiver
Receiver Transmitter
Differential signaling
Better noise immunity
Lower voltages allow smaller, faster circuitry:
Tx Differential Peak-to-peak voltage = 0.8 - 1.2 V
D+
Vcm
VDIFF = VD+ - VD-
Gen 2 1 2 4 8 12 16 32
Gen 3 2 4 8 16 24 32 64
L3 Slice Slice per Core L3 Slice L3 Slice Slice per Core L3 Slice
EP
No Processor System QPI QPI System No Processor
Graphics Agent PCU PCU Agent Graphics
QPI QPI
EP, EN
PCIe3 DMI2 PCIe* IMC IMC PCIe* DMI2 PCIe3
EN: 24 lanes x4 x4* EN: 24 lanes
EP: 40 lanes EP: 40 lanes
DDR3 DIMMs DDR3 DIMMs
HD Audio SMBus
C600
USB 2.0 GLAN Root Complex
(x14)
PCH
(Patsburg)
PCIe Gen2
SATA (8 Lanes)
(x6)
PCI
SAS
(x6)
SPI
LPC
Moki Anji Flash
(moki@FWH
synopsys.com)
SIO TPM 1.2
Do Not Distribute MindShare.com © 2013
PCI Express Device Layers 56 52
Traffic Class
A TLP header field that remains unchanged as a packet
flows from its source to its ultimate destination
Examined at each “service point” (e.g.: Switch port)
TC value is assigned by software as an indication of
preferred priority
Every PCIe device supports TC0 at a minimum
Virtual Channel
Implemented in hardware with separate buffers for each
VC in each port
VCs enable multiple logical data flows over a single
physical Link
Every PCIe device supports VC0 at a minimum
VC0
TC/VC Mapping
Arbitration
VC0
All TCs Buffers Buffers All TCs
VC1
VC1 VC1
TC3 - TC7
One physical Link, TC3 - TC7
map to VC1 map to VC1
multiple virtual channels
DLLP
From To
Transaction Layer Transaction Layer
Tx Rx
Data Link Layer
Link Packet DLLP DLLP Link Packet
Ack/ Ack/
Sequence TLP LCRC Nak Nak
Sequence TLP LCRC
Device A Retry
Buffer De-mux
Error
Mux Check
Tx Rx
Link
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Ack/Nak Protocol, Non-Posted 76 78
Start Symbols
STP (start TLP)
SDP (start DLLP)
End Symbols
END (end good for TLPs and end for DLLPs)
EDB (end bad for TLPs only)
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Electrical Physical Layer 80 83
Detect
CTX ZTX-LINE
D+ D+
+
No Spec
Lane in
Transmitter one Receiver
direction
CTX Z
TX-LINE
-
D- D-
ZTX ZTX ZRX ZRX
Clock Clock
VCM Source
Source VTX-CM = 0 - 3.6 V
ZTX = ZRX = 50 Ohms
CTX = 75 – 200 nF
Detect receiver
Bit lock per Lane
Symbol lock per Lane
Polarity inversion
Link numbering
Link width and Lane numbering
Lane reversal (optional)
Lane-to-Lane de-skew on multi-Lane Links
Link data rate determination and negotiation
Requester Completer
Send Memory Read Request
Software layer Receive Memory Read Request
Encode Decode
Physical layer
Parallel-to-Serial Serial-to-Parallel
Differential Driver Differential Receiver
Port Port
Moki Anji (moki@ synopsys.com) Ack or Nak
Link
Do Not Distribute MRd TLP MindShare.com © 2013
Associated Completion 99 89
Requester Completer
Receive Completion with Data
Software layer Send Completion with Data
Decode Encode
Physical layer
Serial-to-Parallel Parallel-to-Serial
Differential Receiver Differential Driver
Port Port
Moki Anji (moki@ synopsys.com) CplD TLP
Link
Do Not Distribute Ack or Nak
MindShare.com © 2013
PCI Express Fabric Efficiency 90
Host
Bridge
Config
command
Configuration
registers local within
devices
Processor reads and writes to I/O addresses 0CF8 and 0CFC are
converted to configuration reads and writes by the Root Complex.
Advantage: Uses very little address space.
Disadvantage: Requires 2 address steps; allows multiple threads to
Moki Anjiinterfere
(moki@with each other.
synopsys.com)
Do Not Distribute MindShare.com © 2013
Enhanced (Memory Mapped) Method 96
63 28 27 20 19 15 14 12 11 8 7 0
Extended
Base Address Bus Device Function
Register
Register
Processor System
Graphics Host Bridge Agent
0,0,0 Main
Display Bus 0
Memory Configuration
IMC
IGD
0,2,0 0,4,0
DSP Space
4KB 255,31,7
eDP
FDI DMI2 Memory Mapped
PCH PCI Configuration Space
0,22,0 Mgmt Base Address
VGA Engine
HDMI 0,31,3 256MB
SMBus
0,28,0
PCIe Port 1
Memory
0,28,1 PCIe Port 2 Bus 2 Block
0,29,0 PCIEXBAR
0,31,2 EHCI
SATA 0,26,0 Wi-Fi/
EHCI Bluetooth 4KB
Bus 0 0,20,0 xHCI 2,0,0 4KB
0,31,0
4KB 0,0,0
LPC
0
Several registers identify the Function, including Vendor ID, Device ID, and
the Class Code information, shown here.
Status bit 4 indicates whether capabilities are implemented. If so, Capabilities Pointer gives
location of first register block in the linked list.
Capability Structure IDs
00h = Reserved
01h = Power Management
02h = AGP
03h = VPD
04h = Slot Identification
05h = MSI
06h = CompactPCI Hot Swap
07h = PCI-X Device
08h = HyperTransport
09h = Vendor Specific
0Ah = Debug Port
0Bh = CompactPCI Central Resource Control
0Ch = PCI Hot Plug
10h = PCI Express
11h = MSI-X
10b = 16EB
Range
Note: it is required that PCIe endpoints other than Legacy endpoints
support 64-bit addresses for any prefetchable memory. And it is strongly
encouraged that memory be designated as prefetchable whenever possible.
CPU
Dev 0 Dev 1
Fun 0 Fun 1 Fun 0
Virtual Virtual Virtual
P2P P2P P2P
Sec: Sec: Sec:
PCIe
PCIe
PCIe
Dev 0
Dev 0
Fun 0 Virtual P2P Sec: Sub: Fun 0
Switch PCIe-to-
Dev 0 PCI
Dev 0 Dev 1 Dev 2 Sec:
Fun 0
Fun 0 Fun 0 Fun 0 Sub:
Virtual Virtual Virtual
P2P P2P P2P
Sec: Sec: Sec:
IDSEL1
IDSEL0
Sub: Sub: Sub:
PCI(-X)
Dev 0
Fun
Fun 00 Virtual
Virtual P2P Sec:2 Sub:
P2P Sec: 255
Sub:
Switch
Dev 0
Fun 0
Virtual
P2P
Sec:
3
Sub:
255
PCIe 3
Dev 0 Multi-function
MokiFun
Anji
0
(moki@ synopsys.com)
device discovered
Do Not
Fun 1
Distribute MindShare.com © 2013
PCI Express Enumeration Example 112
CPU
Dev 0
Fun 0
Virtual
P2P
Sec:
1
Sub:
5
PCIe
Dev 0
CPU
Dev 0 Dev 1
Fun 0 Fun 1 Fun 0
Virtual Virtual Virtual
P2P P2P P2P
Sec: Sec: Sec:
1 6 7
Sub: Sub: Sub:
5 6 8
PCIe
PCIe
PCIe
Dev 0
Dev 0
Fun 0 Virtual P2P Sec: 2 Sub: 5 Fun 0
Switch PCIe-to-
Dev 0 PCI
Dev 0 Dev 1 Dev 2 Sec:
Fun 0
8
Fun 0 Fun 0 Fun 0 Sub:
Virtual Virtual Virtual
P2P P2P P2P 8
Sec: Sec: Sec:
IDSEL1
3 4 5 IDSEL0
Sub: Sub: Sub:
3 4 5 PCI(-X)
CPU
Dev 0 Dev 1
Fun 0 Fun 1 Fun 0
Virtual Virtual Virtual
P2P Software scansP2Peach bus to find additional
P2P
Sec: Sec: Sec:
1 devices
6 that may
7 be attached. If no device
Sub: Sub:
5
present:
6
Sub:
8
PCIe Transactions time out in PCI resulting in a
PCIe
Master Abort. Upon detecting the abort, the
PCIe
Dev 0 source bridge returns dataDev of 0all ones to the
Fun 0 Virtual P2P Sec: 2 Sub: 5 CPU. Fun 0
PCIe-to-
Switch If a transaction
Dev 0
targets anPCI
Endpoint using a
Dev 0 Dev 1 Dev 2 device numberFun 0
other than zero,
Sec: a Root Complex
8
Fun 0 Fun 0 Fun 0 or Switch port returns a URSub: completion with data
Virtual Virtual Virtual
P2P P2P P2P of all ones. 8
Sec: Sec: Sec:
IDSEL1
3 4 5 IDSEL0
Sub: Sub: Sub:
3 4 These actions are basedPCI(-X)
5 on default settings of
PCIe PCIe
the
PCIe Bridge Control register within the
Dev0 Dev1
Dev 0 Dev 0
configuration header.
Dev 0
MokiFunAnji
0
(moki@ synopsys.com)
Fun 0 Fun 0
Do Not
Fun 1
Distribute MindShare.com © 2013
PCI Express Enumeration Example 115
CPU
Dev 0 Dev 1
Fun 0 Fun 1 Fun 0
Virtual Virtual Virtual
P2P P2P P2P
Sec: Sec: Sec:
1 6 7
Sub: Sub: Sub:
5 6 8
PCIe
PCIe
PCIe
Dev 0
Dev 0
Fun 0 Virtual P2P Sec: 2 Sub: 5 Fun 0
Switch PCIe-to-
Dev 0 PCI
Dev 0 Dev 1 Dev 2 Sec:
Fun 0
8
Fun 0 Fun 0 Fun 0 Sub:
Virtual Virtual Virtual
P2P P2P P2P 8
Sec: Sec: If software attempts an access to
Sec:
IDSEL1
3 4 5
Sub: Sub: Device
Sub: 2 on the PCI bus, what
IDSEL0
CPU
Note: only TLPs are routed. DLLPs and Ordered Sets are never
routed to another Link because they’re only used to manage the
local Link.
Message TLP
Routing Information:
000b = Implicit: Route to Root Complex
001b = Route by Address (Uses Address fields)
010b = Route by ID (Uses Requester ID field)
011b = Implicit: Broadcast by Root Complex
100b = Implicit: Local—Terminate at Receiver
Moki Anji (moki@
101bsynopsys.com)
= Implicit: Gather and route to Root Complex
Do Not Distribute
All others = Reserved MindShare.com © 2013
Method 3: Implicit Routing 149
Routing
011b
2. Using the drawn topology, label the address ranges that have
been assigned to each device and check to make sure that
the bridges above those devices have been set up correctly.
3. Once you find the problem, indicate what the correct setting
should be and confirm your answer with the instructor.
Format and Type fields together define the transaction type. E.g.
Memory Request with Data payload is Memory Write Request (MWr)
Memory Request without data payload is Memory Read Request (MRd)
Max Payload
4KB
= 4KB
1KB 128B
High-order bits
Moki Anji (moki@ synopsys.com) select range
Do Not Distribute MindShare.com © 2013
Completion TLP Fields 198 191
DLLP
CL = Credit Limit
CR = Credits Required
An Update FC DLLP for each packet type (P, NP, Cpl) must
normally be scheduled within every 30 µS (-0%/+50%).
Exceptions:
If Link is in a state other than L0 or L0s, no updates are
sent
If Extended Sync bit (within Link Control register) is set
the limit becomes 120 µS (-0%/+50%)
The PCIe specification recommends that a receiver tune the
Update FC latency using the following formula:
Gen2:
Max_Payload x1 x2 x4 x8 x12 x16 x32
Size Link Link Link Link Link Link Link
128 Bytes 288 179 124 118 109 89 84
(UF=1.4) (UF=1.4) (UF=1.4) (UF=2.5) (UF=3.0) (UF=3.0) (UF=3.0)
Gen3:
Max_Payload x1 x2 x4 x8 x12 x16 x32
Size Link Link Link Link Link Link Link
128 Bytes 333 224 169 163 154 144 129
(UF=1.4) (UF=1.4) (UF=1.4) (UF=2.5) (UF=3.0) (UF=3.0) (UF=3.0)
TC Field values:
000b = TC0 (default) All devices support this Traffic
Class, which gives “best effort” service.
001b to 111b = TC1 to TC7, optional differentiated
service classes
Table
Arbitration
Schemes for the
Low-Priority
Group
If a VC supports TBWRR, this field indicates how many of the total time slots
are allocated to it. This reports the isochronous bandwidth capability of a
Completer, for example, and software must take that into account when
setting up isochronous service.
VC Arbitration Table
7 6 5 4 3 2 1 Entry 0
31 30 29 28 27 26 25 Entry
24
Port0 Port1 Port1 Port1 Port0 Port1 Port1
Port1
Memory
Consumer
PCI Bus
Memory is the intended
PCI-to-PCI destination, but data is
posted and delayed in
Bridge
getting to the upper bus.
Posted Write
Buffer
PCI Bus
Producer Flag
Memory
Consumer
PCI Bus
PCI-to-PCI Read
Request
Bridge
Posted Write
Buffer Read result must not be
allowed to reach consumer
until data has safely
reached memory or a race
PCI Bus condition may occur.
Producer Flag
Older PCI table had more entries. New version reduces the entries by
not mentioning specific requests, resulting in fewer cases that must be
tested for spec compliance.
Read Request a) No
Requests
Completion a) No a) Y/N
(Row D) b) Y/N Yes Yes b) No
NPR with data: Non-Posted Write Request, such as a configuration write or I/O write
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Strongly-Ordered Problem: Blocking 300 284
RO is bit 5 of byte 2 in
the TLP Header
Write Buffer
Full
Memory Read
Posted Write
An earlier posted write that stalls will also block egress of subsequent
transactions due to the ordering rules.
However, when subsequent requests come from other devices the
likelihood of a dependency between them is very low and ID-Based
Ordering
Moki would synopsys.com)
Anji (moki@ improve performance.
Do Not Distribute MindShare.com © 2013
IDO Attribute Controlled by Software 303 294
Ack/Nak Protocol
Power Management
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
DLLP Formats 315 301
Flow Control
Vendor-Specific
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Ack/Nak Protocol
Transaction layer
Flow Control
Transmit Receive
Virtual Channel
Buffers Buffers
Management
per VC per VC
Ordering
Parallel-to-Serial Serial-to-Parallel
Link
Differential Driver Training Differential Receiver
TLP
TLP Error
Mux Check
TLP Error
Mux Check
Sequence Ack
Assign
Sequence Seq Num < NRS (Duplicate TLP) Seq Num
NEXT_TRANSMIT_SEQ (NTS)
Number >, <, =
(NRS – 1) = AckNak_Seq_Num[11:0]
(Increment) (Schedule Ack)
NRS?
REPLAY_TIMER
LCRC Increment on Replay) Seq Num > NRS (Lost TLP)
REPLAY_NUM
Generator (Send Nak) Yes
Purge Older TLPs (Reset Both)
(Send Nak) No Pass
Nak AckD_SEQ (AS) LCRC?
Retry Buffer Yes
Nak? (Update) No Nak Flag Clear?
(Replay) Set & Send Nak
Yes AckNak
(TLP copy)
SeqNum = AS? NAK_SCHEDULED Good TLP?
Clear Nak Flag
(TLP copy) Yes Ack Nak
No Pass Ack/Nak AckNak Latency
(Discard) CRC?
Generator Timer
Ack/Nak
DLLP Link
TLP TLP
Assign
Sequence
Number
NEXT_TRANSMIT_SEQ (NTS) incoming TLPs if Retry
(Increment) Buffer is full or a replay
LCRC Increment on Replay)
REPLAY_TIMER is in progress.
REPLAY_NUM
Generator
Purge Older TLPs (Reset Both)
Nak AckD_SEQ (AS)
Retry Buffer Yes
Nak? (Update) No
(Replay)
Yes AckNak
SeqNum = AS?
Yes
No Pass
(Discard) CRC?
Link
No
Yes Sequence Number is
TLPs
(Continue)
(NTS-AS) ≥ 2048? added to keep track of
TLPs in progress
Block TLP during Replay
Assign
Sequence
NEXT_TRANSMIT_SEQ (NTS)
Number
(Increment)
REPLAY_TIMER
LCRC Increment on Replay)
REPLAY_NUM
Generator
Purge Older TLPs (Reset Both)
Nak AckD_SEQ (AS)
Retry Buffer Yes
Nak? (Update) No
(Replay)
Yes AckNak
SeqNum = AS?
Yes
No Pass
(Discard) CRC?
Link
Assign
Sequence
Number
NEXT_TRANSMIT_SEQ (NTS) Number, and ECRC, then
(Increment)
appended to the packet
REPLAY_TIMER
LCRC Increment on Replay)
REPLAY_NUM
Generator
Purge Older TLPs (Reset Both)
Generated
Nak LCRC Calculation Fields
AckD_SEQ (AS)
Retry Buffer Yes
Nak? (Update) No
(Replay) Seq Num Header Data ECRC LCRC
Yes AckNak
SeqNum = AS?
Yes
No Pass
(Discard) CRC?
Link Link
Assign
Sequence
Number
NEXT_TRANSMIT_SEQ (NTS) and the TLP is sent out on
(Increment)
the Link.
REPLAY_TIMER
LCRC
Generator
Increment on Replay)
REPLAY_NUM What’s the largest Retry
Purge Older TLPs (Reset Both) Buffer storage a single
Nak AckD_SEQ (AS)
Retry Buffer Yes
Nak? (Update) No
TLP could use?
(Replay)
Yes AckNak Sequence Number: 2 Bytes
(TLP copy)
SeqNum = AS? Header: 16 Bytes
Data Payload: 4096 Bytes
Yes
No Pass ECRC: 4 Bytes
(Discard) CRC? LCRC: 4 Bytes
Max TLP entry size: 4122 Bytes
Link Link
MokiEnd
Anji (moki@
LCRC synopsys.com)
ECRC Data Header Seq Num STP
Do Not Distribute MindShare.com © 2013
Receiver LCRC Check 325 314
(NRS – 1) = AckNak_Seq_Num[11:0]
(Schedule Ack)
NRS?
compared with the Seq Num > NRS (Lost TLP)
incoming LCRC (Send Nak) Yes
If LCRC
TLPs
check fails:
Yes Increment NRS
No
Discard the(NTS-AS)
(Continue)
bad TLP≥ 2048?
Seq Num = NRS
Good
NEXT_RCV_SEQ (NRS) TLPs
Set NAK_SCHEDULED flag
Block TLP during Replay
Assign
Sequence
Send Nak
Number with expected
NEXT_TRANSMIT_SEQ (NTS) Seq Num < NRS (Duplicate TLP) Seq Num
>, <, =
sequence number minus 1
(Increment) (Schedule Ack)
AckNak_Seq_Num[11:0]
NRS?
REPLAY_TIMER
LCRC Increment on Replay) Seq Num > NRS (Lost TLP)
REPLAY_NUM
Generator (Send Nak) Yes
Purge Older TLPs (Reset Both)
(Send Nak) No Pass
Nak AckD_SEQ (AS) LCRC?
Retry Buffer Yes
Nak? (Update) No Nak Flag Clear?
(Replay) Set & Send Nak TLP
Yes AckNak
SeqNum = AS? NAK_SCHEDULED Good TLP?
Clear Nak Flag
Yes Ack Nak
No Pass Ack/Nak AckNak Latency
(Discard) CRC?
Generator Timer
Nak
DLLP Link
number
Assign
Sequence
for next TLP. Seq Num
Seq Num < NRS (Duplicate TLP)
Cleared
NEXT_TRANSMIT_SEQ (NTS)
Number to zero at reset, it >, <, =
(NRS – 1) = AckNak_Seq_Num[11:0]
(Increment) (Schedule Ack)
NRS?
increments by one for each
REPLAY_TIMER TLP
good
LCRC TLP, and
Increment on Replay)rolls over
REPLAY_NUM
Seq Num > NRS (Lost TLP)
(Send Nak)
Generator
from 4095d Purge back Older to
TLPs zero.
(Reset Both)
Yes
Link
Yes
When TLPs theNo
TLP sequence Increment NRS
(NTS-AS) ≥ 2048? Good
number(Continue)
(Seq Num) is NEXT_RCV_SEQ (NRS)
Seq Num = NRS
TLPs
Block TLP during Replay
Assign
compared
Sequence to NRS, there
NEXT_TRANSMIT_SEQ (NTS) Seq Num < NRS (Duplicate TLP) Seq Num
Number >, <, =
(NRS – 1) = AckNak_Seq_Num[11:0]
are three(Increment)
possible results: (Schedule Ack)
NRS?
REPLAY_TIMER TLP
LCRC Increment on Replay) Seq Num > NRS (Lost TLP)
Generator (Send Nak) Yes
Seq Num = NRS (Good TLP)
(Send Nak) No Pass
Seq Num < NRS (Duplicate TLP) LCRC?
Nak Flag Clear?
Seq Num > NRS (Lost TLP) Set & Send Nak
Purge Older
No TLPs Ack/Nak AckNak Latency
(Reset Both)
Yes Timer
Seq Num Header Data ECRC LCRC Generator
Link
TLP
Transaction Layer (RX)
TLPs
PacketNois good. Yes
TLP core Increment NRS
(NTS-AS) ≥ 2048? Good
(Header,
(Continue) Data, ECRC) NEXT_RCV_SEQ (NRS)
Seq Num = NRS
TLPs
Block TLP during Replay
Assign
sent toNEXT_TRANSMIT_SEQ
Sequence Transaction (NTS) Layer Seq Num < NRS (Duplicate TLP) Seq Num
Number >, <, =
(NRS – 1) = AckNak_Seq_Num[11:0]
NRS value (Increment) is incremented (Schedule Ack)
NRS?
REPLAY_TIMER
Nak flag is cleared
LCRC Increment on Replay)
REPLAY_NUM
Seq Num > NRS (Lost TLP)
Generator (Send Nak) Yes
Ack DLLPPurge isOlder TLPs
scheduled(Reset Both)
(Send Nak) No Pass
Nak AckD_SEQ (AS) LCRC?
Retry Buffer Yes
Nak? (Update) No Nak Flag Clear?
(Replay) Set & Send Nak
Yes AckNak
SeqNum = AS? NAK_SCHEDULED Good TLP?
Clear Nak Flag
Yes Ack Nak
No Pass Ack/Nak AckNak Latency
(Discard) CRC?
Generator Timer
Ack
DLLP Link
Transmitter
TLPs
must Yes have Increment NRS
No
replayed on (NTS-AS)
(Continue)
its own. ≥ 2048?This is
Seq Num = NRS
Good
NEXT_RCV_SEQ (NRS)
aAssign
duplicate TLP. TLPs
Block TLP during Replay
TLP is NEXT_TRANSMIT_SEQ
Sequence
Number discarded (NTS) Seq Num < NRS (Duplicate TLP) Seq Num
>, <, =
(NRS – 1) = AckNak_Seq_Num[11:0]
(Schedule Ack)
NRS is not incremented
(Increment) NRS?
REPLAY_TIMER TLP
Ack is scheduled
LCRC Increment on Replay)
with
REPLAY_NUM
Seq Num > NRS (Lost TLP)
(Send Nak)
Generator
sequencePurge number
Older TLPs of last
(Reset Both)
Yes
Ack
DLLP Link
Assign
In
Sequence Seq Num
response:
Number
NEXT_TRANSMIT_SEQ (NTS) Seq Num < NRS (Duplicate TLP)
>, <, =
(NRS – 1) = AckNak_Seq_Num[11:0]
(Schedule Ack)
TLP is discarded
(Increment) NRS?
TLP
NRSIncrement
LCRC Replay)
REPLAY_TIMER
is noton incrementedREPLAY_NUM
Seq Num > NRS (Lost TLP)
NAK_SCHEDULED
Generator
Purge Older TLPs
flag is set. (Send Nak) Yes
(Reset Both)
Ack/Nak generator Nak
sends Nak (Send Nak) No Pass
AckD_SEQ (AS) LCRC?
DLLP (sequence
Retry Buffer Yes number is
Nak? (Update) No Nak Flag Clear?
NRS-1)(Replay) Set & Send Nak
AckNak Nak
Yes
SeqNum = AS? NAK_SCHEDULED Good TLP?
Clear Nak Flag
Yes Ack
No Pass Ack/Nak AckNak Latency
(Discard) CRC?
Generator Timer
Nak
DLLP Link
Latency
TLPs value
No
depends on
Yes Increment NRS
(NTS-AS) ≥ 2048? Good
Link width,
(Continue)max payload NEXT_RCV_SEQ (NRS)
Seq Num = NRS
TLPs
Block TLP during Replay
Assign
Sequence etc.
size, Seq Num < NRS (Duplicate TLP) Seq Num
NEXT_TRANSMIT_SEQ (NTS)
When timer
Number
expires, >, <, =
(NRS – 1) = AckNak_Seq_Num[11:0]
(Increment) (Schedule Ack)
NRS?
Ack/Nak Generator sends
REPLAY_TIMER
Seq Num > NRS (Lost TLP)
Ack DLLP to the REPLAY_NUM (Send Nak) Yes
(Reset Both)
transmitter. (Send Nak) No Pass
AckD_SEQ (AS) LCRC?
When Ack DLLP is sent, Nak Flag Clear?
Set & Send Nak
timer is reloaded.SeqNum AckNak
= AS? Good TLP?
NAK_SCHEDULED
Clear Nak Flag
Yes Ack Nak
No Pass Ack/Nak AckNak Latency
(Discard) CRC?
Generator Timer
Ack
DLLP Link
Ack/Nak
TLPs
Generator
No
Yes uses Increment NRS
sequence number
(Continue)
of last
(NTS-AS) ≥ 2048?
NEXT_RCV_SEQ (NRS)
Seq Num = NRS
Good
TLPs
good TLP received (NRS-1).
Block TLP during Replay
Assign
Sequence
Multiple
Number TLPs may be(NTS)
NEXT_TRANSMIT_SEQ retired Seq Num < NRS (Duplicate TLP) Seq Num
>, <, =
(NRS – 1) = AckNak_Seq_Num[11:0]
(Schedule Ack)
with one(Increment)
Ack/Nak DLLP. NRS?
REPLAY_TIMER
LCRC Increment on Replay) Seq Num > NRS (Lost TLP)
REPLAY_NUM
Generator (Send Nak) Yes
Purge Older TLPs (Reset Both)
(Send Nak) No Pass
Nak AckD_SEQ (AS) LCRC?
Retry Buffer Yes
Nak? (Update) No Nak Flag Clear?
(Replay) Set & Send Nak
Yes AckNak
SeqNum = AS? NAK_SCHEDULED Good TLP?
Clear Nak Flag
Yes Ack Nak
No Ack/Nak AckNak Latency
(Discard)
Generator Timer
Ack/Nak
DLLP Link
When TLPs
NAK_SCHEDULED
No
Yes Increment NRS
Assign
Sequence
Once
Number a Nak has been(NTS)
NEXT_TRANSMIT_SEQ sent, Seq Num < NRS (Duplicate TLP)
(Schedule Ack)
Seq Num
>, <, =
receiver (Increment)
discards TLPs until
AckNak_Seq_Num[11:0]
NRS?
itLCRC
seesIncrement
the onexpected
Replay)
REPLAY_TIMER
REPLAY_NUM
Seq Num > NRS (Lost TLP)
sequence number.
Generator
Purge Older TLPs (Reset Both)
(Send Nak) Yes
Link
No
Yes Data Link Increment LayerNRSperforms Good TLPs
(NTS-AS) ≥ 2048?
TLPs
(Continue) CRC check on
NEXT_RCV_SEQ (NRS) Seq all
Num =DLLPs.
NRS
Block TLP during Replay
Assign
Sequence
NEXT_TRANSMIT_SEQ (NTS)
The CRC
Seq Num calculation
< NRS (Duplicate TLP) is
Seq Num
Number >, <, =
(Schedule Ack)
(Increment) checked against theNRS? LCRC
AckNak_Seq_Num[11:0]
LCRC Increment on Replay)
REPLAY_TIMER
REPLAY_NUM
sent with Seq DLLP.
Num > NRS (Lost TLP)
Generator
Purge Older TLPs (Reset Both)
Nak AckD_SEQ (AS)
Retry Buffer Yes
Nak? (Update) No (Send Nak) Yes
(Replay)
Yes AckNak
DLLP (Send
CRCNak)
Calculation
No Fields
Pass
(TLP copy)
SeqNum = AS?
CRC?
(TLP copy) Yes
No Pass
(Discard) CRC? Clear Nak Flag
Ack Nak
Ack/Nak AckNak Latency
AckNak Timer
DLLP Link Generator
Check
No
Yes Any DLLPIncrement that NRS
fails Good TLPs
TLPs
(Continue)
(NTS-AS) ≥ 2048? Physical Layer
NEXT_RCV_SEQ (NRS)
checks or
Seq Num = NRS
LCRC check is discarded.
Block TLP during Replay
Assign
Sequence Seq Num < NRS (Duplicate TLP) Seq Num
NEXT_TRANSMIT_SEQ (NTS)
Number >, <, =
(Increment) (Schedule Ack)
AckNak_Seq_Num[11:0]
NRS?
REPLAY_TIMER
How does the Link recover
LCRC Increment on Replay)
REPLAY_NUM from a lost
Seq NumAck/Nak?> NRS (Lost TLP)
(Send Nak)
Generator Yes
Purge Older TLPs (Reset Both) The next Ack or Nak DLLP
Yes
Nak AckD_SEQ (AS) for subsequent TLPs will
Retry Buffer
(Replay)
Nak? (Update) No supply theNaklatest
Flag Clear? sequence
Yes AckNak
SeqNum = AS?
number. Set & SendGood
NAK_SCHEDULED
Nak TLP?
AckNak
DLLP Link
Assign
Sequence
Number
NEXT_TRANSMIT_SEQ (NTS) forward
Seq Num < NRSprogress)
(Duplicate TLP) Seq Num
AckNak_Seq_Num[11:0]
LCRC Increment on Replay)
REPLAY_TIMER Retry Buffer Seq Num
TLP entries > NRS (Lost TLP)
Generator
REPLAY_NUM
that have equal (Send Nak)or lower Yes
Purge Older TLPs (Reset Both) sequence numbers than the
Retry Buffer Yes
Nak AckD_SEQ (AS) Ack or Nak reported.
Nak? (Update) No Nak Flag Clear?
(Replay)
AckNak Set & SendGood
Nak TLP?
Yes NAK_SCHEDULED
(TLP copy)
SeqNum = AS? Clear Nak Flag
Ack Nak
(TLP copy) Yes
No Pass Ack/Nak AckNak Latency
(Discard) CRC?
Generator Timer
AckNak
DLLP Link
Assign
Sequence
Number
NEXT_TRANSMIT_SEQ (NTS) wasn’t already
Seq Num < NRS running.
(Duplicate TLP) Seq Num
AckNak_Seq_Num[11:0]
LCRC Increment on Replay)
REPLAY_TIMER the AS value Seq Num
(forward > NRS (Lost TLP)
Generator
REPLAY_NUM
progress) reload (Send Nak) the Yes
Purge Older TLPs (Reset Both) REPLAY_TIMER and
Retry Buffer Yes
Nak AckD_SEQ (AS) prevent a timeout.
Nak? (Update) No Nak Flag Clear?
(Replay)
AckNak Set & SendGood
Nak TLP?
Yes NAK_SCHEDULED
(TLP copy)
SeqNum = AS? Clear Nak Flag
Ack Nak
(TLP copy) Yes
No Pass Ack/Nak AckNak Latency
(Discard) CRC?
Generator Timer
AckNak
DLLP
TLP
MokiEnd
Anji (moki@
LCRC synopsys.com)
ECRC Data Header Seq Num STP
Do Not Distribute MindShare.com © 2013
When Transmitter Replay Timer Expires 322 328
No
Yes
If an inbound Ack/Nak
Increment NRS Good TLPs
(NTS-AS) ≥ 2048?
TLPs
(Continue) DLLP is late or
NEXT_RCV_SEQ (NRS)
discarded
Seq Num = NRS
Block TLP during Replay
Assign
Sequence
(eg. bad CRC), theSeq Num
NEXT_TRANSMIT_SEQ (NTS) Seq Num < NRS (Duplicate TLP)
Number
(Increment)
REPLAY_TIMER
(Schedule Ack) may>, <, =
AckNak_Seq_Num[11:0]
NRS?
REPLAY_TIMER
expire. In that case:
LCRC Increment on Replay)
REPLAY_NUM All TLPs still in the Retry
Seq Num > NRS (Lost TLP)
(Send Nak)
Generator
Purge Older TLPs (Reset Both) Buffer are replayed. Yes
Nak AckD_SEQ (AS)
Note that no new TLPs are
Retry Buffer Yes
Nak? (Update) No allowedNakduring replay.
Flag Clear?
(Replay)
AckNak Set & SendGood
Nak TLP?
Yes NAK_SCHEDULED
(TLP copy)
SeqNum = AS? Clear Nak Flag
Ack Nak
(TLP copy) Yes
No Pass Ack/Nak AckNak Latency
(Discard) CRC?
Generator Timer
Assign
Sequence
NEXT_TRANSMIT_SEQ (NTS)
SeqReplay all TLPs
Num < NRS (Duplicate TLP) in Retry
Seq NumBuffer
Number
(Increment)
Increment REPLAY_NUM
(Schedule Ack) >, <, =
AckNak_Seq_Num[11:0]
REPLAY_TIMER
If progress: NRS?
Nak
Replay Link
DLLP
TLP TLP
No
Yes
REPLAY_NUM Increment NRSrules:Good TLPs
(NTS-AS) ≥ 2048?
TLPs
(Continue) Cleared
NEXT_RCV_SEQ (NRS) to Seq 0 Num
at =reset
NRS and
Block TLP during Replay
Assign
Sequence
NEXT_TRANSMIT_SEQ (NTS)
whenever forward
Seq Num < NRS (Duplicate TLP) Seq Num
Number
(Increment) (Schedule Ack)is seen >, <, =
progress
AckNak_Seq_Num[11:0]
NRS?
(Discard)
No Pass
CRC?
training AckNak
Ack/Nak is forced
Latency
Generator Timer
No
Yes
(NTS-AS) ≥ 2048?
The absolute Increment NRS Good TLPs
TLPs
(Continue)
difference between
NEXT_RCV_SEQ (NRS) Seq Num = NRS
Block TLP during Replay
Assign
Sequence
Number
NEXT_TRANSMIT_SEQ (NTS) NTS and AS is limited Seq Num < NRS (Duplicate TLP)
>, <, =
Seq Num
(Schedule Ack)
(Increment)
to 2048d (half the 12-
AckNak_Seq_Num[11:0]
NRS?
REPLAY_TIMER
LCRC
Generator
Increment on Replay)
REPLAY_NUM bit NTS range) Seq Num > NRS (Lost TLP)
(Send Nak) Yes
Purge Older TLPs
Nak
(Reset Both)
Failure of this check is
AckD_SEQ (AS)
Retry Buffer Yes
Nak? (Update) No a Data Link Layer Nak Flag Clear?
(Replay)
(TLP copy)
Yes AckNak
SeqNum = AS?
protocol error, but this NAK_SCHEDULED
Set & SendGood
Nak TLP?
(Discard)
No Pass
CRC?
few TLPs are usually in
Ack/Nak AckNak Latency
Timer
Generator
AckNak
progress at one time
DLLP Link
TLP TLP
Hardware costs:
Transmitter Retry Buffer storage, logic for Replay
Timer, NTS and AS counters, CRC generation, etc.
Receiver TLP buffers, Ack/Nak Latency Timer, NRS
counter, CRC checking logic, etc.
Performance costs:
Fixed overhead of 32-bit LCRC appended to TLPs
When replay is needed:
Bandwidth consumed
Replay latency penalty
Replay Timer value is simply 3 times the ACK Note: this argument was
assumed to be zero for 1.0
Latency Timer. The L0s adjustment is set to 0 and 1.1 versions, and was
and the table values are called ‘unadjusted.’ finally dropped starting with
the 2.0 spec
Example: Assume a 2-Lane Link with a Max_Payload of 2048 bytes.
(Max_Payload_Size+TLP Overhead)*AckFactor
+Internal Delay *3 + Rx_L0s_Adjust.
LinkWidth
Switch
Endpoint
Switch
Endpoint
Error detected
LCRC indicates an error after packet finishes
Switch
Endpoint
END TLP
EDB STP
Switch
Nak Endpoint
END
EDB TLP STP
Switch
Endpoint
Transaction layer
Flow Control
Transmit Receive
Virtual Channel
Buffers Buffers
Management
per VC per VC
Ordering
Parallel-to-Serial Serial-to-Parallel
Link
Differential Driver Training Differential Receiver
Ordered Sets:
TS1, TS2
SKIP, FTS
Electrical Idle
Electrical Idle Exit
‘D’ Characters
Scrambling polynomial:
G(x) = X16+X5+X4+X3+1
• Scrambler uses
LFSR
• ‘D’ characters are
scrambled
• COM character
causes scrambler
to reinitialize
• Runs at bit rate
(8 times byte rate)
Example Transmission
CRD Character CRD Character CRD Character CRD
Character to K28.5 (BCh) K28.5 (BCh) D10.3 (6Ah)
be transmitted
Bit stream - Yields + Yields - Yields -
transmitted 001111 1010 110000 0101 010101 1100
+ Disparity
CRD is + - Disparity
CRD is - Neutral
CRD isdisparity
neutral
Initialized value of CRD is don’t care. Receiver can determine from incoming bit stream
COM K28.5 (BCh) 001111 1010 110000 0101 Comma used as a character
boundary alignment symbol
PAD K23.7 (F7h) 111010 1000 000101 0111 Packet Padding Symbol
SKP K28.0 (1Ch) 001111 0100 110000 1011 Used in SKP Ordered Set (SOS)
STP K27.7 (FBh) 110110 1000 001001 0111 Start of TLP Symbol
SDP K28.2 (5Ch) 001111 0101 110000 1010 Start of DLLP Symbol
END K29.7 (FDh) 101110 1000 010001 0111 End of Good Packet Symbol
EDB K30.7 (FEh) 011110 1000 100001 0111 End of Bad Packet Symbol
Used by Switch which detects bad
packet
FTS K28.1 (3Ch) 001111 1001 110000 0110 Used in Ordered Set to exit L0s to L0
power state
IDL K28.3 (7Ch) 001111 0011 110000 1100 Used in Electrical Idle Ordered Set
EIE K28.7 (FCh) 001111 1000 110000 0111 Used in the Electrical Idle Exit
Ordered Set (EIEOS) and sent prior
to FTS at speeds other than 2.5 GT/s
(Reserved at 2.5 GT/s.)
Skip (SOS)
4-character set: 1 COM followed by 3 SKPs
Training Sequence One (TS1)
16-character set: 1 COM, 15 additional characters
Training Sequence Two (TS2)
16-character set: 1 COM, 15 additional characters
Electrical Idle (EIOS)
4 characters at 2.5 GT/s: 1 COM followed by 3 IDLs
8 characters at higher speeds: 1 COM followed by 3 IDLs, sent
twice
Fast Training Sequence (FTS)
4-character set: 1 COM followed by 3 FTSs
Electrical Idle Exit (EIEOS) [only for data rates above
2.5 GT/s]
16-character set: 1 COM, 14 K28.7, TS1 Identifier
Encoding
COM K28.5
FTS K28.1
FTS K28.1
FTS K28.1
Encoding
COM K28.5
SKP K28.0
SKP K28.0
SKP K28.0
Encoding
0 COM K28.5
1 EIE K28.7
EIE K28.7
14
Moki Anji (moki@ synopsys.com)
15 TS ID D10.2 for TS1 Identifier
Do Not Distribute MindShare.com © 2013
Inference of Electrical Idle 393
÷ 10
COM Symbol
÷ 10
This example illustrates a digital deskew after the elastic buffer. Alternatively, delay
Moki
lines Anji have
could (moki@ synopsys.com)
been used prior to the elastic buffer.
Do Not Distribute MindShare.com © 2013
8b/10b Decoder 400 411
Time
Transmitter
Transmitted - D21.1 - D10.2 - D23.5 +
Character Stream
Transmitted Bit - 101010 1001 - 010101 0101 - 111010 1010 +
Stream
Bit Stream After - 101010 1011 + 010101 0101 + 111010 1010 +
Error
Decoded - D21.0 + D10.2 + Invalid +
Receiver
Character Stream
Character 0
Character 1
Character 2
Character 3
Character 4
Character 5
Character 6
Character 7
Byte Un-Striping
1. Increase bandwidth
2. Maintain backward compatibility
a) Hardware – speed compatibility
Work with trace lengths and connectors used with Gen2
Max voltage is a little higher at 1300 mVpp vs. 1200 mVpp
Common starting place: Initialize to Gen1 speed, change if
higher speeds supported
Upper layers don’t change with speed differences. TLP and
DLLP still have the same parts.
b) Software – configuration compatibility
Old registers and access mechanisms must remain
accessible to minimize software effort
15 TS ID
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Link Training 407 423
Gen 2 1 2 4 8 12 16 32
Gen 2 1 2 4 8 12 16 32
Gen 3 2 4 8 16 24 32 64
H0 H1 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
H0 H1 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
128-bit Payload
Data Block
The bit ordering in the spec can be a little confusing: 10b for the Sync value
means 0 is the LSB and will be the first bit going out, so the transmission
sequence will be 01 on the Lane for a Data Block.
13 11111111
14
Moki Anji (moki@ synopsys.com) 00000000
Do Not Distribute 15 11111111
MindShare.com © 2013
Achieving Block Lock 411 434
Ordered Set Blocks are also 16 symbols long, except for SKP
Ordered Sets which can be 8, 12, 16, 20, or 24 symbols as
SKPs are added or deleted.
The transmitter always sends a full 16-byte SOS, and the only case
where it can be larger or smaller is when the packets are going
through a repeater (device that receives and forwards a packet)
An ordered set is completely contained within a block
H0 H1 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
128-bit Payload
14 DC Bal
Moki Anji (moki@ synopsys.com)
Do Not Distribute 15 DC Bal
MindShare.com © 2013
Data Stream and Data Blocks 413 439
TLP Layout
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
Header and Data Payload (same as 2.0) LCRC (4 bytes, same as 2.0)
DLLP Layout
ACh
Lane 0
0
Sync
1
Symbol 0 xxxx 1111b
Length,
Symbol 1
CRC, STP Token
Symbol 2 Parity,
Sequence
Symbol 3 Number
Symbol 4
Symbol 5
Symbol 6
Symbol 7
Symbol 15
4 DW TLP Header
0 (straddles Block boundary)
Sync
1
Symbol 0
Symbol 1
Symbol 2
Moki Anji (moki@
Symbol 3synopsys.com)
Do Not Distribute MindShare.com © 2013
Packet Transmission in x4 Link 424 449
STP Token Lane 0 Lane 1 Lane 2 Lane 3 Lane 4 Lane 5 Lane 6 Lane 7
0 0 0 0 0 0 0 0
Sync
1 1 1 1 1 1 1 1
Symbol 1 (TLP)
Symbol 2
Logical
Symbol 3 LCRC SDP Token
Idle
Symbol 4 DLLP IDL IDL IDL IDL
Symbol 5 IDL IDL IDL IDL IDL IDL IDL IDL
Symbol 6 STP: Length=23, CRC, Parity, Seq Num DW 2
Symbol 7
TLP
Symbol 15 DW 19 DW 20 straddles
Sync 0 0 0 0 0 0 0 0 Block
1 1 1 1 1 1 1 1 boundary
Symbol 0 DW 21 DW 22
Symbol 1 LCRC IDL IDL IDL IDL
Since a Unit Interval (bit time) is 0.125ns at 8 GT/s, then a Symbol Time (8 bits) will be 1ns
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Nullified Packet 425 451
Symbol 1 (TLP)
Symbol 2
Tx Rx Tx Rx
Logical Logical
Tx Rx Tx Rx
Electrical Electrical
Link CTX
D+ D- D+ D- D- D+ D- D+
CTX
Single-ended
signal
Single-ended
signal
Without De-Emphasis
With De-Emphasis
(dramatically
decreased)
Without De-Emphasis
Positive Polarity Signal
Negative Polarity Signal
Eye Opening reduced
With De-Emphasis
Positive Polarity Signal
Good Eye Opening
Negative Polarity Signal
-3.5 dB de-emphasis
Gen1: 2.5 GT/s
-6.0 dB de-emphasis
Gen2: 5.0 GT/s
0 = -6.0 dB
1 = -3.5 dB
Vd
Voltage levels defined in Va
the spec
Vc
Actual trace, highlighted
for clarity Vb
Differential
version of trace
on previous page
c-1 = -0.1
Original signal
inverted, weighted by
0.1, and shifted one
clock earlier
c0 = 0.7
Original signal
weighted by 0.7
c+1 = -0.2
Original signal
inverted, weighted by
0.2, and shifted one
clock later
Summed output
(recreates the highlighted
area of the trace capture
shown earlier)
CTLE characteristics:
Improves signal for channels without many discontinuities
(cable or shorter traces) and is simple and low power
But doesn’t handle channel discontinuities very well
Spec recommends first-order CTLE to accommodate
most trace lengths
Adaptive version could have a mechanism to change
component values based on feedback
Amplifying the signal before filtering is another option
but also amplifies noise, which is less desirable
C
Tx Rx
R
DFE characteristics
Good:
Better handling of signal discontinuities
No magnification of noise
Independent control of each tap
Bad:
Higher power and cost for SERDES
Adjustments limited to number of taps
Spec describes a 1-tap DFE to accommodate max trace
length, but some vendors use more taps.
Detect
CTX ZTX
D+ D+
+
No Spec
Lane in
Transmitter Receiver
one
ON ON
direction
CTX ZTX
-
D- D-
ZTX ZTX ZRX ZRX Clock
Clock Source
Source High or Low VRX-CM = 0 V Low impedance
VCM ON
impedance termination termination
ON
Transmission and reception in progress
Recommended Power Budget about 80 mW per Lane
One direction of the Link can be in L0 while the other
side is in L0s
Transmitter and Receiver clock PLL are ON
Transmitter is On, Receiver is ON
Low impedance termination at transmitter
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
L0s State 501 511
CTX ZTX
D+ D+
+
No Spec
Lane in
Transmitter Receiver
one
ON ON
direction
CTX ZTX
-
D- D-
ZTX ZTX ZRX ZRX Clock
Clock Source
High or Low Low impedance
Source VRX-CM = 0 V
VCM impedance termination termination ON
ON
Transmitter holds Electrical Idle voltage (VTX-DIFFp < 20 mV) and DC common
mode voltage ( VTX-CM-DC 0 – 3.6 V)
Recommended Power Budget <= 20 mW per Lane
Recommended exit latency < 50 ns, however designers indicate that a more
realistic number appears to be 1 us-2 us
One direction of the Link can be in L0s while the other is in L0
Transmitter and Receiver clock PLL are ON but Rx Clock loses sync
Transmitter is On, Receiver is ON
Moki Anji (moki@ synopsys.com)
High or Low impedance termination at transmitter
Do Not Distribute MindShare.com © 2013
L1 State 502 512
CTX ZTX
D+ D+
+
No Spec
Lane in
Transmitter Receiver
one
ON ON
direction
CTX ZTX
-
D- D-
ZTX ZTX ZRX ZRX Clock
Clock Source
Source High or Low VRX-CM = 0 V Low impedance
VCM May be OFF
impedance termination termination
May be OFF
Transmitter holds Electrical Idle voltage and DC common mode voltage
Recommended Power Budget <= 5 mW per Lane
Recommended exit latency < 10 microseconds (may be greater)
Both directions of the Link must be in L1 at the same time
Transmitter and Receiver clock PLL may be OFF, but clock to device ON
Transmitter is On, Receiver is ON
High or Low impedance termination at transmitter
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
L2 State 503 513
No Spec
Lane in
Transmitter one Receiver
OFF direction OFF
CTX ZTX
-
D- D-
ZTX ZTX ZRX ZRX Clock
Clock Source
High or Low VRX-CM = 0 V High impedance
Source VCM
impedance termination termination
OFF
OFF
Low frequency Transmitter holds Electrical Idle voltage, but not required to hold
DC common mode voltage. Most likely OFF.
for Beacon ON Recommended Power Budget <= 1 mW per Lane
Recommended exit latency < 12 - 50 milliseconds
Both directions of the Link in L2
Transmitter and Receiver clock PLL OFF, and clock to device OFF
Low frequency clock for Beacon in transmitter ON
Main power to device OFF, but Vaux ON
Moki Anji (moki@ Transmitter is OFF, Receiver is OFF
synopsys.com)
High or Low impedance termination at transmitter, high impedance at receiver
Do Not Distribute MindShare.com © 2013
L3 State 504 514
CTX ZTX
D+ D+
+
No Spec
Lane in
Transmitter one Receiver
OFF direction OFF
CTX ZTX
-
D- D-
ZTX ZTX ZRX ZRX Clock
Clock High impedance High impedance Source
termination VRX-CM = 0 V termination
Source VCM OFF
OFF Transmitter does not hold DC common mode voltage
Low frequency Recommended Power Budget: zero
for Beacon OFF Recommended L3 -> L0 exit latency < 12 - 50 milliseconds after
power turned ON
Both directions of the Link in L3
Transmitter and Receiver clock PLL OFF, and clock to device OFF
Low frequency clock for Beacon in transmitter OFF
Main power to device OFF, Vaux OFF
Moki Anji (moki@ synopsys.com)
Transmitter and Receiver OFF
Do Not Distribute High impedance termination at transmitter and receiver MindShare.com © 2013
Link Initialization and Training
Hot Reset
Ext Loop Back
Link Enable/Disable
No Electrical
Idle on Link or
12 ms timeout Receiver
Detected
Detect.Quiet Detect.Active
No Detect
12 ms Charge or
DC common mode
• Detect.Quiet: transmitter in high impedance voltage stable
• Detect.Active: Start at DC common mode
voltage at or between VDD and GND
• Drive a different Vcm than present Exit to
• Device knows charge time to change voltage Polling
based on assumed line impedance and Tx
impedance without receiver termination
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Receiver Detect: Absent 523
Detect
Receiver Absent
CTX ZTX-LINE
Cpad Cinterconnect
+
No Spec
Lane in
one Receiver
Transmitter
direction
CTX ZTX-LINE
Cpad Cinterconnect
-
VCM
Detect
Receiver Present
CTX ZTX-LINE
Cpad Cinterconnect
+
No Spec
Lane in
Transmitter one Receiver
direction
CTX ZTX-LINE
Cpad Cinterconnect
-
VCM
Example capabilities:
One Link with 1, 2, or 4 Lanes
2 Links with 1 or 2 Lanes
Lane reversal supported
Example capabilities:
One Link with 1, 2, or 4 Lanes
2 Links with 1 or 2 Lanes
Lane reversal supported
Example capabilities:
One Link with 1, 2, or 4 Lanes
2 Links with 1 or 2 Lanes
Lane reversal supported
x8 x8
Switch Virtual
Switch Virtual
PCI PCI
Bridge 0 Bridge 0
OR
Virtual Virtual Virtual Virtual Virtual Virtual
PCI PCI PCI PCI PCI PCI
Bridge 1 Bridge 2 Bridge 3 Bridge 4 Bridge 1 Bridge 2
x2 x2 x2 x2
x4 x4
One x4
One x1
Two x2
Two x1
One x4
One x2
One x1
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Example 3 continued 542
One x4
One x1
Two x2
Two x1
N N N N Link #:
PAD PAD PAD PAD Lane #: TS1s
One x4
One x2
One x1
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Example 3 continued 543
One x4
One x1
Two x2
Two x1
N N N N Link #:
PAD PAD PAD PAD Lane #: TS1s
One x4
One x2
One x1
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Example 3 continued 544
One x4
One x1
Two x2
Two x1
TS1s Lane #: 0 1 2 3
Link #: N N N N
N N N N Link #:
PAD PAD PAD PAD Lane #: TS1s
One x4
One x2
One x1
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Example 3 continued 545
One x4
One x1
Two x2
Two x1
TS1s Lane #: 0 1 2 3
Link #: N N N N
N N N N Link #:
3 2 1 0 Lane #: TS1s
One x4
One x2
One x1
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Example 3 continued 546
TS2s Lane #: 3 2 1 0
Link #: N N N N
N N N N Link #:
3 2 1 0 Lane #: TS1s
One x4
One x2
One x1
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Example 3 continued 547
One x4
One x1
Two x2
Two x1
TS2s Lane #: 3 2 1 0
Link #: N N N N
N N N N Link #:
3 2 1 0 Lane #: TS2s
One x4
One x2
One x1
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Example 4 550 548
Motivations:
Reduce speed to save power
Return to full speed when
full bandwidth needed
Reduce speed to improve
unreliable operation
Methods:
Hardware events -
Autonomous Bandwidth: design-specific choice for power
management reasons
Bandwidth Management: design-specific choice resulting
from something like a reliability issue (not power mgt.)
Software - using configuration bits
Rate Identifier
TS2
Bit 0 Reserved, = 0
0 COM
1 Link # Bit 1 Indicates 2.5 GT/s support
2 Lane #
Bit 2 Indicates 5.0 GT/s support
3 # FTS
4 Rate ID Bit 3:5 Reserved, = 0
5 Train Ctl
Bit 6 Autonomous Change / Link Up-
6 configure Capability / Selectable De-
emphasis
TS ID
Bit 7 Speed Change
13
14 TS ID
Notes 15 TS ID
Bit 6 meaning is context sensitive:
•In Configuration.Complete, it indicates device’s ability to upconfigure the
Link to a previously negotiated Link width.
•In Recovery, downstream component indicates that the speed or Link width
change was autonomous (not caused by a reliability issue), while an
upstream component specifies the de-emphasis level for the other device (1
= -3.5dB, 0 = -6dB).
•In Polling,
Moki Anji (moki@it synopsys.com)
indicates the de-emphasis value by both devices when going
into
Do Not Loopback mode.
Distribute MindShare.com © 2013
Speed Change Example 623 559
Entry Entry
Speed Speed
Speed_Change = 1
Speed_Change = 1
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Speed Change Example 623 560
Entry Entry
Speed Speed
Speed_Change = 1
Speed_Change = 1
Moki Anji (moki@ synopsys.com)
Do Not Distribute Autonomous Change = 1
MindShare.com © 2013
Speed Change Example 623 561
Entry Entry
Speed Speed
Entry Entry
Speed Speed
Exit to L0 Exit to L0
RcvrLock RcvrCfg RcvrLock RcvrCfg
Speed_Change = 0
TS2
TS1 TS2
TS1 TS2
TS1 TS2
TS1
Symbol 6
7 6 5 4 3 2 1 0
TS1 or TS2
at 2.5 or 5.0 GT/s Tx Preset Rx Preset Hint
0 COM
1 Link # Equalization Command only has meaning at speeds less than 8.0 GT/s
2 Lane # Command
3 # FTS
4 Rate ID Symbol 7 – 9 are TS1 or TS2 Identifiers
5 Train Ctl
6 EQ info
When first entering Recovery state (before
TS ID speed changes to 8.0 GT/s) bit 7 of symbol
6 indicates “EQ TS1” or “EQ TS2” Ordered
15 TS ID
Sets and delivers the preset values
Downstream Ports (DSPs) supply the
preset value to be used for EQ on each
Lane for 8.0 GT/s, while Upstream Ports
(USPs) record this information
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Secondary Capability Register Details 579 572
Secondary PCIe Extended Capability Registers These registers (HWInit & RO) are required for
DSPs. If implemented in a USP, the EQ Control
Registers are ignored.
Equalization Request
Interrupt Enable
Perform Equalization
TS1 at 8GT/s
0 1Eh for TS1, 2Dh for TS2
Symbol 6 1 Link # 0-31d, (PAD encoded as F7h)
7 6 5 4 3 2 1 0 2 Lane # 0-31d, (PAD encoded as F7h)
3 # FTS # of FTS Ordered Sets required by receiver
Tx Preset EC 4 Rate ID Bit 3 indicates 8GT/s support -
5 Train Ctl 5.0GT/s and 2.5GT/s must also be supported
Use Preset Reset EIEOS 6 - 9 EQ info Equalization presets and coefficients
Interval Count
10 - 13 TS ID 4Ah for TS1, 45h for TS2
Entry Entry
Speed Speed
EQ EQ
RcvrLock RcvrCfg RcvrLock RcvrCfg
Speed_Change = 1, Presets
Speed_Change = 1
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Initializing Preset Values 576
These spec tables interpret the Tx Preset and Rx Hint. Recall that the sum of all
coefficient absolute values must be unity, so c0 can be derived from the other two and
doesn’t need to be included in the table.
P3 0.000 -0.125
P2 0.000 -0.200 Note: Variable; used for testing.
Entry Entry
Speed Speed
EQ EQ
RcvrLock RcvrCfg RcvrLock RcvrCfg
Speed_Change = 1
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
EQ Example 579
In Speed, transmitters are assigned the highest mutually-supported rate, whatever that
is. If already using the highest rate, it won’t change and will just go to RcvrLock.
To drop down to a lower rate, transmitter must remove higher speed from its list of
supported rates, causing a lower one to be mutually supported.
Entry Entry
Speed Speed
EQ EQ
RcvrLock RcvrCfg RcvrLock RcvrCfg
Equalization must be done when going to 8 GT/s for the first time and it can be done
again if one Link partner requests it. After EQ, return to RcvrLock. If bit and Block Lock
are successful, continue on to L0. If not, go back to Speed and revert to the previous
working rate.
Entry Entry
Speed Speed
EQ EQ
RcvrLock RcvrCfg RcvrLock RcvrCfg
TS2
TS1 TS2
TS1 TS2
TS1 TS2
TS1
Recovery.Equalization
Note: No DLLPs
allowed until EQ Now USP reports the presets it was given, verifies
process is
Phase 0 reliable Lane operation (BER no worse than 10-4),
completed;
prevents any TLP
and then indicates phase 1 in its own TS1s.
timeouts during
the 50+ms EQ
might take.
Moki Anji
Allowed (moki@
value synopsys.com)
for FS is from 24 to 63 in full-swing mode; 12 to 63 in half-swing mode
Do Not Distribute MindShare.com © 2013
EQ Example Starting Info 584 583
Endpoint
Upstream
Port (USP)
Symbol 6
7 6 5 4 3 2 1 0
Tx Preset EC
TS1 at 8GT/s
0 Use Preset Reset EIEOS
1 Link # Interval Count If new preset is proposed, it
2 Lane # must be used unless it’s not
Symbol 7
3 # FTS supported.
7 6 5 4 3 2 1 0
4 Rate ID
5 Train Ctl FS value when EC = 01b,
Rsvd Otherwise Pre-Cursor Coefficient
6 - 9 EQ info
Symbol 8
7 6 5 4 3 2 1 0
10 - 13 TS ID LF value when EC = 01b,
Rsvd Otherwise Cursor Coefficient Using proposed coefficients
14 - 15 TS ID is optional. Tx might reject
Symbol 9 them because they aren’t
7 6 5 4 3 2 1 0 supported, or for any other
reason.
P RCV Post-Cursor Coefficient
FS=30
Endpoint
Upstream
Port (USP)
EQ can be initiated:
Autonomously (strongly recommended)
By software writing registers in DSP but must guarantee no
side effects – like Completion Timeouts
Perform equalization bit
Target Link Speed
Retrain Link
After initial training completes and 8.0 GT/s speed is
available, DSP initiates by going to Recovery
EQ can be started again by DSP based on its own
needs or because of a request from USP
Components must use Tx values selected during this
process, but can adjust their Rx any time, as long as it
doesn’t cause the Link to become unreliable.
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Software EQ Initialization 592
Goals:
Improve power savings while allowing high
performance
Provide fall-back reliability
Provide notification of changes to software
Note: PCIe does not support asymmetric Links
0 COM
1 Link # Rate Identifier
Bit 0 Reserved, = 0
2 Lane #
Bit 1 Indicates 2.5 GT/s support
3 # FTS
Bit 2 Indicates 5.0 GT/s support
4 Rate ID
Bit 3:5 Reserved, = 0
5 Train Ctl
Bit 6 Autonomous Change / Link Up-
configure Capability / Selectable De-
6
emphasis
Bit 7 Speed Change
TS ID
13
14 TS ID
15 TS ID
Detect
Polling
Configuration
L2 Recovery
L1 L0 L0s
Entry from
Polling or Recovery Exit to
Directed Loopback
Config.Linkwidth.Start
Directed Exit to
Config.Linkwidth.Accept
Disable
Exit to
Detect Config.Lanenum.Wait
Config.Lanenum.Accept
Config.Complete
2ms timeout &
2ms timeout,
haven’t yet been to
already been to Exit to
Recovery.RcvrLock
Recovery.RcvrLock Config.Idle
Recovery
8 Idle Rx, Tx 16 Idle
Recovery.RcvrCfg 0 0
Exit to TS1 (Link:0, Lane:0) TS1 (Link:0, Lane:0) TS1 (Link:PAD, Lane:PAD)
Detect
Exit to Speed Change = 0 Speed Change = 0
Recovery.Idle Loopback
3 3
Speed Change = 0
TS1 (Link:0, Lane:3)
Speed Change = 0
TS1 (Link:PAD, Lane:PAD)
Recovery.RcvrCfg 0 0
Exit to TS2 (Link:0, Lane:0) TS2 (Link:0, Lane:0) TS1 (Link:PAD, Lane:PAD)
Detect
Exit to Speed Change = 0 Speed Change = 0
Recovery.Idle Loopback Autonomous Change = 1 Autonomous Change = 1
3 3
Speed Change = 0
TS2 (Link:0, Lane:3)
Speed Change = 0
TS1 (Link:PAD, Lane:PAD)
Gigabit
Root Ethernet
Recovery.Speed Recovery.RcvrLock Complex Device
Exit to
Lane
Configuration TS1 (Link:PAD, Lane:PAD) Idle Data Idle Data Lane
Recovery.RcvrCfg 0 0
Exit to TS1 (Link:PAD, Lane:PAD) TS1 (Link:PAD, Lane:PAD) TS1 (Link:PAD, Lane:PAD)
Detect
Exit to Speed Change = 0 Speed Change = 0
Recovery.Idle Loopback
3 3
Speed Change = 0
TS1 (Link:PAD, Lane:PAD)
Speed Change = 0
TS1 (Link:PAD, Lane:PAD)
0 0 Active
TS1 (Link:0, Lane:PAD) TS1 (Link:0, Lane:PAD) TS1 (Link:PAD, Lane:PAD)
Config.Lanenum.Wait
Autonomous Change = 1 Autonomous Change = 1
Config.Lanenum.Accept
TS1 (Link:PAD, Lane:PAD) TS1 (Link:0, Lane: PAD) TS1 (Link:0, Lane: PAD)
1 1 Inactive
Config.Complete TS1 (Link:PAD, Lane:PAD) TS1 (Link:PAD, Lane:PAD) TS1 (Link:PAD, Lane:PAD)
Config.Idle
TS1 (Link:PAD, Lane:PAD) TS1 (Link:0, Lane: PAD) TS1 (Link:0, Lane: PAD)
Lan
2 2
e
Inactive
TS1 (Link:PAD, Lane:PAD) TS1 (Link:PAD, Lane:PAD) TS1 (Link:PAD, Lane:PAD)
Exit to
L0 Autonomous Change = 1 Autonomous Change = 1
TS1 (Link:PAD, Lane:PAD) TS1 (Link:0, Lane: PAD) TS1 (Link:0, Lane: PAD)
3 3 Inactive
Moki Anji (moki@ synopsys.com) TS1 (Link:PAD, Lane:PAD)
Autonomous Change = 1
TS1 (Link:PAD, Lane:PAD)
Autonomous Change = 1
TS1 (Link:PAD, Lane:PAD)
0 0 Active
TS1 (Link:0, Lane:0) TS1 (Link:0, Lane:0) TS1 (Link:PAD, Lane:PAD)
Config.Lanenum.Wait
Autonomous Change = 1 Autonomous Change = 1
Config.Lanenum.Accept
TS1 (Link:PAD, Lane:PAD) TS1 (Link:PAD, Lane:PAD) TS1 (Link:PAD, Lane:PAD)
1 1 Inactive
Config.Complete TS1 (Link:PAD, Lane:PAD) TS1 (Link:PAD, Lane:PAD) TS1 (Link:PAD, Lane:PAD)
Config.Idle
TS1 (Link:PAD, Lane:PAD) TS1 (Link:PAD, Lane:PAD) TS1 (Link:PAD, Lane:PAD)
Lan
2 2
e
Inactive
TS1 (Link:PAD, Lane:PAD) TS1 (Link:PAD, Lane:PAD) TS1 (Link:PAD, Lane:PAD)
Exit to
L0 Autonomous Change = 1 Autonomous Change = 1
3 3 Inactive
Moki Anji (moki@ synopsys.com) TS1 (Link:PAD, Lane:PAD)
Autonomous Change = 1
TS1 (Link:PAD, Lane:PAD)
Autonomous Change = 1
TS1 (Link:PAD, Lane:PAD)
Gigabit
Config.Linkwidth.Start Root Ethernet
Complex Device Desired
State
Config.Linkwidth.Accept Lane
TS1 (Link:PAD, Lane:PAD) TS1 (Link:0, Lane: 0) TS1 (Link:0, Lane: 0) Lane
0 0 Active
TS1 (Link:0, Lane:0) TS1 (Link:0, Lane:0) TS1 (Link:PAD, Lane:PAD)
Config.Lanenum.Wait
Autonomous Change = 1 Autonomous Change = 1
Config.Lanenum.Accept
TS1 (Link:PAD, Lane:PAD) TS1 (Link:PAD, Lane:PAD) TS1 (Link:PAD, Lane:PAD)
1 1 Inactive
Config.Complete TS1 (Link:PAD, Lane:PAD) TS1 (Link:PAD, Lane:PAD) TS1 (Link:PAD, Lane:PAD)
Config.Idle
TS1 (Link:PAD, Lane:PAD) TS1 (Link:PAD, Lane:PAD) TS1 (Link:PAD, Lane:PAD)
Lan
2 2
e
Inactive
TS1 (Link:PAD, Lane:PAD) TS1 (Link:PAD, Lane:PAD) TS1 (Link:PAD, Lane:PAD)
Exit to
L0 Autonomous Change = 1 Autonomous Change = 1
Autonomous Change = 1
TS1 (Link:PAD, Lane:PAD)
Autonomous Change = 1
TS1 (Link:PAD, Lane:PAD)
17. Root sends TS2’s on active Lane and goes to electrical idle
on inactive Lanes
Configuration - TS2’s advertise that the Link is “upconfigure capable”
18. Device responds with same TS2’s on active Lane and goes
Entry from
Recovery
to electrical idle on inactive Lanes
19. State changes to Conifg.Idle
Gigabit
Config.Linkwidth.Start Root Ethernet
Complex Device Desired
Upconfigure Capability = 1 Upconfigure Capability = 1 State
Config.Linkwidth.Accept Lane
TS1 (Link:PAD, Lane:PAD) TS2 (Link:0, Lane: 0) TS2 (Link:0, Lane: 0) Lane
0 0 Active
TS2 (Link:0, Lane:0) TS2 (Link:0, Lane:0) TS1 (Link:PAD, Lane:PAD)
Config.Lanenum.Wait
Upconfigure Capability = 1 Upconfigure Capability = 1
Config.Lanenum.Accept
1
Electrical Idle 1 Inactive
Config.Complete
Config.Idle
Electrical Idle Lan
2 2
e
Inactive
Exit to
L0
Electrical Idle
3 3 Inactive
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Dynamic Link Width Example 637 608
20. Root and device exchange idle data (just zeros) for
a while
Configuration 21. State changes to L0 and regular packets can be
Entry from exchanged once again
Recovery
Gigabit
Config.Linkwidth.Start Root Ethernet
Complex Device Desired
State
Config.Linkwidth.Accept Lane
TS1 (Link:PAD, Lane:PAD) Idle data Idle data Lane
0 0 Active
Idle data Idle data TS1 (Link:PAD, Lane:PAD)
Config.Lanenum.Wait
Config.Lanenum.Accept
1
Electrical Idle 1 Inactive
Config.Complete
Config.Idle
Electrical Idle Lan
2 2
e
Inactive
Exit to
L0
Electrical Idle
3 3 Inactive
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Disabling Dynamic Width Changes 638 609
USP
In response, DSP goes to Configuration and sends PAD on all Link and
Lane numbers.
Next, recognizing that a width change is in progress, it proposes that only
Lane 0 be used by setting the Link number to PAD for all the other
Lanes. Eventually, USP echoes this back and one Lane is active.
Entry
from L0
Transmitter sends
Electrical Idle Transmitter sends
Ordered Set N_FTSs on all Lanes
TTX-IDLE-MIN
= 50 UI Tx_L0s.Idle Directed
Tx_L0s.Entry (Tx in Electrical Tx_L0s.FTS
Idle low power)
Transmitter sends
One SKP Ordered Set
Exit to
L0
Entry
from L0
Receiver detects
Electrical Idle
Ordered Set
TTX-IDLE-MIN Electrical
= 50 UI
Rx_L0s.Idle Idle Exit
Rx_L0s.Entry (Rx in Electrical Rx_L0s.FTS
Idle low power)
Skip N_FTS
Ordered timeout
Set
Exit to Exit to
L0 Recovery
Entry
from L0
Directed and
Electrical Idle
Ordered set Remain in
Received and
Transmitted TTX-IDLE-MIN= Electrical Idle
50 UI L1.Idle
L1.Entry (Electrical
Idle low power)
Tx in Electrical Idle
Directed or
Electrical Idle Exit
Exit to
Recovery
Entry
from L0
Directed and
Electrical Idle
Ordered set Beacon detected
Received and Send Beacon
(Downstream Switch ports)
Transmitted (Upstream ports only)
Directed to send Beacon
(Upstream ports)
L2.Idle
(Electrical Idle low L2.TransmitWake
power. No DC CMV)
Recovery
Directed
Timeout
2 ms
Exit to
Detect
Entry
From Configuration
Or Recovery
Disabled
(Electrical Idle)
Directed or
Electrical Idle Exit or
No Electrical Idle
Ordered Set after 2 ms
Exit to
Detect
Two examples:
1. Switch sees poisoned TLP
but isn’t the target, so
doesn’t send uncorrectable
error. If enabled, it can
1. ERR_COR 2. ERR_COR
report ERR_COR to help 1. Poisoned
2. Completion
with UR status
software learn what Packet
happened (the switch may
have poisoned the TLP).
2. Completer sending a
completion with UR or CA
status can also report
ERR_COR. Requester
chooses how to handle this.
Descriptions
Moki Anji (moki@assume error messages have been enabled
synopsys.com)
Do Not Distribute
* Header is logged if software will be notified of the error MindShare.com © 2013
Transaction Layer Errors 656 642
Descriptions
Moki Anji (moki@assume error messages have been enabled
synopsys.com)
Do Not Distribute
* Header is logged if software will be notified of the error MindShare.com © 2013
Data Link Layer Errors 655 643
Descriptions
Moki Anji (moki@assume error messages have been enabled
synopsys.com)
Do Not Distribute MindShare.com © 2013
Physical Layer Errors 655 644
Descriptions
Moki Anji (moki@assume error messages have been enabled
synopsys.com)
Do Not Distribute MindShare.com © 2013
PCI Express 4 KB Config. Space 658 645
Legacy software
expects to enable
errors with Command
Register and read
status in the Status
Register
First Error
RsvdP Pointer
AND
AND AND
OR OR
Hardware/software elements of PC PM
OS
ACPI Driver
WDM Device Driver
Miniport Driver
PCI Express Bus Driver
PCI Express PM registers in each function
System board power plane control and bus clock
control logic
HD
USB
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Global Power States G0/S0 708 688
Doubleword
PCI PM Capability Register Set
Number
(in decimal)
Byte
3 2 1 0
Device Vendor 00
ID ID
Status Command 01
Register Register
Class Code Revision 02
ID
Header Latency Cache 03
BIST Type Timer Line
Size
Base Address 0 04
Base Address 1 05
Base Address 2 06
Base Address 3 07
Base Address 4 08
Base Address 5 09
Subsystem ID Subsystem 11
Vendor ID
Expansion ROM 12
Base Address
Reserved Capabilities 13
Pointer
Reserved 14
1. D0 Un-initialized and D0
Power On
Initialized Reset D0
Un-initialized
• Active state; support
required
2. D1 Light sleep D0
Active
• Optional
3. D2 Deep sleep
• Optional D3
D1 D2
Hot
4. D3 Hot and D3 Cold
• Support required
D3
Vcc Cold
Removed
Root Complex
(F)
L1 ASPM State L1 State
4. Switch F signals
L1 Exit to Switch C L1 ASPM
State
3. Within 1µs of step 2,
PM State D0 Switch C signals PM State D1
PM State L1 Exit to Switch F
PCIe D0 PCI-XP
Endpoint Switch Endpoint
(D) (C) (E)
L1 ASPM State
L1 State 1. EP B signals
L1 Exit to Switch C
2. Switch C signals
L1 Exit to EP B
PM State D2 PM State D0
PCIe PCIe
Endpoint Endpoint
Moki Anji (moki@ synopsys.com)
(A) (B)
Do Not Distribute MindShare.com © 2013
L1 Exit From Upstream 755 711
Root Complex
Root Complex
RC L1 latency (8µs)
5. Exit to L0 also takes 8µs
L1 State
L1 State
2. Within 1µs of detecting,
PM State D0 L1 Exit from EP B, Switch
PM State C signals Exit to Switch F
PCIe D0 PCIe
PM State D1
Endpoint Switch Endpoint
(D) (C) (E)
Switch C, L1 latency (16µs)
PM State D2 PM State D0
PCIe PCIe EP B, L1 latency (8µs)
Endpoint Endpoint
(A) (B)
T T+16
Link B/C starts L1 exit at T and takes 16 µs T+17
T+1
Link C/F starts L1 exit at T+1 and takes 16 µs
T+10
Moki Anji (moki@ synopsys.com)
Link F/RC starts L1 exit at T+1 and takes 8 µs
T+2
Doubleword
PCI PM Capability Register Set
Number
(in decimal)
Byte
3 2 1 0
Device Vendor 00
ID ID
Status Command 01
Register Register
Class Code Revision 02
ID
Header Latency Cache 03
BIST Type Timer Line
Size
Base Address 0 04
Base Address 1 05
Base Address 2 06
Base Address 3 07
Base Address 4 08
Base Address 5 09
Subsystem ID Subsystem 11
Vendor ID
Expansion ROM 12
Base Address
Reserved Capabilities 13
Pointer
Reserved 14
Root Complex
1. Software generates a
Configuration Write TLP to
place EP A into the D2 state
L0 State
PM State D0
Switch
(F)
L1 ASPM State
L0s L0 State
L0 State
PM State D0 PM State PM State D0
PCIe D0 PCIe
Endpoint Switch Endpoint
(D) (C) (E)
Read request
Two PMEs arrive;
Root accepts 1st but
can’t take another,
so 2nd one waits.
Root reads status of
first requester.
Completion is
returned, but 2nd
PME is blocking
its progress,
causing a
deadlock.
PME PME
Completion
31 20 19 16 15 0
Next Extended Version PCIe Extended Capability ID
Capability Offset (1h) (0016h for DPA)
31 0 Offset
010h
DPA Power Allocation Array
(Sized by number of substates)
Up to
02Ch
RsvdZ
31 24 23 16 15 14 13 12 11 10 9 8 7 5 4 0
Substate
Xlcy1 Xlcy0 PAS RsvdZ _Max
31 0
15 9 8 7 5 4 0
RsvdZ RsvdZ
15 5 4 0
RsvdP
31 0 Offset
010h
DPA Power Allocation Array
(Sized by number of substates)
Up to
02Ch
One 8-bit register for each substate gives the power for that substate,
which is multiplied by the Power Allocation Scale register to arrive at the
wattage used. All values in the array are RO.
System Events
Endpoint A
Events
Endpoint B
Events
Endpoint C
Events
Time
System Events
Endpoint A
Events
Endpoint B
Events
Endpoint C
Events
Time
LTR could also be used to inform system software of acceptable latency for
Moki Anji the synopsys.com)
(moki@ endpoints between accesses, suggesting a limit on this idle time.
Do Not Distribute MindShare.com © 2013
OBFF offers a Hint 778 745
Root Complex
WAKE#
Endpoint
Switch Endpoint
OBFF
Message
Endpoint
WAKE# Switch
Endpoint Endpoint
Notes:
- ECN points out that there is one negative edge for signaling OBFF, and 2 negative
edges for signaling CPU Active
- Min pulse width = 300ns, time between falling edges = 700ns min to 1000ns max
- Moki
If pattern
Anji is unrecognized,
(moki@ default is CPU Active
synopsys.com)
Do Not Distribute MindShare.com © 2013
WAKE# Rules 780 748
RsvdP RsvdP
Max End-End
TLP Prefixes
End-End TLP
Prefix Supported
Extended Fmt
Field Supported
TPH Completer Supported
LTR Mechanism Supported
No RO-enabled PR-PR Passing
128-bit CAS Completer Supported
OBFF Support
64-bit AtomicOp Completer Supported
00 – Not supported 32-bit AtomicOp Completer Supported
01 – Message only AtomicOp Routing Supported
ARI Forwarding Supported
10 – WAKE# only
Completion Timeout Disable Supported
11 – Both Completion Timeout Ranges Supported
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
OBFF Enable 783 753
RsvdP
OBFF Enable
00 – Disabled
01 – Enabled with Message signaling Variation A
10 – Enabled with Message signaling Variation B
Moki Anji (moki@ synopsys.com)
11 – Enabled using WAKE# signaling
Do Not Distribute MindShare.com © 2013
Latency Tolerance Reporting (LTR) (2.1) 784 754
15 11 10 9 0
LTR
Mechanism
Enable
Device Control 2 Register
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
LTR Message 788 756
2 3
Bridge
Data Buffer
South Bridge
1
PCI Bus
Interrupt Controller
(PIC) INTA#
Device
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Memory Synchronization 797 766
Interrupt Service
4
Routine (ISR)
North Bridge
Interrupt Table (ISR
3 starting addresses)
PCI Bus
Bridge
Write Buffer
South Bridge
1
2
PCI Bus
Interrupt Controller
(PIC) INTA#
Device
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Memory Synchronization-2 797 767
Interrupt Service
4
Routine (ISR)
North Bridge
Interrupt Table (ISR
3 starting addresses)
PCI Bus
Bridge
Write Buffer
South Bridge
1
2 5 PCI Bus
Interrupt Controller
(PIC) INTA#
Device
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Legacy INTx Information 768
INTD#
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Legacy Interrupt Routing 803 770
ISA
Slave
Programmable 8259A
Interrupt Interrupt
Router Controller
IRQ8
IRQ9 (IRQ2)
IRQ10
IRQ11
IRQ12 ISA
Input 0# IRQ13 Master
IRQ14 8259A
Input 1# IRQ15 Interrupt
Input 2# Controller
Input 3#
IRQ0
IRQ1
Interrupt to CPU
IRQ3
IRQ4
IRQ5
IRQ6
IRQ7
APIC TH1
APIC TH0
APIC TH1
APIC TH0
APIC TH1
APIC TH0
APIC TH1
Core Core Core Core are nothing more than memory
0 n 0 n writes targeting a special
address.
QPI
Special address: FEEx_xxxxh
QPI QPI INT MSG QPI INT MSG QPI
This address identifies it as an
interrupt as opposed to a
IOAPIC
IOH regular memory transaction.
MSIs can be sourced from an
IO APIC on behalf of a device,
MSI MSI or from the device directly.
Each MSI must contain
ICH IOAPIC information about the interrupt
PCIe MSI
being delivered:
PCI MSI
Vector
R Destination ID
PCIe A-D
o INTR
PCI A-D u
8259 Destination Mode (Physical or
(Master)
Internal Logical)
IDE t •USB Ints
i Redirectable or not
SERIRQ •SATA
Others
n •SMBu Edge or Level
g 8259
s Type of Interrupt (Fixed, NMI,
(Slave) SMI, ExtINT, etc.)
•RTC
Moki Anji •DMA
(moki@ synopsys.com)
•Other
Do Not Distribute MindShare.com © 2013
MSI Carries Vector And Delivery Info 816 781
Redirection Hint
Indicates MSI traffic Destination Mode
targeting Core Local APICS
0000h 00 Vector
Trigger Mode
Delivery Status
Destination Mode
Moki Anji (moki@ synopsys.com)
Delivery Mode
Do Not Distribute MindShare.com © 2013
MSI Address Encoding 816 782
Bit(s) Description
63:32 If the device adapter implements a 64-bit MSI Address register, these address bits are typically
programmed as all zeros.
31:20 FEEh targets the Local APICs. FECh targets the IO APICs. (Targeting IO APICs with MSI
transactions is no longer common.)
19:12 Destination ID: If originating from an IO APIC, this field holds bits [63:56] of the Redirection Table
Entry.
11:4 Extended Destination ID: If originating from an IO APIC, this field holds bits [55:48] of the
Redirection Table Entry.
3 Redirection Hint bit: The message’s delivery mode is delivered as part of the write data and is not
present in the message address. If the message’s Delivery Mode is the Lowest-Priority Delivery
Mode, this Redirection Hint bit can be set to alert the Host Bridge. The message address also
contains a Destination Mode bit. There are three possible combinations of these two bits:
(hint, dest mode)
(0,x) – Interrupt delivered to APIC identified in bits 19:4 as interpreted by Destination Mode
(1,0) – Lowest-Priority Delivery Mode and Physical Destination Mode. All of the processors in the
cluster are considered for redirection of that interrupt.
(1,1) – Lowest-Priority Delivery Mode and Logical Destination Mode. The redirection is limited to only
those processors that are part of the logical group of processors specified in the Destination ID field.
2 Destination Mode: This bit only has meaning if the Redirection Hint bit is set to 1.
0 – Physical Destination Mode
1 – Logical Destination Mode
1:0 Typically set to 00b
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
MSI Data Encoding 817 783
Bit(s) Description
31:16 Typically programmed to 0000h
15 Trigger Mode.
0 – Edge Triggered
1 – Level Triggered
14 Delivery Status. If this is an Edge Triggered interrupt as indicated by the Trigger Mode field, this bit
is set to 1. If this is a Level Triggered interrupt, this bit indicates the state of the interrupt input:
0 – Deasserted
1 – Asserted
13:12 Typically programmed to 00b
11 Destination Mode:
0 – Physical
1 – Logical
Bit(s) Description
10:8 Delivery Mode: This is the same as the corresponding bits in the Redirection Table for that interrupt.
000b – Fixed. Delivers the interrupt to all of the Local APICs listed in the Destination field. The
Trigger Mode can be either edge-triggered or level-triggered.
001b – Lowest-Priority. Delver the interrupt to the processor that is executing the lowest-priority
program of all the processors listed in the Destination field. The Trigger Mode can be either edge-
triggered or level-triggered.
010b – SMI. The Trigger Mode must be edge-triggered. The Vector is ignored but must be
programmed to all zeroes for future compatibility.
011b – Reserved.
100b – NMI. Delivers the interrupts to all of the Local APICs listed in the Destination field. The Vector
is ignored. Regardless of the Trigger Mode setting, NMI is an edge-triggered interrupt.
101b – INIT. Delivers the interrupt to all of the Local APICs listed in the Destination field. The Vector
is ignored. Regardless of the Trigger Mode setting, INIT is an edge-triggered interrupt.
110b – Reserved.
111b – ExtINT. The interrupt is delivered to the Local APIC specified in the message’s Destination
field. That processor then issues an Interrupt Acknowledge transaction to request the vector from the
8259A compatible interrupt controller. ExtINT is an edge-triggered interrupt.
7:0 Vector. Specifies which of the user-defined interrupt vectors is being triggered (i.e. 10h – FEh).
Doubleword
Number
(in decimal)
Byte
3 2 1 0
Device Vendor 00
ID ID
Status Command 01
Register Register
Class Code Revision 02
ID
Header Latency Cache 03
BIST Type Timer Line
Size
Base Address 0 04
Base Address 1 05
Base Address 2 06
Base Address 3 07
Base Address 4 08
Base Address 5 09
Subsystem ID Subsystem 11
Vendor ID
Expansion ROM 12
Base Address
Reserved Capabilities 13
Pointer
Reserved 14
31 16 15 8 7 2 0
Message Control Register Pointer to Next ID Capability ID = 11h 00h
MSI-X Table Offset Table BIR 04h
Pending Bit Array (PBA) Offset PBA BIR 08h
31 30 29 27 26 16
Doubleword
Number
(in decimal)
Byte
3 2 1 0
Device Vendor 00
ID ID
Status Command 01
Register Register Function’s Memory
Class Code Revision 02
ID
Header Latency Cache 03
BIST Type Timer Line
Size
Base Address 0 04
05 Table BIR = 2
Base Address 1
06
MSI-X Table
Base Address 2
Base Address 3 07
08 MSI-X
Base Address 4
Table
Base Address 5 09
Offset
CardBus CIS Pointer 10
Subsystem ID Subsystem 11
Vendor ID
Expansion ROM 12
Base Address
Reserved Capabilities 13
Pointer
Reserved 14
DW1 DW0
Pending Bits 0 - 63 QW 0
Pending Bits 64 - 127 QW 1
Pending Bits 128 - 191
….
….
Pending Bits QW (N-1)/64
2. What configuration register and field verifies the selection in item 1 above?
When an interrupt is generated what interrupt will be signaled by the
device?
4. For 0:28:6, how many interrupt vectors are requested and how many are
enabled?
5. For 0:28:6, what are the specific address and data values allowed in the
interrupts (memory writes) that can be signaled by the Root Port? Bonus
question: On this x86-based system, what are interrupt vectors of these
Moki Anji (moki@
interruptssynopsys.com)
(assuming interrupt remapping is not enabled in the system)?
Do Not Distribute MindShare.com © 2013
MindShare Lab: Interrupt Investigation 795
Open File: interrupt_lab.arbsys
7. For the device attached to Root Port 0:28:2, what are the specific address
and data values allowed in the interrupts (memory writes) that can be
signaled by the device? Bonus question: On this x86-based system, what
are interrupt vectors of these interrupts (assuming interrupt remapping is
not enabled in the system)?
8. Are any of the interrupts of BDF 9:0:0 masked from being generated? If so,
have any of those masked events occurred at the BDF? Which one(s)?
9. Are any of the interrupts of BDF 8:0:0 masked from being generated? If so,
have any of those masked events occurred at the BDF?
Processor
FSB
Add-In Add-In
Switch
PCIe
SCSI
to-PCI-X
RST#
Moki Anji (moki@ synopsys.com) PCI-X
Do Not Distribute MindShare.com © 2013
Hot Reset 837 800
Doubleword
Number
(in decimal)
15 12 11 10 9 8 7 6 5 4 3 2 1 0
Byte
3 2 1 0
Reserved 2.2 2.2 2.2 2.2
Device Vendor 00
ID ID
Status Command 01
Discard Timer SERR# Enable Register Register
02
Discard Timer Status Class Code Revision
ID
Secondary Discard Timeout Header Latency Cache 03
BIST Type Timer Line
Size
Primary Discard Timeout 04
Base Address 0
Fast Back-to-Back Enable
Base Address 1 05
Secondary Bus Reset
Secondary Subordinate Secondary Primary 06
Master Abort Mode Latency Timer Bus Number Bus Number Bus Number
14
to generate a Hot Reset by setting and Expansion ROM Base Address
15
Bridge Interrupt Interrupt
clearing the Secondary Bus Reset bit in Control Pin Line
Processor Processor
FSB
PCI Express
GFX
GFX Root Complex
DDR
SDRAM
10 Gb PCI Express-
Switch B SCSI
Ethernet to-PCI
Slots
PCI
Gb
Add-In S IEEE
Ethernet
I/ 1394
O
COM1
COM2
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Reset from Switch Upstream Port 839 803
Processor Processor
FSB
PCI Express
GFX
GFX Root Complex
DDR
SDRAM
Function Function
5 0
Multi-Function Device
Element Purpose
Hot-Plug Controller per HP slot Interface between software and Hot-Plug
control
Card slot power Switching via Power Control of slot power
Controller
Card reset logic PERST# control
Power and Attention Indicators Show the power and attention states of the
slot
Manually-operated Retention Latch Hold add-in cards in place
(MRL)
MRL Sensor Allow the port and system SW to detect the
MRL being opened
Electromechanical Interlock Prevent removal of add-in cards while slot is
powered
Attention Button Allow user to request hot plug operations
Indicates FC Init
has completed;
one indication
that a hot-add
must have taken
place
Required for
downstream port if slot
is hot-plug capable.
Not valid for upstream
port.
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Slot Capability Register 866 830
(HwInit)
Enables an
interrupt when
Link Active
status bit
changes
Initial state
Attention Indicator (Yellow): Off
Power Indicator (Green): On
Procedure
Operator presses Attention Button or indicates via
software GUI the physical slot number of interest
Software causes Power Indicator to blink
Hot plug software validates request via status register
Device driver commanded to quiesce the card
Software commands port to disable link
Software commands Hot Plug Controller to turn slot off
Power Indicator commanded to turn off
Operator releases MRL
Moki Anji (moki@ synopsys.com)
Distribute
Do Not OS de-allocates resources MindShare.com © 2013
Card Insertion Procedure 857 835
Initial state:
Attention Indicator (Yellow): Off
Power Indicator (Green): Off
Procedure
Operator installs card and secures MRL
Attention Button pressed by operator or uses software
GUI to indicate hot-insertion. Hot-plug services notified
via interrupt
Hot plug software validates request via status register
Software commands Power Indicator to blink
Software commands Hot Plug Controller to turn slot on
Power Indicator commanded to turn on
OS initializes card and allocates resources to card
Moki Anji (moki@ synopsys.com)
Distribute
Do Not OS calls driver to complete card initialization MindShare.com © 2013
836
Power Budgeting
System firmware
Used during boot time, it contains the system
power budget and consumption of devices that are
known to be present.
Power budget manager
Used during run time
Expansion ports
Ports to which cards are attached
Add-in devices
Those that are power budget capable
NIC Endpoint
Switch NIC
2 2a
4
5
Cache
1
Write Buffer
Full
Memory Read
Posted Write
+0 +1 +2 +3
7 0 7 3 2 1 0 7 0 7 0
Byte 0 Format T T E
0 x 1
Type r TC R Attr R
H D P
Attr AT Length
Last DW First DW
Byte 1 Requester ID Tag BE BE
New version reduces the entries and simplifies them by not mentioning
specific requests. Both make it easier for new devices to be compliant.
Read a) No
Non-Posted
(Row B)
NPR with a) No
data b) Y/N Y/N Y/N Y/N
(Row C)
Completion a) No a) Y/N
(Row D) b) Y/N Yes Yes b) No
L1.0
L1.1 L1.2
“Snooze” “Off”
L1.0: both Ports must detect electrical idle exit (EIE), and maintain
Common Mode Voltage (CMV) [Power/Lane = 20 mW]
CLKREQ# deassertion signals entry to lower state. Next state will be
L1.2 if software enabled, or if ASPM enabled and conditions are met.
Otherwise, next state will be L1.1 if software or ASPM enabled.
Assertion of CLKREQ# exits back to L1.0.
Neither substate detects EIE, but for
L1.1: CMV maintained [Power/Lane = 500 µW]
Moki Anji(moki@
L1.2: CMV not maintained [Power/Lane = 10 µW]
synopsys.com)
Do Not Distribute MindShare.com © 2013
3: Lightweight Notification (LN) 867
1. Communication:
Multicasting
Endpoint Endpoint
Switch NIC
Disk Disk
RsvdP MC_Num_Group
MC_Index
MC_Base_Address [31:12] RsvdP
_Position
MC_Base_Address [63:32]
MCG
If Index Position = 12, then the MCG (which
can be up to 6 bits) would be found within
Moki Anji (moki@ synopsys.com)
the address starting at bit 12.
Do Not Distribute MindShare.com © 2013
MC Windows Example 894 887
MC_Base_Address = 2GB
MC_Max_Group = 7
MC_Window_Size_Requested = 10
MC_Index_Position = 12
MC_Num_Group = 5
System Memory Map
MC Address Range
= 2GB to 2GB + 212 * 6
= 2GB to 2GB + 24KB
8 MC windows available in
2GB + 24KB MC Group 5 hardware, each at least 210
MC Group 4
Only 6 MC windows are MC Group 3 in size (technically, 212 is
configured for use MC Group 2
MC Group 1
min. address granularity)
MC Group 0
2GB MC_Base_Address
MC_Overlay
MC_Overlay_BAR [31:6]
_Size
MC_Overlay_BAR [63:32]
MC Overlay Size:
If 6 or greater, this specifies the size in bytes of the overlay aperture.
If less than 6, the overlay mechanism is disabled, since this BAR
can’t use the 6 low-order bits
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Overlay Method 896 891
2. Performance:
TLP Processing Hints
4
5
Cache
1
Cache
Cache
2
Cache
+0 +1 +2 +3
7 07 6 5 4 3 2 1 07 0 7 0
T T E
Format Type R TC R Attr R H D P Attr AT Length
First DW Last DW
Requester ID Tag BE BE
Address [63:32]
Address [31:2] PH
+0 +1 +2 +3
7 07 6 5 4 3 2 1 07 0 7 0
T T E
Format Type R TC R Attr R H D P
Attr AT Length
First DW Last DW
Requester ID Tag BE BE
Address [63:32]
Address [31:2] PH
+0 +1 +2 +3
7 07 6 5 4 3 2 1 07 0 7 0
T T E
Format Type R TC R Attr R H D P
Attr AT Length
Last DW First DW
Requester ID Tag BE
Steering Tags
BE
Address [63:32]
Address [31:2] PH
+0 +1 +2 +3
7 07 6 5 4 3 2 1 07 0 7 0
T T E
Format Type R TC R Attr R H D P
Attr AT Length
Last DW First DW
Requester ID Tag Tags
Steering
BE BE
Address [63:32]
Address [31:2] PH
100 x Prefix
100 x Prefix
T T E
Format Type R TC R Attr R H D P Attr AT Length
Header
Last DW First DW
Requester ID Tag BE BE
Address [31:2] PH
Optional Data
Optional ECRC
+0 +1 +2 +3
7 5 4 3 0 7 0 7 0 7 0
100 x (Defined by prefix contents)
RsvdP RsvdP
Max End-End
TLP Prefixes
End-End TLP
Prefix Supported
Extended Fmt
Field Supported
TPH Completer Supported
LTR Mechanism Supported
No RO-enabled PR-PR Passing
128-bit CAS Completer Supported
Fields related to
64-bit AtomicOp Completer Supported
TPH and prefixes. A
new set of registers 32-bit AtomicOp Completer Supported
is needed for AtomicOp Routing Supported
Requesters and ARI Forwarding Supported
that’s covered later. Completion Timeout Disable Supported
Completion Timeout Ranges Supported
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Local Prefix Rules 914
+0 +1 +2 +3
7 5 4 3 0 7 0 7 0 7 0
1 0 0 0 L [3:0] (Defined by prefix contents)
L [3:0] encodings:
0000 – MR-IOV (Multi-Root IO Virtualized environment):
Supports packet routing, error detection, and congestion
management (see MR-IOV spec for details).
1110 – Vendor-defined local prefix 0
1111 – Vendor-defined local prefix 1
Local prefixes are not protected by ECRC
If both Local and End-End prefixes are used, the
local ones must appear first. An error in this regard is
a Malformed TLP.
+0 +1 +2 +3
7 5 4 3 0 7 0 7 0 7 0
1 0 0 1 E [3:0] (Defined by prefix contents)
E [3:0] encodings:
0000 – Extended TPH
1110 – Vendor-defined end-end prefix 0
1111 – Vendor-defined end-end prefix 1
All end-end prefixes are protected by the optional ECRC
Max end-end prefixes in a TLP = 4 (max number
supported by a Function is reported in Device
Capabilities 2 register). Rx must check this and an error
will be a Malformed TLP.
End-End TLP Prefix Supported bit indicates whether a
Function can receive these prefixes
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
More End-to-End Prefix Rules 916
RsvdP
+0 +1 +2 +3
7 5 4 3 0 7 0 7 0 7 0
100 1 0000 ST [15:8] Reserved
Protected by LCRC
Protected by ECRC
1001 End-End Prefix
TLP Header
(Read Only)
38h
In Functions
that support TLP Prefix Log Register
TLP Prefixes
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
926
ID-Based Ordering
Write Buffer
Full
Memory Read
Posted Write
+0 +1 +2 +3
7 0 7 3 2 1 0 7 0 7 0
Byte 0 Format T T E
0 x 1
Type r TC R Attr R
H D P
Attr AT Length
Last DW First DW
Byte 1 Requester ID Tag BE BE
For endpoints
If communicating with just one other entity, it’s safe to
use IDO for all TLPs.
If working with more than one entity, some TLPs could
use IDO and others not, but race conditions can result
unless synchronization techniques are used.
For root ports, use of IDO doesn’t make sense:
They usually communicate with multiple entities
Some RC designs use a different requester ID and
completer ID for the same port, which could make
TLPs appear to be in different streams even when
they weren’t.
IDO is not permitted for configuration or IO requests,
and the IDO bit is reserved in those headers.
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
IDO Policy for Endpoints 303 931
RsvdP
31 20 19 16 15 0
Next Extended Version PCIe Extended Capability ID
Capability Offset (1h) (000Eh for ARI)
31 0 Offset
RsvdP RsvdP
Max End-End
TLP Prefixes
End-End TLP
Prefix Supported
Extended Fmt
Field Supported
TPH Completer Supported
LTR Mechanism Supported
No RO-enabled PR-PR Passing
128-bit CAS Completer Supported
64-bit AtomicOp Completer Supported
32-bit AtomicOp Completer Supported
AtomicOp Routing Supported
ARI Forwarding Supported
Completion Timeout Disable Supported
Completion Timeout Ranges Supported
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Device Control Register 2 940
RsvdP
Root Complex
ARI Device A
Switch NIC
Enabled for
ARI forwarding ARI Device B
3. Power Management:
Dynamic Power Allocation
31 20 19 16 15 0
Next Extended Version PCIe Extended Capability ID
Capability Offset (1h) (0016h for DPA)
31 0 Offset
010h
DPA Power Allocation Array
(Sized by number of substates)
Up to
02Ch
RsvdZ
31 24 23 16 15 14 13 12 11 10 9 8 7 5 4 0
Substate
Xlcy1 Xlcy0 PAS RsvdZ _Max
31 0
15 9 8 7 5 4 0
RsvdZ RsvdZ
15 5 4 0
RsvdP
31 0 Offset
010h
DPA Power Allocation Array
(Sized by number of substates)
Up to
02Ch
One 8-bit register for each substate gives the power for that substate,
which is multiplied by the Power Allocation Scale register to arrive at the
wattage used. All values in the array are RO.
+0 +1 +2 +3
7 0 7 0 7 0 7 0
Format Type TC T E Attr AT
0 0 1 1 0 1 0 0
r 0 0 0
reserved D P 00 00 Length (reserved)
Message Code
Requester ID Tag 0001 0000
Reserved
No-Snoop Latency Snoop Latency
15 14 13 12 10 9 0
Latency Latency
Reserved
Scale Value
Requirement Scale:
000 – x 1 ns 001 – x 32 ns
010 – x 1K ns 011 – x 32K ns
100 – x 1M ns 101 – x 32M ns
Moki Anji (moki@ synopsys.com) 110-111 – not permitted
Do Not Distribute MindShare.com © 2013
Rules for Multi-Function Devices (MFDs) 787 959
Conglomerate
value
Conglomerate 1150 ns
value
1200 ns
Conglomerate 1150 ns
value
Conglomerate 1200 ns
value
5000 ns
Conglomerate 1150 ns
value
Conglomerate 650 ns
1200 ns
value
700 ns
Conglomerate 650 ns
value
Conglomerate 1200
700 ns
1150
value
System Events
Endpoint A
Events
Endpoint B
Events
Endpoint C
Events
Time
System Events
Endpoint A
Events
Endpoint B
Events
Endpoint C
Events
Time
LTR could also be used to inform system software of acceptable latency for
Moki Anji the synopsys.com)
(moki@ endpoints between accesses, suggesting a limit on this idle time.
Do Not Distribute MindShare.com © 2013
OBFF offers a Hint 778 971
Root Complex
WAKE#
Endpoint
Switch Endpoint
OBFF
Message
Endpoint
WAKE# Switch
Endpoint Endpoint
Notes:
- ECN points out that there is one negative edge for signaling OBFF, and 2 negative
edges for signaling CPU Active
- Min pulse width = 300ns, time between falling edges = 700ns min to 1000ns max
- Moki
If pattern
Anji is unrecognized,
(moki@ default is CPU Active
synopsys.com)
Do Not Distribute MindShare.com © 2013
WAKE# Rules 780 974
RsvdP RsvdP
Max End-End
TLP Prefixes
End-End TLP
Prefix Supported
Extended Fmt
Field Supported
TPH Completer Supported
LTR Mechanism Supported
No RO-enabled PR-PR Passing
128-bit CAS Completer Supported
OBFF Support
64-bit AtomicOp Completer Supported
00 – Not supported 32-bit AtomicOp Completer Supported
01 – Message only AtomicOp Routing Supported
ARI Forwarding Supported
10 – WAKE# only
Completion Timeout Disable Supported
11 – Both Completion Timeout Ranges Supported
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
OBFF Enable 783 980
RsvdP
OBFF Enable
00 – Disabled
01 – Enabled with Message signaling Variation A
10 – Enabled with Message signaling Variation B
Moki Anji (moki@ synopsys.com)
11 – Enabled using WAKE# signaling
Do Not Distribute MindShare.com © 2013
981
ASPM Option
4. Software Model:
Atomic Operations
Egress blocked
Software can set Atomic Egress Blocking bit in individual
ports of a routing element to block AtomicOps from being
forwarded to devices that don’t recognize them and would
otherwise generate a Fatal Error.
Send Completion with UR status, but don’t set Unsupported
Request status bit
For the Port, this defaults to Advisory Non-fatal case. A new
AER status bit was added to make this case visible to
system software (next slide).
Completer internal uncorrectable error: completion
with CA status
Requests with type or operand size that isn’t
supported: completion with UR status
Length doesn’t match an architected value:
Uncorrectable Fatal (Malformed)
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
AER Uncorrectable Status Register 691 991
5. Configuration:
Internal Error Reporting
First Error
RsvdP Pointer
Resizable BARs
RsvdP RsvdP
2 = 4MB
BAR Size (RW)
…
19 = 512GB Number of Resizable
BARs (RO)
New version reduces the entries and simplifies them by not mentioning
specific requests. Both make it easier for new devices to be compliant.
Read a) No
Non-Posted
(Row B)
NPR with a) No
data b) Y/N Y/N Y/N Y/N
(Row C)
Completion a) No a) Y/N
(Row D) b) Y/N Yes Yes b) No
001Dh
Previous TLPs:
Posted requests or completions: sent or silently dropped.
For NP request, if RP extensions supported and DPC
triggered and tracking that request, RP can create a
Completion, with status based on Completion Control bit:
If set, UR status, If cleared, CA status.
Which requests are tracked is design specific, but spec
strongly recommends that those generated by host CPU
instructions, or by Atomic Ops, should be tracked.
Otherwise, NP requests may receive Completion Timeouts,
and software must account for this.
Subsequent TLPs:
Posted requests or completions must be silently discarded
NP requests will generate a Completion using Completer
ID of the Downstream Port, with status based on DPC
Completion Control bit:
Moki Anji (moki@ synopsys.com)
Do Not Distribute If set, UR status, If cleared, CA status
MindShare.com © 2013
Root Port Function-Level Containment (FLC) 1023
DPC Triggered
2 ERR_NONFATAL
DPC Triggered
1 ERR_FATAL
ERR_NONFATAL
or ERR_FATAL
DPC prevents
forwarding error
messages.
RP PIO Log
Registers
If the associated bit for an error is set when the RP PIO error
occurs, a synchronous processor exception is generated,
regardless of whether the error was masked or not.
L1.0
L1.1 L1.2
“Snooze” “Off”
L1.0
L1.2 L1.2
Exit Entry
L1.2
Idle L1.2
Moki Anji (moki@ synopsys.com) Substates
Do Not Distribute MindShare.com © 2013
L1.2.Entry 1056
Both Ports:
May power off active logic and cease to maintain
CMV
May have PHY power removed
Must monitor the state of CLKREQ#
After 4 µs in L1.2, may exit by asserting
CLKREQ#
Downstream: assert until Link exits Recovery
Upstream: assert on entry to Recovery and keep active
until next state that allows de-asserting it, like L1
Both Ports:
Must power up any circuits required for L1.0, including those
needed to maintain CMV
Must not change the state of CLKREQ#
Refclk must be turned on after TPOWER_ON (L1 PM Substates
Control 2 register), and before the time advertised by LTR.
Goal: ensure that we’re never actively driving into an
unpowered component.
Next state is L1.0
Common mode can be established passively during L1.0
and actively during Recovery. To ensure it has been
established, Downstream Port must wait for TCOMMONMODE
(L1 PM Substates Control 1 register) after it has begun
sending and receiving TS1s before sending TS2s.
RefClk A
PLL
CLKREQ#
A Clock
B Generator
CLKREQ#
PLL RefClk B
A Clock
CLKREQB#
B Generator
CLKREQC# C
001Eh
15:8 Port Common Mode Restore Time – Time (in µs) HwInit/
needed for this Port to re-establish common mode. RsvdP
Required if PCI-PM L1.2 or ASPM L1.2 is supported,
otherwise reserved.
NOTE: Spec warns that deeper power savings can result in longer recovery
latencies that may potentially cause unintentional conflicts like LTSSM timeouts.
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
L1 Substates Capability Register – part 2 1065
15:8 Common Mode Restore Time – Time (in µs) that must RW/
be used by the Downstream Port for timing the re- RsvdP
establishment of common mode. This field can only be
changed when both ASPM L1.2 Enable and PCI-PM
L1.2 Enable are cleared – otherwise the resulting
behavior will be undefined. Required for Downstream
Ports if PCI-PM L1.2 or ASPM L1.2 is supported,
Moki Anji (moki@ synopsys.com)
otherwise reserved. Reserved for Upstream Ports.
Do Not Distribute MindShare.com © 2013
L1 Substates Control 1 Register – part 2 1067
7:3 T_Power_On Value– Combined with Scale field above, this RW/
defines the time (in µs) that the Port must wait in L1.2 Exit, after RsvdP
sampling CLKREQ# asserted, before actively driving the
interface. Default value is 00101b. Required for all Ports that
support L1.2, otherwise reserved. Can only be changed when
both ASPM L1.2 Enable and PCI-PM L1.2 Enable are cleared –
otherwise the behavior will be undefined.
31:8 Reserved RsvdP
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
3: Lightweight Notification (LN)
4 DW
Header
2 DW
Data
Payload
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
LN Message Header Rules 1076
Cacheline address:
64-bit address of a cacheline that has been modified or
evicted (same format is used for 32-bit address)
For 128-byte cachelines, bit 6 of address must be clear (LNR
may not check this)
NR (Notification Reason) – why Message was sent:
00b – Cacheline update (line was changed)
01b – Single cacheline was evicted (LNC will no longer track it)
10b – All cachelines registered to this Function were evicted
(Cacheline Address is reserved in that case).
11b – Reserved
LN Read
LN
Moki Anji(moki@ synopsys.com)
Completion
Do Not Distribute MindShare.com © 2013
LNC Details 1079
001Ch
001Bh
12:8 Max PASID Width – indicates the width of the PASID field RO
supported by the Endpoint (between 0 and 20 bits). If a
Request arrives with PASID wider than supported, optionally
send UR. If a completion does so, optionally report
Unexpected Completion.
+0 +1 +2 +3
7 5 4 3 0 7 0 7 0 7 0
Prefixes
100 x Prefix
100 x Prefix
T T E
Format Type R TC R Attr R H D P Attr AT Length
Header
Last DW First DW
Requester ID Tag BE BE
Address [31:2] PH
Optional Data
Optional ECRC
+0 +1 +2 +3
7 5 4 3 0 7 0 7 0 7 0
100 x (Defined by prefix contents)
RsvdP RsvdP
Max End-End
TLP Prefixes
End-End TLP
Prefix Supported
Extended Fmt
Field Supported
TPH Completer Supported
LTR Mechanism Supported
No RO-enabled PR-PR Passing
128-bit CAS Completer Supported
Fields related to
64-bit AtomicOp Completer Supported
TPH and prefixes. A
new set of registers 32-bit AtomicOp Completer Supported
is needed for AtomicOp Routing Supported
Requesters and ARI Forwarding Supported
that’s covered later. Completion Timeout Disable Supported
Completion Timeout Ranges Supported
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Local Prefix Rules 1097
+0 +1 +2 +3
7 5 4 3 0 7 0 7 0 7 0
1 0 0 0 L [3:0] (Defined by prefix contents)
L [3:0] encodings:
0000 – MR-IOV (Multi-Root IO Virtualized environment):
Supports packet routing, error detection, and congestion
management (see MR-IOV spec for details).
1110 – Vendor-defined local prefix 0
1111 – Vendor-defined local prefix 1
+0 +1 +2 +3
7 5 4 3 0 7 0 7 0 7 0
1 0 0 1 E [3:0] (Defined by prefix contents)
E [3:0] encodings:
0000 – Extended TPH
1110 – Vendor-defined end-end prefix 0
1111 – Vendor-defined end-end prefix 1
All end-end prefixes are protected by the optional ECRC
Max end-end prefixes in a TLP = 4 (max number
reported in Device Capabilities 2 register).
RsvdP
Protected by LCRC
Protected by ECRC
1001 End-End Prefix
TLP Header
+0 +1 +2 +3
7 5 4 3 0 7 0 7 0 7 0
100 1 0000 ST [15:8] Reserved
Bits Description
22 Execute Requested
21:20 Reserved
Bits Description
PTM Hierarchy
PTM Hierarchy
t1
The points t1, t2, etc., are
timestamps captured locally by t2
each Port as they send and 1st PTM Dialog
receive PTM Messages. t3
t4
Components store timestamps
from the 1st dialog to use with
the 2nd one, and so on for later
dialogs. Once a previous t1’
dialog establishes the history,
t2'
the PTM Master Time can be 2nd PTM Dialog
calculated. t3’
Switch Upstream
Port uses
PTM dialog to
fetch PTM
Master Time
t2
2
First PTM Dialog Sequence
t3 1. PTM enabled in Endpoint
3 2. PTM Request sent upstream at recorded
t1 t4 local time t1.
3. Switch Port returns PTM Response w/o data
(at local time t4). Endpoint waits for a timeout
and repeats the request.
Moki Anji
1
(moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
PTM Requester Operation 1125
PTM Enabled
Invalid PTM Local Time
Context Invalidation
Event
Trigger
Event
PTM PTM
Response ResponseD
Issue PTM Valid PTM
Wait >= 1µs
Request Context
Trigger
Event
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Second PTM Dialog 1126
t2’
2
Second PTM Dialog Sequence
t3’ 1. New PTM Request sent upstream at time t1’.
2. Switch Port returns PTM Response w/ data
3
t1’ t4’ of t2’ and value of (t3-t2). The t2’ value
includes awareness of the PTM Master Time.
3. Endpoint uses data to calculate local value of
PTM Master Time by adjusting for its own
Moki Anji (moki@ synopsys.com) Link delay.
1
Do Not Distribute MindShare.com © 2013
Timing Values 1127
001Fh
TLP
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 TLP LCRC 7 6 5 4 3 2 1 0
PMUX Packet
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 Data LCRC 7 6 5 4 3 2 1 0
TLP
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 TLP LCRC
Symbol 0 Symbol 1 Symbol 2 Symbol 3
STP
Token
PMUX Packet
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 Data LCRC
Symbol 0 Symbol 1 Symbol 2 Symbol 3
Modified
STP Token
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
PMUX Extended Registers 1143
ID: 001Ah
Non-virtual Guest
Guest = OS + applications.
App 1 App 2
System OS perceives itself as sole
(Single OS) OS owner of the system, and that
Processor still needs to be true in a
Complex
PCIe Root virtualized system so it won’t
need to be modified.
PCIe Switch
Hypervisor allows these OS’s to
work in a virtualized system by
intercepting accesses from
Virtualized Guest 1 Guest 2 Guest 3 Guests. It prevents conflicts by
System
(Multi-OS)
Hypervisor translating addresses, blocking
Processor
Complex
sensitive accesses until
PCIe Root appropriate times, etc.
PCIe Switch
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Motivation for Virtualization 1154
Hypervisor Hypervisor
Processor Processor
Complex Complex
PCIe Root PCIe Root
Hardware
Virtual Function N Implementation
Physical Resources N
PCIe
Endpoint Root Complex
Root Root
Port Port
PCIe
Endpoint Switch
DMA transaction
with virtual
address.
Translation Memory
Agent Controller
PCIe ATC
Endpoint Root Complex
Root Root
Port Port Device knows what addresses it will use
and can predict future activity better than
the TA. For example, isochronous
transfers would need to have all the
PCIe ATC
Endpoint Switch addresses ready before starting.
DMA transaction
Device ATC can be an with translated
application-specific design address.
Moki Anji (moki@ synopsys.com) PCIe ATC PCIe ATC
Do Not Distribute Endpoint Endpoint
MindShare.com © 2013
Gathering Translated Addresses 1161
Translation
Agent Memory
-Address Translation Controller
- Protection Table
Translation
Completion
PCIe ATC
Endpoint Root Complex
Root Root
Port Port
Translation
Different devices can Request
share address space or PCIe ATC
Devices request and
have dedicated spaces Endpoint Switch store translated
addresses in their ATC
whenever they decide
doing so would be
beneficial
Moki Anji (moki@ synopsys.com) PCIe ATC PCIe ATC
Do Not Distribute Endpoint Endpoint
MindShare.com © 2013
Address Type Field 1162
+0 +1 +2 +3
7 0 7 0 7 0 7 0
Fmt Type T E
r x 1 0 0 0 0 0 r TC reserved D P
Attr AT Length
Requester ID Tag Last DW BE 1st DW BE
Address 63:32
Address 31:02 r
CPU
Root Complex
Within the
Bus range?
CPU
Root Complex
Request Memory
Validation Logic
Redirected
path
Translated
address Switch PCIe Bridge
overrides Normal
Redirection path to
PCI or PCI-X
PCIe PCIe
Endpoint Endpoint PCI/PCI-X
CPU
Root Complex
Request Memory
Validation Logic
Switch
PCI/PCI-X
PCIe PCIe
Moki Anji (moki@Endpoint
synopsys.com)
Endpoint
Do Not Distribute MindShare.com © 2013
Egress Control 1169
CPU
Root Complex
This is the only ACS
feature described as Memory
optional for
downstream ports
4 3 2 1 0
Egress Control
Upstream Forwarding
ACS Control Register P2P Completion Redirect
2 1
P2P Request Redirect
RsvdP T E U C R B V
Translation Blocking
Source Validation
CPU
Root Complex
Egress Vector Control
Bit: 4 3 2 1 0 Memory
Values: 0 0 0 0 1
4 3 2 1 0
Blocking peer-to-peer
between functions can The use of ARI would
prevent “data leakage”, permit a device to have a
or unintended transfer, large number of functions,
especially useful for virtual
accidental or malicious, Function Function functions.
between unrelated
functions. 5 0
Multi-Function Device
PC motherboard design
Supports I/O & graphics
x16
x8
x4
x1
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Connector on System Board 1177
Pull-up
Power Rails
+3.3V
+12V
+3.3Vaux
Power Dissipation
Standard Height Cards
x1 - 10W desktop (half length), 25W server (7” – full length,
limited to 10W until configured as a high-power device)
x4/x8 - 25W
x16 - 25W server, 75W graphics application (limited to 25W
until configured as a high-power device)
Low Profile Cards (all are limited to half length)
x1 - 10W
x4/x8 - 25W
x16 - 25W
Backplane
ExpressModule
Riser Card
PCI Express Mini Card
ExpressCard (PCMCIA group)
External Cable
3U and 6U Form
RTM
Factors
PCI PCIe
Device
Bridge High-speed connector
for backplane
High-speed connector
for mezzanine slot
PCIe
Endpoint
Native
File: address_map_lab.arbsys
BAR – NA
P-MMIO – 1_FB80_0000h –
1_FBAF_FFFFh 0:28:0
BAR 0/1 – 1_FBA0_0000h –
Bus 2 1_FBA1_FFFFh
P-MMIO – 1_FB80_0000h –
1_FBAF_FFFFh
2:0:0
BAR – NA
P-MMIO – 1_FB80_0000h –
Bus 3
1_FB8F_FFFFh
File: error_lab.arbsys
Part 1: Software received an interrupt from PCIe Root Port 0:28:6 that
was generated because of a received error message. Answer the
following questions:
1. What type of error message triggered the interrupt (ERR_FATAL, ERR_NONFATAL,
ERR_CORR)?
ERR_NONFATAL
2. From which BDF did the error message originate?
12:0:0 or (C:0:0 in hex)
3. What was the specific error condition that caused the first error message?
Completer Abort
4. Were there any other errors detected on that BDF? If so, what are they?
Yes, Unsupported Request and Bad TLP
5. Is any other information about the first error provided? If so, provide it (decoded if
possible).
Header Log: Decoded:
0000_0080h – 1st Dword Memory Read, 3DW header, TC=0, TD=0, EP=0, Attr=0,
0A00_0CFFh – 2nd Dword AT=0, Length=80h (128 DWs or 512 bytes), ReqID=10:0:0
FB80_1000h – 3rd Dword (A:0:0 hex), Tag=Ch, ByteEnables=FFh, Addr=FB80_1000h
0000_0000h – 4th Dword
Bonus Question: What was the vector of the interrupt generated to software because of
the error?
Moki Anji (moki@
Vector A9h synopsys.com)
Do Not Distribute MindShare.com © 2013
Arbor Exercise Answers: Error Debugging 1198
File: error_lab.arbsys
Part 2: Software received an interrupt from PCIe Root Port 0:28:0 that
was generated because of a received error message. Answer the
following questions:
1. What type of error message triggered the interrupt (ERR_FATAL, ERR_NONFATAL,
ERR_CORR)?
ERR_FATAL
2. From which BDF did the error message originate?
5:0:0
3. What was the specific error condition that caused the first error message?
Malformed TLP (be careful with hex vs decimal)
4. Were there any other errors detected on that BDF? If so, what are they?
Yes, Poisoned TLP and Receiver Error
5. Is any other information about the first error provided? If so, provide it (decoded if
possible) and try and determine why this was an error.
Header Log: Decoded:
6000_8080h – 1st Dword Memory Write, 4DW header, TC=0, TD=1, EP=0, Attr=0,
0000_04FFh – 2nd Dword AT=0, Length=80h (128 DWs or 512 bytes), ReqID=0:0:0,
0000_0001h – 3rd Dword Tag=4, ByteEnables=FFh, Addr=1_FB80_1000h
FB80_1000h – 4th Dword (The length for this write is 512 bytes, but the Max Payload
Size enabled for this BDF is 256 bytes, and that is why this
request was treated as a Malformed TLP.)
Moki Anji (moki@ synopsys.com)
Do Not Distribute MindShare.com © 2013
Arbor Exercise Answers: Interrupt Investigation 1199
File: interrupt_lab.arbsys
File: interrupt_lab.arbsys
5. For 0:28:6, what are the specific address and data values allowed in the
interrupts (memory writes) that can be signaled by the Root Port? Bonus
question: On this x86-based system, what are interrupt vectors of these
interrupts (assuming interrupt remapping is not enabled in the system)?
FEE0_F00Ch : 49A8h (bonus: vector A8h)
FEE0_F00Ch : 49A9h (bonus: vector A9h)
6. What methods of interrupt generation are supported by the device attached
to Root Port 0:28:2, and which mechanism is enabled?
Legacy INTx, MSI and MSI-X are supported; MSI-X is enabled
7. For the device attached to Root Port 0:28:2, what are the specific address
and data values allowed in the interrupts (memory writes) that can be
signaled by the device? Bonus question: On this x86-based system, what
are interrupt vectors of these interrupts (assuming interrupt remapping is
not enabled in the system)?
FEE0_F00Ch : 49A0h (bonus: vector A0h)
FEE0_C00Ch : 4990h (bonus: vector 90h)
FEE0_C00Ch : 4980h (bonus: vector 80h)
FEE0_C00Ch : 4970h (bonus: vector 70h)
FEE0_0000h : 4960h (bonus: vector 60h)
FEE0_300Ch : 4982h (bonus: vector 82h)
FEE0_300Ch : 4972h (bonus: vector 72h)
Moki Anji (moki@ synopsys.com)
FEE0_300Ch : 4962h (bonus: vector 62h)
Do Not Distribute MindShare.com © 2013
Arbor Exercise Answers: Interrupt Investigation 1201
File: pcie_lab2.arbsys
8. Are any of the interrupts of BDF 9:0:0 masked from being generated? If so,
have any of those masked events occurred at the BDF? Which one(s)?
Yes, 4982h and 4972h are masked; the event for 4972h has occurred as
indicated by the Pending Bit Array
9. Are any of the interrupts of BDF 8:0:0 masked from being generated? If so,
have any of those masked events occurred at the BDF?
Yes, all interrupts are masked because the Function Mask bit in the MSI-X
capability structure is set. None of the pending bits are set.