UHD(1)
β¨ 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-configis required, you can't skip both, it's giving pick one.-r GRC_CONFIG,--grc-config GRC_CONFIGβ path to the.grcfile 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 tobuild-<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 tobuildin the base directory.-E BUILD_IP_DIR,--build-ip-dir BUILD_IP_DIRβ path to the directory for IP build artifacts. defaults tobuild-ipin 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,-Cis also--base-dirup 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 toautoit'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 π
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. π
β¨
π¦ where this page comes from
- alpine 3.24: uhd-doc 4.9.0.0-r2 Β· GPL-3.0-or-later
- arch rolling: libuhd 4.9.0.1-8 Β· GPL-3.0-or-later
- debian trixie: uhd-host 4.8.0.0+ds1-2 Β· GPL-3.0-or-later
- epel 10: uhd 4.9.0.0-2.el10_2 Β· GPL-3.0-or-later
- fedora 43: uhd 4.8.0.0-4.fc43 Β· GPL-3.0-or-later
- fedora 43: uhd 4.8.0.0-4.fc43 Β· GPL-3.0-or-later
- fedora 43: uhd 4.8.0.0-5.fc43 Β· GPL-3.0-or-later
- fedora 43: uhd 4.8.0.0-5.fc43 Β· GPL-3.0-or-later
- fedora 44: uhd 4.9.0.1-3.fc44 Β· GPL-3.0-or-later
- fedora 44: uhd 4.9.0.1-3.fc44 Β· GPL-3.0-or-later
- nixos 26.05: uhd 4.9.0.1
- nixpkgs unstable: uhd 4.11.0.0
- ubuntu questing: uhd-host 4.8.0.0+ds1-2ubuntu2.1
- ubuntu resolute: uhd-host 4.9.0.1-1ubuntu1 Β· GPL-3.0-or-later
- ubuntu stonking: uhd-host 4.9.0.1-1.4 Β· GPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms