關於generate用法的總結[Verilog]
阿新 • • 發佈:2018-11-05
轉載http://www.cnblogs.com/nanoty/archive/2012/11/13/2768933.html
Abtract
generate語句允許細化時間(Elaboration-time)的選取或者某些語句的重複。這些語句可以包括模組例項引用的語句、連續賦值語句、always語句、initial語句和門級例項引用語句等。細化時間是指模擬開始前的一個階段,此時所有的設計模組已經被連結到一起,並完成層次的引用。
Introduction
1.generate語法
- 定義genvar,作為generate種的迴圈變數。
- generate語句中定義的for語句,必須要有begin,為後續增加標籤做準備。
- begin必須要有名稱,也就是必須要有標籤,因為標籤會作為generate迴圈的例項名稱。
- 可以使用在generate語句中的型別主要有:
- ü module(模組)
- ü UDP(使用者自定義原語)
- ü 門級原語
- ü 連續賦值語句
- ü initial或always語句
- 基本結構如下:
genvar 迴圈變數名;
generate
// generate迴圈語句
// generate 條件語句
// generate 分支語句
// 巢狀的generate語句
endgenerate
下面將就generate常用的幾種情況舉例說明。
2. generate-loop迴圈語句
3.generate-conditional條件語句
generate允許對語句進行條件選擇,即將條件選擇加入到generate中的for迴圈中,只例化條件成立時對應的語句或者module。
4.generate-case分支語句
generate-case分支語句與generate-條件語句類似,只不過將原來的分支語句換做了case語句。
Conclusion
genvar與generate是Verilog 2001才有的,功能非常強大,可以配合條件語句、分支語句等做一些有規律的例化或者賦值等操作,對於提高簡潔程式碼很有幫助,同時也減少了人為的影響。