ofb_vck190: Architecture and Design Description¶
1. Block diagram¶
ofb_cips_wrapper (block design ofb_cips: versal_cips, SmartConnect mib_axi)
pl0_clk (100 MHz) --> MgmtClk --> olo_ft_reset_gen (pl0_resetn) ---> PorRst
pl1_clk (150 MHz) --> UserClk
M_AXI_FPD (0xA400_0000) --+
S_AXI_POLL <-- p_poll ----+--> mib_axi --> M_AXI_MIB --> AXI4-Lite of ofb_core
|
GtRefClk_P/N --> IBUFDS_GTE5 --> ofb_pa_gty (quad 200) <--> Qsfp_Tx/Rx (lanes 0..3)
| LaneClk, LaneRst
v
ofb_core (8 VCs, 4 lanes) CoreClk = LaneClk = 156.25 MHz,
M_Vc --> S_Vc (echo) UserClk = 150 MHz, MgmtClk = 100 MHz
M_Bc --> S_Bc (echo)
p_poll (DL_STATUS) --> Led(3)
2. Clocks and resets¶
| Clock | Source | Use |
|---|---|---|
MgmtClk |
CIPS pl0_ref_clk, 100 MHz (clk_pl_0) |
MIB, free-running clock of the transceiver reset controller, power-on reset (with the fabric reset pl0_resetn), LED poller |
UserClk |
CIPS pl1_ref_clk, 150 MHz (clk_pl_1) |
User side of the core (VC and broadcast ports, echo) |
LaneClk |
ofb_pa_gty (transmit user clock, 156.25 MHz) |
CoreClk and LaneClk of the core |
CoreClk is the lane clock, so that it is never slower than LaneClk (CORE-CK-01). UserClk is independent of
the link and exercises the user clock crossings of the core; at 150 MHz a VC port of 128 bits carries 19.2 Gbit/s,
more than the 18.7 Gbit/s that four lanes deliver (94 % of the payload capacity, user guide section 7). In
simulation (IncludeCips_g = false) clock models of the same frequencies replace the CIPS.
The core reset is a register of MgmtClk: the power-on reset or LaneRst (transmitters not ready, a register of
the lane clock, synchronised with olo_ft_sync), so that no logic sits in front of the reset synchronisers of the
core. The echo needs no buffering: the output
port of every VC (M_Vc) feeds the input port of the same VC (S_Vc), back-pressure included. The serial loopback
enables of the core drive the adapter, and the comma alignment of the adapter (Stat_Aligned) is the bit
synchronisation status of the core (Phy_BitSync, LANE_STATUS bit 6). The PRBS test signals of the core (Phy_Prbs*)
connect to the PRBS generator and checker of the transceiver channels.
3. Register access¶
The MIB has one AXI4-Lite port and two masters. In the block design ofb_cips a SmartConnect (mib_axi, clock
pl0, reset from a proc_sys_reset of pl0_resetn) takes the master port M_AXI_FPD of the CIPS (32 bits) and the
LED poller of the top level (S_AXI_POLL), arbitrates between them and drives the MIB (M_AXI_MIB, AXI4-Lite,
32 bits). Address map:
| Master | MIB registers |
|---|---|
| CIPS M_AXI_FPD | 0xA400_0000 to 0xA400_0FFF (register offset = address - 0xA400_0000) |
| LED poller | 0x000 to 0xFFF |
M_AXI_MIB carries 32 address bits; the top level uses bits 11:0. Over JTAG, XSDB reads and writes the registers
through the debug access port of the device without software on the board (hardware test procedure, section 7). In
simulation (IncludeCips_g = false) the poller drives the MIB port directly.
4. Constraints (constr/ofb_vck190.xdc)¶
- Transceiver reference clock on AD11 / AD10 (MGTREFCLK1_200); the clocks of the CIPS are created by its IP
constraints (
clk_pl_0,clk_pl_1). - Quad location GTY_QUAD_X1Y0 (quad 200) and the serial pins of channels 0 to 3.
- LEDs on H34, J33, K36, L35 (LVCMOS18), false path.
- Crossings between
clk_pl_0,clk_pl_1and the lane clock:set_max_delay -datapath_onlywith the period of the faster clock of each pair, as required by Open Logic; the scoped constraints of the Open Logic base entities are added for implementation. The scoped constraint ofolo_intf_syncis not loaded forolo_ft_sync: it constrains device pins, and the design usesolo_ft_synconly for internal asynchronous signals (transceiver status, far-end loopback, lane reset), whose crossings the clock pair constraints cover.
5. Build (tcl/build.tcl)¶
Every Versal design needs the CIPS IP: its platform management controller loads the device image. The script
creates the block design ofb_cips with one versal_cips (JTAG boot) whose PMC clock generator drives two clocks of
the programmable logic (pl0_ref_clk 100 MHz, pl1_ref_clk 150 MHz) and the fabric reset pl0_resetn, all three
external ports of the block design, and whose master port M_AXI_FPD reaches the MIB (section 3); it generates the
wrapper and sets IncludeCips_g = true, so that the top instantiates it. The simulations keep the default false and
use clock models instead.
vivado -mode batch -source hdl/ofb_vck190/tcl/build.tcl [-tclargs project | synth | impl | all] creates the
project in vivado_out/ofb_vck190 or in the directory of the environment variable OFB_VIVADO_OUT (on Windows at
most about 40 characters, see the hardware test procedure) (Open Logic in the library olo, OpenFibre in the default
library, VHDL-2008, all files of one library with one add_files call),
creates the transceiver wizard instance with hdl/ofb_pa_gty/tcl/ofb_gtw.tcl, adds the constraints and runs the
requested steps up to the device image.