色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Systemverilog中的Driving Strength講解

冬至子 ? 來源:CSDN ? 作者:谷公子 ? 2023-06-14 15:50 ? 次閱讀

在systemverilog中,net用于對電路中連線進行建模,driving strength(驅動強度)可以讓net變量值的建模更加精確。net變量擁有4態邏輯值(0,1,z,x),它的driving strength有(supply,strong,pull,weak,highz)。net的值由連接到net的driver源(驅動源)決定的,這些driver源可以是連續賦值語句(例如assign),也可以是門級建模原語(例如門級or或and或cmos等)。

在每個Δ仿真周期中,仿真器通過查看net上所有驅動源的邏輯值(logical value)和強度值(strength level)來決定該net的邏輯值和強度值。如果net沒有驅動源,那么它的值將是’z’態。如果net只有1個驅動源,那么它的邏輯值和強度值等于驅動源的值和強度。但是,如果net有多個驅動源,那么需要比較它們的強度值了,強度最大的驅動源將成功驅動net。不過如果有多個強度最大的驅動源,但它們的邏輯值不一樣的話,net的邏輯值將會是’x’態,強度值是最強的strength。

需要注意的是driving strength是用于gate輸出和連續賦值語句輸出的(assign)。對于非net類型的多驅動,仿真工具會報多驅的編譯錯誤。

Systemverilog的driving strength level(驅動強度)有以下幾種:

image.png

上述strength level可以歸為3類:

  • Driving strength:supply,strong,pull和weak
  • Charge storage strength:large,medium和small
  • High impedance:highz

Charge storage strength只用于trireg類型的net。

Driving strength的語法如下:

drive_strength ::=
  ( strength0 , strength1 )
| ( strength1 , strength0 )
| ( strength0 , highz1 )
| ( strength1 , highz0 )
| ( highz0 , strength1 )
| ( highz1 , strength0 )
strength0 ::= supply0 | strong0 | pull0 | weak0
strength1 ::= supply1 | strong1 | pull1 | weak1
charge_strength ::= ( small ) | ( medium ) | ( large )

strength0表示當驅動源驅動net為0時的驅動強度。Strength1表示當驅動源驅動net為1時的驅動強度。

net默認的strength level是(strong0, strong1)。對于pullup和pulldown gate,默認的strength level是pull。trireg默認的strength level是medium。Supply net的默認strength level是supply。另外從上面syntax看出,(highz1, highz0)和(highz0, highz1)的strength level組合是非法的。

結合上面的理論講解,給出1個例子如下:

module strength;
  
  logic i1, i2;
  wire logic out;
  
  assign (supply1, weak0) out = i1;
  assign (pull1, supply0) out = i2;
  
  initial begin
    i1 = 1'b0;
    i2 = 1'b0;
    $strobe("[time:%0t],i1:%b, i2:%b, out:%b, out_strength:%v", $time, i1, i2, out, out);
    #1ns;
    i1 = 1'b0;
    i2 = 1'b1;
    $strobe("[time:%0t],i1:%b, i2:%b, out:%b, out_strength:%v", $time, i1, i2, out, out);
    #1ns;
    i1 = 1'b1;
    i2 = 1'b0;
    $strobe("[time:%0t],i1:%b, i2:%b, out:%b, out_strength:%v", $time, i1, i2, out, out);
    #1ns;
    i1 = 1'b1;
    i2 = 1'b1;
    $strobe("[time:%0t],i1:%b, i2:%b, out:%b, out_strength:%v", $time, i1, i2, out, out);
  end
  
endmodule

使用Questasim仿真輸出的log結果為:

# [time:0],i1=0, i2=0, out=0, out_strength=Su0
# [time:1],i1=0, i2=1, out=1, out_strength=Pu1
# [time:2],i1=1, i2=0, out=x, out_strength=SuX
# [time:3],i1=1, i2=1, out=1, out_strength=Su1

"assign (supply1, weak0) out = i1"行給net類型的out驅動i1的值,其中strength1為supply1(level=7),strength0為weak0(level=3)。12行給net類型的out驅動i2的值,其中strength1為pull1(level=5),strength為supply0(level=7)。

" assign (pull1, supply0) out = i2"行給net類型的out驅動i2的值,其中strength1為pull1(level=5),strength為supply0(level=7)。

image.png

Driving strength還有很多其它的組合,大家可以復制上述代碼,并修改assign out語句的strength0與strength1去產生其它的組合并分析結果。

另外,大家可能好奇如何打印出net變量的strength level?在systemverilog中提供了%v格式化打印。%v的輸出是3個字符的string類型,前2個字符指示strength類型,第三個字符指示當前邏輯值。比如上述log中的Su0或Pu1或SuX或Su1。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 驅動器
    +關注

    關注

    52

    文章

    8226

    瀏覽量

    146258
  • 仿真器
    +關注

    關注

    14

    文章

    1017

    瀏覽量

    83722
  • Verilog語言
    +關注

    關注

    0

    文章

    113

    瀏覽量

    8224
收藏 人收藏

    評論

    相關推薦

    SystemVerilog的Virtual Methods

    SystemVerilog多態能夠工作的前提是父類的方法被聲明為virtual的。
    發表于 11-28 11:12 ?698次閱讀

    SystemVerilog的“const”類屬性

    SystemVerilog可以將類屬性聲明為常量,即“只讀”。目的就是希望,別人可以讀但是不能修改它的值。
    發表于 11-29 10:25 ?2135次閱讀

    SystemVerilog的聯合(union)介紹

    SystemVerilog ,聯合只是信號,可通過不同名稱和縱橫比來加以引用。
    的頭像 發表于 10-08 15:45 ?1387次閱讀
    <b class='flag-5'>SystemVerilog</b><b class='flag-5'>中</b>的聯合(union)介紹

    protel的“have no driving source”問題

    畫原理圖的時候,在編譯時出現警告:have no driving source,請問有高手能否指點一下,如何解決
    發表于 06-14 11:20

    systemverilog學習教程

    systemverilog的一些基本語法以及和verilog語言之間的區別。
    發表于 04-01 14:24

    SystemVerilog Assertion Handbo

    SystemVerilog Assertion Handbook1 ROLE OF SYSTEMVERILOG ASSERTIONSIN A VERIFICATION METHODOLOGY
    發表于 07-22 14:08 ?188次下載

    SystemVerilog的斷言手冊

    SystemVerilog Assertion Handbook1 ROLE OF SYSTEMVERILOG ASSERTIONSIN A VERIFICATION METHODOLOGY
    發表于 07-22 14:12 ?20次下載

    SystemVerilog$cast的應用

    SystemVerilog casting意味著將一種數據類型轉換為另一種數據類型。在將一個變量賦值給另一個變量時,SystemVerilog要求這兩個變量具有相同的數據類型。
    的頭像 發表于 10-17 14:35 ?2847次閱讀

    SystemVerilog的操作方法

    SystemVerilog提供了幾個內置方法來支持數組搜索、排序等功能。
    的頭像 發表于 10-31 10:10 ?2805次閱讀

    SystemVerilog可以嵌套的數據結構

    SystemVerilog除了數組、隊列和關聯數組等數據結構,這些數據結構還可以嵌套。
    的頭像 發表于 11-03 09:59 ?1593次閱讀

    SystemVerilog的package

    SystemVerilog packages提供了對于許多不同數據類型的封裝,包括變量、task、function、assertion等等,以至于可以在多個module中共享。
    的頭像 發表于 11-07 09:44 ?1248次閱讀

    SystemVerilog的struct

    SystemVerilog“struct”表示相同或不同數據類型的集合。
    的頭像 發表于 11-07 10:18 ?2449次閱讀

    SystemVerilog的Shallow Copy

    SystemVerilog的句柄賦值和對象復制的概念是有區別的。
    的頭像 發表于 11-21 10:32 ?903次閱讀

    SystemVerilog的Semaphores

    SystemVerilogSemaphore(旗語)是一個多個進程之間同步的機制之一,這里需要同步的原因是這多個進程共享某些資源。
    的頭像 發表于 12-12 09:50 ?3363次閱讀

    帶你了解SystemVerilog的關聯數組

    SystemVerilog,我們知道可以使用動態數組實現數組元素個數的動態分配,即隨用隨分
    的頭像 發表于 06-09 09:46 ?7447次閱讀
    帶你了解<b class='flag-5'>SystemVerilog</b><b class='flag-5'>中</b>的關聯數組
    主站蜘蛛池模板: 99久热精品免费观看| 果冻传媒APP免费网站在线观看| 久久精品一本到东京热| 四虎成人影院| china野外18:19| 久久高清免费视频| 鸭子玩富婆流白浆视频| xnxx18美女| 毛片在线网址| 亚洲日本欧美产综合在线 | 91九色视频无限观看免费| 国产亚洲精品欧洲在线视频| 日韩视频在线观看| brazzers巨臀系列| 久久综合中文字幕佐佐木希| 亚洲免费视频网站| 国产蜜臀AV在线一区视频| 揉抓捏打抽插射免费视频| 9国产露脸精品国产麻豆| 久热久热精品在线观看| 亚洲欧美高清在线精品一区| 国产精品自在拍在线播放| 日韩一本在线| xiah俊秀| 青柠在线观看免费完整版| 99久久re6热精品首页| 老女老肥熟国产在线视频| 一本色道久久88综合日韩精品| 国产精品美女久久久网站动漫| 日本邪恶全彩工囗囗番海贼王| BL全肉多攻NP高H| 欧美 亚洲综合在线一区| 67194con免费福和视频| 乱淫67194| 2019久久视频这里有精品15| 久久九九免费| 越南女 黑人 痛苦 大叫| 久久艹伊人| 曰本xxⅹ孕妇性xxx| 久久精品亚洲AV中文2区金莲| 亚洲中文字幕无码一去台湾|