0 前言
这段时间在整合一个小ip,因为要验证每个feature是否可行,需要用testbench + C语言的方式进行仿真验证,由于每种feature不仅要在C语言中修改寄存器配置,还要再testbench修改寄存器的配置,这导致每验证一种feature既需要修改C语言,也需要修改testbench,非常繁琐
并且也不想把所有的feature写在一个testbench中(仿真时间会变长很多,尤其是需要dump波形的时候),如果验证完一个feature后,把调教好的testbench注释掉,一番注释下来,看着也恶心,并且等所有feature都搞好后,仿真的时间还是很长
于是就希望能有一种方式,在验证不同的feature时可以吃不同的 testbench,一番搜索下来,找到了$test$plusargs的方法
1 语法介绍
先捋清两个词:plusargs、plusargs_string
- plusargs:仿真时添加的参数
- plusargs_string:编译时提供的字符串
上面提到两个词,编译和仿真,以vcs为例,整个执行过程主要分为两步,编译和仿真(irun/xrun有三步,编译、细化elaborate、仿真)
编译的过程是检查语法、展开所有的参数、宏以及include的文件等等;仿真的过程我的理解就是打入设定的激励,验证功能是否符合预期
vcs成功编译后会生成一个可执行文件simv,如下图

在执行simv即可进行仿真
开始介绍主角,直接抄文档中的例子了

本文介绍了在验证IP功能时,如何通过$test$plusargs方法在C语言testbench中动态加载不同配置,避免了因验证多个feature导致的代码冗余和仿真时间过长问题。
最低0.47元/天 解锁文章
3307

被折叠的 条评论
为什么被折叠?



