1. 前言
在數(shù)字IP/IC,FPGA項(xiàng)目的上板驗(yàn)證階段,對(duì)于一些難以確定原因的bug,比如:RTL仿真時(shí),測(cè)試pattern覆蓋不夠全面,fpga跑起來(lái)后的實(shí)際信號(hào)時(shí)序可能跟RTL 仿真不一致,從而出現(xiàn)Bug。一種debug的方式就是用FPGA工具提供的ILA模塊(xilixn在ISE中叫:chipscope),來(lái)實(shí)時(shí)抓取FPGA內(nèi)部數(shù)字信號(hào)的波形,分析邏輯錯(cuò)誤的原因,幫助debug。
ILA的正確、高效使用,能加速debug的進(jìn)程。
2. ILA工作原理
根據(jù)xilinx的datasheet功能描述,猜測(cè)ILA也是一個(gè)數(shù)字IP,大致結(jié)構(gòu)如下:
其中:
1) dbg_sig?:是待觀測(cè)的debug信號(hào);
2) ila_clk:是設(shè)置的ILA工作時(shí)鐘(監(jiān)測(cè)、抓?。?;
3) jtag_inf:ILA數(shù)據(jù)與上層的交互口(tigger條件設(shè)置,抓取的數(shù)據(jù)上傳);
4) sram_ctrl:根據(jù)trig_ctrl,觸發(fā)抓取,并把抓取的數(shù)據(jù)按cila_clk的cycle實(shí)時(shí)寫(xiě)入SRAM;
5) sram:抓取數(shù)據(jù)的存儲(chǔ)空間;
6) jtag_io:Jtag協(xié)議定義的標(biāo)準(zhǔn)IO;
根據(jù)這個(gè)大致結(jié)構(gòu),預(yù)計(jì)ILA工作原理如下:
1) PC端GUI應(yīng)用程序設(shè)置trigger條件;通過(guò)jtag_io配置進(jìn)入ILA core;
2) ILA core開(kāi)始工作,使用ila_clk監(jiān)測(cè)debug信號(hào)是否符合tigger條件;
3) 符合條件后,使用ila_clk抓取debug信號(hào),并實(shí)時(shí)存入SRAM;
4) 抓取結(jié)束后,通過(guò)jtag_io把debug信號(hào)的值上傳到PC端;
5) PC端GUI應(yīng)用程序顯示波形;
根據(jù)這個(gè)工作原理,可以推導(dǎo)出ILA的一些使用特性:
1) ILA加入后,需要增加LUT/DFF的使用量;
2) ILA加入后,需要增加的使用量,跟debug信號(hào)的數(shù)量,抓取深度成正比;
這些特性,跟實(shí)際布局布線后的結(jié)果是匹配的。
3. ILA使用方法與注意
ILA的使用步驟如下:
A. 設(shè)計(jì)綜合;
B. 點(diǎn)擊:Set Up Debug開(kāi)始添加ILA;
C. 添加debug信號(hào):
D. 對(duì)每個(gè)debug信號(hào)選擇監(jiān)測(cè)、抓取時(shí)鐘:
E. 設(shè)置抓取特性:
F. 結(jié)束,保存ILA設(shè)置。ILA信息將存入工程的xdc約束文件:
到此,ILA插入結(jié)束,在place&route完成,產(chǎn)生configure bit后,下載進(jìn)入FPAG即可使用ILA進(jìn)行內(nèi)部觀測(cè)了。
4. ILA使用注意
在ILA的使用過(guò)程中,有如下3點(diǎn)需要注意:
A. 設(shè)置監(jiān)測(cè)、抓取時(shí)鐘時(shí),最好用drive這個(gè)信號(hào)的clk。因?yàn)槭?a target="_blank">數(shù)字電路,也存在跨時(shí)鐘域的問(wèn)題。如果ila_clk和debug信號(hào)的clk不一致,這兒就是一個(gè)跨時(shí)鐘域的點(diǎn)。在P&R時(shí),timing會(huì)報(bào)錯(cuò)。你可以用set_false_path來(lái)mask掉這些timing violation,但是需要記住跨時(shí)鐘域的特性:如果debug一個(gè)4bit信號(hào),實(shí)際信號(hào)只有4‘b0001--》 4’b0111的變化,可能抓取到:4‘b0001--》 4’b0101 -》 4‘b0111。
B. 因?yàn)榫C合可能優(yōu)化掉一些信號(hào)(尤其是組合邏輯),或改變信號(hào)的名字,為了keep某些信號(hào),可以在RTL code中,添加:“* mark_debug = “true” *”,使用如下:
C. 設(shè)置抓取特性時(shí),“input pipe stage”建議設(shè)置到2~3。這樣雖然多用些DFF,可以確保ILA輸入時(shí)的timing更容易過(guò)。因?yàn)槟愕膁ebug邏輯可能離ILA core非常的遠(yuǎn),增加pipe stage寄存器,可以把信號(hào)一級(jí)一級(jí)pipe到ILA core的輸入口。
5. 寫(xiě)在最后
雖然ILA比邏輯分析儀好用多了,但是并不建議靠ILA來(lái)debug。因?yàn)椋?/p>
1) ILA分析的波形長(zhǎng)度有限;
2) ILA抓取的信號(hào)數(shù)量有限;
3) 添加大量信號(hào)時(shí),麻煩;
4) 如果需要新加debug信號(hào),需要重新做ILA,在Place&Route,這樣費(fèi)時(shí)費(fèi)力(一個(gè)稍大的工程,可能需要跑數(shù)小時(shí));
所以,“此女”雖好但不可褻玩焉,否則走火入魔,舉步維艱。建立完備的測(cè)試pattern,cover全功能點(diǎn),跑RTL simulation才是正道。
編輯:jq
-
數(shù)字電路
+關(guān)注
關(guān)注
193文章
1639瀏覽量
81903 -
GUI
+關(guān)注
關(guān)注
3文章
679瀏覽量
41212 -
ILA
+關(guān)注
關(guān)注
0文章
6瀏覽量
3749
原文標(biāo)題:數(shù)字IC/FPGA設(shè)計(jì)基礎(chǔ)_ILA原理與使用
文章出處:【微信號(hào):bianpinquan,微信公眾號(hào):變頻圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
FPGA調(diào)試方式之VIO/ILA的使用

FPGA遠(yuǎn)程燒寫(xiě)bit文件和調(diào)試ILA指南

LCR測(cè)試儀的使用方法與注意事項(xiàng)

評(píng)論