PIPE¶
Definition for the PIPE (PHY Interface For the PCI Express* and USB 3.0 Architectures) interface used to abstract away transceiver implementation details.
This currently implements Version 3.0 of the PIPE specification, which can be found archived here: https://web.archive.org/web/20240118024533/https://www.intel.in/content/dam/doc/white-paper/usb3-phy-interface-pci-express-paper.pdf
- class bakeneko.interface.pipe.PIPEInterface(width: Literal[8, 16, 32] = 8) None¶
Torii PHY Interface for the PCI Express and USB SuperSpeed Architectures (PIPE) definition.
This specific interface attempts to be fully compliant with Version 3.0 of the specification.
Signal direction is from the perspective of the PHY, i.e. a signal described as an
outputis driven by the PHY and received by the MAC.Note
This is not a “true” PIPE interface in the full definition of the spec, as we don’t handle all of the super gritty details of the PHY implementation, or link aggregation, or platform specific implementation details here. All of that is left for the specializations, this only provides the “electrical” internal interface that is PIPE compatible for upstream consumers to not care about the guts of PHY implementation.
- Parameters:
width (Literal[8, 16, 32]) – Interface tx and rx bus width in bits, which is
width // 8in symbol width. (default: 8 bits / 1 symbol) (default:8)- Attributes:
width_bits (int) – The PIPE Interface data path width in bits.
width_symbol’ (int) – The PIPE interface data path width in symbols (
width_bits // 8)
- rstSignal, in
Active-high asynchronous transmitter and receiver reset. Note: This signal is Active-low in the PIPE Specification.
- clkSignal, in
PHY transmitter / receiver reference clock.
- pclkSignal, out
Parallel interface data clock. All data movement over the interface is synchronized to the positive edge of this clock unless otherwise noted. The clock frequency depends on the combination of
rateandphy_modeand may be up to 500MHz
tx_data : Signal(width_bits), in rx_data : Signal(width_bits), out
Interface data bus, for the 16-bit wide bus, bits
7:0hold the first symbol and bits15:8hold the second symbol. In 32-bit mode, bits23:16are the third symbol and31:24are the fourth symbol. Transmission is in symbol-order (1, 2, 3, 4).tx_datak : Signal(width_symbol), in rx_datak : Signal(width_symbol), out
The Data/Control signaling for the symbol in the given position on the data bus. For multi-symbol transmit busses, bit
0always is the lowest symbol, andnis always the upper symbol.- powerdownSignal(2), in
Transceiver power state.
- rateSignal(LinkSpeed), in
Set the link signaling rate.
- tx_loopbackSignal, in
Instruct the PHY transceiver to enable loopback mode or begin rx detection.
- tx_elec_idleSignal, in
Section 6.20
- tx_complianceSignal, in
Set the running disparity to negative. Used when transmitting the PCIe compliance pattern.
- tx_deemphSignal(2), in
Transmitter deemphasis level selection; 0: -6dB, 1: -3.5dB, 2: 0dB.
- tx_marginSignal(3), in
Transmitter voltage level selection.
Value
Description
0Nominal Range
1800-1200mV Full Swing 400-700mV Half Swing
2Vendor Defined
3Vendor Defined
4200-400mV Full Swing 100-200mV Half Swing
- tx_swingSignal, in
Transmitter voltage swing level selection.
- rx_polaritySignal, in
Set the PHY receiver to have RX+ and RX-‘s polarity inverted.
phy_status : Signal, out
- data_bus_widthConst(2), out
The width of the data bus the PIPE interface is configured for;
0b00for 32-bit,0b01for 16-bit, and0b10for 8-bit.- rx_validSignal, out
Indicates symbol lock and valid data on
rx_dataandrx_datak.- rx_elec_idleSignal, out
Indicates detection on the receiver of aan electrical idle state.
- rx_statusSignal(3), out
Receiver status and error codes.
- Raises:
PIPEInterfaceError – If the provided width is not supported by this PIPE interface.