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

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

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

聊聊使用Verdi去分析NBA Delay的問題

冬至子 ? 來源:icsoc ? 作者:韓京飛 ? 2023-06-09 16:28 ? 次閱讀

在學(xué)習(xí)和使用 Verilog 的過程中,難免會(huì)碰到需要深入理解仿真器調(diào)度的問題。今天這篇聊聊使用 Verdi 去分析 NBA Delay 的問題。

NBA 就是 NonBlocking Assignment,非阻塞賦值 的縮寫。它通常用來描述一個(gè)用時(shí)鐘沿觸發(fā)的寄存器。在 Verilog 普及早期,人們通常會(huì)在 NBA 的<= 之后加個(gè)單位延時(shí)#1來解決早期仿真器行為不一致的問題。

所謂習(xí)慣成自然,NBA Unit Delay 在某些設(shè)計(jì)中一直沿用下來,那么如何去理解這個(gè)延時(shí)的作用呢?SNUG 上的知名作者 Clifford E. Cummings 在 2002 年有篇文章闡述的挺詳細(xì),感興趣的朋友可以搜來研究,不再贅述。

下面給出一些代碼片斷,同樣感興趣的朋友可以自己完善并用 VCS 仿真生成波形,然后用 Verdi 打開。

首先創(chuàng)建三個(gè)時(shí)鐘,注意兩個(gè)二分頻時(shí)鐘的創(chuàng)建方式不同。

always #(10/2) clk = ~clk;
  always #(20/2) clk_div2_direct = ~clk_div2_direct;
  
  always @ ( posedge clk or negedge rst_n ) begin
    if ( ~ rst_n ) begin
      clk_div2  <= 1'b0;
    end
    else begin
      clk_div2  <= ~clk_div2;
    end
  end

然后用 clk 觸發(fā)一個(gè)不停翻轉(zhuǎn)的寄存器 d1,再分別用兩個(gè)二分頻時(shí)鐘去采樣,保存在 d5 和 d6 中。

always @ ( posedge clk or negedge rst_n ) begin
    if ( ~ rst_n ) begin
      d1  <= 1'b0;
    end
    else begin
      d1  <= ~d1;
    end
  end
  
  always @ ( posedge clk_div2 or negedge rst_n ) begin
    if ( ~ rst_n ) begin
      d5 <= 1'b0;
    end
    else begin
      d5 <= d1;
    end
  end

  always @ ( posedge clk_div2_direct or negedge rst_n ) begin
    if ( ~ rst_n ) begin
      d6 <= 1'b0;
    end
    else begin
      d6 <= d1;
    end
  end

用 VCS 仿真的時(shí)候,加上編譯時(shí)選項(xiàng)+fsdb+region和運(yùn)行時(shí)選項(xiàng)+fsdb+delta。

然后用 Verdi 打開生成的 fsdb 波形。正常的話,可以看到 d5 和 d6 的波形是完全不同的,一個(gè)是常0,一個(gè)是常1。

圖片

只從上圖分析的話,兩個(gè)二分頻時(shí)鐘的波形是完全一致的,被采樣的數(shù)據(jù)是同一個(gè),那么采到的數(shù)據(jù)也應(yīng)該是相同的。但我們知道這兩個(gè)二分頻時(shí)鐘的生成方式是不同的,那么不同在什么地方呢?

在 Verdi 的 nWave 窗口中選中 View - Expand Delta - Region Mode,把 Cursor 移動(dòng)到二分頻時(shí)鐘的上升沿,然后點(diǎn)擊 Expand/Collapse Time at Cursor,簡單點(diǎn)的話直接按 w 鍵。

圖片

然后就可以看到這個(gè)仿真時(shí)刻的 Simulation Region,里面展示了各個(gè) Event 和 Region 的關(guān)系。

圖片

這個(gè)例子中,只存在綠色的 Active Region 和 紅色的 NBA Region。在某些 glitch debug 的例子中,還能看到 Re-Active Region 和 Re-NBA Region。

Region 的展示可以幫助我們很好的理解 Verilog 規(guī)范中的定義的信號調(diào)度。

此外,Verdi 還可以通過點(diǎn)擊 Tools - Event Sequence 來顯示圖形化的 Event 序列。

圖片

圖片

Verdi 真得是很好很強(qiáng)大。

不過隨著工具的逐漸強(qiáng)大,站在工具背后的人呢?是在逐漸退化還是改變了進(jìn)化方向?歡迎留言說說你的看法。

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

    關(guān)注

    31

    文章

    5253

    瀏覽量

    119201
  • 仿真器
    +關(guān)注

    關(guān)注

    14

    文章

    1008

    瀏覽量

    83437
  • VCS
    VCS
    +關(guān)注

    關(guān)注

    0

    文章

    78

    瀏覽量

    9537
  • Verdi
    +關(guān)注

    關(guān)注

    0

    文章

    22

    瀏覽量

    8741
  • CLK
    CLK
    +關(guān)注

    關(guān)注

    0

    文章

    125

    瀏覽量

    17039
收藏 人收藏

    評論

    相關(guān)推薦

    請教VCS和verdi怎么聯(lián)合使用

    最近要用到VCS仿真后生成FSDB文件,然后在Verdi中進(jìn)行自動(dòng)偵錯(cuò),請問我怎么安裝Verdi這個(gè)軟件以及如何啟動(dòng)license,并且怎么寫testbench文件才可以產(chǎn)生FSDB文件。請懂得人給我支支招,我也是剛開始學(xué)習(xí)這個(gè)軟件的使用。
    發(fā)表于 01-22 14:53

    NBA球員年薪影響因素分析方案

    利用可視化對NBA球員年薪影響因素進(jìn)行分析
    發(fā)表于 08-08 10:35

    怎樣使用Makefile+VCS+Verdi做個(gè)簡單的Test Bench?

    怎樣使用Makefile+VCS+Verdi做個(gè)簡單的Test Bench?有哪些操作步驟?
    發(fā)表于 06-18 06:28

    Verdi工具怎么安裝?如何破解?

    本文介紹Verdi工具的安裝及破解過程
    發(fā)表于 06-21 07:15

    VCS+Verdi如何安裝?怎么破解?

    VCS+Verdi如何安裝?怎么破解?
    發(fā)表于 06-21 06:11

    Verdi 54v7 LINUX

    Verdi 54v7 LINUX
    發(fā)表于 03-25 13:19 ?9次下載

    烏拉戒指:助力NBA抗疫,爭取NBA復(fù)賽

    對很多人來說,沒有NBA的夏天是不完整的。好消息是,NBA在竭盡全力重啟停擺了將近4個(gè)月的2019-2020賽季;壞消息是,美國疫情再次加重,NBA多位球員的病毒檢測成陽性,復(fù)賽舉辦地奧蘭多的感染人數(shù)也在反彈,復(fù)賽有可能取消。
    的頭像 發(fā)表于 07-03 15:42 ?3127次閱讀

    stm32 delay文件總結(jié)

    stm32 delay文件總結(jié)delay.h#ifndef __DELAY_H#define __DELAY_H #include "sys.h" void
    發(fā)表于 12-24 19:36 ?6次下載
    stm32 <b class='flag-5'>delay</b>文件總結(jié)

    分享《verdi用法小結(jié)》的pdf

    分享Verdi用法小結(jié)的pdf文檔
    的頭像 發(fā)表于 02-18 20:21 ?1066次閱讀
    分享《<b class='flag-5'>verdi</b>用法小結(jié)》的pdf

    Verdi使用技巧(三)

    前一段時(shí)間IC君比較忙,沒有更新文章,最近稍微閑下來點(diǎn),繼續(xù)更新Verdi相關(guān)的文章。
    的頭像 發(fā)表于 04-25 14:44 ?4175次閱讀
    <b class='flag-5'>Verdi</b>使用技巧(三)

    全網(wǎng)最實(shí)用的Verdi教程1

    Verdi是一個(gè)功能強(qiáng)大的debug工具,可以配合不同的仿真軟件進(jìn)行debug,很多企業(yè)常用VCS+Verdi或者Xcelium/xrun+Verdi的方式進(jìn)行代碼的仿真與檢查。Verdi
    的頭像 發(fā)表于 05-05 14:49 ?1.6w次閱讀
    全網(wǎng)最實(shí)用的<b class='flag-5'>Verdi</b>教程1

    全網(wǎng)最實(shí)用的Verdi教程2

    Verdi是一個(gè)功能強(qiáng)大的debug工具,可以配合不同的仿真軟件進(jìn)行debug,很多企業(yè)常用VCS+Verdi或者Xcelium/xrun+Verdi的方式進(jìn)行代碼的仿真與檢查。Verdi
    的頭像 發(fā)表于 05-05 14:53 ?7262次閱讀
    全網(wǎng)最實(shí)用的<b class='flag-5'>Verdi</b>教程2

    全網(wǎng)最實(shí)用的Verdi教程3

    Verdi是一個(gè)功能強(qiáng)大的debug工具,可以配合不同的仿真軟件進(jìn)行debug,很多企業(yè)常用VCS+Verdi或者Xcelium/xrun+Verdi的方式進(jìn)行代碼的仿真與檢查。Verdi
    的頭像 發(fā)表于 05-05 14:53 ?5185次閱讀
    全網(wǎng)最實(shí)用的<b class='flag-5'>Verdi</b>教程3

    Verdi環(huán)境配置、生成波形的方法

    Verdi是一個(gè)功能強(qiáng)大的debug工具,可以配合不同的仿真軟件進(jìn)行debug,很多企業(yè)常用的就是VCS+Verdi或或者Xcelium(xrun)+Verdi的方式進(jìn)行代碼的仿真與檢查
    的頭像 發(fā)表于 05-29 09:48 ?3189次閱讀
    <b class='flag-5'>Verdi</b>環(huán)境配置、生成波形的方法

    Verdi連續(xù)波激光器-Coherent

    描述: Verdi系列激光器,是基于OPSL專利技術(shù),是高功率的532nm綠光激光器。常用于鈦寶石激光器泵浦、全息、干涉、冷原子等領(lǐng)域。 Verdi系列激光器,是久負(fù)盛名的激光器,具有非常出色
    的頭像 發(fā)表于 06-30 09:47 ?438次閱讀
    <b class='flag-5'>Verdi</b>連續(xù)波激光器-Coherent