Cargo Features

[dependencies]
utralib = { version = "0.1.25", default-features = false, features = ["std", "precursor-perflib", "precursor-dvt", "precursor-pvt", "precursor", "hosted", "renode", "atsama5d27", "cramium-soc", "cramium-fpga"] }

UTRA pre-generated version tracker

std

Affects cramium_fpga::AtomicCsr, cramium_soc::AtomicCsr, precursor_pvt::AtomicCsr, renode::AtomicCsr

precursor-perflib

This specifies the SVD rev for platform targets
Precursor is an FPGA, so the actual hardware register spec can change over time,
hence the gitrev is specified as part of the precursor feature spec. We specify every gitrev that we may need to refer back to, so that we're not trying to map utralib version numbers to precursor soc revs -- by having the gitrev exposed,
we can directly look up what generated the SVD file we're using without having to go through some manually maintained lookup table of version # to gitrev.

SoCs in custom silicon would typically not need the gitrev, since their hardware is immutable.

Maintainer note: add checks in build.rs to ensure only one is selected.

precursor-dvt
precursor-pvt

based on 2020.08 litex, v0.9.11 tag

precursor

The SVD gitrev as specified above is only invoked to track fine-grained changes between target revisions. Below is the overall target switch,
which is the preferred mechanism for isolating target-specific code.

These features are mutually exclusive. Maintainers should update the checks inside build.rs to ensure consistency.

hosted default
renode
atsama5d27

ATSAMA5D27 ARMv7A SoC

cramium-soc

Cramium SoC & FPGA model

cramium-fpga
default = hosted

Specify a Precusor default so that we can pass packaging CI tests.

Features from optional dependencies

Dependency versions enforced by Cargo.lock.