System Verilog Assertion是非常好的验证方法,通过SVA可以显式描述需要验证的电路逻辑,并且仿真工具可以在仿真的过程中自动输出波形出错信息,从而替代传统的看波形调试方法,提高前端设计验证效率。

RTL代码结构

`ifdef SVA
module m_sva(input wire signal);property p1;expression;endpropertya: assert property(p1);
endmdule
bind m m_sva m_sva_inst(signal);
`endif

主要断言语法

a: assert property(@(posedge clk) red_main && $past( red_main ) |-> $past( yellow_main, 2 ))

@(posedge clk): 在时钟上升沿时验证断言,验证上升沿的前一个周期信号值  
$past(signal, n): signal信号往前数n个周期  
signal_a |-> signal_b: signal_a与signal_b信号的关系,signal_a可以是组合逻辑,结果为真时判断与signal_b的关系

property e2;@ ( posedge clk) (!reset && $countones({ce0_N,ce1_N,ce2_N,ce3_N})==3) |-> ##1 $countones({ce0_N,ce1_N,ce2_N,ce3_N})==4;
endproperty

$countones(signal): 数signal信号值为1的比特位数

property e1;@(posedge clk) ( ($rose( ce0_N )) || ($rose( ce1_N )) || ($rose( ce2_N )) || ($rose( ce3_N )) ) |-> (b_ce_idle) [*1:$] ##1 adxStrb;
endproperty

$rose(signal): 断言信号处在上升沿

$fell(): 断言信号处在下降沿

$stable(): 断言信号不变化
##[m, n]: 在[m, n]的时间窗内信号变化,如果`n=$`,代表没有上界

仿真命令

vcs命令中,加入-sverilog使得可以编译SystemVerilog语法,加入+define+SVA定义宏变量,$VCS_HOME/packages/sva目录下为assert_*模块。

rm -rf simv* csrc *.vpd *.log
vcs -sverilog \
+define+ASSERT_ON+SVA \
-y $VCS_HOME/packages/sva +libext+.v \
+incdir+$VCS_HOME/packages/sva \
traffic.v
./simv -l run.log

转载于:https://www.cnblogs.com/QifanHu/p/5199012.html

System Verilog Assertion for debug相关推荐

  1. 【数字设计验证】System Verilog(sv)稍微进阶的笔记(一)

    文章目录 1. EDA工具对代码的处理与输出 1.1 Compile 1.2 Simulation 1.3 Synthesis 2. System Verilog Coding Guide 2.1 状 ...

  2. sv_labs学习笔记——sv_lab4(System Verilog)

    sv_labs学习笔记--sv_lab4(System Verilog) lab4 OOP encapsulation 实验概述 任务代码解析 Packat实现与理解 语法点解析 randomize( ...

  3. 我的 System Verilog 学习记录(1)

    引言 技多不压身,准备开始学一些 System Verilog 的东西,充实一下自己,这个专栏的博客就记录学习.找资源的一个过程,希望可以给后来者一些借鉴吧,IC找工作的都加把油! 本文是准备先简单介 ...

  4. system verilog 三段式状态机和interface

    1.结构体和C语言类似,system verilog定义的package,也是一个sv文件,需要被工程当作文件一样添加.如果是inclue的文件,要在工程中设置搜索路径,否则在引用时要用相对工程启动文 ...

  5. crc生成多项式怎么算_利用system Verilog生成任意CRC多项式

    IC君的第43篇原创文章 之前有一篇文章讲了CRC串行和并行电路的实现:CRC算法的硬件电路实现:串行电路和并行电路. 有做过类似设计的同学问:有没有办法轻松愉快地生成任意CRC多项式的电路?我们在设 ...

  6. System Verilog学习小结

    System Verilog课程小结 第一周 问题1:设计人员和验证人员他们的协作关系体现在哪些地方? 1.设计人员和验证人员都需要围绕功能描述文档开展工作 2.设计只有经过充分量化验证,才有信心去流 ...

  7. (149)System Verilog接口(interface)连线待测模块

    (149)System Verilog接口(interface)连线待测模块 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog接口(in ...

  8. (150)System Verilog仿真结束机制

    (150)System Verilog仿真结束机制 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog仿真结束机制 5)结语 1.2 FP ...

  9. (140)System Verilog替代交叉覆盖率

    (140)System Verilog替代交叉覆盖率 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog替代交叉覆盖率 5)结语 1.2 ...

最新文章

  1. ubuntu 下非交互式执行远程shell命令
  2. spring cloud-zuul的Filter详解
  3. 读书笔记之《Windows内核原理与实现》
  4. 修改数据,如何将原数据带到输入框
  5. python字符串中某个字符修改_Python中修改字符串的四种方法
  6. 光纤传感器实验模块_飞秒激光制备异质光纤光栅的温度应变双参数传感器
  7. 小小涉及OpenFeign原理:Could not extract response: no suitable HttpMessageConverter found for response type
  8. spring data jpa 分页查询
  9. 最新SparkSQL 学习路径. pdf(廖雪峰团队研发)
  10. stage3图书管理系统服务器部署
  11. 基于NanoPi3(三星S5P6818)的kernel移植(二)
  12. 如何恢复RAW格式移动硬盘的数据
  13. 【总结】信息安全工程师第二版-第1章 网络信息安全概述-03
  14. cad重新加载php命令,cad撤回命令是什么
  15. ISCC 2022 wp
  16. 基于模糊控制的十字路口交通红绿灯控制matlab仿真
  17. ROS2 基础概念 节点
  18. html中 a链接的默认样式,超链接的默认样式
  19. 使用GDI+实现动态设置分级断点值
  20. 华云数据出席“云网芯安密屏”讨论会:加快数字化转型 推动湖北信创产业快速发展

热门文章

  1. 分享一个文件上传工具类
  2. [笔记][原创]Verilog HDL语法分析笔记
  3. C++ 中 new 操作符内幕:new operator、operator new、placement new
  4. Spring Boot -Shiro配置多Realm 1
  5. Linux tee的花式用法和pee
  6. 直击3.15 安防行业如何维护消费者权益
  7. postgresql9.5 run 文件linux安装后配置成开机服务
  8. struts2.1.6教程二、struts.xml配置及例程
  9. js两个小技巧【看到了就记录一下】
  10. Repeater的嵌套