Search papers, labs, and topics across Lattice.
This paper introduces Forbench, a symbolic simulation framework that enhances traditional simulation methods by integrating solver-backed symbolic signals and state transitions, allowing for a more comprehensive exploration of RTL behaviors. By maintaining the familiar execution semantics of simulation while enabling systematic verification, Forbench addresses the scalability challenges of formal verification and simplifies the process of writing precise properties. Experimental results demonstrate that Forbench not only accelerates symbolic verification but also improves coverage compared to existing methods.
Forbench achieves significant speed-ups in symbolic verification while maintaining coverage, making formal methods more accessible to engineers accustomed to traditional simulation workflows.
Simulation remains the dominant approach in pre-silicon verification due to its ease of deployment and intuitive workflow. However, as simulation only explores a limited subset of possible execution traces within feasible time budgets, it often fails to explore rare corner cases, leaving latent bugs undetected. In contrast, formal verification offers mathematically rigorous guarantees of correctness. However, its practical adoption is constrained, not only by the scalability challenges over large-scale designs, but also by the change of mindset from stimulus-driven operations to the sequence-centric axiomatic view of design behaviors, introducing extra difficulty of writing precise properties to capture the exact verification intent. This paper aims to lower the barrier of applying formal methods in verification, by making simulation "more formal." It introduces Forbench, a word-level symbolic simulation framework that retains the familiar execution semantics of simulation but augments it with solver-backed symbolic signals and state transitions, enabling systematic exploration of RTL behaviors under symbolic inputs and conditions. It offers a Python interface, similar to the existing simulation-based frameworks, for defining constraints, coordinating symbolic (co-)simulations, and performing property checks. In additional to this more accessible interface, experiments also show that Forbench achieves notably speed-up over prior symbolic methods without the loss of coverage.