system verilog基础知识总结与复习(线程及线程间的通信)

本文总结了System Verilog中的线程概念,包括fork join、fork join_any和fork join_none的区别,以及wait fork和disable fork的用法。重点讨论了线程间通信的三种方式:事件(event)用于同步,旗语(semaphore)控制资源访问,信箱(mailbox)实现组件间通信。通过示例详细阐述了每种通信机制的使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、什么是线程?

        线程是指程序能够独立运行的最小单位,在verilog中有两种形式,分别为begin end 和fork join,SV在这基础上新增了两种类型,为fork join_any和fork join_none。

二、fork join、 fork join_any和fork join_none的区别?

        fork join:块内语句并行执行,且需要每一个语句块都执行完毕才能继续往下执行。

        fork join_any:块内语句并行执行,其中有任何一个语句块执行完毕就会执行下面的内容,不会等 fork join_any中所有语句执行完才往下执行。

        fork join_none:不会等任何一个语句块执行完毕就会继续续往下执行,类似于“点火”。

三、wait fork 与 disable fork

        wait fork:当使用fork join_none时,有可能出现这一种情况是initial begin  end里语句都执行万了,仿真都退出了,但是fork join_none里的进程还没有执行完,这个时候可以在等其他程序执行完了的最后加一个wait fork来等待fork join_none里面的线程执行完毕,如下所示:

task ....();

    fork 

        ......;      //线程A


        ......;      //线程B


        ......;     //线程C

    join_none

    ......;         //其它任务
    
    ......;

    wait fork;

endtask

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值