SystemVerilog keyword ‘int‘ is not ecpected to be used in this context

应届毕业生,验证小白一枚,开贴记录自己在验证路上的“挫折”。

初识assertion(断言):

1:property:验证设计意图,内部可包含sequence

2:sequence:将一个序列做出来,包含很多场景,比如reset等

3:thread:事件相关的一个序列,可持续一拍或者多拍,每个thrad相互独立。SVA在每个时钟间隙进行asssert/assume/covered

4:##n

  延迟n个周期

5:[m:n] /##[m:n]

  [m:n]      : m-n的任意一个周期

  ##[m:n]  : ##m - ##n的任意一个周期

6:|-> 

  首先对前置表达式做检查,不成立则不激发后置表达式;成立,在同一个时钟周期检查后置表达式是否满足要求。用于property

7:|=>  

  首先对前置表达式做检查,不成立则不激发后置表达式;成立,在下一个时钟周期检查后置表达式是否满足要求。用于property

  |=>表示要延迟一个周期,相当于   |->##1

附链接:systemverilog学习(9)assertion - huanm - 博客园 (cnblogs.com)

       博主写的第一个assertion是X propagate。简单描述一下就是验证一下RTL给的信号,它们的值不可以是X态。

        在写代码for循环的时候,以传统的c++的思想,在SystemVerilog中assertion里将for循环写为:

for(int i = 0; i < 6; i++) begin

end

        编译后报错为:SystemVerilog keyword 'int' is not ecpected to be used in this context

        在百度试过了多种方法,包括但不仅限于将i定义在module外面仍然编译不通过之后,不得不去请教我的leader...(感觉自己太菜了,因为这仅仅只是一个定义的问题)

        结果是因为在assertion中不可以使用int定义,而应该用genvar,正确的代码为:

genvar i;

for(i = 0; i < 6; i++) begin

end

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值