systemverilog中創建線程的方法fork join/join_any/join_none以及區別


測試平台通過已有的結構如事件、@事件控制、wait和disable語句、以及新的語言元素(如旗語和信箱),來實現線程間的通信、同步以及線程的控制。

標准的Verilog對語句有兩種分組方式,使用begin...end或fork...join。
begin...end中的語句以順序方式執行,而fork..join中的語句則以並發的方式執行。
后者的不足必須等fork...join內所有語句都執行完后才能繼續塊內后續的處理。因此verilog測試平台中很少用法它。

SystemVerilog引入了兩種新的創建線程的方法,使用fork...join_none和fork..join_any語句,如下所示:
fork...join
父進程會阻塞直到這個分支產生的所有進程結束。
fork...join_any
父進程會阻塞直到這個分支產生的任意一個進程結束。
fork...join_none
父進程會繼續與這個分支產生的所有進程並發執行。在父線程執行一條阻塞語句之前,產生的進程不會啟動執行。
在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM