首先配置好C906的smart_run编译环境
为了方便未来的操作,我们可以在这里创建一个.cshrc
把源代码的位置以及riscv编译器的位置输进去
setenv CODE_BASE_PATH /home/ICer/ic_prjs/openc906-main/C906_RTL_FACTORY
setenv TOOL_EXTENSION /home/ICer/Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/bin
后续便可以省下很多时间
如果没有test文件的权限输入以下指令
sudo chmod -R 777 ./tests
第二步我们增加testcase,将testcase导入C906的smart_run中
首先将要测试的case复制到smart_run/tests/cases中
然后打开smart_run/setup/smart_cfg.mk
在CASE_LIST加上对应的testcase,如下图:
仿照前面的testcase编写方式复制一下,写一个testcase_build:
第三步修改Makefile以生成覆盖率:
首先修改默认的编译器以及是否生成波形:
增添覆盖率生成的开关:
修改compile命令:
修改runcase指令:
我们运行
make runcase CASE=div
便可以生成div.vdb
运行别的case可以生成别的.vdb
我们使用指令合成一个总的vdb文件
urg -dir div.vdb\
-dir div1.vdb \
…
-dbname test.vdb
如果很多vdb,我们可以写一个filelist
urg -f xxx_path/xxx_vdb.fl \
-dbname test.vdb
然后使用指令查看覆盖率:
dve -cov -dir vdbname.vdb &