Recent success in high-level synthesis ( HLS ) has enabled designing complex hardware with better abstraction and configurability in high-level languages (e.g. SystemC/C++) compared to low-level register-transfer level ( RTL ) languages. Nevertheless, verification and testing HLS designs are challenging and arduous due to their object oriented nature and inherent concurrency. Test engineers aim to generate qualitative test-cases satisfying various code coverage metrics to ensure minimal presence of bugs in a design. Recent works have demonstrated the success of software testing techniques such as greybox fuzzing and concolic execution to obtain better coverage on SystemC designs. However, each of these techniques is time inefficient which obstructs achieving the desired coverage in shorter time-span. We propose a hybrid approach: interleave greybox fuzzing and concolic execution in an systematic manner, thereby reinforcing both the engines by exchanging intermediate test vectors to alleviate the individual inefficiency of the techniques. We evaluate our framework on a wide spectrum of SystemC benchmarks and show that our technique outperforms existing state-of-the-art methods in terms of number of test cases, branch-coverage and runtime.
翻译:最近高水平合成(HLS)的成功使得能够设计出与低水平登记-转移(RTL)语言相比,高层次语言(例如系统C/C+++)的抽象性和可配置性较好的复杂硬件(例如系统C/C++),然而,由于HLS的设计具有面向目标的性质和内在的共通货币性质,核查和测试具有挑战性和艰巨性。测试工程师的目的是产生质量测试案例,满足各种代码覆盖范围的衡量标准,以确保在设计中尽可能少出现错误。最近的工作表明,软件测试技术,例如灰箱烟雾和混合执行技术,取得了成功,以更好地覆盖系统C设计。然而,这些技术中的每一种都是时间效率低的,阻碍了在较短的时间范围内实现预期的覆盖。我们提出了一个混合办法:以系统化的方式将灰箱烟雾和孔化执行,从而通过交换中间测试矢量来降低技术的个人效率,加强这两种引擎。我们评估了系统C的广泛基准框架,并表明,我们的技术在测试案例、分支案件的数量方面超越了现有的最新方法。