IRON Lab WorldTreeNetwork

Interface

ironlab CLI

ratatui + clap. doctor, status, load, init. Default is status when you have a TTY.

Binary name ironlab. Rust workspace: crates/ironlab + crates/ironlab-device.

cargo run -p ironlab -- doctor --plain
cargo run -p ironlab -- status --plain
cargo run -p ironlab -- load path/to/design.xclbin   # holds until Ctrl-C
ironlab init my_op

just ironlab -- doctor --plain wraps the same binary.

doctor

Probes facts: PCI, /dev/accel, firmware, amdxdna, memlock, XRT. Prints the contents of toolchain-pins.toml.

Fix hints branch on apt / dnf / pacman / zypper. Arch is one tested distro, not the identity of the project.

--plain for scripts; TUI if stdout is a TTY.

status / list

Occupancy: holder pid, lock state, when the claim started.

load

Takes the exclusive occupancy flock, then tries xrtDeviceLoadXclbinFile. On XDNA that load returns ENOTSUP (not an FPGA bitstream). The lock still matters — see occupancy.md. Holds until Ctrl-C.

A second ironlab load is refused with the holder pid (started_unix=).

init

Scaffolds operators/<name>/{op,design,reference,test}.py. Add aie_kernels/aie2p/<name>.cc next.

build / test / run subcommands still point authors at just run operators/<name>/design.py.

Krackan / NPU6 first ironlab MIT OR Apache-2.0