我是靠谱客的博主 清爽心情,最近开发中收集的这篇文章主要介绍[VCS]在Verdi中找出Glitch                         VCS在Verdi中找出Glitch,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

                         VCS在Verdi中找出Glitch

       前言:在验证RTL过程中,我们可能会遇到仿真Hang住的情况,那么怎么去定位到RTL中呢?

一、Zero delay loop导致的Simulation Hang

  • 需要加VCS Option:+vcs+loopreport +vcs+loopdetect +fsdb+glitch=0 +fsdb+region

二、找出Glitch对仿真结果的影响

  • 添加VCS Option:-debug_access+all +fsdb+delta

  • 在Verdi中Trace: 打開Verdi > 載入fsdb > 挑選想觀察的訊號 > 按工具列View > 點選Display Glitch > 如果這個fsdb裡面有Glitch存在,那就會以紅色星號 * 表示

Q: 我一定要把fsdb打開,才知道有沒有Glitch存在嗎?

A: 不用,只要有在Compile + Simulation階段指定上述的VCS option,那可以直接對fsdb檔案輸入:fsdbdebug -info <fsdb name>;如果它最後有顯示 "This fsdb file has glitches",並且當前環境使用的Verdi的版本大於201712SP2-1,那可以用:fsdbdebug -show_glitch <fsdb name>列出有哪些地方有glitch

  •  Debug方法一:將游標指定在"有Glitch的那個時間點",工具列View > Expand Delta > Expand/Collapse Time at Cursor > 就可以看到在這個時間點上,訊號是怎麼變化的
  • Debug方法二:

如果想看這些訊號在SystemVerilog是怎麼作排程(Schedule),工具列View > Expand Delta > 打開Region mode;即可看到這些訊號是怎麼在Event region跳動的

簡單來說:

寫在module...endmodule裡面的code,執行順序是Active > Inactive > Nonblocking Assignment(NBA)

寫在program...endprogram裡面的code,會先等待module/endmodule部分完成後再接著處理,執行順序是Re-Active > Re-Inactive > Re-NBA

我們可以從這張圖看到有"四個顏色"的區域,代表這個fsdb所對應的*.sv中一定存在module和program

  •  Debug方法三:

    看波形會讓你/妳頭昏?那就將游標對準有Glitch的那個時間點 > 選擇想要看的訊號 > 工具列Tools > Event Sequence... > OK > Event sequence視窗會顯示訊號的跳動順序

  • 总结
             说明                                                           Option

+fsdb+delta

是由三個指令組合而成

+fsdb+glitch=0指定Glitch的儲存數量,範圍是0~254,這裡設定為0,代表儲存所有Glitch
+fsdb+region開啟Region mode功能(Debug方法二)
+fsdb+sequential開啟Sequence mode功能(Debug方法三)

Synopsys的DVE(Discovery Visualization Environment)也可以看到Glitch和Delta cycle

只要在compile階段指定:vcs <other options> -debug_access+all,sim階段指定:simv <other options> -gui(或者導出vcd檔案)即可

  1. 打開DVE(dve &) > 工具列Simulator > Capture Delta Cycle Values > 在Source code點選想觀察的訊號 > 按右鍵Add To Waves > New Wave View
  2. 打開Wave視窗 > 工具列Simulator > Start/Continue > 跑完模擬後點選想要看的時間點 > 工具列View > Delta Cycle > Expand Time也可以看到一樣的結果

只不過DVE的波形檔案不支援fsdb,它反而需要*.vcd(Value Change Dumping)檔案

三、快速找出位拼接的信号中,某个信号为第几bit 

  • Verdi (2020/03-SP2 和以後的版本)
  • 在目标信号(l1_int_src[127:0])身上点右键,依次选择:new schematic → connectivity
  • 然后在弹出的Schematic中依次点选View --> InstPort Name
  • 然後找到接點
  • 就能發現區間!

四、在Verdi中抓取function/task内的信号

  • -debug_access+all +fsdb+functions

最后

以上就是清爽心情为你收集整理的[VCS]在Verdi中找出Glitch                         VCS在Verdi中找出Glitch的全部内容,希望文章能够帮你解决[VCS]在Verdi中找出Glitch                         VCS在Verdi中找出Glitch所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(29)

评论列表共有 0 条评论

立即
投稿
返回
顶部