Skip to main content

Module shuttle_wrapper

Module shuttle_wrapper 

Source
Expand description

Packing EVERY signed-off macro into ONE Caravel shuttle submission.

A shuttle slot buys one 2920 x 3520 um user area, and until now exactly one block has ever occupied it. The other fifteen signoff-clean macros were “manufacturable” only in the sense that each could be packaged — none was, and sixteen slots is not a plan.

They do not need sixteen slots. Measured from their hardened LEFs, the sixteen clean macros total 4.771 mm^2 against the 10.278 mm^2 user area: 46% occupancy, all of them, in one submission. Every one already has a hardened .lef/.gds/.lib from the run its signoff ledger entry vouches for, so nothing has to be re-hardened to do this — only placed, powered and wired.

WIRING IS THE REAL WORK. Caravel speaks Wishbone; these macros do not. Their ports are small and regular though (3 to 18, mostly clk/rst plus a couple of data words), so the bridge is mechanical: give each macro an address window, map its inputs to write registers and its outputs to read registers, and share the clock and reset. That is generated here rather than hand-written sixteen times, because hand-writing it sixteen times is how a submission ends up instantiating a module nothing defines.

Structs§

MacroPort
One port of a macro, as its RTL declares it.
Placement
Where a macro sits in the user area, in LEF orientation terms.
ShuttleMacro
A hardened, signoff-clean macro and the footprint its LEF reports.

Enums§

ShuttleUnplaceable
Why a set of macros cannot share one user area.

Constants§

CLEAN_MACROS
Every signoff-clean macro, with the footprint its own hardened LEF reports.
MACRO_ADDR_STRIDE
Address window per macro. 0x100 gives 64 registers — far more than the widest macro here needs (18 ports), and keeps each base a readable multiple in a memory map a human debugs.
MACRO_KEEPOUT_UM
Micrometres of keep-out around every macro.

Functions§

emit_macro_cfg
OpenLane macro.cfg lines: <instance> <x> <y> <orientation>.
emit_pdn_hooks
FP_PDN_MACRO_HOOKS — every macro must be hooked to the user-area supply, or the power connections check fails the submission outright.
plan_shuttle
Shelf-pack the macros into the user area, tallest first.