本發(fā)明涉及信息電子芯片設(shè)計(jì)領(lǐng)域,尤其涉及一種基于掃描鏈的芯片分析方法。
背景技術(shù):
在嵌入式產(chǎn)品研發(fā)過程中,軟件設(shè)計(jì)和調(diào)試是研發(fā)中的一個(gè)重要環(huán)節(jié)。任何軟件在定版前都需要經(jīng)過多次的調(diào)試,為了提升設(shè)計(jì)效率,很多芯片設(shè)計(jì)公司都同步設(shè)計(jì)了軟件的調(diào)試工具。各類調(diào)試工具的基本上都是類似與通過jtag(是一種國際標(biāo)準(zhǔn)測(cè)試協(xié)議,主要用于芯片內(nèi)部測(cè)試)端口進(jìn)行與cpu直接進(jìn)行通信和控制,控制程序的執(zhí)行。例如單步調(diào)試,這類調(diào)試的一個(gè)前提是cpu本身是工作正常的,如果cpu本身出現(xiàn)問題或異常則各類軟件或cpu的狀態(tài)也就丟失了,則無法定位問題所在。出現(xiàn)這種情況時(shí)就需準(zhǔn)確的獲取當(dāng)前cpu的狀態(tài),才可進(jìn)一步的分析軟件或cpu出現(xiàn)異?;蝈e(cuò)誤的原因?,F(xiàn)有的jtag工具針對(duì)現(xiàn)有的芯片設(shè)計(jì)都無法很好的實(shí)現(xiàn)該需求。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)以上缺陷,本發(fā)明目的在于如何在cpu出現(xiàn)異常時(shí)還可快速定位芯片內(nèi)部問題,節(jié)約調(diào)試時(shí)間,排除制造及時(shí)序問題。
為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種基于掃描鏈的芯片分析方法,其特征在于將cpu中需要保存狀態(tài)的普通寄存器替換為帶掃描輸入寄存器,當(dāng)cpu出現(xiàn)異常時(shí),通過jtag輸出串行掃描觸發(fā)指令,啟動(dòng)掃描鏈數(shù)據(jù)保存操作,將帶掃描輸入寄存器的數(shù)據(jù)串行通過jtaek口輸出給調(diào)試主機(jī),調(diào)試者分析調(diào)試主機(jī)接收到的各個(gè)帶掃描輸入寄存器的數(shù)據(jù),分析完成后,通過控制jtag輸出控制復(fù)位信號(hào)對(duì)cpu進(jìn)行復(fù)位操作,控制cpu恢復(fù)正常工作。
所述的基于掃描鏈的芯片分析方法,其特征在于所述的帶掃描輸入寄存器在普通寄存器的數(shù)據(jù)輸入端口前增設(shè)了數(shù)據(jù)選擇器,所述數(shù)據(jù)選擇器包括數(shù)據(jù)輸入端口、掃描輸入端口和掃描使能控制端口;帶掃描輸入寄存器還包括時(shí)鐘輸入端口和掃描輸出端口。
所述的基于掃描鏈的芯片分析方法,其特征在于所述帶掃描輸入寄存器進(jìn)行串行連接,前一個(gè)帶掃描輸入寄存器的掃描輸出端口與后一個(gè)帶掃描輸入寄存器的掃描輸入端口相連,所有帶掃描輸入寄存器的時(shí)鐘輸入端口連接在一起;所有帶掃描輸入寄存器的掃描使能控制端口連接在一起。
本發(fā)明通過掃描鏈機(jī)制的方法可實(shí)現(xiàn)在cpu出現(xiàn)異常時(shí)刻快速方便讀出芯片主要寄存器的狀態(tài),并配合jtag的工具實(shí)現(xiàn)對(duì)出現(xiàn)異常的cpu進(jìn)行快速分析和問題定位,可大大提升開發(fā)效率。
附圖說明
圖1是帶掃描輸入寄存器示意圖;
圖2是cpu中掃描鏈連接示意圖;
圖3是基于掃描鏈的芯片分析狀態(tài)轉(zhuǎn)換圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
圖1是帶掃描輸入寄存器示意圖;帶掃描輸入寄存器在普通寄存器ff的數(shù)據(jù)輸入端口前增設(shè)了數(shù)據(jù)選擇器mux,數(shù)據(jù)選擇器mux包括數(shù)據(jù)輸入端口data、掃描輸入端口scanin和掃描使能控制端口scanenable;帶掃描輸入寄存器還包括時(shí)鐘輸入端口clk、數(shù)據(jù)輸出端口q和掃描輸出端口scanout。
圖2是cpu中掃描鏈連接示意圖;包括7個(gè)帶掃描輸入寄存器1、2、3、4、5、6、7,將cpu中需要保存狀態(tài)的普通寄存器替換為帶掃描輸入寄存器,帶掃描輸入寄存器進(jìn)行串行連接,前一個(gè)帶掃描輸入寄存器的掃描輸出端口與后一個(gè)帶掃描輸入寄存器的掃描輸入端口相連,所有帶掃描輸入寄存器的時(shí)鐘輸入端口連接在一起;所有帶掃描輸入寄存器的掃描使能控制端口連接在一起。
圖3是基于掃描鏈的芯片分析狀態(tài)轉(zhuǎn)換圖,包括8個(gè)狀態(tài):空閑狀態(tài)idle、cpu直接觸發(fā)等待狀態(tài)wait_signal、時(shí)鐘周期觸發(fā)等待狀態(tài)wait_cnt、串行數(shù)據(jù)掃描狀態(tài)scan_save、串行數(shù)據(jù)輸出狀態(tài)serial_out、數(shù)據(jù)分析狀態(tài)compare、芯片復(fù)位狀態(tài)assert_seset和釋放控制信號(hào)狀態(tài)release_reset;具體狀態(tài)按如下步驟進(jìn)行切換:
空閑狀態(tài)idle為后臺(tái)cpu等待串口輸入指令狀態(tài),cpu同時(shí)設(shè)置兩種觸發(fā)模式,芯片信號(hào)觸發(fā)模式和固定時(shí)鐘周期觸發(fā)模式;
當(dāng)獲cpu接收到串口指令為根據(jù)固定時(shí)鐘周期觸發(fā)指令,啟動(dòng)芯片信號(hào)觸發(fā)模式,進(jìn)入時(shí)鐘周期觸發(fā)等待狀態(tài)wait_cnt,等待固定時(shí)鐘周期后進(jìn)入串行數(shù)據(jù)掃描狀態(tài);
當(dāng)獲cpu接收到串口指令為cpu直接觸發(fā)指令,啟動(dòng)固定時(shí)鐘周期觸發(fā)模式,進(jìn)入cpu直接觸發(fā)等待狀態(tài)wait_signal,由cpu根據(jù)預(yù)先設(shè)定的條件自動(dòng)觸發(fā)進(jìn)入串行數(shù)據(jù)掃描狀態(tài);
串行數(shù)據(jù)掃描狀態(tài)scan_save實(shí)現(xiàn)獲取cpu的時(shí)鐘控制權(quán),獲取完成cpu的時(shí)鐘控制權(quán)后實(shí)現(xiàn)控制時(shí)鐘和掃描鏈的長度,控制帶掃描輸入寄存器的數(shù)據(jù)串行掃出;
串行數(shù)據(jù)輸出狀態(tài)serial_out將帶掃描輸入寄存器的數(shù)據(jù)串行輸出到調(diào)試主機(jī);
數(shù)據(jù)分析狀態(tài)compare,通過比特對(duì)照?qǐng)D的方式將各個(gè)帶掃描輸入寄存器的數(shù)據(jù)差異展示給調(diào)試者;
芯片復(fù)位狀態(tài)assert_reset數(shù)據(jù)分析完成后通過控制jtag輸出控制復(fù)位信號(hào)對(duì)cpu進(jìn)行復(fù)位操作;
釋放控制信號(hào)狀態(tài)release_reset釋放cpu的時(shí)鐘控制權(quán),cpu正常工作后重新進(jìn)入空閑狀態(tài)。
以上所揭露的僅為本發(fā)明一種實(shí)施例而已,當(dāng)然不能以此來限定本之權(quán)利范圍,本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分流程,并依本發(fā)明權(quán)利要求所作的等同變化,仍屬于本發(fā)明所涵蓋的范圍。