日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > > 處芯積律

在搭建驗證環(huán)境時,經(jīng)常需要在環(huán)境中插入很多info用于輸出一定的log信息用于進行debug,在插入這些info方法的時候,經(jīng)常需要同時輸出該方法執(zhí)行的具體時間,用于方便定位問題,為此在Verilog和SystemVerilog中提供了一堆關于time的方法,如果對于這些方法使用的不是很恰當,可能顯示出來的結(jié)果與期望有些許差異,本文將通過示例,說明這一對time的方法是如何做的妖。

1 $time

$time被調(diào)用時,將會返回一個64位的整型變量,用于表示該系統(tǒng)函數(shù)調(diào)用時的仿真時刻,返回的這個值是按照以下步驟得到:

1)當前延遲值依據(jù)模塊設置的timescale時間單位和精度得到實際仿真時間;

2)調(diào)用該函數(shù)返回的值為上一步得到的時間按照timescale設置的時間單位縮小表示后四舍五入得到的整型值;

【示例】?

【仿真結(jié)果】?

示例中,時間變化主要包括仿真器波形顯示時間和$time調(diào)用返回顯示的時間,這兩個時間的變化過程如下:

sig從“00”變成“11”發(fā)生在12ns,該時間由當前模塊的時間單位和時間精度決定,即(1.234267*10≈12),$time返回的時間是12ns按照設置的時間單位縮小至1.2后四舍五入取整得到的,所以此時log顯示時間為1;

sig從“11”變成“01”發(fā)生在24ns,該時間由當前模塊的時間單位和時間精度決定,即(第一次延遲值1.234267*10≈12,當前延遲值1.225232*10≈12,12+12=24),$time返回的時間是24ns按照設置的時間單位縮小至2.4后四舍五入取整得到的,所以此時log顯示時間為2;

sig從“01”變成“10”發(fā)生在36ns,該時間由當前模塊的時間單位和時間精度決定,即(第一次延遲值1.234267*10≈12,第二次延遲值1.225232*10≈12,當前延遲值1.245678*10≈12,12+12+12=36),$time返回的時間是36ns按照設置的時間單位縮小至3.6后四舍五入取整得到的,所以此時log顯示時間為4;

為了進一步理解時間的變化,我們將示例中使用的時間單位和時間精度“10ns/1ns”修改為“10ns/1ps”來看下仿真時間和$time顯示的時間之間的關系。

【示例】?

【仿真結(jié)果】?

通過仿真結(jié)果可以看到,因為時間精度的修改,此時的仿真時間分別變?yōu)榱耍?/span>12.343ns、24.595ns和37.052ns,但是$time調(diào)用顯示的時間還是1、2和4??梢姺抡鏁r間是受當前module的時間單位和時間精度的影響,sig第一次變化時$time返回值為1.234267*10≈12.343ns按照設置的時間單位級縮小至1.2343后四舍五入取整得到,所以此時log顯示1,sig第二次變化時$time返回值為當前延遲值(1.225232*10≈12.252ns)與第一次延遲值(12.343ns)之和24.595ns按照設置的時間單位級縮小至2.4595后四舍五入取整得到,所以此時log顯示時間為2,sig第三次變化時返回值為當前延遲值(1.245678*10≈12.457ns)與前兩次延遲值(12.343+12.252)之和37.052ns按照設置的時間單位級縮小至3.7052后四舍五入取整得到,所以log顯示為4。仿真結(jié)果匯總?cè)缦卤怼?/span>

選項

sig值

2’b11

2’b01

2’b10

Timescale

代碼延遲

1.234267

1.225232

1.245678

10ns/1ns

10ns/1ps

$time

Log顯示

1

2

4

10ns

-

仿真顯示

12

24

36

1ns

-

Log顯示

1

2

4

-

10ns

仿真顯示

12.343

24.595

37.052

-

1ps

2 $stime

$stime被調(diào)用時,將會返回一個32位的無符號整型變量,用于表示該系統(tǒng)函數(shù)調(diào)用時的仿真時刻,返回的這個值會按照當前模塊設置的時間單位,對調(diào)用時刻值進行四舍五入后顯示具體時間,其用法與$time類似,只是$stime返回32位整型變量,所以其調(diào)用時表示的時間范圍相較$time小,示例與$time相同,此處不再贅述。

3 $realtime

$realtime被調(diào)用時,將會返回一個real型變量,所以其表示出來的形式一般為小數(shù)形式,用于表示該系統(tǒng)函數(shù)調(diào)用時的仿真時刻,時間單位為當前模塊設置的時間單位。

【示例】?

【仿真結(jié)果】?

示例中,時間變化主要包括仿真器波形顯示時間和$realtime調(diào)用顯示的時間,這兩個時間在之間的關系以及變化過程如下:

sig從“00”變成“11”發(fā)生在12ns,該時間由當前模塊的時間單位和時間精度決定,即(1.234267*10≈12),$realtime返回的時間是12ns按照設置的時間單位縮小至1.2后得到,所以此時log顯示時間為1.2;

sig從“11”變成“01”發(fā)生在24ns,該時間由當前模塊的時間單位和時間精度決定,即(第一次延遲值1.234267*10≈12,當前延遲值1.225232*10≈12,12+12=24),$realtime返回的時間是24ns按照設置的時間單位縮小至2.4后得到,所以此時log顯示時間為2.4;

sig從“01”變成“10”發(fā)生在36ns,該時間由當前模塊的時間單位和時間精度決定,即(第一次延遲值1.234267*10≈12,第二次延遲值1.225232*10≈12,當前延遲值1.245678*10≈12,12+12+12=36),$realtime返回的時間是36ns按照設置的時間單位縮小至3.6后得到,所以此時log顯示時間為3.6;

為了進一步理解時間的變化,我們將示例中使用的時間單位和時間精度“10ns/1ns”修改為“10ns/本文示例1ps”來看下仿真時間和$realtime顯示的時間之間的關系。

【示例】?

【仿真結(jié)果】?

通過仿真結(jié)果可以看到,因為時間精度的修改,此時的仿真時間分別變?yōu)榱耍?/span>12.343ns、24.595ns和37.052ns,但是$realtime調(diào)用顯示的時間還是1.2343、2.4595和3.7052??梢姺抡鏁r間是受當前module的時間單位和時間精度的影響,sig第一次變化時$realtime返回值為(1.234267*10≈12.343ns)12.343ns按照設置的時間單位級縮小至1.2343后得到,所以log顯示為1.2343。sig第二次變化時$realtime返回值為當前延遲值(1.225232*10≈12.252ns)與第一次延遲值(12.343ns)之和24.595ns按照設置的時間單位級縮小至2.4595后得到,所以log顯示為2.4595,sig第三次變化時返回值為當前延遲值(1.245678*10≈12.457ns)與前兩次延遲值(12.343+12.252)之和37.052ns按照設置的時間單位級縮小至3.7052后得到,所以log顯示為3.7052。仿真結(jié)果匯總?cè)缦卤怼?/span>

選項

sig值

2’b11

2’b01

2’b10

Timescale

代碼延遲

1.234267

1.225232

1.245678

10ns/1ns

10ns/1ps

$time

Log顯示

1.2

2.4

3.6

10ns

-

仿真顯示

12

24

36

1ns

-

Log顯示

1.2343

2.4595

3.7052

-

10ns

仿真顯示

12.343

24.595

37.052

-

1ps

通過仿真結(jié)果可以看到,仿真時間是按照當前module設置的時間單位和時間精度進行顯示,而$realtime函數(shù)顯示的時間為仿真時間按照時間單位數(shù)量級縮小后得到的。

通過上述示例可以看到,在進行仿真時,當出現(xiàn)log顯示時間與波形不一致時,要注意產(chǎn)生log信息使用的關于time的函數(shù)是什么,同時也要注意當前模塊設置的時間單位和精度,如果為了得到與仿真波形時間吻合的時間,可以使用$realtime。


本站聲明: 本文章由作者或相關機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
關閉