systemverilog验证学习笔记

更新时间:2023-05-25 02:25:32 阅读: 评论:0

=阻塞串行
<=非阻塞并行
1)时序逻辑----使用非阻塞赋值
2)锁存器----使用非阻塞赋值
小丽花3)用always块生成的组合逻辑----用阻塞赋值
4)在同一个always块中既有时序逻辑又有组合逻辑---
  用非阻塞赋值
5)在同一个always块中不要既用阻塞赋值又用非阻塞赋值
6)不要在一个以上的always块中对同一个变量赋值
7)用$strobe显示用非阻塞赋值指定的变量值
8)不要用 #0 过程性赋值Modport将信号分组并指明方向
函数不能消耗时间,不能有#100@(podge clk)wait之类的阻塞语句
向晚意不适全诗Interface  arb_if(input bit clk);月亮变化
  Logic [1:0] a,b;
  Logic rst;   
Modport  test(output a,rst,
Input b,clk);
Endinterface   
Module arb(st arbif);
…………
Endmodule
数组定位
重在参与Int tq[$],d[]=’{9,1,8,3,4,4};
Tq=d.find_index(x) with (item>3);    //{0,2,4,5}得到的是脚标
Tq=d.find with (item>3);            //{9,8,4,4}
数组求和
Int count,total;
Count=d.sum with(item>7);    //2:{9,8}  返回结果为元素与7比较表达式返回1为真或者零这里面返回 ,{1,0,1,0,0,0}求和得2
Total=d.sum with ((item>7)*item) ;  //{1,0,1,0,0,0}和对应元素相乘求和得17=9加8
数组排序
d.rever();  //逆序
胡萝卜猪肉饺子
d.sort();    //从小到大春天衣服
d.rsotr();    //从大到小
d.shuffle(); 
时钟块
指定同步信号相对于时钟的时序
Interface  arb_if(input bit clk);
  Logic [1:0] a,b;
  Logic rst;   
Clocking cb @(podge clk);
  Output a;
  Input b;
急递铺Modport  test(output rst,
Clocking cb);
Endinterface   
Module arb(st arbif);
Initial begin
A<=0;
@arbif.cb;
$dispiay(………..)
Endmodule
断言
A1:asrt(==2’b01)
El $error(“grant not asrted”);
四种有输出消息的函数可在断言内部使用
$info
$waring
$error
$fatal
湖北返工要验证这样一个属性:“当信号a在某一个时钟周期为高电平时,那么在接下来的2~4个时钟周期内,信号b应该为高电平”。用Verilog语言描述这样一个属性需要一大段代码,而用SVA描述就只需要几行代码。下面的代码为SVA。 
例1:
property a2b_p;  @(podge sclk) $ro(a) |-> [2:4] $ro(b); endproperty
a2b_a: asrt property(a2b_p); a2b_c: cover property(a2b_p);
并发断言
并发断言的计算基于时钟周期,在时钟边沿根据变量的采样值计算表达式。它可以放在过程块(procedural block)、模块(module)、接口(interface)或一个程序块(program)的定义中。并发断言可以在静态(形式化)验证工具和动态(仿真)验证工具中使用。上面的例子就是并发断言
SVA提供了3个内嵌函数,用于检查信号的边沿变化。
$ro(布尔表达式或信号名)

本文发布于:2023-05-25 02:25:32,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/927537.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:赋值   阻塞   信号   验证   函数   断言   时钟
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图