Problem

Heterogeneous designs reuse many existing components, and each one has its own interface and handshake. Designers spend much of their effort on busy-work: adapters, data-type conversion, and control logic to connect the parts. Hardware languages either make this customization expensive or trade quality for simplicity.

Idea

Twine is a Chisel extension with high-level semantics for heterogeneous design. It gives every component one standard interface, supports control-free specification with flexible data-type conversion, and generates the control and glue logic.

Accelerator Astreaming handshakeAccelerator Bcustom valid/readyMemorybus interfaceTwine interfaceone standard port+ data-type conversionGenerated logiccontrol + glue,no hand wiring
Components keep their native interfaces. Twine standardizes them and generates the glue.

Result

3×smaller design specifications
DATE 2022peer-reviewed publication

Twine improves reusability and lowers design complexity while it keeps design quality. It became the first part of my PhD dissertation.

My role

First author. I designed the language extension and its code generation and ran the evaluation.

Paper: DATE 2022