在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

SystemVerilog/Verilog中的各種延遲模型

sanyue7758 ? 來源:處芯積律 ? 2023-04-09 10:26 ? 次閱讀

為了在仿真階段能夠模擬物理器件的延遲,進行結構模型建模,SystemVerilog/Verilog中提供了兩種類型的延遲用以模擬信號經過模型時的傳輸延遲,這兩種延遲分別是:分布延遲(Distributed Delay)和模塊路徑延遲(Module Path Delay).本文及下面一篇將針對這兩種延遲分別進行示例說明.

1 分布延遲(Distributed Delay)

分布延遲指模塊內信號從邏輯門的輸入到輸出或者線網的延遲,這里我們僅以邏輯門延遲為例進行說明.常見的門延遲主要有三種,如下圖:

9a3ed986-d629-11ed-bfe3-dac502259ad0.png

【注意】如果信號從0/1/z變化到x,那么此時的門傳輸延遲為上述三種延遲最小的.另外,在進行仿真時,有些邏輯門的輸出不可能會出現高阻態z,所以對于這些邏輯門實際上就不存在關斷延遲了,類似的邏輯門有:and、nand、or、nor、xor、xnor、buf和not等.

1.1 門級延遲的格式

9a490406-d629-11ed-bfe3-dac502259ad0.png

其中delay用于指定延遲,如果不指定,則所有延遲的默認值為0.如果指定,主要有兩種形式:

?基本延遲表達式;

?"最小值:典型值:最大值"形式;

并且這兩種形式結合不同的延遲類型經常會混合使用,下面我們針對兩種形式進行說明:

1.2 基本延遲表達式

針對延遲的類型,基本延遲一般不指定"最小值:典型值:最大值",可以簡單粗暴的認為在簡單延遲中,最小值、典型值和最大值可以認為是相同的,常見的簡單延遲使用格式如下表示例.

延遲類型 無延遲 1個延遲值(d) 2個延遲值(d1,d2) 3個延遲值(d1,d2,d3)
上升延遲(Rise) 0 d d1 d1
下降延遲(Fall) 0 d d2 d2
輸出為x(To_x) 0 d min(d1,d2) min(d1,d2,d3)
關斷延遲(Turn_off) 0 d min(d1,d2) d3
示例 and u(out,d1,d2) and #d u(out,d1,d2) and #(d1,d2) u(out,d1,d2) and #(d1,d2,d3) u(out,d1,d2)

1.3 "最小值:典型值:最大值"形式

采用這種方式表示延遲時,延遲中的每一項將都以"最小值:典型值:最大值"形式出現,根據具體指定的延遲的個數,其常見格式如下:

9a50cc22-d629-11ed-bfe3-dac502259ad0.png

【示例:指定一個延遲】and #(13) u(out,d1,d2);

工況 上升延遲 下降延遲 輸出為x延遲 關斷延遲
最小 1 1 1 1
典型 2 2 2 2
最大 3 3 3 3

此時的各種延遲在特定工況下的值都是相同的.

【示例:指定二個延遲】and #(13,46) u(out,d1,d2);

工況 上升延遲 下降延遲 輸出為x延遲 關斷延遲
最小 1 4 min(1,4) min(1,4)
典型 2 5 min(2,5) min(2,5)
最大 3 6 min(3,6) min(3,6)

此時的兩個延遲分別指的是上升延遲和下降延遲,關斷和輸出為x的延遲取決于每種工況下上升延遲和下降延遲的最小值.

【示例:指定三個延遲】and #(13,46,79) u(out,d1,d2);

上升延遲 下降延遲 輸出為x延遲 關斷延遲
最小 1 4 min(1,4,7) 7
典型 2 5 min(2,5,8) 8
最大 3 6 min(3,6,9) 9

此時的三個延遲分別指的是上升延遲、下降延遲和關斷延遲,輸出為x的延遲取決于每種工況下上升延遲、下降延遲和關斷延遲的最小值.

門單元可以指定這么多種的延遲,那么在進行仿真時如何告訴仿真器應該使用哪種工況下指定的延遲呢?目前在使用主流EDA工具進行仿真時可以針對需要使用的延遲在命令參數中指定"+mindelays"(對應最小值,此時所有的延遲取最小值)、"+typdelays"(對應典型值,此時所有的延遲取典型值)、"+maxdelays"(對應最大值,此時所有的延遲取最大值)來實現,但是每次仿真時只能指定一種延遲模式,并且這種選擇在仿真過程中是不能修改的.

2模塊路徑延遲(Module Path Delay)

模塊路徑延遲描述的是模塊中信號從源端到目的端傳輸的延遲,這些路徑以及對應的延遲是在模塊中的specify塊中指定的,其中信號源端一般為input或者inout,而目的端則只能為output或者inout.在specify中指定的模塊路徑,常見的形式主要三種,分別是:簡單路徑(Simple Path),邊沿敏感路徑(Edge Secsitive Path)和條件相關路徑(State-dependent Path).

在這三種路徑中根據源端和目的端之間路徑的可能連接方式又分為兩種:并行連接(Parallel Connection)和全連接(Full Connection),在specify塊中的三種模塊路徑中描述延遲時主要就是通過這兩種連接方式進行描述的.

2.1并行連接(Parallel Connection)

并行連接表示每條延遲路徑只有一個源端和目的端,其語法格式如下:

(=>) = ;

其中delay_value可以為1~3個延遲量表達方式,延遲量也可以采用"最小值:典型值:最大值"的形式,如果延遲量多于兩個,則可以使用小括號將延遲量包括其來,延遲量之間用逗號分隔.

2.2全連接(Full Connection)

全連接中源端中的每一位可以與目的端中的每一位相連接,即使源端位數與目的端位數不一致也可以,其格式如下:

(*>) = ;

其中delay_value的指定方式同并行連接.

下面是上述兩種連接方式的示意圖和注意事項和區別:

9a588228-d629-11ed-bfe3-dac502259ad0.png

不管是并行連接還是全連接,都可以應用于模塊路徑延遲的三種類型中.

2.3模塊路徑

2.3.1簡單路徑

一般只包含*>和=>連接的路徑,在其中僅描述簡單的源端到目的端的延遲,屬于基本模塊路徑延遲表示形式.

2.3.2邊沿敏感路徑

主要用來描述信號在特定邊沿事件發生時數據從源端傳遞到目的端的路徑,其中延遲主要指的是邊沿敏感事件發生時刻到數據信號傳遞到目的端的時間,常用的格式如下:

9a6224b8-d629-11ed-bfe3-dac502259ad0.png

【示例】

9a680a5e-d629-11ed-bfe3-dac502259ad0.png

【仿真結果】

9a6f5da4-d629-11ed-bfe3-dac502259ad0.png

示例中,在時刻5ns時,clk發生上升沿事件,經過10ns延遲后信號dat_in的上升變化傳遞到了輸出端dat_out.在時刻15ns時,clk再次發生上升沿事件,經過8ns延遲后信號dat_in的下降變化傳遞到了輸出端dat_out,后續變化與此雷同,不再贅述.可見此時的延遲指的是采樣事件發生到輸出的延遲,并不是數據輸入端到數據輸出端的延遲.這里需要注意的是在dat_out和dat_in之間指定傳輸方向是使用了極性操作符"+",主要表示輸入到輸出是否取反,如果要對數據取反可以將"+"換為"-",但是這里需要注意這個操作符對于仿真來說不會產生任何影響,即在仿真時不會出現取反現象,僅對時序分析工具會產生影響.

9a79622c-d629-11ed-bfe3-dac502259ad0.png

【示例】

9a7e97c4-d629-11ed-bfe3-dac502259ad0.png

【仿真結果】

9a868222-d629-11ed-bfe3-dac502259ad0.png

示例中,在5ns時,clk發生上升沿事件,在clk下一次跳變發生前dat_in保持0,dat_in沒有發生變化,dat_out保持不變.在10ns時,clk發生下降沿事件,dat_in的值應該在clk下降沿事件之后10ns后更新至dat_out,但是在clk下一次跳變發生前dat_in變為了1,即dat_in發生了上升變化,所以,此時最終更新至dat_out的值為dat_in的最新值,并且發生在clk下降沿事件發生后的10ns處,即20ns時刻.在20ns時,clk發生下降沿變化,此時dat_in為1,但是在clk下一次跳邊沿之前dat_in變為了0,即dat_in發生了下降沿變化,所以,此時最終更新至dat_out的值為dat_in的最新值0,并且發生在clk下降沿事件發生后的8ns處,即28ns時刻.后續變化分析類似,不再贅述.

2.3.3條件相關路徑(狀態依賴路徑)

在指定條件成立的情況下,才會將延遲作用于模塊路徑,格式如下:

9a8c7e48-d629-11ed-bfe3-dac502259ad0.png

【示例】

9a95e4d8-d629-11ed-bfe3-dac502259ad0.png

【仿真結果】

9a9e38d6-d629-11ed-bfe3-dac502259ad0.png

示例中,在sel不為高時,此時在specify塊中指定的模塊路徑延遲并不會并不會作用到dat_in到dat_out這條路徑上.但是在sel為高后,此時specify塊中指定的模塊路徑延遲會作用到從dat_in傳遞到dat_out的數據.這里需要注意的是,在specify塊中指定條件的if語句塊不能使用else分支結構.

3分布延遲和模塊路徑延遲同時存在情況

一般情況下,一個模塊中不止會包含specify塊,還會包含大量的門單元,在specify塊中會指定模塊路徑延遲,模塊內的路徑上各個基本單元(可以是基本的門級單元、開關級元件或者子模塊)又存在分布延遲,模塊中這兩種延遲經常會共存,那么此時進行仿真時應該使用哪種延遲呢?下面通過下面電路進行示例說明兩種延遲對于信號在模塊中傳遞是如何產生影響的.

【電路結構】電路中存在三個輸入端口in1、in2、in3和一個輸出端out,并且in1到out的模塊路徑延遲為4個時間單位,in2到out的模塊路徑延遲為6個時間單位,in3到out的模塊路徑延遲為1個時間單位,或門產生延遲為2,與非門延遲3.

9aa747a0-d629-11ed-bfe3-dac502259ad0.png

【示例】

9aaf74ca-d629-11ed-bfe3-dac502259ad0.png

【仿真結果】

9abdcc82-d629-11ed-bfe3-dac502259ad0.png

示例中針對幾個時間點變化匯總如下:

在10ns時,in1變為1,in2為0,in3為1,此時in1和in2經過或操作輸出wnet,且或門延遲為2,所以wnet延遲2個時間單位后變化,wnet和in3經過與非門后輸出至out,因為此時wnet和in3連接的與非門門延遲為3,所以wnet變化后3個時間單位變化更新至out,此時out變為0,可見此時從端口in1信號的變化到輸出端輸出的延遲時間不是in1和out之間指定的模塊路徑延遲4,而是該路徑經過的所有門單元延遲總和,即是該路徑分布延遲值;

在30ns時,in2從0變為了1,in1為0,in3為1,此時in1和in2經過或操作輸出wnet,且或門延遲為2,所以wnet延遲2個時間單位后變化,wnet和in3經過與非門后輸出至out,雖然此時wnet和in3連接的與非門門延遲為3,但是因為從端口in2信號的變化延遲到輸出端輸出的分布延遲為2+3=5,小于從in2到out的模塊路徑延遲6,所以此時從端口in2信號的變化到輸出端輸出的延遲時間為6;

在60ns時,in3從1變為了0,in1為0,in2為1,此時因為in1和in2都沒有變化,所有wnet保持1,所以此時影響輸出的只有in3,in3在60ns變化后,out發生變化的時間為3ns,即與非門的門延遲值,并不是in3到out的模塊路徑延遲1;

通過上述三個時間點in1、in2、in3的分別變化到out輸出的延遲情況可以看出,模塊端口的最終延遲取決于分布延遲和模塊路徑延遲中的最大者,因此本電路輸入端口到輸出端口的延遲可以表示如下表所示.

選項 分布延遲 模塊路徑延遲 最終延遲
in1 -> out 2+3=5 4 5
in2 -> out 2+3=5 6 6
in3 -> out 3 1 3

最后,大家需要注意,上述這些延遲的單位和精度為當前模塊使用的時間單位和時間精度.

審核編輯 :李倩

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

    關注

    28

    文章

    1351

    瀏覽量

    110398
  • 模型
    +關注

    關注

    1

    文章

    3313

    瀏覽量

    49232

原文標題:SystemVerilog/Verilog中的各種延遲模型

文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    SystemVerilog的Virtual Methods

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

    systemverilog學習教程

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

    verilog在psoc延遲

    大家好使用Verilog語言,可以在PSoC創建類似CysDelay-()、CysDelayUs()的毫秒級或微秒級延遲?!魏稳苏垘椭胰绾问褂?b class='flag-5'>Verilog在PSoC
    發表于 11-06 14:17

    使用SystemVerilog來簡化FPGA接口的連接方式

    FPGA接口的連接方式。  ??也許很多FPGA工程師對SystemVerilog并不是很了解,因為以前的FPGA開發工具是不支持SystemVerilog的,導致大家都是用VHDL或者Ve
    發表于 01-08 17:23

    循環模型編譯器Verilog和System Verilog語言支持指南

    本節介紹循環模型編譯器響應不受支持或被忽略的構造的行為。 一般而言,Cycle Model Compiler支持VerilogSystemVerilog語言的大部分可合成子集。 如果周期模型
    發表于 08-12 06:55

    SystemVerilog 3.1a語言參考手冊

    本參考手冊詳細描述了Accellera為使用Verilog硬件描述語言在更高的抽象層次上進行系統的建模和驗證所作的擴展。這些擴展將Verilog語言推向了系統級空間和驗證級空間。SystemVerilog
    發表于 07-22 12:14 ?188次下載

    SystemC 和SystemVerilog的比較

    就 SystemC 和 SystemVerilog 這兩種語言而言, SystemC 是C++在硬件支持方面的擴展,而 SystemVerilog 則繼承了 Verilog,并對 Verilo
    發表于 08-16 10:52 ?5412次閱讀

    使用Verilog/SystemVerilog硬件描述語言練習數字硬件設計

    HDLBits 是一組小型電路設計習題集,使用 Verilog/SystemVerilog 硬件描述語言 (HDL) 練習數字硬件設計~
    的頭像 發表于 08-31 09:06 ?1776次閱讀

    SystemVerilog的Shallow Copy

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

    Verilog PLI到SystemVerilog DPI的演變過程

    寫過Verilogsystemverilog的人肯定都用過系統自定義的函數$display,這是預定好的,可以直接調用的功能。
    的頭像 發表于 05-16 09:27 ?1018次閱讀
    從<b class='flag-5'>Verilog</b> PLI到<b class='flag-5'>SystemVerilog</b> DPI的演變過程

    verilog/systemverilog隱藏的初始化說明

    VerilogSystemVerilog中經常需要在使用變量或者線網之前,期望變量和線網有對應的初始值
    的頭像 發表于 08-25 09:47 ?1183次閱讀
    <b class='flag-5'>verilog</b>/<b class='flag-5'>systemverilog</b><b class='flag-5'>中</b>隱藏的初始化說明

    verilog-2005和systemverilog-2017標準規范

    作為邏輯工程師,在FPGA和數字IC開發和設計,一般采用verilog,VHDL或SystemVerilog等作為硬件描述語言進行工程設計,將一張白板描繪出萬里江山圖景。
    的頭像 發表于 09-04 10:10 ?2925次閱讀
    <b class='flag-5'>verilog</b>-2005和<b class='flag-5'>systemverilog</b>-2017標準規范

    SystemVerilog在硬件設計部分有哪些優勢

    談到SystemVerilog,很多工程師都認為SystemVerilog僅僅是一門驗證語言,事實上不只如此。傳統的Verilog和VHDL被稱為HDL(Hardware Description
    的頭像 發表于 10-19 11:19 ?1370次閱讀
    <b class='flag-5'>SystemVerilog</b>在硬件設計部分有哪些優勢

    SystemVerilog相比于Verilog的優勢

    我們再從對可綜合代碼的支持角度看看SystemVerilog相比于Verilog的優勢。針對硬件設計,SystemVerilog引入了三種進程always_ff,always_comb
    的頭像 發表于 10-26 10:05 ?1078次閱讀
    <b class='flag-5'>SystemVerilog</b>相比于<b class='flag-5'>Verilog</b>的優勢

    如何利用Verilog-A開發器件模型

    Verilog-A對緊湊型模型的支持逐步完善,在模型的實現上扮演越來越重要的角色,已經成為緊湊模型開發的新標準。而且Verilog-A能夠在
    的頭像 發表于 10-18 14:16 ?613次閱讀
    如何利用<b class='flag-5'>Verilog</b>-A開發器件<b class='flag-5'>模型</b>
    主站蜘蛛池模板: 国产精品三级a三级三级午夜 | 精品爱爱 | 国产高清色播视频免费看 | 色婷婷99综合久久久精品 | 69xxxxtube日本免费 | 2020年亚洲天天爽天天噜 | 深夜免费视频 | 国产精品网址你懂的 | 很黄很黄叫声床戏免费视频 | 欧美另类亚洲一区二区 | 加勒比在线一区 | 激情.com | 天天草天天干 | 四虎影视网站 | 国产成人综合网在线播放 | 亚洲羞羞裸色私人影院 | 喷潮白浆直流在线播放 | 天天综合网天天综合色不卡 | 免费一级在线观看 | 欧美αv | 成人在线免费网站 | 午夜三级毛片 | 欧美性hd | 国内精品视频在线 | 亚洲a成人 | 色老头久久网 | 成人性色生活片免费看爆迷你毛片 | 中文字幕一区二区三区视频在线 | 亚洲免费小视频 | 男人天堂网在线 | 一区二区三区中文 | 色爱区综合激月婷婷激情五月 | 色婷婷六月 | 一级毛片黄色 | 国产免费高清在线精品一区 | 欧美性色xo影院69 | 久久久噜久噜久久gif动图 | 黄网站在线观看永久免费 | 91久久澡人人爽人人添 | 日产精品卡二卡三卡四卡无卡乱码 | 欧美一级片免费在线观看 |