The image builder will currently emit a warning if a NoC-block has
unconnected ports. This requires specifying `-W` to continue building,
which is the intended behaviour.
However, there are cases where there are legitimate reasons to not
connect a block, e.g., in the X310, where the radio block has 2x2 ports,
but we only connect 2 RX ports, and 1 TX port.
This adds a way to declare a "null" connection, which makes it explicit
in the image core YAML that a connection was deliberately omitted. Such
connections are created by connecting to a port called "_none_", e.g.:
```
connections:
- { srcblk: _device_, srcport: _none_, dstblk: radio0, dstport: in_1 }
```
The block name is irrelevant, but the schema requires providing a block
name.
This commit also amends the x3xx_radio_base.yml to avoid warnings when
building X3x0 bitfiles.
Original-commit: 6758966a5ac127a396e8b3b39f96aa484098e50f
116 lines
4.7 KiB
YAML
116 lines
4.7 KiB
YAML
# General parameters
|
|
# -----------------------------------------
|
|
schema: rfnoc_imagebuilder_args # Identifier for the schema used to validate this file
|
|
copyright: >- # Copyright information used in file headers
|
|
Copyright 2023 Ettus Research, a National Instruments Brand
|
|
license: >- # License information used in file headers
|
|
SPDX-License-Identifier: LGPL-3.0-or-later
|
|
version: '1.0' # File version
|
|
chdr_width: 64 # Bit width of the CHDR bus for this image
|
|
|
|
# A list of all stream endpoints in design
|
|
# ----------------------------------------
|
|
stream_endpoints:
|
|
ep0: # Stream endpoint name
|
|
ctrl: True # Endpoint passes control traffic
|
|
data: True # Endpoint passes data traffic
|
|
buff_size: 32768 # Ingress buffer size for data
|
|
ep1:
|
|
ctrl: False
|
|
data: True
|
|
buff_size: 0
|
|
ep2:
|
|
ctrl: False
|
|
data: True
|
|
buff_size: 32768
|
|
ep3:
|
|
ctrl: False
|
|
data: True
|
|
buff_size: 0
|
|
|
|
# A list of all NoC blocks in design
|
|
# ----------------------------------
|
|
noc_blocks:
|
|
duc0: # NoC block name
|
|
block_desc: 'duc.yml' # Block device descriptor file
|
|
parameters:
|
|
NUM_PORTS: 1
|
|
ddc0:
|
|
block_desc: 'ddc.yml'
|
|
parameters:
|
|
NUM_PORTS: 2
|
|
radio0:
|
|
block_desc: 'radio.yml'
|
|
parameters:
|
|
NUM_PORTS: 2
|
|
duc1:
|
|
block_desc: 'duc.yml'
|
|
parameters:
|
|
NUM_PORTS: 1
|
|
ddc1:
|
|
block_desc: 'ddc.yml'
|
|
parameters:
|
|
NUM_PORTS: 2
|
|
radio1:
|
|
block_desc: 'radio.yml'
|
|
parameters:
|
|
NUM_PORTS: 2
|
|
|
|
# A list of all static connections in design
|
|
# ------------------------------------------
|
|
# Format: A list of connection maps (list of key-value pairs) with the following keys
|
|
# - srcblk = Source block to connect
|
|
# - srcport = Port on the source block to connect
|
|
# - dstblk = Destination block to connect
|
|
# - dstport = Port on the destination block to connect
|
|
connections:
|
|
# RF A TX
|
|
- { srcblk: ep0, srcport: out0, dstblk: duc0, dstport: in_0 }
|
|
- { srcblk: duc0, srcport: out_0, dstblk: radio0, dstport: in_0 }
|
|
# This is a fake connection: It signals to the image builder that we are
|
|
# deliberately not connecting this port, so it doesn't have to print a warning
|
|
# about it.
|
|
- { srcblk: _device_, srcport: _none_, dstblk: radio0, dstport: in_1 }
|
|
# RF A RX
|
|
- { srcblk: radio0, srcport: out_0, dstblk: ddc0, dstport: in_0 }
|
|
- { srcblk: ddc0, srcport: out_0, dstblk: ep0, dstport: in0 }
|
|
# RF A RX2
|
|
- { srcblk: radio0, srcport: out_1, dstblk: ddc0, dstport: in_1 }
|
|
- { srcblk: ddc0, srcport: out_1, dstblk: ep1, dstport: in0 }
|
|
#
|
|
# RF B TX
|
|
- { srcblk: ep2, srcport: out0, dstblk: duc1, dstport: in_0 }
|
|
- { srcblk: duc1, srcport: out_0, dstblk: radio1, dstport: in_0 }
|
|
# See comment above about fake connections.
|
|
- { srcblk: _device_, srcport: _none_, dstblk: radio1, dstport: in_1 }
|
|
# RF B RX
|
|
- { srcblk: radio1, srcport: out_0, dstblk: ddc1, dstport: in_0 }
|
|
- { srcblk: ddc1, srcport: out_0, dstblk: ep2, dstport: in0 }
|
|
# RF B RX2
|
|
- { srcblk: radio1, srcport: out_1, dstblk: ddc1, dstport: in_1 }
|
|
- { srcblk: ddc1, srcport: out_1, dstblk: ep3, dstport: in0 }
|
|
#
|
|
# BSP Connections
|
|
- { srcblk: radio0, srcport: ctrlport, dstblk: _device_, dstport: ctrlport_radio0 }
|
|
- { srcblk: radio1, srcport: ctrlport, dstblk: _device_, dstport: ctrlport_radio1 }
|
|
- { srcblk: _device_, srcport: radio0, dstblk: radio0, dstport: radio }
|
|
- { srcblk: _device_, srcport: radio1, dstblk: radio1, dstport: radio }
|
|
- { srcblk: _device_, srcport: time, dstblk: radio0, dstport: time }
|
|
- { srcblk: _device_, srcport: time, dstblk: radio1, dstport: time }
|
|
|
|
# A list of all clock domain connections in design
|
|
# ------------------------------------------------
|
|
# Format: A list of connection maps (list of key-value pairs) with the following keys
|
|
# - srcblk = Source block to connect (Always "_device"_)
|
|
# - srcport = Clock domain on the source block to connect
|
|
# - dstblk = Destination block to connect
|
|
# - dstport = Clock domain on the destination block to connect
|
|
clk_domains:
|
|
- { srcblk: _device_, srcport: radio, dstblk: radio0, dstport: radio }
|
|
- { srcblk: _device_, srcport: ce, dstblk: ddc0, dstport: ce }
|
|
- { srcblk: _device_, srcport: ce, dstblk: duc0, dstport: ce }
|
|
- { srcblk: _device_, srcport: radio, dstblk: radio1, dstport: radio }
|
|
- { srcblk: _device_, srcport: ce, dstblk: ddc1, dstport: ce }
|
|
- { srcblk: _device_, srcport: ce, dstblk: duc1, dstport: ce }
|
|
|