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

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

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

SystemVerilog中的$timeformat是做什么的?

sanyue7758 ? 來源:硅芯思見 ? 2023-08-16 09:41 ? 次閱讀

在SystemVerilog中,輸出信息顯示時(shí)間時(shí),經(jīng)常會(huì)在輸出信息格式中指定“%t”格式符,一般情況下“%t”輸出的格式都是固定的,但是這樣固定的輸出顯示的時(shí)間可能有時(shí)會(huì)讓用戶看起來感覺比較詫異,例如下面的示例。

【示例】

7a6b708a-3b80-11ee-9e74-dac502259ad0.png

仿真結(jié)果】

7a89797c-3b80-11ee-9e74-dac502259ad0.png

示例中,設(shè)置的timescale是“10ns/1ps”,在$monitor中將$realtime返回的時(shí)間通過格式符“%t”輸出,但是此時(shí)顯示的時(shí)間數(shù)值很大,并且沒有單位,這可能會(huì)讓用戶不知所措,例如在sig為“11”時(shí),此時(shí)顯示的時(shí)間為12343,但是這個(gè)數(shù)字的單位是什么,$relatime本身返回的值并不是這里的12343,示例中顯示的結(jié)果為什么與$realtime返回值不同呢,這是為什么呢?其實(shí)這主要是因?yàn)椤?t”的輸出格式受了任務(wù)$timeformat(注意是任務(wù)不是函數(shù)與?。┑挠绊?,雖然這里沒有顯式的調(diào)用$timeformat,但是其默認(rèn)值還是會(huì)影響到“%t”顯示的時(shí)間值,即“%t”默認(rèn)顯示的時(shí)間是按照當(dāng)前module的timescale設(shè)置的精度作為單位的,并且默認(rèn)情況下顯式的時(shí)間后是沒有時(shí)間單位字符串的,所以此時(shí)就可以理解為什么“%t”在sig為“11”時(shí)顯示的時(shí)間是12343了,這是因?yàn)檫@個(gè)此時(shí)顯示的數(shù)字的單位是1ps。其實(shí)在SystemVerilog中,通過$timeformat可以約束“%t”顯示的時(shí)間格式,其中具體參數(shù)對(duì)應(yīng)關(guān)系如下圖。

7ab40d7c-3b80-11ee-9e74-dac502259ad0.png

其中units_number 是 0 到-15 之間的整數(shù)值,表示打印的時(shí)間值如下表:

Unit Number Time Unit Unit Number Time Unit
0 1 s -8 10 ns
-1 100 ms -9 1 ns
-2 10 ms -10 100 ps
-3 1 ms -11 10 ps
-4 100 us -12 1 ps
-5 10 us -13 100 fs
-6 1 us -14 10 fs
-7 100 ns -15 1 fs

precision_number 是在打印時(shí)間值時(shí),小數(shù)點(diǎn)后保留的位數(shù),其默認(rèn)值為0。

suffix_string 是在時(shí)間值后面打印的后綴字符串,其默認(rèn)值為空字符串。

MinFieldWidth 是時(shí)間值字符串與后綴字符串合起來的這部分字符串的最小長度,若這部分字符串不足這個(gè)長度,則在這部分字符串左側(cè)補(bǔ)空格,直到總長度達(dá)到設(shè)置的值,如果總字符串比設(shè)置的值大,將按照字符串實(shí)際長度輸出,其默認(rèn)值為20。

下面我們通過一個(gè)示例進(jìn)一步理解下$timeformat是如何使用的。

【示例】

7addaa88-3b80-11ee-9e74-dac502259ad0.png

【仿真結(jié)果】

7af8f978-3b80-11ee-9e74-dac502259ad0.png

示例中,通過$timeformat指定了“%t”輸出時(shí)間的格式,“-9”表示要顯示的時(shí)間是按照“1ns”為單位得到的,“3”表示顯示的時(shí)間中小數(shù)部分的位數(shù),“HaHaHa”為時(shí)間字符串之后的后綴字符串,這個(gè)字符串一般指定為時(shí)間的單位,最后一個(gè)參數(shù)“2”表示“%t”顯示的整個(gè)字符串長度的最小值,因?yàn)榇藭r(shí)的時(shí)間字符串和后綴字符串的長度大于設(shè)置的最小值,所以此時(shí)按照實(shí)際字符串長度顯示,當(dāng)然也可以把這個(gè)字符串最小長度的值設(shè)置的大于實(shí)際字符串長度,如下例。

【示例】

7b136f24-3b80-11ee-9e74-dac502259ad0.png

【仿真結(jié)果】

7b35e3f6-3b80-11ee-9e74-dac502259ad0.png

示例中,通過$timeformat設(shè)置了顯示時(shí)間字符串的最小長度為13,仿真結(jié)果可以看出,實(shí)際字符串的長度沒有13個(gè)字符串那么長,所以此時(shí)字符串按照左對(duì)齊,并在字符串左側(cè)補(bǔ)空格直到字符船總長度達(dá)到$timeformat設(shè)置的字符串的最小長度要求為止。另一方面,$timeformat設(shè)置了顯示時(shí)間保留小數(shù)點(diǎn)后的位數(shù)為2,所以時(shí)間顯示的最終結(jié)果保留了2位小數(shù),同時(shí)需要注意,此處進(jìn)行兩位小數(shù)保留時(shí)會(huì)進(jìn)行四舍五入操作。

通過上述幾個(gè)示例,如果我們期望“%t”顯示的時(shí)間值與當(dāng)前仿真時(shí)間一致,那么需要給$timeformat設(shè)置對(duì)應(yīng)合適的參數(shù)或者在輸出時(shí)間時(shí)在格式字符串中不要指定“%t”,而是直接將其位置空留出來,這樣輸出的數(shù)據(jù)將完全取決于用戶使用的時(shí)間函數(shù)

最后,在一個(gè)模塊中可以設(shè)置多個(gè)$timeformat,一個(gè)$timeformat生效后會(huì)持續(xù)到下一個(gè)$timeformat,如下例。

【示例】

7b4f7b9a-3b80-11ee-9e74-dac502259ad0.png

【仿真結(jié)果】

7b736d34-3b80-11ee-9e74-dac502259ad0.png

示例中,通過仿真結(jié)果可以看到第7行設(shè)置的$timeformat僅影響到了第8行“%t”的顯示,并沒有影響到第12行“%t”的顯示,第7行設(shè)置的$timeformat在遇到第11行設(shè)置的$timeformat之后就退出了歷史舞臺(tái),所以第12行“%t”顯示的格式按照第11行設(shè)置的$timeformat顯示了。





審核編輯:劉清

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

    關(guān)注

    14

    文章

    1011

    瀏覽量

    83554
  • 字符串
    +關(guān)注

    關(guān)注

    1

    文章

    567

    瀏覽量

    20435
  • Verilog語言
    +關(guān)注

    關(guān)注

    0

    文章

    113

    瀏覽量

    8196

原文標(biāo)題:SystemVerilog中的$timeformat是干啥的

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    請(qǐng)問Linear Lab Tool具體是做什么的

    請(qǐng)問Linear Lab Tool具體是做什么的呢?
    發(fā)表于 01-05 12:52

    labview幀列表是做什么的,不明白?

    labview幀列表是做什么的,不明白?
    發(fā)表于 03-15 10:21

    請(qǐng)問培訓(xùn)生是做什么的

    技術(shù)員培訓(xùn)生工程師培訓(xùn)生這些職位是做什么的·····以后怎么發(fā)展······
    發(fā)表于 02-18 01:24

    請(qǐng)問IIO軟件是做什么的

    IIO軟件是做什么的?剛接觸AD9361,SD卡的系統(tǒng)帶的軟件,可我看了半天,不知道具體該怎么設(shè)置波形,還有設(shè)置好的波形是輸出波形,還是輸入波形???
    發(fā)表于 08-03 06:58

    bootloader程序是用來做什么的?與startup程序有區(qū)別么?

    想請(qǐng)教一個(gè)問題,MCU的bootloader程序是做什么的?與在KEIL寫的startup程序有區(qū)別么?另外ISP升級(jí)又與bootloader有什么關(guān)系?求大俠賜教
    發(fā)表于 01-08 10:55

    請(qǐng)問MiniFly提供的固件是為了做什么的

    萌新剛?cè)腴T,對(duì)固件的了解還不是很深。之前玩開發(fā)板,沒接觸過固件,所以不明白除了燒寫firmware主程序,bootload和.bin文件是為了做什么的?求求大神賜教
    發(fā)表于 07-26 01:42

    stm32的這些時(shí)鐘都是做什么的

    請(qǐng)問一下stm32的這些時(shí)鐘都是做什么的,有什么區(qū)別呢,什么時(shí)候改用哪個(gè)?SYSCLK,HCLK,PCLK,麻煩大家?guī)兔χ更c(diǎn)一下,謝謝!
    發(fā)表于 05-27 04:35

    Native是用來做什么的

    PDK的mos管類型的Native是用來做什么的?
    發(fā)表于 01-18 06:46

    SOHO一族,SOHO一族是做什么的?

    SOHO一族,SOHO一族是做什么的?  隨著中國加入世貿(mào)組織,互聯(lián)網(wǎng)信息化高速發(fā)展帶來的機(jī)遇,加之傳統(tǒng)外貿(mào)企業(yè)的固疾逐步推生出一個(gè)
    發(fā)表于 03-22 10:08 ?4503次閱讀

    數(shù)據(jù)庫工程師是做什么的

    每當(dāng)我給別人介紹我的職位是數(shù)據(jù)庫工程師的時(shí)候,別人都會(huì)用疑惑的眼睛看著我??倳?huì)拋出一個(gè)問題:數(shù)據(jù)庫工程師是做什么的
    的頭像 發(fā)表于 08-27 09:00 ?9276次閱讀

    半導(dǎo)體公司是做什么的

    半導(dǎo)體指常溫下導(dǎo)電性能介于導(dǎo)體與絕緣體之間的材料。半導(dǎo)體在收音機(jī)、電視機(jī)以及測(cè)溫上有著廣泛的應(yīng)用。如二極管就是采用半導(dǎo)體制作的器件。本文主要詳細(xì)介紹了半導(dǎo)體公司是做什么的。
    的頭像 發(fā)表于 09-27 11:10 ?4w次閱讀

    程序員到底是做什么的

    很多人問程序員是是做什么的?或者問IT是做什么的?對(duì)于非IT行業(yè)的人很難有時(shí)間慢慢解釋清楚,下面我結(jié)合自己的理解談一談吧。
    的頭像 發(fā)表于 02-12 16:17 ?9263次閱讀

    資產(chǎn)管理是做什么的,聯(lián)想百應(yīng)助力高效管理

    的難度也越來越大,會(huì)給企業(yè)的運(yùn)營帶來很大的影響。這種情況下,采用智能化資產(chǎn)管理方式就很有必要,比如聯(lián)想百應(yīng)資產(chǎn)管理系統(tǒng)。那么聯(lián)想百應(yīng)資產(chǎn)管理是做什么的,能給企業(yè)帶來什么呢? 資產(chǎn)管理是做什么的?聯(lián)想百應(yīng)一站式
    的頭像 發(fā)表于 10-28 10:47 ?5322次閱讀
    資產(chǎn)管理是<b class='flag-5'>做什么的</b>,聯(lián)想百應(yīng)助力高效管理

    什么是汽車芯片 汽車芯片是做什么的

    什么是汽車芯片?汽車芯片是做什么的?芯片是一種半導(dǎo)體元件,汽車芯片是控制汽車安全行駛的電子器件,汽車芯片主要分為功能芯片、功率半導(dǎo)體、傳感器三大類,即微控單元,主要負(fù)責(zé)算力。
    的頭像 發(fā)表于 12-16 11:52 ?1.3w次閱讀

    ip地址是做什么的

    如果你現(xiàn)在正在看我的這篇文章,那說明你已經(jīng)連接上了互聯(lián)網(wǎng)。說到互聯(lián)網(wǎng),你一定聽說 ip 地址這個(gè)概念,你知道 ip 地址是做什么的嗎?與之而來的還有公網(wǎng) ip ,私網(wǎng) ip ,你知道有什么區(qū)別嗎?
    的頭像 發(fā)表于 09-16 10:03 ?3137次閱讀