artiq-fast: build gateware from a self-contained separate source derivation #23
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "split-software-gateware-builds"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Addresses item 2. of Gitea issue #1.
Calls the Artiq target script with
--no-compile-gateware
, additionally installs the generated bitstream source code, and usesbuiltins.unsafeDiscardStringContext
on its contents. From the dangerous look of that function I wanted some code review. I think it's pure and fine to use though...That's what is needed to drop all dependency tracking from the
gateware source so that the gateware will be rebuilt only if the
sources have changed, not for anything unrelated in the Python
code.
Some random comments:
substituteInPlace
hack on the TCL file, maybe it is better to modify Migen so that it copies all input Verilog files into the build directory and makes it self-contained, with relative paths. This may also help with some path-related issues that people have had with running Migen under Cygwin, which were solved by introducing Cygwin-specific code which would be nice to remove if possible. William D. Jones (cr1901) is the person to talk to for Migen-on-Cygwin matters.Very useful details. Thank you!
Another two things:
artiq-board.nix
toartiq-board-legacy.nix
and use one or the other based onpkgs.lib.strings.versionAtLeast artiq-fast.artiq.version "6.0"
.ROM256X1
(see: https://www.xilinx.com/support/documentation/sw_manuals/xilinx2012_2/ug953-vivado-7series-libraries.pdf). One needs to check if their contents can be modified using the Vivado TCL commands even after synthesis, placement and routing.We need to support boards with Artix-7, Kintex-7, Zynq-7000 FPGAs which all have the same primitives ("7-series"), and with Kintex Ultrascale which does not. Find a suitable common primitive between KU and 7-series.
Please review again.
I do not think I have access to hardware for testing.
You do, there's a KC705 on rpi-1.m-labs.hk and a Kasli 2.0 (without Ethernet) on hestia.m-labs.hk.
Tested on KC705:
Updated for
--gateware-identifier-str
Rebased
software ident unprogrammed
in the log, which is a pretty useless message. I suggest dropping this message (and all associated code) entirely, please submit a ARTIQ PR that does that.Fixed now: 81b1af7
Just did: they include the firmware and the bitstream.
That is strange. I just inserted a
grep -r IDENTIFIER_STR
into the firmware build:I'm going to run the firmware on a device...
artiq-board-legacy.nix would need these changes
12fbe64616
(Related to #34) Yet I can't find aI may be working on too many PRs over too long time periods. :-)artiq-board-legacy.nix
anywhere in the repository and its history. Please help.You are creating it in this PR but did not integrate the changes from https://git.m-labs.hk/M-Labs/nix-scripts/commit/12fbe64616.
Tested this on the kc705 on rpi-1:
Hmm, this seems to cause the firmware to be built during the Hydra initial evaluation step. May cause timeouts and improperly reported errors...
Well yes, Nix needs to find out whether the Vivado input has changed.
Build the firmware in another separate step?
What if we create one Hydra jobset that builds the firmware and the Verilog source, which becomes the input of another? Evaluations (with all the firmware builds) are taking over an hour right now, with no feedback in the Hydra web interface.
I'll give that a try.
What's a good name for this intermediate jobset?It's going to be an additional targets jobs.