專利名稱:圖形硬件設計中調試與驗證的方法與系統的制作方法
技術領域:
本發明涉及圖形硬件,特別涉及一種在圖形硬件設計中應用軟件模型代 替硬件設計以進行調試與驗證的方法與系統。
背景技術:
一般地,集成電路設計包括幾個階段,在每個階段使用不同的工具。集 成電路設計者通常選擇幾種編程語言中的一種來書寫代碼。與書寫代碼的過 程相同步的是仿真。在仿真的過程中,設計者執行一個仿真工具,以程序代 碼為輸入來測試所作的設計。因為仿真暴露了問題,設計者就可以編輯代碼 來解決這些問題,然后再次仿真。在仿真階段之后,由合成器將代碼翻譯為 集成電路的邏輯表示。然后由其它工具將邏輯表示翻譯為物理的集成電路,
例如,可以翻譯為現場可編程邏輯門陣列(FPGA)、特殊應用集成電路(ASIC) 或者傳統硅集成電路(custom silicon IC)等才各式。
集成電路設計者可以選用幾種類型的編程語言。 一類可以稱為硬件設計 語言(HDL),也被稱為寄存器傳送語言(RTLs)。公眾均了解,RTLs語言包括 Verilog和VHDL。 RTLs被認為是底層語言,因為它們描述特殊硬件的特征, 例如定時和并行處理。集成電路設計語言的另一類選擇為高級語言,包括C 和0++(以及其它的相關語言),這些語言通常用來開發軟件而不是硬件。這 些軟件語言允許設計者編寫更高層的代碼,這提高了編程者的效率。
然而,許多目前流行的仿真工具和合成的工具都是用HDL語言而不是C 或0++語言作為輸入,因此,就需要集成電路設計者先用c或o+語言編寫代 碼,之后再翻譯為HDL語言。這一翻譯過程可以人工完成,也可以自動完成, 或者用人工和自動相結合的方式完成。另外,使用HDL語言的仿真工具和合 成工具通常不能提供充分的調試能力以使硬件設計者容易地和有效率地為硬 件設計調試。例如,這些仿真和合成工具通常只允許硬件設計者或測試者檢 測從仿真工具和合成工具中堆入和提取的數據,但是它們通常不能允許更為 具體或者詳細的調試和測試圖形硬件設計。
發明內容
本發明的其中 一 個實施例描述了圖形硬件設計的調試與驗證系統。系統
包括腳本引擎,用來將代表圖形函數的腳本翻譯為可被軟件圖形驅動處理
的命令。此軟件圖形驅動在圖形處理單元模型中處理此命令。此圖形處理單 元模型可以與圖形處理單元硬件設計相對應,用來產生至少一個與腳本中的 圖形函數相應的圖形幀。
本發明的調試與驗證系統還可以包括腳本引擎界面,用來執行軟件圖形 驅動中以及圖形處理單元模型中的命令。
本發明還可以包括腳本引擎,用來執行軟件圖形驅動和圖形處理單元模 型中的命令。此腳本引擎還用來顯示至少 一個圖形幀以及圖形處理單元模型 所產生的調試信息。本發明系統也可以包含調試器,提供調試圖形處理單元 模型的能力。
本發明另一個實施例描述了一種圖形硬件設計的方法。該方法包含將 代表硬件設計的腳本翻譯為軟件圖形驅動能夠處理的命令。本發明方法也可 以包括在軟件圖形驅動中以及代表圖形硬件設計的圖形處理單元模型中處 理命令。本發明方法還可以包含產生至少一個與腳本中的圖形函數相應的 圖形處理單元幀。
下面結合附圖進行詳細說明,將使本領域技術人員了解本發明的其它系 統、方法、特征和/或有益效果。
圖1為本發明的一個實施例的示意圖2為本發明的一個實施例中的腳本產生器的流程框圖3為圖1實施例的其中一個執行路徑的流程框圖4為圖1實施例的一個可替代的執行路徑的流程框圖5為圖1實施例的另一個可替代的執行路徑的流程框圖6為本發明另一個實施例的示意圖7為本發明圖形硬件設計中調試與驗證的方法的流程圖8為本發明圖形硬件設計中調試與驗證的方法的另一個流程圖9為本發明另一個實施例的示意圖。
具體實施例方式
以下結合附圖詳細說明本發明。然而所附圖示和說明僅為了清楚地理解 本發明,并非用來對本發明進行限制。任何所作的替換、修改、和選擇都屬 于本發明的保護范圍。
本發明揭露了 一種調試和驗證圖形硬件設計的系統與方法。圖形硬件設 計者或測試者可以使用本發明系統與方法一步一步地執行包含圖形操作的應 用程序,來分析和定位圖形硬件設計中潛在的錯誤。另外,用戶還可以使用 本發明系統與方法在代表軟件應用程序的圖形組件的腳本中設置斷點,以進 一步分析圖形硬件設計。
用戶使用本發明系統與方法,還可以利用至少三條執行路經來產生和分 析圖形幀或者視頻幀,以進一步驗證和測試圖形硬件設計參考運行時間和
參考柵;參考運行時間、參考軟件設備驅動和被測圖形硬件;或者,軟件設 備驅動和被測圖形硬件。這至少三條執行路經允許用戶分析和測試圖形硬件 設計,也允許用戶分析和測試支持圖形硬件的軟件設備驅動。用戶可以使用 單個腳本,也可以同時使用多條執行路徑來執行腳本,分析所產生的視頻或 圖形幀。
請見圖1,描述了本發明圖形硬件設計中調試與驗證系統的一個實施例。 在本實施例中,圖形硬件設計中調試與驗證系統包括編輯器102,它是本發 明系統的可選組件,用來產生驗證圖形硬件設計的腳本106。舉例來說,如 果想要驗證或分析圖形硬件設計,本發明的用戶可以手動產生包含著命令的 腳本106,命令用腳本語言定義,代表圖形操作。
腳本106也可以由腳本產生器104產生。腳本產生器l(M可以從具有圖 形組件的軟件應用程序中寫入或者獲取圖形操作。例如,利用Direct3D 或 者OpenGL 圖形應用軟件編程界面的軟件應用程序會包含對圖形運行時間或 圖形應用程序編程界面的調用,它們可以被寫入或獲取,以及轉換成腳本語 言定義的命令。在這種情況下,代表軟件應用程序210的圖形操作的腳本106 可被轉換成可以在腳本引擎108中使用的腳本106。軟件應用程序210可以 是游戲軟件或者其它具有圖形組件的軟件。腳本產生器104產生的腳本106 可以被編輯器編輯,這樣本系統的用戶可以增加、移動或者改變代表圖形操 作的腳本命令。例如,如果用戶認為不必要對于圖形硬件設計的正確性作評
估,用戶就可以移動一部分由腳本產生器104所產生的腳本106。
圖2為一個具有圖形界面208組件的軟件應用程序210的實施例。軟件 應用程序210還包含其它示范性的模塊,包含數據計算202、事件處理206 以及輸入/輸出204;然而應當理解的是,圖示各組件僅作為理解本發明的示 范性舉例,并非用來限制本發明。為了顯示或者產生圖形,軟件應用程序210 可以包含圖形界面208,與操作系統圖形界面214或圖形應用程序界面通信, 以執行命令從而將圖形輸出到屏幕或顯示器上。操作系統圖形界面214與軟 件圖形驅動216通信,軟件圖形驅動216與設備驅動是等效的。在一個較佳 的實施例中,軟件圖形驅動216用來與圖形處理硬件218交互,將提交到標 準化應用程序界面的命令翻譯為特定的圖形處理硬件所特有的命令。
圖形處理硬件218從軟件圖形驅動216接收命令,處理數據,產生圖形 或視頻的幀220以顯示在屏幕或者其它類似輸出設備上。廠商不同,圖形處 理硬件設計的差別很大,但是具典型性的是它與軟件圖形驅動216相聯系, 能夠執行標準軟件應用程序界面所定義的命令,例如Direct3D⑧的應用程序 界面或者OpenGL⑧應用程序界面。
腳本產生器222可以從軟件應用程序210或者從軟件應用程序210的圖 形組件獲取或記錄命令,以產生圖形內容。腳本產生器222能將這些命令轉 化為腳本224中由腳本語言定義的命令。在一個非限制性實施例中,腳本語 言的腳本命令可以被組合為如下至少4種命令組群的類型普通命令(co,on commands) 、 二維命令(2D commands),三維命令(3D com隨nds)和視頻命令 (video commands)。在這一非限制性實施例中,命令組群具有的功能與軟件 圖形應用程序界面(API)的API功能相應。
例如,普通命令可以包含用來定義圖形操作所用的圖形API的版本和類 型的命令,也可以包含圖形操作的顯示模式或決定,也可以包含與圖形或視 頻幀相應的顏色品質或密度以及其它屬性;本領域普通技術人員應當理解。 另外,普通命令也可以包含定義腳本中的一個或多個斷點的命令或指向腳本 引擎108以向文件、顯示器或其它輸出設備堆疊調試信息的命令。調試信息 可以包含與圖形硬件設計的調試相應的信息。
普通命令也可以包含對于達到調試目的有用的其它附加命令。例如,跳 轉到腳本中的另 一個點的命令可能對于用戶分析硬件設計有用。在本發明的 其中 一個實施例中,普通命令提供了渲染程序的維持狀態或放棄狀態之間的跳轉能力。另 一個示范性的調試命令可以包含使調試信息顯示或儲存到文件 中的命令。這對于用戶評估圖形硬件設計來說是有用的,在腳本執行過程中 警示用戶他希望見到的特定信息,或者^U叉警示用戶腳本的某部分已經到達。
另外,普通命令還可以包含清空D、 Z、 S緩存的命令。再另外,在腳本語言
中也可以包含顯示渲染的圖形、視頻頓或者翻轉幀的命令。本領域普通技術
人員應當理解,D緩存是一個包含了屬于顏色數據渲染對象的信息的緩存, 在本技術領域內也被認為是目的地緩存。本領域技術人員應理解Z緩存是指 "深度"緩存,儲存每一個像素的深度信息。另外,也應理解的是,S緩存 是指"模版"緩存,儲存每一個像素的模版值。這些緩存是三維渲染結果的 主存儲區域。另外,腳本命令使得圖形處理單元中的低水平硬件寄存器的編 程能夠提供在圖形處理單元(GPU)或GPU替代模型中的詳細功能的控制。
二維命令、三維命令和視頻命令中所包含的命令與特殊圖形應用編程界 面中的命令相似,例如特殊圖形應用編程界面為Directs API或者OpenGL API。本領域技術人員應理解上述命令在不同系統中差別很大,依賴于軟件應 用所使用的特殊的圖形API或者腳本引擎所使用的圖形硬件設計。然而,本 領域擁有圖形API知識的普通技術人員應能夠知道還有很多其它未涉及的變 換,這些變換都屬于本發明的保護范圍。
現在請再回到圖1,參考原理框圖。如上所述,本發明系統使用的腳本 106可由編輯器102或者腳本產生器104產生。腳本106包含與腳本語言所 定義的圖形操作相應的命令,可被腳本引擎108執行。系統提供給本系統的 用戶多種可選擇的執行路徑,以驗證和分析圖形硬件設計。這多種執行路徑 能允許用戶使用用戶正在測試的圖形硬件設計,也允許用戶使用參考系統來 產生圖形或者視頻的幀以作比對之用。腳本引擎108將代表由腳本語言定義 的圖形操作的腳本106翻譯為腳本引擎108所執行的命令,以產生圖形幀, 也允許本系統用戶分析和調試用來產生幀的圖形硬件設計。
腳本引擎108也可以包含用戶界面110,允許用戶既通過^:盤、鼠標或 其它輸入設備也可以通過顯示器或其它輸出設備可視化地與腳本引擎108交 互,以及/或者控制腳本引擎108。用戶界面110也允許腳本引擎108將該些 執行路徑中的至少一個路徑的結果顯示給用戶。用戶界面IIO還能夠允許用 戶比對至少兩個執行路徑的結果,來分析圖形硬件設計。
本發明系統還可以包含腳本引擎界面114,允許腳本引擎108通過圖形
設備驅動118執行腳本106,腳本106為腳本語言形式,代表圖形硬件設計。 換句話說,腳本引擎界面114能將腳本106翻譯成為一個能夠被設備驅動118 處理的格式,因為可能會需要將包含了由腳本語言所定義的命令的腳本翻譯 為在圖形處理單元中或代表圖形處理單元的模型中的設備驅動的調用和后續 調用。腳本引擎界面114的實現方式可以有很多種,依賴于本發明所使用的 設備驅動118和圖形處理單元模型122的不同而不同,因為本系統可以按照 所選用的通信協議被設置為執行不同的設備驅動和模型。
本發明系統可以包含圖形處理單元模型122。圖形處理單元模型122可 以是代表圖形處理單元的硬件設計的軟件模型,可允許設計者或測試者不需 要專門為測試目的來制作一個物理的圖形處理單元即可以分析和驗證特定的 硬件設計。如上所述,硬件設計者可以用硬件描述語言(HDL)創建圖形硬件設 計。本領域技術人員應理解,用硬件描述語言表述的硬件設計可以4皮翻譯為 此設計的一個模型,模型可以用可編程語言來設計,例如C語言或者其它類 似的語言,允許設計者為硬件設計來創建一個工作軟件模型。在本發明系統 的架構中使用這些模型,可以創建一個工作圖形系統,能產生圖形或者視頻 幀以達到測試和—險i正的目的。
例如,眾所周知,用硬件設計語言所描述的邏輯門能夠被翻譯為高級語 言例如C語言,來創建硬件設計的模型,這個模型可以被用來建模和測試。 這樣的模型在本領域內被稱為"C-模型",說明創建圖形硬件設計的模型所用 的編程語言為C語言。大家還知道,設備驅動118典型的為軟件組件,促進 了操作系統的圖形子系統和圖形硬件之間的通信。在本發明系統中,通過腳 本引擎界面114和圖形處理單元模型122的交互,設備驅動118也可以被分 析和調試。
圖形處理單元模型122因為仿真了硬件圖形處理單元的功能,所以它能 產生圖形、視頻幀或GPU圖像128,它們能夠通過用戶界面IIO顯示給用戶。 換言之,圖形處理單元模型122能夠產生GPU圖像128,代表在腳本106中 的、通過腳本引擎界面114和設備驅動118在圖形處理單元模型122中被腳 本引擎108所執行的命令。GPU圖像128能夠被本發明系統的用戶通過用戶 界面110或其它工具做分析。另外,用戶界面110能夠被用來縮放所生成的 圖像,以分析得更為詳細。本發明系統的用戶能夠分析所產生的GPU圖像128 來測試或驗證圖形處理單元模型122所代表的圖形硬件設計,圖形處理單元
模型122是從HDL設計翻譯得來的。
另外,因為圖形處理單元模型122由可編程語言描述,例如C語言,本 領域普通技術人員應理解,在腳本的執行過程中將產生和獲取追蹤信息或其 它調試數據,以作分析。特別地,在測試和驗證設計的過程中,啟示使用某 些硬件設計組件中的數據的信息將被獲取和分析,這對調試是有用的。另外, 本系統的用戶可以選擇通過用戶界面110顯示某些追蹤信息。
本發明系統包含參考運行時間112,與腳本引擎108通信,從腳本引擎 108接收命令以處理腳本命令。本系統的用戶可以選擇使用參考運行時間112 來執行腳本106。在一個非限制性實施例中,參考運行時間112可以包含 軟件供應商提供的運行時間,例如Di rec 13D 運行時間。本系統還包含參考 驅動116,作為圖形驅動的原型的參考軟件驅動。
本領域技術人員應理解,參考驅動116可以作為在應用和代表硬件設計 的模型之間的界面,也可以驗證由圖形規范所定義的特征。另外,參考驅動 116可以提供圖形硬件設計的性能分析或性能目標概要的基線。參考驅動116 能夠與圖形處理單元模型122通信,使得圖形處理單元模型122產生參考驅 動圖像126或參考驅動幀,與腳本106中的、在腳本引擎108和參考運行時 間112以及參考驅動116指導下由圖形處理單元模型122產生的命令相應。 這樣,本系統的用戶可以使用參考驅動在同 一個硬件設計中所產生的視頻或 圖形幀來分析和驗證設備驅動118的設計。
用戶也可以分析追蹤信息130,結果產生參考驅動圖像126,也可以使得 圖像126和追蹤信息130通過用戶界面110顯示。用戶還可以比對參考驅動 圖像126和GPU圖像128,也可以通過用戶界面110對兩個圖像執行縮放、 旋轉或者其它操作,通過分析本系統所產生的圖像來測試和驗證設備驅動和 圖形硬件設計的設計。
本系統也包含參考柵120,能夠渲染視頻或音頻幀,或渲染參考圖像126, 通過參考運行時間112基于腳本106中的命令與參考柵120通信。軟件供應 商或者圖形應用編程界面的創建者能夠提供參考柵120作為圖形硬件設計者 的參考工具,如Direct3D 或OpenGL⑧圖形API。參考柵120也可以獨立 的創建,圖形API提供創建的功能。參考柵120是一個在軟件中實現的典型 工具,仿真參考硬件的執行,但典型地不具有市場所需的必要的工作特性, 也不能翻譯為硬件設計的實現。基于腳本106中的命令,參考柵120能產生
參考圖像124, 通過參考運行時間112通信。用戶會希望通過用戶界面110 觀察參考圖像,或對比參考圖像124和參考驅動圖像126或GPU圖像128, 來分析和驗證硬件設計或設備驅動的執行。
本發明的系統提供至少3條執行路徑來執行腳本。用戶會通過用戶界面 或由腳本中嵌入的命令選擇不同的執行路徑。不同的執行路徑可以并行處理, 因此用戶可以通過用戶界面或根據分析追蹤信息來并行比對所產生的圖像。
現在請見圖3,在多條執行路徑中,用粗體線畫出的其中一條執行路徑 描述了本發明系統的原理框圖。粗體線所示的執行路徑是本發明的其中一個 舉例。本領域技術人員應理解多個執行路徑都可以被用來分析、測試或驗證 圖形處理單元模型122所代表的圖形硬件設計。
用粗體線表示出的執行路徑描述了本系統的一條執行路線,在設備驅動 118和圖形處理單元模型122中通過腳本引擎來執行腳本,圖形處理單元代 表本系統的用戶所需要分析和驗證的硬件設計。如上所述,典型的情況是用 HDL語言描述硬件設計,而通常編程語言用更高級的語言,例如C語言。用 HDL語言描述的硬件設計一般被翻譯為更高級的語言,例如C語言。對硬件 設計作類似這樣的翻譯操作也可以被用于本系統的圖形處理單元模型122。 用戶也將能通過本系統測試和分析幫助計算機操作系統與圖形硬件之間通信 的設備驅動118。
本執行路徑包含設備驅動118和嵌入在可被測試評估的GPU模型中的硬 件設計。系統產生追蹤信息130,以備進一步的分析和其它多種應用。通過 腳本引擎界面114、設備驅動118以及代表圖形處理硬件系統中的硬件設計 的圖形處理單元模型122,本系統執行腳本106,產生GPU圖像128,其能夠 代表圖形或者視頻幀,使用戶能夠通過用戶界面110對此圖形進行分析、縮 放和處理,以分析、驗證或者調試圖形處理單元模型122所代表的圖形硬件 設計。系統也可以反復多次產生圖形來創建移動的圖形和視頻,供本系統用 戶通過用戶界面IIO作分析。
現在請見圖4,描述了本系統的多條執行路徑中,用粗體線標出的其中 一條執行路徑描述了本發明系統的另 一個框圖。本執行路經為系統用戶提供 了產生參考驅動圖形126的能力。參考驅動圖形126代表了由參考設備驅動 116和代表硬件設計的圖形處理單元模型122相結合產生的圖形或者視頻幀。 這樣,本系統用戶可以通過比對由設備驅動118所產生的圖形和由參考設備
驅動116所產生的圖形來驗證或者分析設備驅動118。如上所述,參考設備 驅動116可以由圖形API(例如,Direct3D API)的軟件提供商創建,也可以 由第三方驅動提供商提供,第三方提供的驅動需按照參考規范來操作,可能 會喪失與硬件提供商開發的硬件特殊設備驅動效率一樣高的硬件設計的優 點。
由系統反復產生的參考驅動圖形126與圖3的執行路經產生的GPU圖形 128可以通過用戶界面相比對。例如,參考驅動圖形126和GPU圖形128都 可以被縮放、旋轉或者其它處理,使得用戶能分析所產生的每個圖形的正確 性。接下來,可以對所產生的圖形進一步分析,來驗證和分析硬件設計與軟 件設備驅動的設計與執行。利用參考驅動116和設備驅動118執行腳本,圖 4中粗體線標出的執行路經允許本系統用戶分析由圖形處理單元模型122所 代表的硬件設計。
請見圖5,描述了本系統另一個執行路經的實施例。粗體線標出的路經 允許用戶用參考運行時間112來產生參考圖形124。如上所述,參考運行時 間112可以代表提供圖形人?1(如0"6"30 人?1)的軟件提供商所提供的運行 時間。參考運行時間112可以與參考柵120通信,參考柵120能夠產生參考 圖形格式的視頻或圖形幀。如上所述,參考柵120能夠按照圖形API執行圖 形操作,提供參考或者基線,為確保硬件設計或軟件設備驅動的正確性提供 比對。
參考圖形124代表僅由圖形API和代表參考圖形硬件的參考柵所產生的 視頻或者圖形幀。通過用戶界面110,用戶能夠比對參考圖形124和參考驅 動圖形126或GPU圖形128,這對于評估設備驅動118或者圖形處理單元模 型122所代表的硬件設計是有用處的。例如,用戶可以在用戶界面110中對 參考圖形124作縮放、旋轉或者其它處理,也可以與參考驅動圖形126或者 GPU圖形12 8作比對,幫助用戶驗證和分析圖形硬件設計。
請見圖6,描述了本發明的一個實施例。在本實施例中,本發明包含調 試器150,提供給用戶附加的功能。調試器150能夠提供給用戶允許進一步 與腳本引擎108交互的能力和控制腳本在腳本引擎108中的執行的能力。例 如,調試器150能夠與腳本引擎108交互,提供給用戶控制腳本執行的能力。 再例如,通過用戶界面130執行時,當粗體線標出的或其它路經指示出腳本 的當前位置,用戶可使用調試器150讓腳本一步一步地執行。雖然在其它圖
示中并沒有具體描述,本領域普通技術人員應當理解,其它實施例也可以包
含相似的調試器150,其與腳本引擎108通信。
另外,通過用戶界面110,用戶可以控制腳本106 —步一步地執行。當 分析腳本106和硬件設計時或者分析腳本106所使用的設備驅動時,用戶可 以選擇讓腳本106不間斷地4丸行,也可以繼續一步一步地執行。例如,如果 腳本106使用圖形處理單元模型122或設備驅動118使得產生的幀不符合預 期,用戶可以使用調試器150來確定是哪個腳本命令導致了失敗。這樣,用 戶可以更好地理解是硬件設計或設備驅動118的哪部分導致了失敗。
另外,調試器150可以通過用戶界面110允許用戶在腳本106中^:置或 者設置斷點。當腳本106中的斷點到達時,用戶可以在腳本引擎108中暫停 或停止執行腳本106。當分析由圖形處理單元模型1"所代表的硬件設計時 或者分析在某條執行路徑中所用的設備驅動時,斷點提供了非常有用的功能。 另外,調試器150可以將圖形處理單元模型1"所產生的追蹤信息UO提供 到用戶界面110,顯示給用戶觀察。追蹤信息130可以包含輸入到圖形處理 單元模型122的數據和由圖形處理單元模型122產生的數據。調試器1M和/ 或用戶界面110可以顯示追蹤信息130,允許進一步操作,例如數據排架、 查詢、多種追蹤、多種搡作和可能采用的其它調試功能。更有價值的是,與 建構一個硬件GPU然后用已知的方法測試相比較,本發明用斷點使腳本106 一步一步地執行,利用調試器150和用戶界面IIO觀察追蹤信息130,分析 和驗證圖形處理單元模型122更佳。
現在請見圖7,描述了本發明方法的流程圖。步驟302,獲取軟件應用程 序210中的圖形操作以自動產生腳本106。例如,為了產生圖形或^L頻幀, 軟件應用程序210會向操作系統的圖形API發送請求。這些請求能被獲取以 產生腳本引擎108處理的腳本106,如上所述。步驟3(M,獲取的圖形操作被 翻^^為包含腳本命令的腳本106,腳本命令由腳本語言定義。在一個非限定 性實施例中,腳本命令分為4種普通命令、二維命令、三維命令以及視頻 命令。步驟304,從所獲取的圖形指令中產生腳本106。腳本106包含由腳 本語言定義的腳本命令,如上所述。腳本106包含與獲取自具有圖形組件的 軟件應用程序210的圖形操作相應的命令。例如,在軟件應用程序210中繪 制三維物體的一系列圖形操作將被獲取,用腳本106代表,腳本106在多種 執行路徑中執行。或者,在另一個實施例中,本發明用戶手動創建腳本106,腳本106包含產生圖形或視頻幀的腳本命令。
步驟306,確定執行腳本106的執行路徑。如上所述,參考圖1-圖6的 實施例,用戶可以選擇多種執行路徑來分析和驗證硬件設計和/或設備驅動。 例如,用戶可以選擇在以步驟308為起始的執行路徑中執行腳本106,包括 翻譯腳本106。位于腳本中的由腳本語言定義的命令4皮翻譯為能夠被軟件設 備驅動216處理的格式。如上所述,腳本106包含由腳本語言定義的腳本命 令,腳本語言定義的腳本命令可能并不是能夠被設備驅動理解的格式。因此, 腳本命令被轉換為搡作系統圖形函數產生的命令格式,操作系統圖形函數響 應圖形API中執行的函數,例如Direct3D⑧或者OpenGL 圖形API。
步驟310,命令在軟件圖形驅動216中或設備驅動118中處理。如我們 所知,設備驅動118是一個軟件組件,允許操作系統或其它軟件應用程序210 與硬件組件通信。硬件組件如圖形處理單元,既可以具有也可以不具有操作 系統認識并用來與硬件組件交互和執行組建中的操作的標準通信協議。步驟 312,軟件圖形驅動216處理的命令在圖形處理單元才莫型122中執行。如上所 述,圖形處理單元模型122可以是硬件設計的軟件模型,與軟件模型通信而 不是與硬件原型或硬件GPU通信。此模型可以用C語言或者其它編程語言實 現,通過將用硬件描述語言(HDL)所編寫的硬件設計翻譯為高級編程語言,例 如C語言。另一個可選擇的實施例是,有些硬件設計者用高級語言例如C語 言實現硬件設計,這樣就不需要翻譯了。本發明的較佳實施例是使用此C-模 型創建硬件設計的工作軟件模型。因為,例如,當需要執行調試功能時,相 對于HDL所代表的硬件設計,它提供了更簡單的模型操作。當測試和分析時, 操作一個由高級編程語言表示的模型要比由HDL語言表示的模型容易的多, 因為高級語言本身提供了更好的適應性。
步驟314,圖形處理單元模型122產生圖形或視頻幀。圖形處理單元模 型122代表腳本106中的命令,腳本106由軟件驅動216處理并被圖形處理 單元模型122執行。通過用戶界面110或本領域普通技術人員所知的其它方 法,產生的圖形或視頻幀能夠被分析以評估圖形處理單元模型122所代表的 硬件設計。例如,用戶可以分析產生的幀是否與腳本引擎108執行的腳本106 產生的預期結果相一致。用戶可以通過用戶界面110檢查或搡作產生的幀, 或者將產生的幀與另 一條可選的執行路徑所產生的幀相比對。
步驟316為另一條可選的執行路徑的起始。腳本106在步驟316翻譯為
命令,本執行路徑與上述路徑的差別是在步驟317中,由參考運行時間112 處理命令。隨后,執行步驟318,參考軟件驅動116處理命令。如本發明上 述實施例所述,參考軟件驅動116可以是軟件驅動,不必具備硬件設計的所 有優點,但是是根據參考圖形API實現的,例如DirecUD⑧或者OpenGL 圖 形API。步驟320,由參考軟件驅動116處理過的命令在代表硬件設計的圖 形處理單元模型122中執行。這條執行路徑使用圖形處理單元模型122和參 考軟件驅動116執行腳本106,增強了測試和分析能力。步驟322,腳本106 中的命令在參考軟件驅動116中處理后由圖形處理單元模型122執行,產生 圖形或視頻幀。另外,用戶可以將步驟322所產生的幀與步驟314所產生的 幀相比對,分析和驗證由圖形處理單元模型所代表的硬件設計或者軟件驅動 或設備驅動的實現。
步驟324描述了本發明另一個可選的執行路徑的實施例,用來分析和測 試圖形硬件設計。此執行路徑提供給用戶的方法是在參考運行時間112中 處理腳本的命令,在參考柵120中執行此命令。如上所述,參考運行時間112 是本領域所致的軟件組件,典型地由軟件圖形API的提供商提供或者按照參 考規范實現。步驟328,參考運行時間112處理過的命令在參考柵120中執 行。如本發明上述實施例所述,在步驟330,參考柵120能產生視頻或圖像 幀。如本領域所知,參考柵120符合圖形API例如Direct3D API,為參考 圖形處理單元的軟件實現,能夠用來產生符合參考規范的圖形或視頻幀。硬 件提供商在開發硬件過程中會使用參考柵120作為基線,以與硬件設計與實 現比對,得知正確性。在這條執行路徑中,用戶可以將步驟330所產生的幀 與其它執行路徑所產生的幀相比對,分析和驗證由圖形處理單元模型所代表 的硬件設計或者軟件驅動或設備驅動的實現。
現在請見圖8,描述了一套圖形硬件調試和驗證系統,包含一計算機系 統12,帶有一臺顯示器14和用戶輸入設備16,比如,鍵盤或者鼠標。計算 機系統12也可能在網絡22上形成一個節點,但是并不局限于LAN或者WAN。 在這種結構中,用來產生腳本106的腳本或者圖形操作通過網絡22從遠程服 務器24傳送到計算機系統12。遠程服務器24和計算機系統12之間的連接 方式可以是物理網絡接口中的任何一種,比如CAT-5、火線接口、 802.1 1 、 無線、或者其它連接方式。計算機系統12也可以包括光盤驅動器28,用來 接收和讀取光盤30,光盤30可以含有腳本106或者具有圖形操作的軟件應
用程序210,以產生腳本106。
計算機系統12包含存儲器34,可以用來存儲許多執行模塊。在本實施 例中,存儲器34包含有腳本翻譯模塊36、腳本處理模塊38和幀產生模塊40。 存儲器34還可以包含許多其它的模塊,比如,可以包含腳本翻譯模塊36、 腳本處理模塊38和幀產生模塊40的子模塊。
腳本翻譯模塊36可以把包含有圖形操作的腳本106翻譯成能夠被軟件驅 動或者設備驅動傳輸的格式,軟件驅動或者設備驅動用來和圖形硬件或代表 圖形硬件設計的軟件模型交互。上述設備驅動可以是軟件組件,促進操作系 統或者其它軟件程序和硬件組件之間的通訊。硬件組件可以是硬件圖形處理 單元。根據腳本106是否被執行,腳本翻譯模塊36可以有不同的操作。如腳 本是在如下中的哪一個中執行設備驅動、參考驅動、參考運行時間或者其 它軟件組件,其它軟件組件在硬件或者代表硬件設計或規范的軟件模型中交 互。例如,如果腳本106代表的圖形操作要在設備驅動里運行,腳本翻譯模 塊36就會把腳本命令翻譯成設備驅動識別的模式。而如果腳本106所代表的 圖形操作將在參考運行時間中處理,腳本翻譯模塊36就會把腳本命令翻譯為 參考運行時間能夠識別的格式。
通過使翻譯的腳本命令在軟件驅動或者設備驅動里運行,腳本處理模塊 38能夠運行腳本106。腳本處理模塊38控制腳本106的運行,并且可以包含 調試功能,可以讓用戶逐步執行腳本106,同樣也可以使用腳本106中斷功 能。例如,用戶可以在腳本106里設置一個斷點,腳本處理模塊38在這個斷 點就可以中斷腳本106的執行,以允許用戶檢查關于這個腳本的各種數據, 并根據用戶的要求繼續執行該腳本106。
根據用戶選擇的執行路徑,幀產生模塊40可以產生圖像或者視頻幀。幀 產生模塊可以包含至少3個執行路徑,在上述揭露的實施例中也有討論。例 如,幀產生模塊40可以包含一個利用軟件驅動或者設備驅動的測試執行路徑 和一個代表硬件設計的軟件模塊;可以包含一個利用參考設備驅動的參考驅 動執行路徑和代表硬件設計的軟件模塊;可以包含一個利用參考運行時間的 參考執行路徑和一個參考柵。幀產生模塊40內的這至少3個執行路徑允許用 戶分析由軟件模塊代表的硬件設計,同樣允許用戶分析軟件驅動或者設備驅 動的執行。幀產生模塊40允許一個或者多個執行路徑并行使用,因此,用戶 可以執行使用多條執行路徑的同樣或者相似的腳本,來比較這些腳本執行后
產生的幀。例如,用戶可以并行使用測試執行路徑和參考執行路徑,以便評 估是否硬件設計和軟件驅動程序的執行產生了預期結果,這些結果和由參考 執行路徑產生的幀相關聯。
需要注意的是,在有的實施例中,腳本翻譯模塊36、腳本處理模塊38 和幀產生模塊40可以組合成一個單獨的模塊,用來執行任何一個由這些單獨 分離的模塊執行的任務的組合。因此,任何在此描述的模塊或者子模塊并不 局限于現有的分離的模塊。實際上所有模塊都可以一個一個單獨運行,或者 很容易就可以組合成一個模塊。在一些實施例中,通過用戶輸入設備16和顯 示器14里面的圖形用戶界面,用戶可以控制腳本翻譯模塊36、腳本處理模 塊38和幀產生模塊40的操作,并使其相互作用。腳本翻譯模塊36、腳本處 理模塊38和幀產生模塊40的每一個和任何一個子模塊,可以包含一個安排 好的執行指令列表,用來實現邏輯功能。應當指出的是,當腳本翻譯模塊36、 腳本處理模塊38和幀產生模塊以及任何一個子模塊用軟件實現的時候,該系 統可以被存儲在任何計算機可讀介質上,以便用來使用或者和任何計算機相 關系統或方法相連才妾。
本發明所稱的計算機可讀介質可以為但并不局限于電的、磁的、光的、 紅外的、或者其它物理設備或方法,以便用來包含或者存儲計算機程序來使 用,或者和計算機系統或方法相關聯。更多計算機可讀介質可以包含(并不窮 盡的舉例)電路、便攜計算機盤片、隨機存取存儲器、電可擦除只讀存儲器、 光纖。
圖9描述了一個示范性的實施例,在計算機系統12上運行腳本翻譯模塊 36、腳本處理模塊38和幀產生模塊40。 一般地,計算機系統12可以包含任 何一個有線或無線計算設備,例如桌上電腦、便攜電腦、專用電腦、多處 理器計算設備、移動電話、個人數字助理、掌上電腦、嵌入式設備等。不管 具體怎樣,計算機系統12可以包含,舉例來說,存儲器34、處理設備42、 多個輸入/輸出界面44、網絡界面設備46和集中存儲48,其中這些設備中的 每一個都通過數據總線50互相連接。
處理設備42可以包含任何定制的或通用的處理器、中央處理器或者輔助 處理器、宏處理器、 一個或多個特殊應用集成電路、多個數字邏輯門和其它 公知的電子設備。
存儲器34可以包含非永久性存儲組件(例如,隨機存取存儲器(RAM,例
如DRAM、 SRAM等))或永久性存儲組件(例如,R0M、硬盤、磁帶、CDR0M,等)。 存儲器34典型地包含操作系統52、 一個或多個應用程序、仿效系統或仿效 程序等。例如,應用程序可以包含應用特殊軟件54,其包含腳本翻譯模塊36、 腳本處理模塊38、幀產生模塊40。本領域普通技術人員應當可以理解存儲器 34能夠包含其它組件,為了簡潔易懂此處不再贅述。
輸入/輸出界面44位輸入和輸出數據提供了許多接口。例如,當計算機 系統12包含個人計算機,接口將為用戶輸入設備12,例如可以為鍵盤或鼠 標。當計算機系統包含掌上設備(例如PDA、移動電話),接口將為鍵或按鈕、 觸摸屏、格式等。顯示器14可以包含計算機監視器或等離子屏幕或液晶顯示 器等等。
請進一步參考圖9,網絡界面設備46包含多個組件,用來通過網絡22 發射和/或接收數據。例如,網絡界面設備46包含一個既能夠與輸入設備又 可以與輸出設備通信的設備,例如調制/解調器(如Modem)、無線電收發器(如 無線電頻率RF、電話接口、南北橋、路由器、網卡等)。
上述實施例僅僅為對于本發明圖形硬件調試與驗證的多種可能的方式的 舉例,應該強調的是可以對上述實施例作多種變換和修改。所有修改和變換 都屬于本發明權利要求書的保護范圍。
權利要求
1.一種調試和驗證圖形硬件設計的系統,包含腳本引擎,將代表圖形函數的腳本翻譯為命令;腳本引擎界面,將該命令翻譯為設備驅動能夠處理的格式;圖形處理單元模型,與圖形處理單元的硬件設計相應,執行來自該設備驅動的命令,產生調試信息;以及調試器,提供調試該圖形處理單元模型的能力。
2. 根據權利要求l的系統,其特征在于,還包含參考軟件驅動,在該圖形處理單元模型中處理該命令,其中,該圖形處 理單元模型用來產生至少 一個與該腳本中的該圖形函數相應的參考驅動圖形幀。
3. 根據權利要求l的系統,其中,該圖形處理單元模型用可編程語言表示。
4. 根據權利要求l的系統,其特征在于,還包含 參考運行時間,包含圖形操作的應用程序界面;以及 參考柵;其中該系統執行該參考運行時間和該參考柵中的該命令,該參考柵產生至少 一個參考圖形幀。
5. 根據權利要求4的系統,其中,該腳本引擎允許用戶比對至少如下兩者該至少 一個圖形幀、該至少一個參考圖形幀以及該至少一個參考驅動圖 形幀。
6. 根據權利要求l的系統,其中,該調試器允許用戶在該腳本中設置至 少一個調試斷點。
7. 根據權利要求l的系統,還包含腳本產生器,從具有圖形組件的軟件應用程序中產生代表該圖形函數的 該腳本;其中,該腳本產生器從該軟件應用程序中獲取請求,執行圖形操作, 產生該腳本,該腳本包含軟件圖形驅動的命令。
8. —種調試與驗證圖形硬件設計的方法,包含如下步驟 將代表圖形函數的腳本翻譯為設備驅動所處理的命令;在該設備驅動中和代表圖形硬件設計的圖形處理單元模型中處理該命令;以及產生與該腳本中的該命令相應的至少 一個圖形處理單元幀。
9. 根據權利要求8的調試與驗證圖形硬件設計的方法,其特征在于,還 包含將該腳本翻譯為參考軟件驅動所處理的命令; 在該參考軟件驅動和該圖形處理單元模型中處理該命令;以及 產生至少 一個與該腳本中的命令相應的參考驅動幀。
10. 根據權利要求9的調試與驗證圖形硬件設計的方法,其特征在于, 還包含比較該至少一個參考驅動幀和該至少一個圖形處理單元幀,以分析至少 如下之一該圖形硬件設計和該設備驅動的設計。
11. 根據權利要求8的調試與驗證圖形硬件設計的方法,其特征在于, 還包含將該腳本翻譯為參考柵所處理的命令;在該參考柵中處理該命令;產生至少 一個與該腳本中的命令相應的參考幀。
12. 根據權利要求11的調試與驗證圖形硬件設計的方法,其特征在于, 還包含如下步驟比對如下之中的至少兩者該至少一個參考幀、該至少一個參考驅動幀 和該至少一個圖形處理單元幀;以及在該比對步驟所得結果的基礎上,分析至少如下之一該圖形硬件設計 和該i殳備驅動的i殳計。
13. 根據權利要求8的調試與驗證圖形硬件設計的方法,其特征在于, 還包含如下步驟從代表該圖形硬件的該圖形處理單元模型中產生調試信息;以及 分析該調試信息以驗證該圖形硬件設計。
14. 根據權利要求8的調試與驗證圖形硬件設計的方法,其特征在于, 還包含如下步驟在該腳本中設置至少一個斷點; 4丸行該腳本到該至少 一個斷點; 分析該調試信息;以及繼續執行該腳本。
15.根據權利要求8的調試與驗證圖形硬件設計的方法,其特征在于, 還包含如下步驟通過從執行圖形操作的軟件應用程序中獲取請求以及將該請求轉換為該 軟件圖形驅動的命令,產生該腳本。
全文摘要
本發明為一種調試和分析圖形硬件設計的系統與方法。硬件設計用軟件模型代表,軟件模型以編程語言實現。圖形操作可以在軟件模型中執行,也可以在參考軟件模型中執行,使用戶可以分析圖形硬件設計和/或設備驅動實現的正確性。
文檔編號G06F17/50GK101183400SQ20071016216
公開日2008年5月21日 申請日期2007年12月21日 優先權日2007年12月21日
發明者棟 周, 徐建明, 黃敏杰 申請人:威盛電子股份有限公司