概述
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檔案)即可
- 打開DVE(dve &) > 工具列Simulator > Capture Delta Cycle Values > 在Source code點選想觀察的訊號 > 按右鍵Add To Waves > New Wave View
- 打開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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复