目录
Verilog与C++、Java等高级语言最显著的不同点就在于Verilog的并行执行性,这些活动都是并发的。所以对于测试而言,对这些活动的测试也需要并行测试。
一般将大多数的语句块模拟成事务处理器,并运行在各自的线程里。
1. 线程
线程是操作系统能够进行运算和调度的最小单位,允许并发执行,允许共享资源。
1.1. 创建线程
在Verilog中几乎所有的内容都是并行执行的,程序块中begin...end中的各线程是串行、fork...join中的线程则是并行的,而在SV中针对不同的线程并行执行方式,又引入了fork...join_none和fork...join_any。
fork…join
这是Verilog中的程序块,似乎在Verilog中较少用到,其含义是
fork…join内部的线程全部并行执行,当且仅当fork…join内部所有的线程执行完毕后,才执行join后面的线程
以下图为例,假设执行线程statement1的时间为1ns,执行线程
本文介绍了SystemVerilog中的线程概念,包括fork...join、fork...join_any和fork...join_none的用法。接着讨论了线程同步的重要性,并详细阐述了线程同步的方法,如事件(event)、信号量(semaphore)和信箱(mailbox),通过实例展示了如何在并发执行环境中确保线程安全和数据一致性。
订阅专栏 解锁全文
2624

被折叠的 条评论
为什么被折叠?



