Formal verification of SystemC by automatic hardware/software partitioning

Daniel Kroening, Natasha Sharygina

2005 · 116 citations · 21 references

Concepts

TL;DR

SystemC and similar system-level languages are increasingly used to describe designs that combine hardware and software, enabling flexible partitioning, but many properties depend on the hardware/software interaction and existing tools either use non‑formal methods or only address low‑level language parts. The paper proposes a technique that simultaneously handles both hardware and software parts of a system description. The technique automatically partitions a uniform SystemC description into synchronous hardware and asynchronous software components, and has been implemented and tested on several industrial examples. The partitioning improves verification performance relative to a monolithic approach.

Abstract

Variants of general-purpose programming languages, like SystemC, are increasingly used to specify system designs that have both hardware and software parts. The system-level languages allow a flexible partitioning in the design of the hardware and software. Moreover, many properties depend on the combination of hardware and software and cannot be verified on either part alone. Existing tools either apply non-formal approaches or handle only the low-level parts of the language. This papers presents a new technique that handles both hardware and software parts of a system description. This is done by automatically partitioning the uniform system description into synchronous (hardware) and asynchronous (software) parts. This technique has been implemented and applied to system level descriptions of several industrial examples. The hardware/software partitioning improves the performance of the verification compared to the monolithic approach.

References

21