成人免费无码不卡毛片,亚洲AⅤ无码精品一区二区三区,国产尤物精品视频,久久精品日本亚洲,欧美成人一区三区无码乱码A片,中文字日产幕码一区二区色哟哟,亞洲日韓中文字幕網AV

  • 正文
    • DAP口
    • Debugger
    • Debug系統(tǒng)舉例
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

聊聊芯片Debug模塊及其應(yīng)用

06/05 08:30
452
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

芯片設(shè)計(jì)中,通常都會(huì)增加一些debug(調(diào)試)電路邏輯,方便定位軟硬件問題。增加這些debug電路的基本要求對(duì)系統(tǒng)原有的正常操作無影響,否則可能會(huì)出現(xiàn)heisenbug。因此,debug邏輯電路通常用額外的專用資源去實(shí)現(xiàn),debug面積占用超過總芯片面積5%的芯片也不在少數(shù)。

由于debug電路邏輯所花費(fèi)的面積不大,而且可以通過power gating技術(shù),在不用debug功能時(shí),把debug電路關(guān)掉,這樣耗電量小,對(duì)功耗的影響不大。故debug在復(fù)雜設(shè)計(jì)中還是廣泛使用的。

DAP口

Debug電路包含以下三個(gè)主要方面,都是通過Debug Access Port (DAP)來進(jìn)行的。

Tracing(追蹤):tracing是將芯片中的關(guān)鍵信息存入到trace buffer(追蹤緩沖);

Triggering(觸發(fā)):triggering決定何時(shí)開始或結(jié)束tracing;

Single stepping(單步操作):single stepping允許芯片暫停運(yùn)行、按時(shí)鐘或指令來單步調(diào)試;

Trace的信息通常以壓縮形式存放。而且有了trace的內(nèi)容,我們就可以通過debugger(調(diào)試器)控制處理器執(zhí)行的前進(jìn)或回退。

在SoC上,芯片版本、寄存器和寄存器域段信息一般會(huì)存放在片上ROM,因此也可以通過DAP口去訪問SoC芯片的一些基本信息。

Debugger

Debugger可以采用標(biāo)準(zhǔn)的技術(shù)去控制芯片包含:

Pause和Step:控制一個(gè)核(Core)的停止、按指令單步執(zhí)行、重新開始執(zhí)行等。單步執(zhí)行通常通過執(zhí)行一個(gè)指令后觸發(fā)中斷或暫停,這使得debugger可以控制正在被調(diào)試的對(duì)象。

訪問處理器的寄存器:在Core內(nèi),程序員模型可見的任何寄存器都可以被debugger讀寫。

遠(yuǎn)程控制讀寫:debugger可以觸發(fā)load或store操作。一種方式是直接通過系統(tǒng)主總線;另一種是通過受控Core發(fā)起的。

觀察點(diǎn)(Watchpoints)和斷點(diǎn)(Breakpoints):在每個(gè)Core中可能會(huì)存在多個(gè)硬件寄存器,debugger可以使用這些寄存器去存儲(chǔ)感興趣的地址。如果load或store地址匹配到存儲(chǔ)在watchpoints寄存器中的地址,那么就產(chǎn)生一個(gè)事件。同樣地,當(dāng)程序計(jì)數(shù)器(PC)匹配到breakpoints寄存器中的值時(shí),也會(huì)產(chǎn)生一個(gè)事件。

Cross-trigger狀態(tài)機(jī):每個(gè)IP模塊產(chǎn)生的重要event可以作為輸入?yún)R集到中央程序中,形成一個(gè)通用的cross-trigger狀態(tài)機(jī)。額外提供了可以被matrix輸出設(shè)置和復(fù)位的狀態(tài)觸發(fā)器,它們的輸出直接反饋到matrix的輸入。因此,可以根據(jù)用戶指定的事件序列來編程狀態(tài)機(jī)。

Debug系統(tǒng)舉例

4.1 單核SoC系統(tǒng)

通常情況下,SoC會(huì)有一個(gè)邏輯DAP口,如下圖1所示為一個(gè)微控制器或單核的SoC。TCP通過USB與SoC連接起來。JTAG使用1-bit的數(shù)據(jù)通路,因此速度會(huì)慢一些。連接到Core的DAP也可以自己在主總線上觸發(fā)操作。

在這個(gè)簡單的單核系統(tǒng)中,breakpoint和watchpoint寄存器會(huì)放在CPU核或PMU(Performance management unit)協(xié)處理器內(nèi)部。DAP可以停止或單步調(diào)試Core,也可以查看和修改Core中的寄存器。當(dāng)有來自watchpoint或breakpoint的事件發(fā)生時(shí),可以通過PMU寄存器計(jì)數(shù)或者上報(bào)中斷給Core或者暫停Core這幾種可編程選擇的方式去處理,這樣debugger就可以接管了。

圖1 單核SoC的debug硬件。DAP通過JTAG和USB連接到debug工作站

許多非Core類型的IP模塊也會(huì)產(chǎn)生事件,對(duì)這些事件進(jìn)行統(tǒng)計(jì)也是很有用的,在圖1中粉色所示的IP組件的事件可以被連接到某一個(gè)Core和PMU,或者可選實(shí)現(xiàn)的EMU(Event-Monitoring Unit)組件上。例如,EMU可以對(duì)L2緩存缺失率,DRAM的總線事物事件等進(jìn)行計(jì)數(shù)。

4.2 多核SoC系統(tǒng)

在多核SoC系統(tǒng)(MPSoC)中,每個(gè)core的debug集成不需要很大的變化。不過會(huì)新增其它帶有debug接口的IP組件。下圖2為多核SoC系統(tǒng)的兩個(gè)主要新增組件,分別是Event Trace LoggingCross-Triggering。為了支持trace logging,Core還另外給出一個(gè)接口,用于傳遞trace events信息給專用事件總線(綠色的線)。這個(gè)接口支持很多層面的信息,包括關(guān)掉、只報(bào)中斷、分支和追蹤足夠的數(shù)據(jù)去復(fù)現(xiàn)。不同Cores的信息通過Trace Event Funnel和Event ?Filters進(jìn)行組合或稀疏。Funnels提供多路選擇和其它一些靈活的功能,比如共享一個(gè)timestamp給不同擁有同樣timestamp輸入的數(shù)據(jù)。Lossless Compressor會(huì)執(zhí)行連續(xù)系統(tǒng)時(shí)間的運(yùn)行長度編碼,或者無損算法,就像Lempel–Ziv??偟脕碚f,事件帶寬必須不能超過事件終點(diǎn),事件終點(diǎn)要么是片上SRAM事件緩沖或?qū)S酶咝阅芸偩€bond-out。Bond-out在這里的意思是一組Pads。片外追蹤緩存經(jīng)常用于工業(yè)或自動(dòng)駕駛控制器。對(duì)于這些,一個(gè)更寬并行DAP將其大部分管腳用于數(shù)據(jù)。或者,一個(gè)多gigabit串行器用于快速將數(shù)據(jù)導(dǎo)出。

圖2 現(xiàn)代MPSoC的典型事件追蹤流資源。運(yùn)行的數(shù)據(jù)總線是黑色的。事件流總線是綠色的。Debug訪問總線是藍(lán)色的。粉色箭頭代表來自其他IP組件的事件監(jiān)控線,它們要么沒有自己的計(jì)數(shù)器,要么需要提供cross-triggering

從CPU Cores處收集數(shù)據(jù)的話,很容易收集到太多的事件追蹤數(shù)據(jù),因?yàn)槊總€(gè)Core執(zhí)行每條指令平均會(huì)有10-bits數(shù)據(jù)。因此,數(shù)據(jù)可以從系統(tǒng)總線上收集。如果CPU Core擁有常規(guī)緩存的命中率,那么圖2中連接到DRAM控制器輸入的總線追蹤監(jiān)控器就可以產(chǎn)生少于兩個(gè)數(shù)量級(jí)的數(shù)據(jù)。此外,如果內(nèi)存可以正常運(yùn)行的話,那么讀數(shù)據(jù)可能都不需要記錄,因?yàn)樽x數(shù)據(jù)和更早的寫數(shù)據(jù)是一致的。

Event filter可被編程去記錄地址窗口內(nèi)對(duì)應(yīng)的事件,這樣可以拓展有效地時(shí)間窗口。

由于追蹤內(nèi)存大小是有限的,片上追蹤緩沖使用了基于地址卷繞的圓形排列,這樣在內(nèi)存不夠時(shí)可以先覆蓋最老的數(shù)據(jù)。因此,感興趣點(diǎn)的數(shù)據(jù)可以在停止該點(diǎn)追蹤時(shí)被捕獲,而且近期歷史記錄也會(huì)保存在緩沖。另外,在操作系統(tǒng)的控制下,也有可能周期性的將存儲(chǔ)在SoC DRAM的追蹤數(shù)據(jù)放到主存中。

圖2右下角的ROM會(huì)存儲(chǔ)Part/ECO信息。另外,每個(gè)IP模塊通常將自己的標(biāo)識(shí)號(hào)寫死在它內(nèi)部debug空間的第一個(gè)寄存器。

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄