层次化设计
層次化設計
1、模塊原型
外部的模塊聲明
SystemVerilog允許用戶為被實例化的模塊指定一個原型,這就簡化了編譯過程。原型的定義使用關鍵字extern,extern之后是模塊及其端口是聲明。
模塊的原型定義還有利于對設計存檔。大型的設計可能有許多源文件。當一個文件包含了另一個模塊的實例時,則需要在其他的文件中查找該例化模塊的定義。而模塊定義的原型可以與模塊的實例列在同一個文件里。
外部模塊聲明的可見性
原型對起作用域來說是局部的
可以在設計的任何模塊內使用extern module聲明,但該聲明只在其定義的范圍可見。在任何模塊或接口外部進行的extern module聲明都將在$unit編譯單元聲明域中。不管模塊在設計的那個層次,只要共享 $unit域都可以實例化這個全局可見的模塊。
1.1原型與實際定義
原型與實際定義必須匹配
SystemVerilog要求extern module聲明的端口列表必須與模塊的實際定義嚴格匹配,包括端口順序與端口位數。如果兩種定義的端口列表不匹配,則會造成嚴重的錯誤。
1.2避免端口冗余聲明
為了減少冗余代碼,SystemVerilog提供了便捷的簡寫方式。如果模塊有extern module聲明,則在模塊定義時不需要重復端口的聲明。取而代之的是,在模塊實際定義的端口列表位置上使用.*符號。軟件工具會自動將 . *替換為extern module原型中定義的端口。這樣避免了在外部模塊原型和實際模塊定義中兩次定義同樣的端口列表。
總結
- 上一篇: 微信转账退回对方会收到提示吗?
- 下一篇: DSP笔记