用来触发事件时,使用->;用来等待事件使用@或者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区别相关推荐

  1. Verilog中reg和SystemVerilog中logic的区别

    关于reg和logic的区别,在SystemVerilog验证测试平台编写指南中有所提出,如下所示: SystemVerilog对经典的reg数据类型进行了改进,使得他除了作为一个变量以外,还可以被连 ...

  2. Systemverilog中static、automatic区别

    一.静态变量.动态变量说明:Systemverilog绿皮书P60.补充说明如下: Verilog早期版本仅有静态生命周期的概念,同一个function或者task无论你调用多少次内部的变量都是分配的 ...

  3. SystemVerilog中logic var reg wire的区别

    在Verilog中,所有的线网和变量都是使用四态值,因此没必要也不能清晰的区分信号类型. 为了增强灵活性,SystemVerilog中定义信号同时具有类型和数据类型两个属性. 类型指示信号是属于线网( ...

  4. SystemVerilog中的Events事件

    文章目录 前言 一.事件(Events) 二.@操作符和wait()操作的区别 三.wait_order 总结 前言 本文首先介绍SystemVerilog中的Events:其次记录了@操作符和wai ...

  5. SystemVerilog中的Program的学习笔记

    1.SystemVerilog中的Program的作用? 将验证部分与设计部分进行隔离(实现方式就是将软件验证部分放置program中) 2.SystemVerilog中的Program结束方式? P ...

  6. SystemVerilog中$sformat和$formatf的用法

    systemverilog中sformat和sformatf的用法有哪些? 1.基本使用方法 首先查看一下这两个函数什么含义.看下这段代码: string inside_string; string ...

  7. MyBatis中#{}和${}的区别

    ------------------------siwuxie095 MyBatis 中 #{} 和 ${} 的区别 1.在 MyBatis 的映射配置文件中,动态传递参数有两种方式: (1)#{} ...

  8. Mybatis 中$与#的区别

    1 #是将传入的值当做字符串的形式,eg:select id,name,age from student where id =#{id},当前端把id值1,传入到后台的时候,就相当于 select i ...

  9. mybatis 中#与$的区别

    2019独角兽企业重金招聘Python工程师标准>>> MyBatis中#和$的区别 1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #u ...

  10. js中!和!!的区别及用法

    js中!和!!的区别及用法 js中!的用法是比较灵活的,它除了做逻辑运算常常会用!做类型判断,可以用!与上对象来求得一个布尔值, 1.!可将变量转换成boolean类型,null.undefined和 ...

最新文章

  1. 前端一HTML:十四: important
  2. spring boot自动配置之jdbc
  3. unrecognized font family iconfont2
  4. PHP底层运行原理初探
  5. 【redismemcached】数据类型、内存管理、数据持久化和集群管理的区别
  6. java部分服务出现异常_Java web service 异常
  7. Proguard使用最新,最全教程,亲自试验
  8. 北京,上海 商汤研究院基础视觉组正式员工(校招、社招)实习生长期招聘...
  9. char,nchar,varchar与nvarchar区别
  10. 创建一个delete触发器_基于 Django 信号机制实现类似触发器的效果
  11. 对称数java算法_对称数的简单实现
  12. 公司绝不会告诉你的20大秘密 转载
  13. 第三章 SQL知识点总结
  14. cannot+connect+mysql_mysqlnd cannot connect to MySQL 4.1+ using the old insecure
  15. 在用户控件中动态添加控件及事件
  16. matlab怎么求过渡矩阵,求过渡矩阵的方法
  17. 网页如何开启Gzip压缩
  18. 英文网页翻译中文失败、QQ文件打不开、QQ系统消息打不开等
  19. sprintf和fprintf
  20. 实现将exe格式的软件重新打包为msi格式的静默安装软件,方便域控使用策略分发软件

热门文章

  1. 1196:踩方格(递推)
  2. vmware workstation 使用桥接网络 上网
  3. 吹气球--记忆化搜索
  4. linux挂镜像文件作用是什么,linux下挂载iso镜像文件,linux挂载iso镜像文件
  5. NLP 语义相似度常用计算方法总结
  6. cdr 2021 卸载
  7. qpsk相点 matlab,MATLAB-QPSK在AWGN信道下的仿真
  8. 控制反转和依赖注入的个人理解
  9. 李小铭计算机专业应聘书作文,应聘申请书英语作文
  10. python爬取拉勾网_使用requests爬取拉勾网python职位数据