本發(fā)明涉及集成電路可調試性設計技術領域,特別涉及一種復用追蹤緩存的觸發(fā)裝置及設計方法。
背景技術:
隨著集成電路設計復雜度的增加,可調試性設計作為硅后調試的關鍵性技術可加速芯片的調試,縮短芯片上市時間,增強產(chǎn)品市場競爭力?,F(xiàn)有的硅前驗證技術無法檢測出原型設計中的所有錯誤,一些錯誤被遺漏到原型芯片中。如果不能在硅后檢測出所有的遺漏錯誤,而使錯誤出現(xiàn)在上市產(chǎn)品中,則會帶來更大的損失。因此硅后調試作為量產(chǎn)前的最后一道質量控制環(huán)節(jié),需完全驗證流片后原型芯片的正確性,還需快速定位和修復檢測出的錯誤。由于原型芯片可觀測性差,調試者可以觀測的信號極為有限,使得錯誤調試過程極為費時,甚至需要占據(jù)大半的芯片開發(fā)時間。可調試性設計是在芯片設計階段添加輔助硅后調試的邏輯,以提高硅后調試時芯片的可觀測性,從而降低硅后調試的難度。
基于追蹤的可調試性設計作為主流的設計方案,通過在芯片中增加追蹤緩存,可在硅后調試時提供連續(xù)多拍的實時追蹤能力,并已成為硅后調試的主要技術之一,并廣泛應用于商業(yè)處理器中。一個完整的追蹤設計通常包括:觸發(fā)模塊、追蹤控制器、追蹤緩存和數(shù)據(jù)導出模塊,如圖1所示。觸發(fā)模塊用于監(jiān)控調試中的觸發(fā)事件或者觸發(fā)序列,當指定的觸發(fā)事件或序列發(fā)生時,觸發(fā)模塊會監(jiān)測到觸發(fā)信息并告知追蹤控制器。追蹤控制器接收到觸發(fā)模塊的觸發(fā)信號,會開啟信號追蹤,將追蹤數(shù)據(jù)存儲到追蹤緩存中。追蹤控制器還可以根據(jù)調試需求配置觸發(fā)模塊中的觸發(fā)事件等調試參數(shù)。追蹤緩存可實時存儲追蹤數(shù)據(jù)。當追蹤緩存存滿追蹤數(shù)據(jù)后,數(shù)據(jù)導出單元會將追蹤緩存中的數(shù)據(jù)通過調試接口輸出到片外,以用于后續(xù)的狀態(tài)恢復和錯誤調試。
觸發(fā)模塊可用于檢測開啟追蹤的觸發(fā)條件。觸發(fā)模塊可由調試者配置,并通過監(jiān)測觸發(fā)信號,以檢測觸發(fā)條件是否滿足。觸發(fā)信號可以是程序計數(shù)器,指令中讀寫的數(shù)據(jù)地址,讀寫的數(shù)據(jù)的數(shù)值或者內部信號狀態(tài)等,而觸發(fā)條件可分為:觸發(fā)事件和觸發(fā)事件序列,觸發(fā)事件指當前時刻的觸發(fā)信號取值在一定的范圍內,可為某些特定數(shù)值或者符合某些特定的條件,并只與當前時刻的觸發(fā)信號的取值有關,觸發(fā)事件序列指觸發(fā)信號的取值在一段時鐘周期內滿足特定的取值要求,其不僅與當前時刻的觸發(fā)信號的取值有關,還與觸發(fā)信號在過去時鐘周期內的歷史狀態(tài)有關。
傳統(tǒng)的觸發(fā)模塊設計是基于比較器、匹配器或者可編程邏輯。
基于比較器的觸發(fā)模塊設計如圖2所示,采用比較器單元檢測觸發(fā)信號是否在特定的取值范圍內,每個比較器單元包括一個不小于比較器和一個不大于比較器,可以實現(xiàn)對觸發(fā)信號在一個取值區(qū)間的檢測。例如觸發(fā)事件為4位觸發(fā)信號a的值滿足5=<a<=8,則可用不小于比較器檢測5<=a,并用不大于比較器檢測a<=8。同時集成多個比較器單元就能實現(xiàn)較復雜的觸發(fā)事件,可將復雜的觸發(fā)事件分解成多個單比較器單元可檢測的子觸發(fā)事件,然后使用每個比較器單元實現(xiàn)子觸發(fā)事件的檢測,當任意一個比較器單元被觸發(fā),則復雜的觸發(fā)事件被檢測到。
基于匹配器的觸發(fā)模塊設計如圖3所示,每個觸發(fā)模塊包括一個或多個匹配器單元,可以通過配置匹配器內的掩蓋寄存器和匹配寄存器實現(xiàn)對一些簡單或復雜的觸發(fā)事件的檢測。每個匹配器單元先使用與門將觸發(fā)信號中的無關位清零,無關位上的狀態(tài)對匹配結果沒有影響,既可為1也可為0,然后使用異或門檢測是否與匹配寄存器中的數(shù)值完全相同。使用單個匹配器單元可以實現(xiàn)對一些簡單的觸發(fā)事件的檢測。例如觸發(fā)條件為4位觸發(fā)信號a為偶數(shù),可將掩蓋寄存器設置為4’b0001并將匹配寄存器設置為4’b0000,即可檢測a的末尾為0,即a為偶數(shù)。使用多個匹配器單元則可實現(xiàn)更復雜的觸發(fā)事件的檢測,可將復雜的觸發(fā)條件分解成多個單匹配器可檢測的子觸發(fā)事件,然后將子觸發(fā)事件分別分配到對應的匹配單元上。
基于可編程邏輯的觸發(fā)模塊設計如圖4所示,此方案采用在芯片上集成可編程邏輯的方法,并編程實現(xiàn)對于不同的觸發(fā)條件的檢測。當觸發(fā)條件確定后,可通過調試端口配置基于查找表的可配置邏輯,從而實現(xiàn)對于觸發(fā)條件的檢測。
針對基于追蹤的可調試性設計中的觸發(fā)模塊設計,現(xiàn)有的基于比較器、基于匹配器和基于可編程邏輯的設計方案都存在明顯的不足,即無法以有限的調試硬件開銷實現(xiàn)強大的觸發(fā)檢測功能?;诒容^器和匹配器的設計方法可以實現(xiàn)簡單的觸發(fā)條件的檢測,但復雜的觸發(fā)條件需要極多的比較器單元或匹配器單元,硬件開銷較大?;诳删幊踢壿嫷脑O計方案需要在芯片上集成可編程模塊,設計復雜度高,硬件成本也較高。
同時基于比較器、基于匹配器的觸發(fā)設計方案對于觸發(fā)事件序列的檢測能力有限。這兩種方案都需要集成有限狀態(tài)機去檢測觸發(fā)事件,而有限狀態(tài)機的結構和設計是流片前就需確定的,可配置性差,由此造成整個觸發(fā)模塊對于觸發(fā)序列的檢測能力低。
技術實現(xiàn)要素:
針對現(xiàn)有技術的不足,本發(fā)明提出一種復用追蹤緩存的觸發(fā)裝置及設計方法。
本發(fā)明提出一種復用追蹤緩存的觸發(fā)裝置,包括:
地址生成模塊,用于根據(jù)觸發(fā)信號與當前的檢測狀態(tài)生成讀追蹤緩存地址;
追蹤緩存模塊,用于根據(jù)觸發(fā)條件配置追蹤緩存,并根據(jù)所述讀追蹤緩存地址輸出對應地址行的內容;
輸出選擇模塊,用于根據(jù)所述觸發(fā)信號的部分低位信號輸出對應的觸發(fā)信息并用于觸發(fā)判斷,當觸發(fā)標志位有效時,則代表檢測到觸發(fā)條件。
包括4種觸發(fā)檢測模式。
所述4種觸發(fā)檢測模式包括基本觸發(fā)事件檢測模式、低位行內索引的觸發(fā)事件檢測模式、基本觸發(fā)序列檢測模式、低位行內索引的觸發(fā)序列檢測模式。
所述基本觸發(fā)事件檢測模式用于檢測觸發(fā)事件,其中觸發(fā)信號直接作為追蹤緩存的讀地址,讀取追蹤緩存中與所述讀地址相對應地址行中存儲的標志位。
所述低位行內索引的觸發(fā)事件檢測模式用于檢測寬度大于一閾值的觸發(fā)信號對應的觸發(fā)事件,其中觸發(fā)信號的部分低位作為輸出選擇信號,從寬度w位輸出選擇出對應輸出值。
所述基本觸發(fā)序列檢測模式用于檢測觸發(fā)序列,其中根據(jù)觸發(fā)序列構建檢測所述觸發(fā)序列的有限狀態(tài)機,并將所有的狀態(tài)跳轉存儲到追蹤緩存中,觸發(fā)信號與當前的檢測狀態(tài)共同組成追蹤緩存的讀地址,其中觸發(fā)信號作為讀地址的高位部分,當前的檢測狀態(tài)作為讀地址的低位部分。對應所述讀地址的地址行中存儲的內容為對應的下一檢測狀態(tài)與觸發(fā)條件是否被激活的標志位。
所述低位行內索引的觸發(fā)序列檢測模式用于檢測寬度大于一閾值的觸發(fā)信號對應的觸發(fā)序列,其中追蹤緩存的每一行內存儲了m個觸發(fā)值對應的下一檢測狀態(tài)與檢測標志位,以充分利用追蹤緩存的存儲空間,并使用觸發(fā)信號的低log2m位用于檢索追蹤緩存的輸出,以得到與當前時刻觸發(fā)值對應的觸發(fā)信息。
本發(fā)明還提出一種復用追蹤緩存的觸發(fā)裝置的設計方法,包括:
步驟1,根據(jù)觸發(fā)信號與當前的檢測狀態(tài)生成讀追蹤緩存地址;
步驟2,根據(jù)觸發(fā)條件配置追蹤緩存,并根據(jù)所述讀追蹤緩存地址輸出對應地址行的內容;
步驟3,根據(jù)所述觸發(fā)信號的部分低位信號輸出對應的觸發(fā)信息并用于觸發(fā)判斷,當觸發(fā)標志位有效時,則代表檢測到觸發(fā)條件。
包括4種觸發(fā)檢測模式。
所述4種觸發(fā)檢測模式包括基本觸發(fā)事件檢測模式、低位行內索引的觸發(fā)事件檢測模式、基本觸發(fā)序列檢測模式、低位行內索引的觸發(fā)序列檢測模式。
由以上方案可知,本發(fā)明的優(yōu)點在于:
第一點,本發(fā)明可以提供對于觸發(fā)條件的更強的檢測能力。對于觸發(fā)事件,滿足追蹤信號寬度約束的任意觸發(fā)事件都可以被本發(fā)明檢測到,假設本發(fā)明支持的觸發(fā)信號的最大寬度為n,對于滿足約束的觸發(fā)信號,存在
第二點,本發(fā)明硬件開銷更小。通過復用追蹤緩存空間,用以存儲觸發(fā)條件或者檢測觸發(fā)條件的有限狀態(tài)機,可完全不使用用于觸發(fā)條件檢測的且開銷較大的比較器或者匹配器,硬件開銷小,相對于現(xiàn)有設計,本發(fā)明可在提供更強大的觸發(fā)條件檢測能力的基礎上,減少硬件開銷。
第三點,本發(fā)明可配置性好。本發(fā)明是通過向追蹤緩存中載入不同的存儲內容,以實現(xiàn)不同的觸發(fā)事件和觸發(fā)事件序列的檢測,觸發(fā)條件改變后,只需重新通過調試端口配置追蹤緩存的內容,即可實現(xiàn)對新觸發(fā)條件的檢測,特別是對于觸發(fā)序列,現(xiàn)有的基于有限狀態(tài)機的實現(xiàn)的可配置性較差,而本發(fā)明可通過適當配置以檢測任意的滿足約束的觸發(fā)序列。
附圖說明
圖1是典型的基于追蹤的可調試性設計框圖;
圖2是基于比較器的觸發(fā)模塊設計圖;
圖3是基于匹配器的觸發(fā)模塊設計圖;
圖4是基于可配置邏輯的觸發(fā)模塊實現(xiàn)圖;
圖5是本發(fā)明提出的觸發(fā)模塊設計的總架構圖;
圖6是本發(fā)明的觸發(fā)設計的基本觸發(fā)事件檢測模式圖;
圖7是本發(fā)明的觸發(fā)設計的低位行內索引的觸發(fā)事件檢測模式圖;
圖8是本發(fā)明的觸發(fā)設計的基本觸發(fā)序列檢測模式圖;
圖9是本發(fā)明的觸發(fā)設計的低位行內索引的觸發(fā)序列檢測模式圖;
圖10是本發(fā)明的觸發(fā)模塊使用流程圖。
具體實施方式
為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖及實施例,對本發(fā)明的一種復用追蹤緩存的觸發(fā)裝置及設計方法進行進一步詳細說明,應當理解,此處所描述的具體實施例僅僅用于解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明的基本實施框圖如圖5所示,采用復用追蹤緩存的設計,主要由地址生成,追蹤緩存和輸出選擇三部分組成,其中地址生成和輸出選擇受模式寄存器的控制。根據(jù)觸發(fā)條件配置追蹤緩存,地址生成單元根據(jù)觸發(fā)信號和當前的檢測狀態(tài)生成讀追蹤緩存地址,追蹤緩存在讀請求下(根據(jù)讀請求的讀追蹤緩存地址)輸出對應地址行的內容,輸出處理單元根據(jù)觸發(fā)信號的部分低位信號輸出對應的觸發(fā)信息并用于觸發(fā)判斷,觸發(fā)標志位有效時,即代表觸發(fā)條件被檢測到。2位模式寄存器用于配置當前的觸發(fā)檢測模式,本發(fā)明提供4種不同的模式,以實現(xiàn)對觸發(fā)事件和觸發(fā)事件序列的檢測。與現(xiàn)有的追蹤設計相比,本發(fā)明省掉了獨立的觸發(fā)單元設計,僅僅增加了地址生成和輸出選擇功能,極大了減少了調試設計的硬件開銷。
根據(jù)模式寄存器的不同配置值,本發(fā)明的觸發(fā)設計可以工作在4中不同的觸發(fā)檢測模式下,分別為:基本觸發(fā)事件檢測模式,低位行內索引的觸發(fā)事件檢測模式,基本觸發(fā)序列檢測模式和低位行內索引的觸發(fā)序列檢測模式?;竞偷臀恍袃人饕挠|發(fā)事件檢測模式用以檢測觸發(fā)事件,其不同之處在于低位行內索引的觸發(fā)事件檢測模式可檢測更大寬度的觸發(fā)信號;同樣基本和低位行內索引的觸發(fā)序列檢測模式用以檢測觸發(fā)序列,其不同之處在于低位行內索引的觸發(fā)序列檢測模式可檢測更大寬度的觸發(fā)信號。根據(jù)觸發(fā)條件,特別是根據(jù)觸發(fā)條件的類型(觸發(fā)事件或觸發(fā)序列)和觸發(fā)信號的寬度,選擇合適的檢測模式。下面將詳細介紹以上四種檢測模式,并假設追蹤緩存的深度為d,寬度為w,且均為2的整數(shù)冪。
基本觸發(fā)事件檢測模式用于檢測觸發(fā)事件,對應的模式寄存器設置為00,配置后的觸發(fā)檢測結構如圖6所示。觸發(fā)信號直接作為追蹤緩存的讀地址,讀取追蹤緩存對應地址行中存儲的標志位。追蹤緩存中的每一行存儲的即是此地址作為觸發(fā)信號的取值時,是否滿足觸發(fā)條件。根據(jù)追蹤緩存的輸出即可判斷觸發(fā)信號的取值是否滿足觸發(fā)條件。此模式支持的觸發(fā)信號的最大寬度為log2d。
低位行內索引的觸發(fā)事件檢測模式用于檢測寬度大于一閾值的觸發(fā)信號對應的觸發(fā)事件,對應的模式寄存器設置為01,配置后的觸發(fā)檢測結構如圖7所示。觸發(fā)信號的部分低位作為輸出選擇信號,從w位輸出選擇出對應輸出值。這是因為每一行追蹤緩存可以存儲w位數(shù)據(jù),即可表示w個觸發(fā)數(shù)值是否滿足觸發(fā)要求,而基本觸發(fā)事件檢測模式只使用了每一行的最低位,沒能充分的利用追蹤緩存的存儲空間,在此模式下,觸發(fā)信號的最低log2w位將作為輸出選擇信號,其剩余高位作為追蹤緩存讀地址,故此模式支持的觸發(fā)信號的最大寬度為(log2d+log2w)。
基本觸發(fā)序列檢測模式用于檢測觸發(fā)序列,對應的模式寄存器設置為10,配置后的觸發(fā)檢測結構如圖8所示。觸發(fā)序列的檢測是基于有限狀態(tài)機的,即根據(jù)觸發(fā)序列構建一個檢測此序列的有限狀態(tài)機,并將所有的狀態(tài)跳轉存儲到追蹤緩存中,觸發(fā)信號和當前的檢測狀態(tài)共同組成追蹤緩存的讀地址,其中觸發(fā)信號作為讀地址的高位部分,當前的檢測狀態(tài)作為讀地址的低位部分,對應此讀地址的地址行中存儲的內容是對應的下一檢測狀態(tài)和觸發(fā)是否被激活的標志位,對應的下一檢測狀態(tài)即在當前檢測狀態(tài)下,當檢測狀態(tài)機的輸入為觸發(fā)信號對應的值時,檢測狀態(tài)機將會跳轉到的下一狀態(tài),從追蹤緩存中讀取的下一狀態(tài)用來更新當前的檢測狀態(tài),讀取的觸發(fā)是否被激活的標志位用來指示序列是否已被檢測到,假設共需要s位寬度表示檢測狀態(tài),則s最大值可為(w-1),同時可被檢測的觸發(fā)信號的最大寬度為(log2d–s)。
低位行內索引的觸發(fā)序列檢測模式用于檢測寬度大于一閾值的觸發(fā)信號對應的觸發(fā)序列,對應的模式寄存器設置為11,配置后的觸發(fā)檢測結構如圖9所示。與基本觸發(fā)序列檢測模式不同的是,追蹤緩存的每一行內存儲了m個觸發(fā)值對應的下一檢測狀態(tài)和檢測標志位,以充分利用追蹤緩存的存儲空間,并使用了觸發(fā)信號的低log2m位用于檢索追蹤緩存的輸出,以得到與此時刻觸發(fā)值對應的觸發(fā)信息,m的最大取值為w/(s+1),而可被檢測的觸發(fā)信號的最大寬度為(log2d–s+log2m),相比基本觸發(fā)序列檢測模式增加了log2m。
本發(fā)明的觸發(fā)設計在硅后調試時的具體使用流程如圖10所示。主要分為三步:準備階段,配置階段和檢測階段,準備階段即根據(jù)調試者對于調試故障的理解確定觸發(fā)條件,配置階段即根據(jù)調試者確定的觸發(fā)條件確定觸發(fā)信號,觸發(fā)模塊的工作模式,并配置模式寄存器和追蹤緩存,對于觸發(fā)事件,需計算所有的有效的觸發(fā)值并配置到追蹤緩存中;對于觸發(fā)序列,需構建一個用于序列檢測的有限狀態(tài)機,并將有限狀態(tài)機信息存儲到追蹤緩存中,檢測階段即在調試時使用觸發(fā)模塊檢測觸發(fā)條件,當觸發(fā)標志位為有效時,即代表觸發(fā)條件被激活,可以開啟追蹤信號的信號追蹤,即將追蹤信號的每拍數(shù)據(jù)都存儲到追蹤緩存中。