2016-05-17 84 views
0

是否允許在系統verilog中實例化always_comb塊中的模塊?是否允許在系統verilog中實例化always_comb塊內的模塊?

always_comb 
begin 
    OR OR1 (.Y(A), .A(Z), 
end 
+1

如果您確實想使用條件硬件,請將您的模塊轉換爲任務或功能並有條件地調用它。它增加了您的硬件資源,但會滿足您的要求。 –

+2

有沒有什麼特別的理由讓你嘗試這個而不僅僅是實例化呢? – Morgan

回答

5

首先,您的代碼不完整。顯然,一個雙輸入或門需要三個連接。

用Verilog,當你實例一個模塊,這意味着你要添加額外的硬件板。

該硬件必須加入仿真開始之前(即在編譯時間)。在這裏,您不能在每個時鐘脈衝添加/刪除硬件。

一旦實例化,模塊將被執行/檢查每個時間戳的模擬,直到結束。因此要執行任何模塊,只需實例化它,爲其提供所需的輸入(並在必要時將always塊添加到子模塊本身中)。

// Simply instantiate module 
OR OR1 (.Y(A), .A(Z), .B(M)); 

無論哪種方式,你可以一個組合模塊添加到當前模塊本身:從Verilog Module InstantiationInstantiating Modules and PrimitivesStructural Modelling鏈接獲得的實例

// Directly use ORing 
always_comb begin 
    A = Z | M; 
end 

更多信息。