Search papers, labs, and topics across Lattice.
The paper introduces CoverAssert, an iterative framework that optimizes SystemVerilog assertion (SVA) generation by using LLMs and functional coverage feedback. CoverAssert matches generated assertions to functional descriptions by clustering joint semantic and structural representations derived from LLM outputs and signal ASTs, enabling functional coverage analysis. Experiments on open-source designs show that CoverAssert improves branch, statement, and toggle coverage by an average of 9.57%, 9.64%, and 15.69% respectively, when integrated with existing SVA generators like AssertLLM and Spec2Assertion.
LLMs can now generate significantly better SystemVerilog assertions by iteratively refining their outputs based on functional coverage feedback, boosting branch, statement, and toggle coverage by up to 15.69%.
While leveraging LLMs to automatically generate SystemVerilog assertions (SVAs) from natural language specifications holds great potential, existing techniques face a key challenge: LLMs often lack sufficient understanding of IC design, leading to poor assertion quality in a single pass. Therefore, verifying whether the generated assertions effectively cover the functional specifications and designing feedback mechanisms based on this coverage remain significant hurdles. To address these limitations, this paper introduces CoverAssert, a novel iterative framework for optimizing SVA generation with LLMs. The core contribution is a lightweight mechanism for matching generated assertions with specific functional descriptions in the specifications. CoverAssert achieves this by clustering the joint representations of semantic features of LLM-generated assertions and structural features extracted from abstract syntax trees (ASTs) about signals related to assertions, and then mapping them back to the specifications to analyze functional coverage quality. Leveraging this capability, CoverAssert constructs a feedback loop based on functional coverage to guide LLMs in prioritizing uncovered functional points, thereby iteratively improving assertion quality. Experimental evaluations on four open-source designs demonstrate that integrating CoverAssert with state-of-the-art generators, AssertLLM and Spec2Assertion, achieves average improvements of 9.57 % in branch coverage, 9.64 % in statement coverage, and 15.69 % in toggle coverage.