systemverilog验证学习笔记

systemverilog验证学习笔记

ID:37713775

大小:49.29 KB

页数:19页

时间:2019-05-29

systemverilog验证学习笔记_第1页
systemverilog验证学习笔记_第2页
systemverilog验证学习笔记_第3页
systemverilog验证学习笔记_第4页
systemverilog验证学习笔记_第5页
资源描述:

《systemverilog验证学习笔记》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、=阻塞串行<=非阻塞并行1)时序逻辑----使用非阻塞赋值2)锁存器----使用非阻塞赋值3)用always块生成的组合逻辑----用阻塞赋值4)在同一个always块中既有时序逻辑又有组合逻辑---用非阻塞赋值5)在同一个always块中不要既用阻塞赋值又用非阻塞赋值6)不要在一个以上的always块中对同一个变量赋值7)用$strobe显示用非阻塞赋值指定的变量值8)不要用#0过程性赋值Modport将信号分组并指明方向函数不能消耗时间,不能有#100@(posedgeclk)wait之类的阻塞语句Interfacearb_if(inputbi

2、tclk);Logic[1:0]a,b;Logicrst;Modporttest(outputa,rst,Inputb,clk);EndinterfaceModulearb(arb_if.testarbif);…………Endmodule数组定位Inttq[$],d[]=’{9,1,8,3,4,4};Tq=d.find_index(x)with(item>3);//{0,2,4,5}得到的是脚标Tq=d.findwith(item>3);//{9,8,4,4}数组求和Intcount,total;Count=d.sumwith(item>7);//2

3、:{9,8}返回结果为元素与7比较表达式返回1为真或者零这里面返回,{1,0,1,0,0,0}求和得2Total=d.sumwith((item>7)*item);//{1,0,1,0,0,0}和对应元素相乘求和得17=9加8数组排序d.reverse();//逆序d.sort();//从小到大d.rsotr();//从大到小d.shuffle();时钟块指定同步信号相对于时钟的时序Interfacearb_if(inputbitclk);Logic[1:0]a,b;Logicrst;Clockingcb@(posedgeclk);Outputa;

4、Inputb;Modporttest(outputrst,Clockingcb);EndinterfaceModulearb(arb_if.testarbif);InitialbeginArbif.cb.a<=0;@arbif.cb;$dispiay(………..)Endmodule断言A1:assert(bus.cb.a==2’b01)Else$error(“grantnotasserted”);四种有输出消息的函数可在断言内部使用$info$waring$error$fatal要验证这样一个属性:“当信号a在某一个时钟周期为高电平时,那么在接下来

5、的2~4个时钟周期内,信号b应该为高电平”。用Verilog语言描述这样一个属性需要一大段代码,而用SVA描述就只需要几行代码。下面的代码为SVA。例1:propertya2b_p;@(posedgesclk)$rose(a)

6、->[2:4]$rose(b);endpropertya2b_a:assertproperty(a2b_p);a2b_c:coverproperty(a2b_p);并发断言并发断言的计算基于时钟周期,在时钟边沿根据变量的采样值计算表达式。它可以放在过程块(procedural block)、模块(module)、接口(int

7、erface)或一个程序块(program)的定义中。并发断言可以在静态(形式化)验证工具和动态(仿真)验证工具中使用。上面的例子就是并发断言SVA提供了3个内嵌函数,用于检查信号的边沿变化。$rose(布尔表达式或信号名)当信号/表达式的最低位由0或x变为1时返回真值。$fell(布尔表达式或信号名)当信号/表达式的最低位由1变为0或x时返回真值。$stable(布尔表达式或信号名)当信号/表达式的最低位不发生变化时返回真值。断言的建立过程“编写布尔表达式—>编写序列(sequence)->编写属性(property)—>编写断言(assertp

8、roperty)和覆盖语句(coverproperty)”唯一性和优先级决定语句在Verilog中,如果没有遵循严格的编码风格,它的if-else和case语句会在RTL仿真和RTL综合间具有不一致的结果。如果没有正确使用full_case和parallel_case综合指令还会引起一些其它的错误。SystemVerilog能够显式地指明什么时候一条决定语句的分支是唯一的,或者什么时候需要计算优先级。我们可以在if或case关键字之前使用unique或requires关键字。这些关键字可以向仿真器、综合编译器、以及其它工具指示我们期望的硬件类型。工

9、具使用这些信息来检查if或case语句是否正确建模了期望的逻辑。例如,如果使用unique限定了一个决定语句,那么在不希望

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。