- 何時在Verilog模塊中執行「GENERATE BLOCK」?
- 生成塊內的代碼是否會按順序執行?
執行生成塊
回答
生成塊不能像總是或初始塊一樣執行,它在精化階段進行評估。產生是常用的實例相同模塊或邏輯,多個實例,例如:
module and_mod (input bit a, input bit b, output out);
assign out = a & b;
endmodule
module test #(
parameter NUM_INSTANCES = 3
) (
input bit [NUM_INSTANCES - 1 : 0] a,
input bit [NUM_INSTANCES - 1 : 0] b,
output bit [NUM_INSTANCES - 1 : 0] a_and_b,
output bit [NUM_INSTANCES - 1 : 0] a_or_b,
output bit [NUM_INSTANCES - 1 : 0] a_xor_b
);
genvar i;
generate
for(i = 0; i < NUM_INSTANCES; i++)
begin
//module instance
and_mod and_inst (.a(a[i]),.b(b[i]), .out(a_and_b[i]));
//contionous assignement
assign a_xor_b[i] = a[i]^b[i];
//always block
always @(*)
begin
a_or_b[i] = a[i] | b[i];
end
end
endgenerate
endmodule
這生成塊將計算爲NUM_INSTANCES的代碼副本內生成塊。正如你所看到的,你可以在模塊實例化,賦值,始終/初始塊內生成塊。請注意,and_mod只有1位寬的端口,因此我們需要3個實例來計算和3位寄存器,但是由於生成了塊,您不必在代碼中編寫3個實例。
執行生成塊內部的代碼依賴於代碼本身,賦值將併發執行,內部始終代碼塊將按順序執行,與沒有生成塊相同。您可以測試here。
感謝您的回答。 –
生成塊不用於執行。只是,如果你想在模塊中有多個重複塊,那麼你可以使用生成塊。
生成結構用於有條件或多個實例化生成塊到模型中。
生成塊是一個或多個模塊項目的集合。生成塊可能不包含端口聲明,指定塊或specparam聲明。在生成塊中聲明的參數應視爲localparams。所有其他模塊項目,包括其他生成結構,都可以在生成塊中使用。
生成結構提供參數值影響設計結構的能力。它們還允許將具有重複結構的模塊更簡潔地描述,並使遞歸模塊實例化成爲可能。
生成方案在設計過程中進行評估。他們 不會在模擬時間執行。他們在詳述 時間被評估,並且結果在模擬開始之前被確定。
有關更多詳細信息,請參閱SV1800-2012 LRM中的主題27。
感謝您的回答 –
- 1. 生成的Javascript不執行
- 2. 在運行時生成可執行jar
- 3. 執行Eclipse從命令行生成javadoc
- 4. reverseGeocodeLocation只執行完成塊一次
- 5. 成功{}未在.ajax塊中執行
- 6. 完成塊的不予執行
- 7. jQuery AJAX調用不執行成功塊
- 8. XCode - 塊完成時執行代碼
- 9. 成功塊沒有在$ .ajax()執行
- 10. 塊執行流程,直到腳本執行完成
- 11. C++可執行文件生成器
- 12. g ++爲windows生成可執行文件
- 13. 如何使makefile在生成後執行
- 14. 如何從R執行生成文件
- 15. 使Eclipse生成C++可執行文件
- 16. 執行編譯器生成的移動
- 17. 錯誤生成查詢執行計劃
- 18. 生成器模式VS我的執行
- 19. makefile不生成可執行文件
- 20. 執行hadoop示例,生成jar錯誤
- 21. mvn發佈:執行生成SNAPSHOT?
- 22. 執行VSPackage命令生成後
- 23. 無法執行光標生成語句
- 24. 執行willSelectRowAtIndexPath之後生成EXC_BAD_ADRESS
- 25. py2exe無法生成可執行文件
- 26. Maven的不執行生成資源
- 27. Springfuse - 執行失敗的目標:生成
- 28. 如何執行codeDom生成的代碼?
- 29. 生成最快的可執行文件
- 30. 在bash中執行生成的命令
請顯示與該問題相關的一些代碼,因爲這樣會更容易給出一個好的答案。 –
@MortenZilmer我一直在閱讀關於IEEE-Verilog pdf中的'Generate'。它表示'生成塊在制定時執行,而不是在模擬時執行'。這種說法是什麼意思? –
詳細闡述是指將所有模塊組合成可以在之後進行仿真的一致設計,並且例如根據模塊在使用位置的配置,爲模塊中的參數分配特定值。 –