当前位置: 首页 > news >正文

SystemVerilog Assertions应用指南 第一章(1.28章节 内建的系统函数)

        SVA提供了几个内建的函数来检查一些最常用的设计条件。
        $onehot(expression)—检验表达式满足“one-hot”,换句话说,就是在任意给定的时钟沿,表达式只有一位为高。
        $onehot0( expression)—检验表达式满足“ zero one-hot”,换句话说,就是在任意给定的时钟沿,表达式只有一位为高或者没有任何位为高。
        $isunknown( expression)—检验表达式的任何位是否是Ⅹ或者Z。
        $countones( expression)—计算向量中为高的位的数量。
        
断言语句a33a检验向量“ state”是“one-hot”。断言语句a33b检验向量“ state”是“ zero one-hot”,断言语句a33c检验向量“bus”是否有任何位为X或Z。断言语句a33d检验向量“bus”中等于1的位的个数大于1。
 

module routines;logic clk;logic [3:0] state;
logic [4:0] bus;
integer i;initial $vcdpluson();initial
begin
clk = 1'b0; state = 4'd0; 
@(posedge clk);for(i=0; i<3; i++)
beginstate = i*2;bus = $random();@(posedge clk);
endfor(i=0; i<3; i++)
beginstate = $random() % 16;bus = 8'dz;@(posedge clk);
endbus = 4'd10;
repeat(2) @(posedge clk);$finish();
end// builtin system functionsa33a: assert property(@(posedge clk) $onehot(state));
a33b: assert property(@(posedge clk) $onehot0(state));
a33c: assert property(@(posedge clk) $isunknown(bus));
a33d: assert property(@(posedge clk) $countones(bus) > 1);initial forever clk = #25 ~ clk;endmodule

        图1-35显示了上述断言在模拟中的响应。表1-16总结了每个断言的状态和向量“ state”和“bus”的采样值。注意,断言a33a在时钟周期2失败,因为所有位都为零。“one-hot”要求在任何时钟上升沿都只有一位为高。另一方面,断言a33b成功因为它检查“ zero one-hot”,而对于这种构造,所有位都为零是合法的a33a和a3b都在时钟周期5,6,7,8失败,因为有超过一位为高。断言a33c在任何时候向量“bus”的值不为X或Z时失败。它在时钟周期5,6,7成功,因为向量的值为Z。断言a33d在时钟周期2,3,5,6,7失败,因为值为高的位的个数没超过1。断言a33d在时钟周期4,8成功,因为向量“bus”在这两个时刻都有两位为高。

http://www.lryc.cn/news/193253.html

相关文章:

  • 正则表达式(自用)
  • 大厂真题:【模拟】OPPO2023秋招提前批-小欧数组求和
  • Python括号匹配问题
  • 微信小程序备案内容常见问题汇总
  • 无人机新手防炸飞行技巧
  • webrtc opus 音频编码支持SILK和CELT模式
  • 掌握Python爬虫实现网站关键词扩展提升曝光率
  • ajax实现原理
  • 图G的拉普拉斯矩阵为什么由L=D-A定义
  • 实习项目遇到的bug
  • python selenium下载一个合适的chromedriver.exe(稳定版本)
  • RabbitMQ从0到1完整学习笔记一:《基础篇》
  • 什么是时间冒泡?
  • Go语言入门心法(三): 接口
  • leetcode:210. 课程表 II
  • [MT8766][Android12] 使用谷歌LPA实现ESIM功能的流程
  • MyBatis-Plus为简化开发而生
  • 【翻译】Efficient Data Loader for Fast Sampling-Based GNN Training on Large Graphs
  • OPUS解码器PLC
  • Rancher 使用指南
  • 百度SEO优化全攻略(提高网站排名的5个方面)
  • 华为云云耀云服务器L实例评测|华为云耀云服务器L实例私有库搭建verdaccio(八)
  • C语言之动态内存管理_柔性数组篇(2)
  • vue基础
  • 访问量突破1W,纪念一下~
  • C# 处理TCP数据的类(服务端)
  • 【Jenkins】调用API构建并钉钉通知
  • Java NIO三大核心组件
  • js数据排序方法(sort)?
  • 若依框架学习笔记_mybatis