It has long been the practice to create models in C or C++ for architectural studies, software prototyping and RTL verification in the design of Systems-on-Chip (SoC). It is often the case that by the end of a design project, multiple C models exist for different uses. Since a lot of time is invested in ensuring the functional correctness of these models via their use in system-level simulations, they often become "golden" functional reference models. Design teams are moving towards leveraging these system-level models to reduce the time needed for design and verification of RTL. On the design side, the use of high-level synthesis tools to synthesize RTL from C/C++ models is gaining ground for certain classes of blocks within a design. On the verification front, temporal differences at interfaces and in internal states between system-level models and RTL prevent the use of combinational equivalence checkers. This paper focuses on the use of sequential equivalence checking to verify functional equivalence between system-level models and RTL and describes the challenges and vale of using it in system-level to RTL flows.
IntroductionC/C++ and SystemC models are created by SoC design teams to serve different purposes during design including architectural exploration, software prototyping, supplying customers with executable prototypes, and verification of RTL models.In this paper we will refer to these models as system-level models (SLM). Since these tasks to which the models are put differ widely in purpose, the SLMs created for each of these can vary in abstraction level across the axes of functional accuracy and level of detail in modeling communication.With a significant part of the overall design cycle being consumed in developing and validating SLMs, it is imperative for design teams to leverage the effort spent in designing and verifying SLMs to simplify the design and verification of RTL. On the design side, high-level synthesis (HLS) flows are starting to get adopted to synthesize RTL from SLMs for certain types of blocks in designs. HLS tools allow for automatic generation of RTL, thus moving the bulk of the design effort to the SLM level. HLS tools also allow the exploration of different micro-architectures since the creation of RTLs with different latency/throughputs and hence different control/computation structures is now much easier. However, the use of HLS creates the need for an automated flow to ensure the correctness of the synthesizable SLM that is the input to HLS and the RTL generated from HLS. Even if no HLS tools are used in RTL creation, design teams want to keep the SLM and RTL functionally equivalent.Traditionally, simulation of the SLM and RTL using consistent input vectors and comparison of the output vectors using an intelligent "diff" or co-simulation of the SLM and RTL have been the vehicles of choice to verify equivalence between SLMs and RTL. However, simulation-based approaches require significant effort in developing testbenches and yield partial coveragepotentially missing out on ...