0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SystemVerilog/Verilog中的各種延遲模型

sanyue7758 ? 來(lái)源:處芯積律 ? 2023-04-09 10:26 ? 次閱讀

為了在仿真階段能夠模擬物理器件的延遲,進(jìn)行結(jié)構(gòu)模型建模,SystemVerilog/Verilog中提供了兩種類型的延遲用以模擬信號(hào)經(jīng)過(guò)模型時(shí)的傳輸延遲,這兩種延遲分別是:分布延遲(Distributed Delay)和模塊路徑延遲(Module Path Delay).本文及下面一篇將針對(duì)這兩種延遲分別進(jìn)行示例說(shuō)明.

1 分布延遲(Distributed Delay)

分布延遲指模塊內(nèi)信號(hào)從邏輯門的輸入到輸出或者線網(wǎng)的延遲,這里我們僅以邏輯門延遲為例進(jìn)行說(shuō)明.常見的門延遲主要有三種,如下圖:

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

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

1.1 門級(jí)延遲的格式

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

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

?基本延遲表達(dá)式;

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

并且這兩種形式結(jié)合不同的延遲類型經(jīng)常會(huì)混合使用,下面我們針對(duì)兩種形式進(jìn)行說(shuō)明:

1.2 基本延遲表達(dá)式

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

延遲類型 無(wú)延遲 1個(gè)延遲值(d) 2個(gè)延遲值(d1,d2) 3個(gè)延遲值(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)
關(guān)斷延遲(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 "最小值:典型值:最大值"形式

采用這種方式表示延遲時(shí),延遲中的每一項(xiàng)將都以"最小值:典型值:最大值"形式出現(xiàn),根據(jù)具體指定的延遲的個(gè)數(shù),其常見格式如下:

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

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

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

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

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

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

此時(shí)的兩個(gè)延遲分別指的是上升延遲和下降延遲,關(guān)斷和輸出為x的延遲取決于每種工況下上升延遲和下降延遲的最小值.

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

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

此時(shí)的三個(gè)延遲分別指的是上升延遲、下降延遲和關(guān)斷延遲,輸出為x的延遲取決于每種工況下上升延遲、下降延遲和關(guān)斷延遲的最小值.

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

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

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

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

2.1并行連接(Parallel Connection)

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

(=>) = ;

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

2.2全連接(Full Connection)

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

(*>) = ;

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

下面是上述兩種連接方式的示意圖和注意事項(xiàng)和區(qū)別:

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

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

2.3模塊路徑

2.3.1簡(jiǎn)單路徑

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

2.3.2邊沿敏感路徑

主要用來(lái)描述信號(hào)在特定邊沿事件發(fā)生時(shí)數(shù)據(jù)從源端傳遞到目的端的路徑,其中延遲主要指的是邊沿敏感事件發(fā)生時(shí)刻到數(shù)據(jù)信號(hào)傳遞到目的端的時(shí)間,常用的格式如下:

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

【示例】

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

【仿真結(jié)果】

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

示例中,在時(shí)刻5ns時(shí),clk發(fā)生上升沿事件,經(jīng)過(guò)10ns延遲后信號(hào)dat_in的上升變化傳遞到了輸出端dat_out.在時(shí)刻15ns時(shí),clk再次發(fā)生上升沿事件,經(jīng)過(guò)8ns延遲后信號(hào)dat_in的下降變化傳遞到了輸出端dat_out,后續(xù)變化與此雷同,不再贅述.可見此時(shí)的延遲指的是采樣事件發(fā)生到輸出的延遲,并不是數(shù)據(jù)輸入端到數(shù)據(jù)輸出端的延遲.這里需要注意的是在dat_out和dat_in之間指定傳輸方向是使用了極性操作符"+",主要表示輸入到輸出是否取反,如果要對(duì)數(shù)據(jù)取反可以將"+"換為"-",但是這里需要注意這個(gè)操作符對(duì)于仿真來(lái)說(shuō)不會(huì)產(chǎn)生任何影響,即在仿真時(shí)不會(huì)出現(xiàn)取反現(xiàn)象,僅對(duì)時(shí)序分析工具會(huì)產(chǎn)生影響.

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

【示例】

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

【仿真結(jié)果】

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

示例中,在5ns時(shí),clk發(fā)生上升沿事件,在clk下一次跳變發(fā)生前dat_in保持0,dat_in沒(méi)有發(fā)生變化,dat_out保持不變.在10ns時(shí),clk發(fā)生下降沿事件,dat_in的值應(yīng)該在clk下降沿事件之后10ns后更新至dat_out,但是在clk下一次跳變發(fā)生前dat_in變?yōu)榱?,即dat_in發(fā)生了上升變化,所以,此時(shí)最終更新至dat_out的值為dat_in的最新值,并且發(fā)生在clk下降沿事件發(fā)生后的10ns處,即20ns時(shí)刻.在20ns時(shí),clk發(fā)生下降沿變化,此時(shí)dat_in為1,但是在clk下一次跳邊沿之前dat_in變?yōu)榱?,即dat_in發(fā)生了下降沿變化,所以,此時(shí)最終更新至dat_out的值為dat_in的最新值0,并且發(fā)生在clk下降沿事件發(fā)生后的8ns處,即28ns時(shí)刻.后續(xù)變化分析類似,不再贅述.

2.3.3條件相關(guān)路徑(狀態(tài)依賴路徑)

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

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

【示例】

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

【仿真結(jié)果】

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

示例中,在sel不為高時(shí),此時(shí)在specify塊中指定的模塊路徑延遲并不會(huì)并不會(huì)作用到dat_in到dat_out這條路徑上.但是在sel為高后,此時(shí)specify塊中指定的模塊路徑延遲會(huì)作用到從dat_in傳遞到dat_out的數(shù)據(jù).這里需要注意的是,在specify塊中指定條件的if語(yǔ)句塊不能使用else分支結(jié)構(gòu).

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

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

【電路結(jié)構(gòu)】電路中存在三個(gè)輸入端口in1、in2、in3和一個(gè)輸出端out,并且in1到out的模塊路徑延遲為4個(gè)時(shí)間單位,in2到out的模塊路徑延遲為6個(gè)時(shí)間單位,in3到out的模塊路徑延遲為1個(gè)時(shí)間單位,或門產(chǎn)生延遲為2,與非門延遲3.

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

【示例】

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

【仿真結(jié)果】

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

示例中針對(duì)幾個(gè)時(shí)間點(diǎn)變化匯總?cè)缦拢?/p>

在10ns時(shí),in1變?yōu)?,in2為0,in3為1,此時(shí)in1和in2經(jīng)過(guò)或操作輸出wnet,且或門延遲為2,所以wnet延遲2個(gè)時(shí)間單位后變化,wnet和in3經(jīng)過(guò)與非門后輸出至out,因?yàn)榇藭r(shí)wnet和in3連接的與非門門延遲為3,所以wnet變化后3個(gè)時(shí)間單位變化更新至out,此時(shí)out變?yōu)?,可見此時(shí)從端口in1信號(hào)的變化到輸出端輸出的延遲時(shí)間不是in1和out之間指定的模塊路徑延遲4,而是該路徑經(jīng)過(guò)的所有門單元延遲總和,即是該路徑分布延遲值;

在30ns時(shí),in2從0變?yōu)榱?,in1為0,in3為1,此時(shí)in1和in2經(jīng)過(guò)或操作輸出wnet,且或門延遲為2,所以wnet延遲2個(gè)時(shí)間單位后變化,wnet和in3經(jīng)過(guò)與非門后輸出至out,雖然此時(shí)wnet和in3連接的與非門門延遲為3,但是因?yàn)閺亩丝趇n2信號(hào)的變化延遲到輸出端輸出的分布延遲為2+3=5,小于從in2到out的模塊路徑延遲6,所以此時(shí)從端口in2信號(hào)的變化到輸出端輸出的延遲時(shí)間為6;

在60ns時(shí),in3從1變?yōu)榱?,in1為0,in2為1,此時(shí)因?yàn)閕n1和in2都沒(méi)有變化,所有wnet保持1,所以此時(shí)影響輸出的只有in3,in3在60ns變化后,out發(fā)生變化的時(shí)間為3ns,即與非門的門延遲值,并不是in3到out的模塊路徑延遲1;

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

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

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

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1333

    瀏覽量

    109716
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3032

    瀏覽量

    48363

原文標(biāo)題:SystemVerilog/Verilog中的各種延遲模型

文章出處:【微信號(hào):處芯積律,微信公眾號(hào):處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    SystemVerilog的Virtual Methods

    SystemVerilog多態(tài)能夠工作的前提是父類的方法被聲明為virtual的。
    發(fā)表于 11-28 11:12 ?626次閱讀

    systemverilog學(xué)習(xí)教程

    systemverilog的一些基本語(yǔ)法以及和verilog語(yǔ)言之間的區(qū)別。
    發(fā)表于 04-01 14:24

    verilog在psoc延遲

    大家好使用Verilog語(yǔ)言,可以在PSoC創(chuàng)建類似CysDelay-()、CysDelayUs()的毫秒級(jí)或微秒級(jí)延遲?!魏稳苏?qǐng)幫助我如何使用Verilog在PSoC
    發(fā)表于 11-06 14:17

    使用SystemVerilog來(lái)簡(jiǎn)化FPGA接口的連接方式

    FPGA接口的連接方式?! ??也許很多FPGA工程師對(duì)SystemVerilog并不是很了解,因?yàn)橐郧暗腇PGA開發(fā)工具是不支持SystemVerilog的,導(dǎo)致大家都是用VHDL或者Ve
    發(fā)表于 01-08 17:23

    循環(huán)模型編譯器Verilog和System Verilog語(yǔ)言支持指南

    本節(jié)介紹循環(huán)模型編譯器響應(yīng)不受支持或被忽略的構(gòu)造的行為。 一般而言,Cycle Model Compiler支持VerilogSystemVerilog語(yǔ)言的大部分可合成子集。 如果周期模型
    發(fā)表于 08-12 06:55

    SystemVerilog 3.1a語(yǔ)言參考手冊(cè)

    本參考手冊(cè)詳細(xì)描述了Accellera為使用Verilog硬件描述語(yǔ)言在更高的抽象層次上進(jìn)行系統(tǒng)的建模和驗(yàn)證所作的擴(kuò)展。這些擴(kuò)展將Verilog語(yǔ)言推向了系統(tǒng)級(jí)空間和驗(yàn)證級(jí)空間。SystemVerilog
    發(fā)表于 07-22 12:14 ?187次下載

    SystemC 和SystemVerilog的比較

    就 SystemC 和 SystemVerilog 這兩種語(yǔ)言而言, SystemC 是C++在硬件支持方面的擴(kuò)展,而 SystemVerilog 則繼承了 Verilog,并對(duì) Verilo
    發(fā)表于 08-16 10:52 ?5311次閱讀

    System Verilogverilog的對(duì)比

    SystemVerilog語(yǔ)言簡(jiǎn)介 SystemVerilog是一種硬件描述和驗(yàn)證語(yǔ)言(HDVL),它基于IEEE1364-2001 Verilog硬件描述語(yǔ)言(HDL),并對(duì)其進(jìn)行了擴(kuò)展,包括擴(kuò)充
    的頭像 發(fā)表于 09-28 17:12 ?3254次閱讀

    使用Verilog/SystemVerilog硬件描述語(yǔ)言練習(xí)數(shù)字硬件設(shè)計(jì)

    HDLBits 是一組小型電路設(shè)計(jì)習(xí)題集,使用 Verilog/SystemVerilog 硬件描述語(yǔ)言 (HDL) 練習(xí)數(shù)字硬件設(shè)計(jì)~
    的頭像 發(fā)表于 08-31 09:06 ?1501次閱讀

    SystemVerilog的Shallow Copy

    SystemVerilog的句柄賦值和對(duì)象復(fù)制的概念是有區(qū)別的。
    的頭像 發(fā)表于 11-21 10:32 ?771次閱讀

    Verilog PLI到SystemVerilog DPI的演變過(guò)程

    寫過(guò)Verilogsystemverilog的人肯定都用過(guò)系統(tǒng)自定義的函數(shù)$display,這是預(yù)定好的,可以直接調(diào)用的功能。
    的頭像 發(fā)表于 05-16 09:27 ?758次閱讀
    從<b class='flag-5'>Verilog</b> PLI到<b class='flag-5'>SystemVerilog</b> DPI的演變過(guò)程

    verilog/systemverilog隱藏的初始化說(shuō)明

    VerilogSystemVerilog中經(jīng)常需要在使用變量或者線網(wǎng)之前,期望變量和線網(wǎng)有對(duì)應(yīng)的初始值
    的頭像 發(fā)表于 08-25 09:47 ?892次閱讀
    <b class='flag-5'>verilog</b>/<b class='flag-5'>systemverilog</b><b class='flag-5'>中</b>隱藏的初始化說(shuō)明

    verilog-2005和systemverilog-2017標(biāo)準(zhǔn)規(guī)范

    作為邏輯工程師,在FPGA和數(shù)字IC開發(fā)和設(shè)計(jì),一般采用verilog,VHDL或SystemVerilog等作為硬件描述語(yǔ)言進(jìn)行工程設(shè)計(jì),將一張白板描繪出萬(wàn)里江山圖景。
    的頭像 發(fā)表于 09-04 10:10 ?2317次閱讀
    <b class='flag-5'>verilog</b>-2005和<b class='flag-5'>systemverilog</b>-2017標(biāo)準(zhǔn)規(guī)范

    SystemVerilog在硬件設(shè)計(jì)部分有哪些優(yōu)勢(shì)

    談到SystemVerilog,很多工程師都認(rèn)為SystemVerilog僅僅是一門驗(yàn)證語(yǔ)言,事實(shí)上不只如此。傳統(tǒng)的Verilog和VHDL被稱為HDL(Hardware Description
    的頭像 發(fā)表于 10-19 11:19 ?944次閱讀
    <b class='flag-5'>SystemVerilog</b>在硬件設(shè)計(jì)部分有哪些優(yōu)勢(shì)

    SystemVerilog相比于Verilog的優(yōu)勢(shì)

    我們?cè)購(gòu)膶?duì)可綜合代碼的支持角度看看SystemVerilog相比于Verilog的優(yōu)勢(shì)。針對(duì)硬件設(shè)計(jì),SystemVerilog引入了三種進(jìn)程always_ff,always_comb
    的頭像 發(fā)表于 10-26 10:05 ?713次閱讀
    <b class='flag-5'>SystemVerilog</b>相比于<b class='flag-5'>Verilog</b>的優(yōu)勢(shì)