aboutsummaryrefslogtreecommitdiffstats
path: root/host/python
diff options
context:
space:
mode:
authorWade Fife <wade.fife@ettus.com>2022-04-11 17:22:48 -0500
committerAaron Rossetto <aaron.rossetto@ni.com>2022-04-12 13:31:19 -0700
commitc1f1f32d0b66d2f7bc9b59924792f2d8eb773710 (patch)
tree11a8f41e422b803e115730c317d63487f6164aa3 /host/python
parentfc2242994be5234a93b5cc6f5677fdc0e0d3d093 (diff)
downloaduhd-c1f1f32d0b66d2f7bc9b59924792f2d8eb773710.tar.gz
uhd-c1f1f32d0b66d2f7bc9b59924792f2d8eb773710.tar.bz2
uhd-c1f1f32d0b66d2f7bc9b59924792f2d8eb773710.zip
rfnoc: Update image builder to check for deprecated blocks
Adds checks for deprecated blocks (e.g., radio_1x64.yml instead of radio.yml) as well as deprecated IO signature types (e.g., ctrl_port instead of ctrlport). Deprecated block descriptions are no longer parsed. Old IO signature types are automatically converted to the new type. Warnings are printed in both cases.
Diffstat (limited to 'host/python')
-rw-r--r--host/python/uhd/imgbuilder/image_builder.py76
1 files changed, 49 insertions, 27 deletions
diff --git a/host/python/uhd/imgbuilder/image_builder.py b/host/python/uhd/imgbuilder/image_builder.py
index 54a06a02c..67ceb6fa9 100644
--- a/host/python/uhd/imgbuilder/image_builder.py
+++ b/host/python/uhd/imgbuilder/image_builder.py
@@ -57,6 +57,38 @@ DEVICE_DEFAULTTARGET_MAP = {
'n320': 'N320_XG',
}
+# List of blocks that have been replaced (old name : new name)
+deprecated_block_yml_map = {
+ "radio_1x64.yml" : "radio.yml",
+ "radio_2x64.yml" : "radio.yml",
+ "axi_ram_fifo_2x64.yml" : "axi_ram_fifo.yml",
+ "axi_ram_fifo_4x64.yml" : "axi_ram_fifo.yml",
+}
+
+# List of port names that have been replaced (old name : new name)
+deprecated_port_name_map = {
+ "x300_radio" : "radio",
+ "radio_iface" : "radio",
+ "x300_radio0" : "radio0",
+ "x300_radio1" : "radio1",
+ "radio_ch0" : "radio0",
+ "radio_ch1" : "radio1",
+ "ctrl_port" : "ctrlport",
+ "ctrlport_radio" : "ctrlport",
+ "timekeeper" : "time",
+ "time_keeper" : "time",
+}
+
+# List of IO signature types that have been replaced (old name : new name)
+deprecated_port_type_map = {
+ "ctrl_port" : "ctrlport",
+ "time_keeper" : "timekeeper",
+ "radio_1x32" : "radio",
+ "radio_2x32" : "radio",
+ "radio_8x32" : "radio",
+ "x300_radio" : "radio",
+}
+
# Adapted from code found at
# https://stackoverflow.com/questions/5121931/
@@ -112,6 +144,13 @@ def expand_io_port_desc(io_ports, signatures):
"""
for io_port in io_ports.values():
wires = []
+ if io_port["type"] in deprecated_port_type_map:
+ logging.warning(
+ "The IO signature type '" + io_port["type"] +
+ "' has been deprecated. Please update your block YAML to use '" +
+ deprecated_port_type_map[io_port["type"]] + "'."
+ )
+ io_port["type"] = deprecated_port_type_map[io_port["type"]]
for signature in signatures[io_port["type"]]["ports"]:
width = signature.get("width", 1)
wire_type = signature.get("type", None)
@@ -192,48 +231,28 @@ class ImageBuilderConfig:
Check if the configuration uses deprecated IO signatures or block
descriptions.
"""
- # List of blocks that have been replaced (old name : new name)
- block_yml_map = {
- "radio_1x64.yml" : "radio.yml",
- "radio_2x64.yml" : "radio.yml",
- "axi_ram_fifo_2x64.yml" : "axi_ram_fifo.yml",
- "axi_ram_fifo_4x64.yml" : "axi_ram_fifo.yml",
- }
- # List of port names that have been replaced (old name : new name)
- port_name_map = {
- "x300_radio" : "radio",
- "radio_iface" : "radio",
- "x300_radio0" : "radio0",
- "x300_radio1" : "radio1",
- "radio_ch0" : "radio0",
- "radio_ch1" : "radio1",
- "ctrl_port" : "ctrlport",
- "ctrlport_radio" : "ctrlport",
- "timekeeper" : "time",
- "time_keeper" : "time",
- }
# Go through blocks and look for any deprecated descriptions
for name, block in self.noc_blocks.items():
desc = block['block_desc']
- if desc in block_yml_map:
+ if desc in deprecated_block_yml_map:
logging.warning(
"The block description '" + desc +
"' has been deprecated. Please update your image to use '" +
- block_yml_map[desc] + "'."
+ deprecated_block_yml_map[desc] + "'."
)
# Override the block with the new version
- block['block_desc'] = block_yml_map[desc]
+ block['block_desc'] = deprecated_block_yml_map[desc]
# Go through port connections and look for deprecated names
for con in self.connections:
for port in ('srcport', 'dstport'):
- if con[port] in port_name_map:
+ if con[port] in deprecated_port_name_map:
logging.warning(
"The port name '" + con[port] + "' has been deprecated. "
"Please update your image to use '" +
- port_name_map[con[port]] + "'."
+ deprecated_port_name_map[con[port]] + "'."
)
# Override the name with the new version
- con[port] = port_name_map[con[port]]
+ con[port] = deprecated_port_name_map[con[port]]
def _check_configuration(self):
"""
@@ -668,7 +687,10 @@ def read_block_descriptions(signatures, *paths):
if re.match(r".*\.yml$", filename):
with open(os.path.join(root, filename)) as stream:
block = ordered_load(stream)
- if "schema" in block and \
+ if filename in deprecated_block_yml_map:
+ logging.warning("Skipping deprecated block description "
+ "%s (%s).", filename, os.path.normpath(root))
+ elif "schema" in block and \
block["schema"] == "rfnoc_modtool_args":
logging.info("Adding block description from "
"%s (%s).", filename, os.path.normpath(root))