Dskpimc? · 2020年09月12日

芯片验证的一些记录

1、define宏的使用:
define经常用来代替某些复杂的文本内容或数字,也可以用来构造字符串。``

1、`define D(x,y) initial $display("start", x , y, "end");
2、`define test_num 1414;
3、`define append(f) f``_master =》`append(clock)   =》 clock_master

2、模块A input类型信号口所对接的模块B,这两个模块如果不是一个时钟域,要检查模块A的输入信号是否要经过同步处理,常用有打拍、DMUX,FIFO等。

3、条件执行标志来控制测试用例testcase的条件执行,所有语句都被编译,但是条件执行它们,这样就不用重新编译浪费时间。有两个系统任务关键字可用于条件执行; t e s t test testplusargs和 v a l u e value valueplusargs。如下例子:

if($test$plusargs("DISPLSY"))
    $display("abcd");

仅当在运行时设置了标志DISPLAY时,才会执行display任务打印abcd;

string test_string;
if($value$pluargs(test_name=%s,test_sring))
    $display("test_string is %s",test_string);

如果在仿真进行时,有找到test_name这个匹配项,就把test_name得值赋给test_string,且 v a l u e value valuepluargs返回1,反正为0。

4、对模块的寄存器存在耦合关系,或者取值可以在一定范围内变动的,一定要在用例里当做背景随机配置起来,以免漏验证某些场景。当然,可以把重点场景随机到的比例增大点。

5、在构造激励的时候一定要想好可复用性,并在最大范围随机性,以免不断返工修改,浪费时间和精力;

相关阅读

Verdi的一些使用技巧记录
芯片设计的一些记录

作者:谷公子
首发博客:https://blog.csdn.net/W1Z1Q/article/details/105694156
4 阅读 316
推荐阅读
0 条评论
关注数
1789
内容数
255
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
Arm中国学堂公众号
关注Arm中国学堂
实时获取免费 Arm 教学资源信息
Arm中国招聘公众号
关注Arm中国招聘
实时获取 Arm 中国职位信息