Vectorization of Verilog Designs and its Effects on Verification and Synthesis
Maria Fernanda Oliveira Guimar\~aes, Ulisses Rosa, Ian Trudel, Jo\~ao Victor Amorim Vieira, Augusto Amaral Mafra, Mirlaine Crepalde, Fernando Magno Quint\~ao Pereira

TL;DR
This paper introduces a Verilog vectorizer built on CIRCT that recognizes various vectorization patterns, improving formal verification scalability by reducing elaboration time and memory usage.
Contribution
It presents a novel Verilog vectorizer that enhances verification and synthesis processes by treating buses as single symbolic entities.
Findings
Improves Jasper verification tool elaboration time by 28.12%.
Reduces memory consumption in Jasper by 51.30%.
Effective on 1,157 designs from ChiBench collection.
Abstract
Vectorization is a compiler optimization that replaces multiple operations on scalar values with a single operation on vector values. Although common in traditional compilers such as rustc, clang, and gcc, vectorization is not common in the Verilog ecosystem. This happens because, even though Verilog supports vector notation, the language provides no semantic guarantee that a vectorized signal behaves as a word-level entity: synthesis tools still resolve multiple individual assignments and a single vector assignment into the same set of parallel wire connections. However, vectorization brings important benefits in other domains. In particular, it reduces symbolic complexity even when the underlying hardware remains unchanged. Formal verification tools such as Cadence Jasper operates at the symbolic level: they reason about Boolean functions, state transitions, and equivalence classes,…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
