How Marlin Works

Marlin uses procedural macros to generate a Rust wrapper over dynamically-linked symbols generated by a hardware simulator (in this case, verilator). Each "bridging" macro calls the helper function build_verilated_struct defined in the marlin-verilog-macro-builder crate. See also the formal interface in MacroArgs.