Frequently Asked Questions (FAQs)#
Warning
Outdated Documentation! This documentation version is out of date. Please check the latest version 2026.1.
Does Hog support HLS in Vivado?#
We recommend storing only the files required to build the project in your HDL repository. For HLS, keep the C++ code in a separate repository, and commit only the resulting user IPs and the .xci file to the HDL repository. For more details on handling user IPs in Vivado, see the User IP Chapter.
Does Hog support IPs and Block Designs in Vivado?#
Yes! We suggest committing only the .xci (for IPs) or .bd (for Block Designs) files to the repository and adding them to your list files. Alternatively, you can generate IPs or Block Designs using Tcl commands in the post-creation.tcl script. For more information, see the IP Chapter.
What are the differences between Hog and other tools like HDLmake or IPBB?#
The main difference is that Hog automatically checks your repository before launching synthesis and embeds the git SHA and version into the binary file. This ensures that every bitfile is traceable and corresponds to a committed state in the repository.
If you modify anything in the Vivado project after creating it with the Hog script (e.g., change a file or property), Hog will detect it at synthesis and issue a Critical Warning. This guarantees that even locally produced bitfiles are certified and traceable. Unlike other tools, Hog requires no additional installation—just Vivado and git. Tools like HDLmake or IPBB require Python and specific dependencies, which can complicate onboarding for new developers. Hog is designed to be fast and simple: clone, run the script, and start working.
Does Hog support GitHub Actions?#
Yes, starting from release 2023.1.
Why is the binary file in my CI marked as “dirty”?#
This usually happens when Vivado modifies a file before starting the workflow, most commonly a .xci (IP) or .bd (Block Design) file.
To diagnose the issue, open the CI log (view the raw log if it’s long) and look for the following line:
------------------------- PRE SYNTHESIS -------------------------
Immediately after, check if the version is set to 0.0.0—this is what Hog does when the repository is dirty.
About 10–20 lines above, you may see Critical Warnings like:
CRITICAL WARNING: [Hog:Msg-0] Repository is not clean, will u...
Just above that, you might find:
WARNING: [Hog:Msg-0] Found non committed changes:...
...<filename>[.bd|xci] | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
This indicates which file Vivado modified before starting the workflow.
To understand what changed and whether it will happen again, open the diff_pre_synthesis.txt file in the CI artifacts. You will find something like:
diff --git a<filename> b<filename>
index 54542ad6..51ff68ad 100644
--- a<filename>
+++ b<filename>
@@ -3485,8 +3485,8 @@
"proc_sys_reset_1": {
"vlnv": "xilinx.com:ip:proc_sys_reset:5.0",
"ip_revision": "14",
- "xci_name": "vpk180_ipb_proc_sys_reset_0_1",
- "xci_path": "ip/vpk180_ipb_proc_sys_reset_0_1/vpk180_ipb_proc_sys_reset_0_1.xci",
+ "xci_name": "vpk180_ipb_proc_sys_reset_1_0",
+ "xci_path": "ip/vpk180_ipb_proc_sys_reset_1_0/vpk180_ipb_proc_sys_reset_1_0.xci",
"inst_hier_path": "proc_sys_reset_1"
}
},
In this example, Vivado changed 1_0 to 0_1. Sometimes it changes a minor detail or reorders entries.
To resolve this:
Clean your repository locally (e.g.,
git clean -xdf), restart the workflow, and see if the file is modified in the same way. If so, commit the changes.Manually apply the same change locally and commit it.
For
.bdfiles, you can use Hog CI’s option to automatically reset board design files.
Note
Variables set in the GitLab CI/CD settings of the repository cannot be overwritten in the YAML configurations.