在做RTL仿真验证时,覆盖率收集往往是我们在验证中需要注意的地方,本篇就SpinalHDL中的验证覆盖率收集做一个简单说明。 sbt配置 在SpinalHDL里进行仿真验证时,我们的待测试代码会生成Verilog/Systemverilog电路交由Verilator进行仿真,而激励则由scala本身提供,两者之间通过verilator的VPI进行通信交流。SpinalHDL覆盖率的收集在SpinalHDL 1.4.2中开始支持,在我们通过sbt构建项目时,build.sbt的依赖项配置如下:
开启覆盖率收集功能 有注意上文所给例子的小伙伴或许已经注意到,我们已经开启了覆盖率收集:
SpinalHDL通过指定withCoverage选项来开启覆盖率收集。在《SpinalHDL—基于Scala的测试框架》一文中我们拍完仿真测试用例后在相应目录下每个teseCase会生成一个.dat文件:
我们一共跑了五个testCase,因而生成了五个.dat文件。 生成html报告 由于Verilator生成的.dat文件无法直观阅读,这里我们需要将.dat文件合并并生成html文件。这里需要安装lcov。
最终会生成一个coverage的文件夹:
打开index.html文件即可看到代码覆盖率:
原作者:玉骐
|