Systemverilog中@和wait区别
用来触发事件时,使用->;用来等待事件使用@或者wait。那么@和wait有什么区别呢?
在Verilog中当一个线程在一个事件上发生阻塞的同时,正好另一个线程触发了这个事件,则竞争就出现了。如果触发线程先于阻塞线程,则触发无效(触发是一个零宽度的脉冲)。
解决方法:
Systemverilog 引入了triggered()函数,用于检测某个事件是否已被触发过,包括正在触发。线程可以等待这个结果,而不用在@操作符上阻塞。
例子:
event a; //使用关键字event来声明一个事件a
initial begin#1;->a;
end
initial begin#1;@a; //第一个进程在1ns后触发了事件a,那么第二个进程在1ns的时候等待a,有可能等的到,有可能等不到,产生竞争
end
initial begin#1;wait(a.triggered); //使用wait来等待事件a,这种方式是一定可以等到a的,这是和使用@来等待的区别
end
因此wait像是增强版的@,用来解决同一时刻的竞争冒险问题。
Systemverilog中@和wait区别相关推荐
- Verilog中reg和SystemVerilog中logic的区别
关于reg和logic的区别,在SystemVerilog验证测试平台编写指南中有所提出,如下所示: SystemVerilog对经典的reg数据类型进行了改进,使得他除了作为一个变量以外,还可以被连 ...
- Systemverilog中static、automatic区别
一.静态变量.动态变量说明:Systemverilog绿皮书P60.补充说明如下: Verilog早期版本仅有静态生命周期的概念,同一个function或者task无论你调用多少次内部的变量都是分配的 ...
- SystemVerilog中logic var reg wire的区别
在Verilog中,所有的线网和变量都是使用四态值,因此没必要也不能清晰的区分信号类型. 为了增强灵活性,SystemVerilog中定义信号同时具有类型和数据类型两个属性. 类型指示信号是属于线网( ...
- SystemVerilog中的Events事件
文章目录 前言 一.事件(Events) 二.@操作符和wait()操作的区别 三.wait_order 总结 前言 本文首先介绍SystemVerilog中的Events:其次记录了@操作符和wai ...
- SystemVerilog中的Program的学习笔记
1.SystemVerilog中的Program的作用? 将验证部分与设计部分进行隔离(实现方式就是将软件验证部分放置program中) 2.SystemVerilog中的Program结束方式? P ...
- SystemVerilog中$sformat和$formatf的用法
systemverilog中sformat和sformatf的用法有哪些? 1.基本使用方法 首先查看一下这两个函数什么含义.看下这段代码: string inside_string; string ...
- MyBatis中#{}和${}的区别
------------------------siwuxie095 MyBatis 中 #{} 和 ${} 的区别 1.在 MyBatis 的映射配置文件中,动态传递参数有两种方式: (1)#{} ...
- Mybatis 中$与#的区别
1 #是将传入的值当做字符串的形式,eg:select id,name,age from student where id =#{id},当前端把id值1,传入到后台的时候,就相当于 select i ...
- mybatis 中#与$的区别
2019独角兽企业重金招聘Python工程师标准>>> MyBatis中#和$的区别 1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #u ...
- js中!和!!的区别及用法
js中!和!!的区别及用法 js中!的用法是比较灵活的,它除了做逻辑运算常常会用!做类型判断,可以用!与上对象来求得一个布尔值, 1.!可将变量转换成boolean类型,null.undefined和 ...
最新文章
- 前端一HTML:十四: important
- spring boot自动配置之jdbc
- unrecognized font family iconfont2
- PHP底层运行原理初探
- 【redismemcached】数据类型、内存管理、数据持久化和集群管理的区别
- java部分服务出现异常_Java web service 异常
- Proguard使用最新,最全教程,亲自试验
- 北京,上海 商汤研究院基础视觉组正式员工(校招、社招)实习生长期招聘...
- char,nchar,varchar与nvarchar区别
- 创建一个delete触发器_基于 Django 信号机制实现类似触发器的效果
- 对称数java算法_对称数的简单实现
- 公司绝不会告诉你的20大秘密 转载
- 第三章 SQL知识点总结
- cannot+connect+mysql_mysqlnd cannot connect to MySQL 4.1+ using the old insecure
- 在用户控件中动态添加控件及事件
- matlab怎么求过渡矩阵,求过渡矩阵的方法
- 网页如何开启Gzip压缩
- 英文网页翻译中文失败、QQ文件打不开、QQ系统消息打不开等
- sprintf和fprintf
- 实现将exe格式的软件重新打包为msi格式的静默安装软件,方便域控使用策略分发软件