亚洲精品久久久久久久久久久,亚洲国产精品一区二区制服,亚洲精品午夜精品,国产成人精品综合在线观看,最近2019中文字幕一页二页

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

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

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

Verdi查看task內(nèi)部變量

CHANBAEK ? 來源:數(shù)字IC與好好生活的兩居室 ? 作者:除夕之夜啊 ? 2023-03-26 16:08 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

任務(task)可以用來描述共同的代碼段,并在模塊內(nèi)任意位置被調(diào)用,讓代碼更加的直觀易讀。task 更像一個過程,過程內(nèi)一般按順序執(zhí)行,完成各種邏輯控制。

調(diào)試 testbench 中的 task 時,新手可能會遇到一些問題。典型的問題有兩個,一個是 task 內(nèi)部聲明使用的變量為什么不能在 Verdi 波形中查看,另一個是 task 輸出端連接的信號為什么不隨 task 內(nèi)部賦值變量的變化而變化。本節(jié)將對這兩個問題進行講解說明。

Verdi 查看 task 內(nèi)部變量

創(chuàng)建一個簡單的 task,包含內(nèi)部變量 reg 和 output,如下所示。

//varialbes in task
       task reg_in_task  ;
              output [7:0]       data_test1 ;
              reg [7:0]              data_test2 ;
              begin
                     #100 ;
                     data_test1 = 8'h13 ;
                     data_test2 = 8'h24 ;
                     #100 ;
                     data_test1 = 8'h1a ;
                     data_test2 = 8'h2b ;
              end
       endtask

在 testbench 的 initial 語句中調(diào)用該task,并定義變量 data_test1_t,連接到該 task 輸出端,如下所示。

`timescale 1ns/1ps
module test ;
   ......
       reg [7:0]       data_test1_t ;
       initial begin
              reg_in_task(data_test1_t) ;
       end
endmodule

使用 simv 進行仿真,不用添加特殊選項,如下所示。

./simv -ucli -i wave_gen.tcl -l sim.log

打開 Verdi 和 fsdb 波形文件,添加 task 內(nèi)部的變量 data_test1 和輸出端 data_test2 時,會提示相關(guān)信號無法找到。

圖片

為解決上述問題,使用 simv 進行仿真時需要添加特殊選項 +fsdb+functions,如下所示。

./simv +fsdb+functions -ucli -i wave_gen.tcl -l sim.log

此時再在 Verdi 中添加 task 內(nèi)部的變量 data_test2 和輸出端 data_test1,其變化過程會在波形上顯示,如下所示。

圖片

◆ 小結(jié):VCS 仿真時,需要在 simv 仿真時添加 fsdb+functions 參數(shù),才可在 Verdi 中打開 fsdb 波形并查看 task 內(nèi)部變量的變化情況。

TASK 操作全局變量

上述仿真波形中,細心的讀者可能會看到,雖然連線信號 data_test1_t 連接的是 task 輸出端,但是 data_test1_t 并不隨 task 輸出端的變化而變化。

圖片

這是因為 testbench 中的代碼一般是順序執(zhí)行,并沒有對應的實際硬件結(jié)構(gòu)。所以 task 輸出端連接的對應信號不可以理解為連續(xù)賦值,而是理解為一個返回值。即 task 執(zhí)行完畢時,只返回輸出端連接的信號一個最終結(jié)果。所以,data_test1_t 只會在 task 結(jié)束時 (對應200ns) 被賦值為 8'h1a,并不會體現(xiàn)中間的變化過程。

如果一個信號在 task 中的變化能夠體現(xiàn)在 task 外部,則該信號需要定義為全局變量。即信號需要定義在 task 外部,但是在 task 內(nèi)部中驅(qū)動。

上述示例中,刪除輸出端 data_test1,并在 task 中直接對全局變量 data_test1_t 進行賦值驅(qū)動。

`timescale 1ns/1ps
module test ;


    reg [7:0]       data_test1_t
    //varialbes in task
    task reg_in_task  ;
        reg [7:0]              data_test2 ;
        begin
           #100 ;
           data_test1_t = 8'h13 ;
           data_test2   = 8'h24 ;
           #100 ;
           data_test1_t = 8'h1a ;
           data_test2   = 8'h2b ;
       end
    endtask


    initial begin
       reg_in_task ;
    end
endmodule

仿真結(jié)果如下。此時全局變量 data_test1_t 的變化過程并不局限于 task 內(nèi)部。

圖片

testbench 不用“Think In Hardware”,寫法比較自由。在多個 task 中對同一個全局變量信號進行多驅(qū)動也是沒有問題的,只要時間軸上分開驅(qū)動事件的先后順序即可。

上述示例中再增加一個 task ,用以驅(qū)動全局信號 data_test1_t,則代碼和仿真結(jié)果如下。這里不再分析。

task task_mult_drive  ;
        begin
            #150 ;
            data_test1_t = 8'hc8 ;
        end
    endtask


    initial begin
        task_mult_drive ;
    end

圖片

小結(jié):task 執(zhí)行完畢時,只返回輸出端連接的信號一個最終結(jié)果。如果 task 中信號的變化過程能夠在 task 外部實時體現(xiàn),則該信號也需要定義在 task 外部。

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

    關(guān)注

    7

    文章

    2818

    瀏覽量

    52589
  • 信號
    +關(guān)注

    關(guān)注

    11

    文章

    2874

    瀏覽量

    79502
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4929

    瀏覽量

    72796
  • Verdi
    +關(guān)注

    關(guān)注

    0

    文章

    22

    瀏覽量

    9111
  • 變量
    +關(guān)注

    關(guān)注

    0

    文章

    615

    瀏覽量

    29340
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    高速接口MIPI DPHY配置task函數(shù)

    景芯SoC訓練營有同學問Verdi如何加載task函數(shù)里面的波形,這里以高速圖像接口MIPI為例,給大家介紹下吧。
    的頭像 發(fā)表于 11-18 16:59 ?1455次閱讀
    高速接口MIPI DPHY配置<b class='flag-5'>task</b>函數(shù)

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

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

    IAR 在線調(diào)試查看各種變量的不同方法

    IAR在線調(diào)試查看各種變量的不同方法
    的頭像 發(fā)表于 03-12 10:00 ?1.5w次閱讀

    如何通過自動化腳本實現(xiàn)Questasim和Verdi的聯(lián)合仿真

    : 《VERDI_HOME》/share/PLI/MODELSIM/${PLATFORM}。 首先需要把上面的庫文件路徑添加到系統(tǒng)的環(huán)境變量LD_LIBRARY_PATH 中,如下:
    的頭像 發(fā)表于 06-13 17:00 ?5810次閱讀
    如何通過自動化腳本實現(xiàn)Questasim和<b class='flag-5'>Verdi</b>的聯(lián)合仿真

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

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

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

    過程中,常常用來調(diào)試(debug)一些錯誤的情況。Verdi既可以閱讀調(diào)試代碼,又可以查看波形,包括數(shù)字設(shè)計的波形和模擬設(shè)計的波形。
    的頭像 發(fā)表于 05-05 14:49 ?2.1w次閱讀
    全網(wǎng)最實用的<b class='flag-5'>Verdi</b>教程1

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

    過程中,常常用來調(diào)試(debug)一些錯誤的情況。Verdi既可以閱讀調(diào)試代碼,又可以查看波形,包括數(shù)字設(shè)計的波形和模擬設(shè)計的波形。
    的頭像 發(fā)表于 05-05 14:53 ?1.3w次閱讀
    全網(wǎng)最實用的<b class='flag-5'>Verdi</b>教程2

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

    過程中,常常用來調(diào)試(debug)一些錯誤的情況。Verdi既可以閱讀調(diào)試代碼,又可以查看波形,包括數(shù)字設(shè)計的波形和模擬設(shè)計的波形。
    的頭像 發(fā)表于 05-05 14:53 ?7672次閱讀
    全網(wǎng)最實用的<b class='flag-5'>Verdi</b>教程3

    如何用vcs+verdi仿真Verilog文件并查看波形呢?

    我們以一個簡單的加法器為例,來看下如何用vcs+verdi仿真Verilog文件并查看波形。
    的頭像 發(fā)表于 05-08 16:00 ?7699次閱讀
    如何用vcs+<b class='flag-5'>verdi</b>仿真Verilog文件并<b class='flag-5'>查看</b>波形呢?

    如何用vcs+verdi仿真Verilog文件

    我們以一個簡單的加法器為例,來看下如何用vcs+verdi仿真Verilog文件并查看波形。 源文件內(nèi)容如下:
    的頭像 發(fā)表于 05-11 17:03 ?2516次閱讀
    如何用vcs+<b class='flag-5'>verdi</b>仿真Verilog文件

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

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

    如何用Verdi查看UVM環(huán)境中的變量?

    我們常用的debug UVM的方法是通過打印log實現(xiàn)。有沒有辦法像 debug RTL代碼一樣將 UVM 中變量拉到波形上看呢?答案是有的,下面讓我們看看是怎么做到的。
    的頭像 發(fā)表于 06-25 16:01 ?2679次閱讀
    如何用<b class='flag-5'>Verdi</b><b class='flag-5'>查看</b>UVM環(huán)境中的<b class='flag-5'>變量</b>?

    GDB調(diào)試如何進行變量查看

    變量查看 變量查看: 最常見的使用便是使用print(可簡寫為p)打印變量內(nèi)容。 以上述程序為例: gdb helloworld break
    的頭像 發(fā)表于 09-26 16:17 ?2973次閱讀

    verilog中function和task的區(qū)別

    非常相似,但它們在功能和使用方式上有一些重要的區(qū)別。 定義和聲明方式不同: Function:使用關(guān)鍵字"function"來定義和聲明。函數(shù)可以有一個或多個輸入?yún)?shù),可以有一個返回值。函數(shù)必須在聲明之后直接定義,不能在其他函數(shù)或任務內(nèi)部定義。 Task:使用關(guān)鍵字"
    的頭像 發(fā)表于 02-22 15:40 ?2949次閱讀

    verilog task和function區(qū)別

    verilog中的task和function都是用于實現(xiàn)模塊中的可重復的功能,并且可以接收參數(shù)和返回結(jié)果。但是它們在編寫和使用上有一些區(qū)別。下面將詳細介紹task和function的區(qū)別。 語法結(jié)構(gòu)
    的頭像 發(fā)表于 02-22 15:53 ?1919次閱讀