什么是线程
在SV中,可以认为 线程即独立运行的程序。 线程需要被触发,可以结束或者不结束。
举例:
在硬件module中的initial和always,都可以看做独立的线程,它们会在仿真0时刻开始,而选择结束或者不结束。
硬件模型的线程的特点
硬件模型中由于都是always语句块,所以可以看成是多个独立运行的线程,而这些线程会一直占用仿真资源,因为它们并不会结束。
验证环境中线程的特点
initial语句中例化的各个验证环境、验证对象,以及整个验证平台,可以在仿真过程中动态的创建或者销毁,因此验证环境的资源是动态的利用过程。
验证环境中的initial块有两种执行方式:
begin. ..end语句(以顺序方式执行)
fork. . .join语句(以并发方式执行)
并行方式语句有:
fork. . . join(可以开辟多个子线程,即触发多个程序的执行,这些被触发的程序可以被看做fork join语句的子线程)
fork.. . join_any
ork. . . join_none
线程的概念
线程的执行轨迹是呈树状结构的,即任何的线程都应该有父线程。
子线程和父线程的关系:
父线程可以开辟若干个子线程,父线程可以暂停或者终止子线程。
当子线程终止时,父线程可以继续执行。
当父线程终止时,其所开辟的所有子线程都应当会终止。
并行线程
Verilog中的创