日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

层次化设计

發(fā)布時間:2023/12/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 层次化设计 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

層次化設(shè)計

1、模塊原型
外部的模塊聲明
SystemVerilog允許用戶為被實例化的模塊指定一個原型,這就簡化了編譯過程。原型的定義使用關(guān)鍵字extern,extern之后是模塊及其端口是聲明。

//使用Verilog-1995代碼風(fēng)格的原型 entern module counter(cnt,d,clock,resetN) //使用Verilog-1995代碼風(fēng)格的原型 extern module counter#(paramter N=15)(output logic[N:0] cnt,input wire[N:0] d,input wire clock,load,resetN);

模塊的原型定義還有利于對設(shè)計存檔。大型的設(shè)計可能有許多源文件。當(dāng)一個文件包含了另一個模塊的實例時,則需要在其他的文件中查找該例化模塊的定義。而模塊定義的原型可以與模塊的實例列在同一個文件里。
外部模塊聲明的可見性
原型對起作用域來說是局部的
可以在設(shè)計的任何模塊內(nèi)使用extern module聲明,但該聲明只在其定義的范圍可見。在任何模塊或接口外部進(jìn)行的extern module聲明都將在$unit編譯單元聲明域中。不管模塊在設(shè)計的那個層次,只要共享 $unit域都可以實例化這個全局可見的模塊。
1.1原型與實際定義
原型與實際定義必須匹配
SystemVerilog要求extern module聲明的端口列表必須與模塊的實際定義嚴(yán)格匹配,包括端口順序與端口位數(shù)。如果兩種定義的端口列表不匹配,則會造成嚴(yán)重的錯誤。
1.2避免端口冗余聲明
為了減少冗余代碼,SystemVerilog提供了便捷的簡寫方式。如果模塊有extern module聲明,則在模塊定義時不需要重復(fù)端口的聲明。取而代之的是,在模塊實際定義的端口列表位置上使用.*符號。軟件工具會自動將 . *替換為extern module原型中定義的端口。這樣避免了在外部模塊原型和實際模塊定義中兩次定義同樣的端口列表。

extern module counter#(paramter N=15)(output logic[N:0] cnt,input wire[N:0] d,input wire clock,load,resetN); module counter(.*)always@(posedge clock,negedge resetN)beginif(!resetN) cnt <= 0;else if(load) cnt <= d;else cnt <= cnt + 1;end endmodule

總結(jié)

以上是生活随笔為你收集整理的层次化设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。