本文主要分析總結(jié)芯片驗證過程中遇到的仿真器掛死(就是通常所說的hang)的情形。給出的解決方案都是基于Cadence的仿真工具incisive(當然利用xcelium也是沒有問題的)和debug工具simvision(當然利用更強大的indago也是沒問題的),需要指出來的一點是如果利用xcelium和indago聯(lián)合調(diào)試,需要注意版本兼容問題,利用simvision來debug就不存在這個問題,因為simvision是位于incisive或xcelium的安裝目錄下的,并不需要單獨的license。由于這類問題比較普遍,而且scenario也比較復(fù)雜,所以我打算把它做成一個系列。今天是開篇,先列出所有的場景和類型,后續(xù)有對應(yīng)的具體的解決方案。
一、仿真器卡在無限循環(huán)或者hang住的場景有很多,原因也各不相同。但大致可以分為如下幾類:
1.1:rtl/netlist(網(wǎng)表)無限循環(huán);
1.1.1signal glitches(信號毛刺)
使用irun/xrun的-delay_trigger這個option可以過濾掉毛刺,能夠使得仿真進行下去。
1.1.2無限deltacycles
當仿真時間不能往前推進,但是delta cycle無限增加的情形下。可以在仿真開始時,使用如下tcl命令,可以使得delta cycle增加到一定數(shù)量后,讓仿真自動停下來(注意這時候仿真并未中斷,這時候可以繼續(xù)操作仿真器)。它跟gateloopwarn這個option有點類似。
stop -delta 5000 -timestep -delbreak 1
一旦仿真停下來,我們就可以使用以下tcl命令debug該循環(huán)了:
>run -step//單步調(diào)試,注意這有一個前提就是要確保-linedebug這個option是事先打開的
>drivers -active //對應(yīng)跨越verilog和VHDL邊界的網(wǎng)絡(luò)就該使用drivers -effective命令
1.1.3zero-delay gate level無限循環(huán)
如果是gate level的仿真,注意要用-gateloopwarn這個option,其他參考1.1.2的做法
1.1.4錯誤的使用timescale/time-precision
可以使用
>xrun -timescale 1ns/1ps -override_timescale//在elaborate階段使用即可
1.1.5設(shè)計中有組合邏輯環(huán)
可以使用toggle coverage來檢測是否有組合邏輯環(huán)。當然也可以用HAL, 還可以用profiler,甚至還可以用高大上的JasperGold,工具如此之多,是不是有點懵逼,哈哈
1.2與仿真器(incisive)接口的C/C++代碼內(nèi)部的無限循環(huán),比如PLI/VPI/DPI等;
這個足夠展開成一個專題了,這里就不展開了。
1.3仿真環(huán)境中的復(fù)雜隨機約束導(dǎo)致的仿真器掛死(hang)
簡單來講就是啟用仿真器的心跳功能,
如果使用命令行啟用是這樣的
>xrun -xceligen heartbeat
如果通過Tcl命令啟用是這樣的:
xcelium>xceligen -heartbeat
如果通過環(huán)境變量啟用是這樣的
Setenv XCELIGEN_HEARTBEAT=[value]
BTW,如果想看求解器是如何迭代或被stuck的,可以使用-utrace這個選項。
1.4for循環(huán)的最大值不確定導(dǎo)致的無限循環(huán)
類似這種:for(int i=0; i!=var;i++) //如果var是X的話for循環(huán)就會進入死循環(huán)(循環(huán)終止條件不確定)
1.5low power仿真中的hang(仿真掛起);
這也可以展開成一個專題了,在這里就不展開了。
二、上面說的如此抽象,有裝逼的嫌疑,那到底該如何實現(xiàn)呢?別急后續(xù)結(jié)合具體的小例子慢慢展開,保證有圖有真相,敬請期待……
審核編輯 :李倩
-
芯片
+關(guān)注
關(guān)注
462文章
53179瀏覽量
453645 -
仿真器
+關(guān)注
關(guān)注
14文章
1045瀏覽量
86378
原文標題:如何debug設(shè)計中的無限循環(huán)(仿真器hang)系列(1)開篇
文章出處:【微信號:Rocker-IC,微信公眾號:路科驗證】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
芯片研發(fā)過程中的兩種流片方式

靜力水準儀在測量過程中遇到誤差如何處理?

固定式測斜儀在測量過程中遇到誤差如何處理?

概倫電子電路類型驅(qū)動SPICE仿真器NanoSpice X介紹

概倫電子千兆級高精度電路仿真器NanoSpice Giga介紹

概倫電子先進數(shù)字仿真器VeriSim介紹
使用AD2428時,通過主節(jié)點發(fā)現(xiàn)從節(jié)點的過程中遇到的問題求解
西門子EDA助力提升IC設(shè)計驗證效率

使用TDA4仿真器遇到的幾個疑問求解
使用DAC1282過程中遇到的參考電壓問題求解
使用ADS1211U的過程中,采樣值輸出一直為0XFFFFFF,為什么?
芯片制造過程中的兩種刻蝕方法

評論