数字ic day2(1)

逻辑仿真工具的并发操作特性

线程:fork...join|join_any|join_none

wait fork

disable fork

SystemVerilog 并发编程

只有begin...end语句是串行执行的(除了里面的非阻塞赋值语句),其他语句块都是并行执行; 

一个线程执行时,只有遇到wait、#、@语句时才会停止。

当一个线程执行时,其它所有的线程进入队列等待

        READY         -表示在当前仿真时间内执行的线程

        WAIT            -表示语句被阻塞,当遇到等待条件后可以继续执行

当正在执行的线程进入WAIT状态时,线程进入WAIT序列,下一个READY状态的线程继续执行

当所有的线程进入WAIT状态时,仿真时间步进到下一个仿真周期

语句集合

Verilog典型并发语句集合

        initial语句:在整个仿真时间内只执行一次,initial语句都是并发的

        always语句:可以对组合电路和时序电路进行建模,always语句都是并发的

        assign语句:可以对组合电路进行建模,assign语句都是并发的

        begin...end:语句从上往下,顺序执行

        fork...join:语句并行执行,与语句顺序无关,所有子线程共享父线程的变量

fork...join|join_any|join_none区别

fork

        statement 1;

        statement 2;

join|join_any|join_none

        statement3;

join          -子线程statement1和statement2并行执行,并且必须在statement3执行之前完成。

               -即所有子线程执行完成后,父线程才会继续执行

join_any  -子线程statement1和statement2并行执行,在statement3执行之前,有一个子线程完成即可

               -即任何一个子线程执行完成后,父线程继续执行,当父线程执行遇到阻塞语句(或执行完)时,子线程才继续执行

join_none  -线程statement3执行,所有子线程与父线程并行执行

wait fork

        等待所有的fork并发进程执行完成

        在执行父进程之前,确保所有的fork并发子线程执行完成

        等待所有的fork并发子线程全部执行完成

disable fork

        停止fork所有并发子线程的执行,调用task中的disable fork也会停止,当前的子进程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值