SystemVerilog中還有一個final?block
[導(dǎo)讀]相信很多人都知道并且使用過Verilog中的initial語句塊,用來初始化一些變量、持續(xù)生成時鐘和復(fù)位信號以及setvirtualinterface等等。finalblock是在SystemVerilog中引入的一個新概念。final?begin????????$display...
相信很多人都知道并且使用過Verilog中的initial語句塊,用來初始化一些變量、持續(xù)生成時鐘和復(fù)位信號以及set virtual interface等等。
final block是在 System Verilog中引入的一個新概念。
?這兩個順序執(zhí)行的代碼塊之間有一個相似之處,即它們在仿真過程中只執(zhí)行一次。?而對于initial語句塊final語句塊的差異,initial語句塊可以包含一些#延遲或wait語句等消耗時間的進程,而final語句塊不應(yīng)該包含任何此類內(nèi)容。final語句塊就是一個在仿真工具調(diào)用$finish時自動執(zhí)行的一個函數(shù)。?針對final block的這些特性,可以用于在測試用例中打印一些報告或者對用例執(zhí)行結(jié)束后的RTL狀態(tài)或者驗證環(huán)境狀態(tài)做一些檢查。
final block是在 System Verilog中引入的一個新概念。
final?begin
????????$display("Final?Test?Case!");
end
Initial語句塊和final語句塊之間的區(qū)別從命名上可以明顯看出,即Initial語句塊在仿真時間t=0期間開始執(zhí)行,而final語句塊在仿真完成時開始執(zhí)行。?這兩個順序執(zhí)行的代碼塊之間有一個相似之處,即它們在仿真過程中只執(zhí)行一次。?而對于initial語句塊final語句塊的差異,initial語句塊可以包含一些#延遲或wait語句等消耗時間的進程,而final語句塊不應(yīng)該包含任何此類內(nèi)容。final語句塊就是一個在仿真工具調(diào)用$finish時自動執(zhí)行的一個函數(shù)。?針對final block的這些特性,可以用于在測試用例中打印一些報告或者對用例執(zhí)行結(jié)束后的RTL狀態(tài)或者驗證環(huán)境狀態(tài)做一些檢查。