Simopt -- Simulation pass for Speculative Optimisation of FPGA-CAD flow
Eashan Wadhwa, Shanker Shreejith
TL;DR
Simopt addresses the gap between functional verification and back-end optimization by harvesting behavioural simulation metadata to drive latency-aware placement and routing in FPGA CAD flows. The approach combines Verilator-era simulation data with a modified Yosys-ABC flow, using simopt-counters, simopt-state, and a logarithmically weighted objective $A_{simopt}$ to bias placement and packing toward frequently active signals. Key contributions include the Simopt-Verilator integration, a Protobuf-based metadata dump, and a Yosys-ABC backend that improves design latency with minimal area impact, demonstrated on Verilator and EPFL benchmarks (up to 38.2% latency reduction and 5–10% routing speed-up). The framework is plug-and-play, enabling broader adoption across simulators and CAD backends and offering practical impact for reducing FPGA design iteration time, albeit with some simulation-time overhead for metadata generation.
Abstract
Behavioural simulation is deployed in CAD flow to verify the functional correctness of a Register Transfer Level (RTL) design. Metadata extracted from behavioural simulation could be used to optimise and/or speed up subsequent steps in the hardware design flow. In this paper, we propose Simopt, a tool flow that extracts simulation metadata to improve the timing performance of the design by introducing latency awareness during the placement phase and subsequently improving the routing time of the post-placed netlist using vendor tools. For our experiments, we adapt the open-source Yosys flow to perform Simopt-aware placement. Our results show that using the Simopt-pass in the design implementation flow results in up to 38.2% reduction in timing performance (latency) of the design.
