UHD(1)

πŸ“¦
version 4.9.0.1 Β· 2 versions
, in alpine 3.24, arch rolling, debian trixie, epel 10, fedora 43, fedora 44, nixos 26.05, nixpkgs unstable, ubuntu questing, ubuntu resolute, ubuntu stonking

✨ NAME ✨

okay so bestie, welcome to the UHD(1) manual page πŸ’– this one's all about rfnoc_image_builder β€” it builds you a UHD image using RFNoC blocks. yes. that's the whole vibe. let's go 🫢


πŸŽ€ USAGE πŸŽ€

here's the whole invocation, verbatim, no edits, i would never:

rfnoc_image_builder [-h] (-y YAML_CONFIG | -r GRC_CONFIG) [-C BASE_DIR]
[-F FPGA_DIR] [-B BUILD_DIR] [-O BUILD_OUTPUT_DIR] [-E BUILD_IP_DIR] [-o
IMAGE_CORE_OUTPUT] [-I INCLUDE_DIR] [-b GRC_BLOCKS] [-l LOG_LEVEL] [-R]
[-G] [-W] [-S SECURE_CORE] [-K SECURE_KEY] [-d DEVICE] [-n
IMAGE_CORE_NAME] [-t TARGET] [-g] [-Y] [--CHECK] [-s] [-P] [-j JOBS]
[-c] [-p VIVADO_PATH] [-H] [-D] [--color {never,auto,always}]

πŸ’… optional arguments

literally every single one of them, in order, no skips, we don't do that here:

  • -h, --help β€” shows you a help message and then dips. classic.
  • -y YAML_CONFIG, --yaml-config YAML_CONFIG β€” path to your YAML configuration file (the image core file, iykyk). either this one or --grc-config is required, you can't skip both, it's giving pick one.
  • -r GRC_CONFIG, --grc-config GRC_CONFIG β€” path to the .grc file you wanna generate a config from.
  • -C BASE_DIR, --base-dir BASE_DIR β€” path to the base directory. defaults to the current directory.
  • -F FPGA_DIR, --fpga-dir FPGA_DIR β€” path to the directory for the FPGA source tree. defaults to the FPGA source tree of the current repo.
  • -B BUILD_DIR, --build-dir BUILD_DIR β€” path to the directory where the image core and the build artifacts get generated. (yes the original says "and and", we love her.) defaults to build-<image-core-name> inside the base directory.
  • -O BUILD_OUTPUT_DIR, --build-output-dir BUILD_OUTPUT_DIR β€” path to the directory for the final FPGA build outputs. defaults to build in the base directory.
  • -E BUILD_IP_DIR, --build-ip-dir BUILD_IP_DIR β€” path to the directory for IP build artifacts. defaults to build-ip in the base directory.
  • -o IMAGE_CORE_OUTPUT, --image-core-output IMAGE_CORE_OUTPUT β€” DEPRECATED! this got replaced by --build-dir. it's giving nostalgia, don't use it.
  • -x ROUTER_HEX_OUTPUT, --router-hex-output ROUTER_HEX_OUTPUT β€” DEPRECATED! this option will literally just be ignored. it's a ghost πŸ‘»
  • -I INCLUDE_DIR, --include-dir INCLUDE_DIR β€” path to the directory of the RFNoC Out-of-Tree module.
  • -b GRC_BLOCKS, --grc-blocks GRC_BLOCKS β€” path to the directory of GRC block descriptions (only needed for --grc-config, so if you're not using that, mind your business πŸ’…).
  • -l LOG_LEVEL, --log-level LOG_LEVEL β€” adjust the log level. as one does.
  • -R, --reuse β€” reuse existing files, i.e. do not regenerate the image core. queen of not doing extra work.
  • -G, --generate-only β€” just generate the files without building the FPGA. the "i'll do it later" option fr fr.
  • -W, --ignore-warnings β€” run the build even when there are warnings in the build process. chaotic but valid.
  • -S SECURE_CORE, --secure-core SECURE_CORE β€” build a secure image core instead of a bitfile. this argument gives the name of the generated YAML.
  • -K SECURE_KEY, --secure-key SECURE_KEY β€” path to the encryption key file to use for the secure core.
  • -d DEVICE, --device DEVICE β€” the device you're programming: [x300, x310, e310, e320, n300, n310, n320, x410, x440]. needs to be specified either right here, or in the configuration file. no third option, bestie.
  • -n IMAGE_CORE_NAME, --image-core-name IMAGE_CORE_NAME, --image_core_name IMAGE_CORE_NAME β€” the name to use for the RFNoC image core. defaults to the name of the image core YML file, without the extension. yes it has two long forms, she contains multitudes.
  • -t TARGET, --target TARGET β€” build target (e.g. X310_HG, N320_XG, ...). needs to be specified either here, on the configuration file. (their words, not mine.)
  • -g, --GUI β€” opens the Vivado GUI during the FPGA building process. main character energy for your screen πŸ–₯️✨
  • -Y, --SYNTH β€” stop the FPGA build process after Synthesis.
  • -C, --CHECK β€” run elaboration only, to check HDL syntax. ⚠️ yes, -C is also --base-dir up above. the manpage said what it said. i'm just the messenger πŸ’€
  • -s, --save-project β€” save the Vivado project to disk.
  • -P, --ip-only β€” build only the required IPs. minimalism, but make it FPGA.
  • -j JOBS, --jobs JOBS β€” number of parallel jobs to use with make. go off, cores πŸ”₯
  • -c, --clean-all β€” cleans the IP before a new build. fresh start, we love a reset.
  • -p VIVADO_PATH, --vivado-path VIVADO_PATH β€” path to the base install for Xilinx Vivado if it's not in the default location (e.g., /tools/Xilinx/Vivado).
  • -H, --no-hash β€” do not include the source YAML hash in the generated source code.
  • -D, --no-date β€” do not include date or time in the generated source code.
  • --color {never,auto,always} β€” enable colorful output. when set to auto it'll only show color output in TTY environments (e.g., interactive shells). aesthetic decisions, we support them 🌈

πŸ¦‹ DESCRIPTION πŸ¦‹

so basically, this tool takes a YAML configuration file and generates an FPGA bitfile that can be used with an RFNoC-capable UHD device. that's the whole glow-up.

the YAML configuration file describes the RFNoC blocks that are to be included in the FPGA image, along with the connections between the blocks, and any additional configuration that is required for the blocks. it's the blueprint, the moodboard, the whole plan πŸŽ€


🌸 SEE ALSO 🌸

UHD documentation: https://uhd.readthedocs.io/

other UHD programs, go read them too bestie:

uhd_cal_tx_dc_offset(1) uhd_cal_rx_iq_balance(1) uhd_images_downloader(1) uhd_config_info(1) uhd_find_devices(1)


πŸ’œ AUTHOR πŸ’œ

this manual page was written by Maitland Bottoms for the Debian project (but may be used by others). iconic behavior honestly.


Copyright (c) 2020 Ettus Research LLC

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

that's the legal bit, and it matters β€” no warranty, fr fr. read it properly, don't just skim it because i'm cute about it 🫢

and that's a wrap, bestie πŸ’– this was UHD 4, dated December 2024, and it lives in the UHD(1) manual. go build something slay. πŸ’…βœ¨