【SV】SystemVerilog语法总结 2.0

本文详细介绍了SystemVerilog中的内部通信机制,包括event、semaphore和mailbox的使用,同时深入探讨了SystemVerilog的随机化功能,为设计者提供了关键的仿真和验证工具。
摘要由CSDN通过智能技术生成

内部通信机制 event semaphore mailbox

事件event:
    同步线程
    event是一个同步对象的句柄,可以当做参数传递给子程序
        不需要声明为全局变量,就可以将event作为共享资源使用
    触发一个事件的操作符:->和->>
    等待一个事件被触发的操作符:@和wait();
    triggered函数用于检查一个事件是否被触发过,返回值是一个状态
    wait(event.triggered)(一个时间点)
        如果在当前仿真时间内,,事件曾被触发过,语句不会被阻塞
        否则,wait(event.triggered)语句会一直等待事件被触发
    事件event:语句阻塞在事件的边沿
        Verilog 语言中使用event同步线程,事件持续时间是事件触发的那个时间点
        触发事件操作符:->(不会阻塞线程的执行)
        等待事件被触发:@(边沿敏感)
    事件event:等待一个事件触发
        @event 是边沿敏感
        wait(event.triggered) 是电平敏感
    在两个线程之间通过事件同步时必须注意
        如果在循环中使用wait(event.triggered),必须要保证在等待下一次循环之前更新仿真时间
        否则,代码将进入0延迟的循环,将一次又一次的在单一事件触发时进行等待
    阻塞事件触发
        使用->操作符
        触发一个事件不会阻塞当前等待该事件的所有进程
        触发事件的行为边沿敏感信号
    非阻塞事件触发
        使用->>操作符
        在事件发生的时间点创建一个非阻塞赋值
        在仿真时间的非阻塞区更新事件
    事件序列:wait_order()
         当指定的一系列事件按照从左到右的顺序发生时,wait_order进程开始执行
         如果指定的一系列事件是乱序执行的,wait_order进程将不会执行
    事件变量
         合并变量
             event是一个独立的数据类型,可以进行赋值
             当把一个事件赋值给另一个事件时,原事件与目的事件共享原事件
             当把一个事件赋值给另一个事件时,两个事件合并为一个事件
             当事件合并时&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值