Expand description
A Caravel user project as data.
Caravel carries exactly one user macro, placed as mprj inside the fixed user_project_wrapper. Everything
that differs between two user projects along the chain — macro harden, wrapper harden, golden-deck DRC,
submission, mpw_precheck — is a field of CaravelProject. The flow scripts read their project through
emit_flow_config --caravel-project <key> instead of naming a macro themselves, so a second user project is
one more entry in CARAVEL_PROJECTS, never a second copy of the scripts; and the locks walk the same list,
so an entry is held to every gate from the moment it exists.
Structs§
- Caravel
Project - One user project on the Caravel harness.
Enums§
- Caravel
Project Unplaceable - Why a project cannot be hardened as described.
Constants§
- CARAVEL_
PROJECTS - DRAM_
PROJECT - The DRAM command-stream executor behind a Wishbone target: the project submitted and precheck-passed first. Every path is the one its evidence was recorded under.
- WPE_
PROJECT - The whole-program engine (
wpe_caravel): its UART and its PSRAM on user GPIOs, clocked onuser_clock2at the clock its UART bit period was derived from, faster than the chip signs its core clock for. Its ports are held to the harness’s minimum input delays (flow_config::vehicle_macro_sdc), so its hold margin is OpenLane’s placement default, 0.1 ns: the 0.7 ns the command player carries buffered 35,656 of the engine’s paths.