【Verilog-41】Verilog中強度strength的用法


除了邏輯值外,net類型的變量還可以定義強度,因而可以更精確的建模。net的強度來自於動態net驅動器的強度。在開關級仿真時,當net由多個驅動器驅動且其值互相矛盾時,可常用強度的概念來描述這種邏輯行為。
(strength0, strength1)
(strength1, strength0)
(strength0)------------pulldown primitives only
(strength1)------------pullup primitives only
(chargestrength)------trireg nets only
strength0 = {supply0/strong0/pull0/weak0/highz0}強度由左至右依次減弱
strength1 = {supply1/strong1/pull1/weak1/highz1}強度由左至右依次減弱
chargestrength = {large/medium/small}

用法:
1.關鍵詞strength0和strength1用於定義net的驅動強度。其中,strength表示強度,與緊跟着的0和1連起來分別表示輸出邏輯值為0和1時的強度。
2.在強度聲明中可選擇不同的強度關鍵詞來代替strength,但(highz0, highz1)和(highz1, highz0)這兩種強度定義是不允許的,在pullup和pulldown門的強度聲明中highz0和highz1是不允許的。
3.默認的強度定義為strong0和strong1,但是有下列例外:
對於pullup和pulldown門,默認的強度為pull1和pull0;
對於trireg的net,默認的強度為medium。
強度定義為supply0和supply1的net,總是能夠提供強度。
4.在仿真期間,net的強度來自於net上的主驅動強度(即具有最大強度值得實例或連續賦值語句)。如果net未被驅動,它會呈現高阻值,但是以下情況例外:
tri0和tri1類型的net分別具有邏輯值0和1,並為pull強度;
trireg類型的net保持它們最后的驅動值。
強度為supply0和supply1的nets分別具有邏輯值0和1,並能提供驅動能力。
5.強度值有強弱順序,可從supply(最強)依次減弱並排列到highz(最弱)。當需要確定net的實際邏輯值和強度時,或者當net由多個驅動器驅動而且驅動相互間出現沖突時,出現沖突的兩個強度值在強弱順序表中的相對位置就會對該net的真實邏輯值起作用。
6.強度時不可綜合的。
7.可以在$display和$monitor等中用特定的格式控制符%V顯示其強度值。
例子:

assign (weak1, weak0) f = a + b;
trireg (large) c1,c2;
and (strong1, weak0) u1(x, y, z);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM