TW202319914A - 用於對韌體碼執行單元測試之設備、裝置、方法及電腦程式 - Google Patents

用於對韌體碼執行單元測試之設備、裝置、方法及電腦程式 Download PDF

Info

Publication number
TW202319914A
TW202319914A TW111126530A TW111126530A TW202319914A TW 202319914 A TW202319914 A TW 202319914A TW 111126530 A TW111126530 A TW 111126530A TW 111126530 A TW111126530 A TW 111126530A TW 202319914 A TW202319914 A TW 202319914A
Authority
TW
Taiwan
Prior art keywords
hardware device
transaction data
timeline
changes
simulation
Prior art date
Application number
TW111126530A
Other languages
English (en)
Inventor
趙濤
汪磊
劉允
Original Assignee
美商英特爾公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商英特爾公司 filed Critical 美商英特爾公司
Publication of TW202319914A publication Critical patent/TW202319914A/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

示例有關於用於對韌體碼執行單元測試之設備、裝置、方法,及電腦程式,以及用於準備用以對韌體碼執行單元測試之資料之設備、裝置、方法,及電腦程式。該韌體碼係適合於與一硬體裝置互動。該設備包含電路,該電路經組配以取得該硬體裝置之模擬期間在該硬體裝置之一或多個介面處遇到的交易資料之改變的時間線,該模擬係基於由要對該韌體碼執行之一或多個單元測試定義之一或多個模擬參數。該電路係組配以使用所模擬硬體裝置之交易資料之改變的時間線來執行該韌體碼之該一或多個單元測試,該一或多個單元測試係基於該一或多個模擬參數。

Description

用於對韌體碼執行單元測試之設備、裝置、方法及電腦程式
發明領域
示例關於用於對韌體碼執行單元測試之一設備、裝置、方法及電腦程式,以及用於準備用於對韌體碼執行單元測試之資料之一設備、裝置、方法及電腦程式。
發明背景
矽前階(PSS)在矽產品開發生命週期中是一個重要時期。矽特徵及支援韌體通常在此階段被驗證,此階段早於Tape-in及上電(Power-on),使得計畫可以在穩固的基礎上順利地向前推進。在產業實務上,模擬在矽或硬體平台可用之前被廣泛地使用於韌體驗證。
於本揭示之一者態樣中,揭露一種用於對韌體碼執行單元測試之設備,該韌體碼係適合於與一硬體裝置互動,該設備包含電路,該電路經組配以取得在該硬體裝置之模擬期間於該硬體裝置之一或多個介面處遇到的交易資料之改變的一時間線,該模擬係基於由要對該韌體碼執行之一或多個單元測試所定義之一或多個模擬參數;以及使用所模擬硬體裝置之交易資料之改變的該時間線來執行該韌體碼之該一或多個單元測試,該一或多個單元測試係基於該一或多個模擬參數。
現在參照隨附圖式更詳盡地敘述一些示例。然而,其他可能示例並不限於詳盡敘述的這些示例的特徵。其他示例可包括該等特徵的修改以及該等特徵的等效者與替代者。除此之外,本文使用來敘述某些示例的用語不應限制進一步的可能示例。
在整個圖式的敘述中,相同或相似的參考數字指相同或相似的元件及/或特徵,這些元件及/或特徵可以等同或以修改的形式實作而同時提供相同或相似的功能。 為了清楚起見,圖式中的線、層及/或區域的厚度也可能過大。
當兩個元素A與B使用「或」組合時,這應理解為揭露所有可能的組合,亦即只有A、只有B以及A與B,除非在個別情況下另有明確地定義。 作為相同組合的替代措辭,可使用「A及B中的至少一個」或「A及/或B」。這等效地適用於兩個以上元素的組合。
如果使用單數形式,諸如「一」及「該」,且只有使用單一元件沒有被明確或隱含地定義為強制性的,進一步示例亦可使用數個元件來實作相同功能。若以下將一功能敘述為使用多數元件來實作,則進一步示例可使用單一元件或單一處理實體來實作相同功能。進一步需了解當使用用語「包括」及/或「包含」時,敘述存在規定的功能、整數、步驟、操作、程序、元件、組件及/或其群組,但不排除存在或加入一或多個其他特徵、整數、步驟、操作、程序、元件、組件及/或其群組。
在以下敘述中,闡述了特定細節,但本文敘述之技術的實施例可在沒有這些特定細節的情況下被實行。習知的電路、結構,及技術沒有被詳細示出以避免混淆對本敘述的理解。「一實施例/示例」、「多種實施例/示例」、「一些實施例/示例」等相似者可包括特徵、結構,或特性,但不是每個實施例都必須包括特別的特徵、結構,或特性。
一些實施例可具有一些、所有或沒有針對其他實施例敘述的特徵。「第一」、「第二」、「第三」等相似者敘述一共同元件並表示參考到類似元件的不同實例。此類形容並沒有暗示這樣敘述的元件物必須在給定順序中,不論是時間上或空間上,在排序上,或任何其他方式。「連接」可指元件是直接實體或電氣互相接觸,且「耦接」可指元件互相合作或作用,但它們可以是或可以不是直接實體或電氣接觸。
如本文所使用,有關於與一系統、裝置、平台,或資源相關的軟體或韌體的用語「操作」、「執行」,或「運行」可互換地使用,並可參考至可由系統、裝置、平台,或資源存取的一或多個電腦可讀儲存媒體中儲存之軟體或韌體,雖然軟體或韌體中含有的指令沒有主動地被系統、裝置、平台,或資源執行。
敘述可使用片語「在一實施例/示例中」、「在實施例/示例中」、「在一些實施例/示例中」,及/或「在多種實施例/示例中」,其中各者可指一或多個相同或不同的實施例或示例。除此之外,關於本揭露內容的實施例所使用的用語「包含」、「包括」、「具有」,及相似者,是同義詞。
本揭露內容的多種示例有關於一混合式矽前驗證方法論,其係基於使用軟體模擬。
在許多矽前驗證工作流中,使用了兩種模擬。
一第一模擬是使用來模擬暫存器介面/行為。在該第一模擬中,矽智慧財產(IP)區塊被當成一黑盒子,其輸出(所有)暫存器供上層軟體存取。在硬體設計中,一IP區塊是一個(邏輯)電路區塊,其可被包括在一軟體為基礎的硬體設計工具中做為一均勻(黑盒子)組件。這主要是用於韌體(開發者執行基本碼邏輯並解鎖特徵開發)。舉例來說,在UEFI (統一可延伸韌體介面)中的MRC (記憶體參考碼)韌體驗證中,像是Simics及RcSim的軟體模擬工具係使用來執行多種組態中的記憶體初始化及訓練流。此作法易於實作且可運行非常快速,然而,由於缺乏矽/硬體邏輯模擬,永遠都是靜態地提供交易資料以保持該流運行,資料通常是理想的且不能像現實世界那樣涵蓋各種情境。
一第二模擬是使用來模擬矽邏輯,該模擬使用一硬體的HDL (硬體描述語言)表示式或使用被程式化為一FPGA (現場可程式化閘陣列)的一硬體表示式。此作法不只實作所有暫存器,還實作內部矽邏輯,因此更接近於實際資料流並可以端到端覆蓋範圍模擬不同使用情境。一韌體驗證小組可善用此方法,然而,由於其專注於HDL正確性的矽驗證,測試案例與流與韌體驗證在硬體平台上所使用的相當不同。與該第一模擬相比,執行速度非常慢,且成本十分昂貴,不適合韌體開發者與驗證小組使用做為回歸或單元測試載具。
在矽前階段中的韌體驗證中,通常不是使用該第一模擬就是使用該第二模擬,它們各具有優點及缺點。此種作法可能不會同時達成覆蓋範圍及效率兩者。
在僅有實作暫存器介面下,從驗證角度來看,該第一模擬可能具有覆蓋範圍限制。在MRC測試的情況下,記憶體訓練取決於外部電子訊號使得(實作訓練演算法的) BIOS (基本輸入/輸出系統)碼可根據來自DIMM (雙線記憶體模組)的回饋調整信號延遲及電壓等級。然而,由於在此模擬環境中沒有外部回饋,各自的方法都以已知良好的響應進行硬寫碼,使得該代碼可順利地執行。以此模擬,只有正確的路徑可能被驗證,但可能難以涵蓋不同條件。
另一方面,HW邏輯實作的該第二模擬,諸如用於記憶體矽前驗證之CTE (叢集測試環境)環境,可以就像真正的HW平台在交易中具有時脈、控制及資料信號,儘管執行速度低且執行成本高。具記憶體控制器(MC)及DDRIO PHY (雙倍資料率輸入輸出實體層)模擬之該CTE環境可能花費數天來完成帶有基本訓練步驟之一組態,其無法滿足韌體驗證的步調要求。
如上所示,每個模擬方法具有其優點及缺點。所提出的概念可解決如何以一快速且有效的方式在矽前階段中測試韌體的困境,並有一全面的測試情境覆蓋範圍。
本揭露內容的各種示例係基於此的發現,即該第一及第二模擬的優點可被善用以建立一混合式驗證模型。舉例來說,關於前述MRC驗證案例,記憶體訓練交易資料可自該第二模擬執行流被紀錄,該第二模擬執行流接近於具一彈性情境覆蓋範圍的硬體環境,接著該記憶體訓練交易資料被轉換且應用於該第一模擬以達到快速的執行速度。
所提出的方式可大幅地改善矽前階段中韌體驗證之效率,特別是藉由提供高度可靠回歸測試環境以在新特徵開發及程式錯誤修復期間改善韌體品質。在所提出的概念下,產品開發可能會左移,因此有助於滿足顧客對品質及排程兩方面的需求。藉由提供一混合方式以平衡效率與成本,所提出的概念特別適合於驗證矽韌體,其需要矽IP區塊與外部裝置之間的資料交易,諸如記憶體或PCIe (周邊組件快速互連)訓練。
本揭露內容關於在矽前驗證中使用的那種模擬方法。針對具有矽邏輯實現的模擬環境,矽IP當中的交易資料可自該模擬的執行中被記錄及儲存。針對具有實作暫存器介面但沒有矽邏輯的模擬環境,外部交易資料係部屬在系統內以驅動執行流。根據提出的概念,一種典型的使用情境為該(交易流)資料是自該矽邏輯模擬環境中被記錄且在該暫存器介面模擬環境中被回放。
圖1a顯示用於對韌體碼執行單元測試之一設備10或裝置10之一示例的區塊圖,該韌體碼適合於與一硬體裝置互動。設備10包含組配以執行設備10之功能性的電路。舉例來說,設備10可包含處理電路14及儲存電路16。可選地,設備10可進一步包含介面電路12。處理電路14與介面電路12以及與儲存電路16耦接。舉例來說,處理電路14可組配以提供設備10的功能性,例如,協同介面電路12 (用於交換資料/資訊)及/或儲存電路16 (用於儲存資訊)。因此,對應的裝置10包含組配以執行設備10之功能性的構件。舉例來說,對應的裝置10可包含用以處理14可由處理電路14實作的構件、用以通訊12可由介面電路12實作的構件,以及用以儲存資訊16的構件,其可由儲存電路16實作。裝置10的組件被定義為組件構件,其可由設備10之各自的結構組件實作。
電路/構件係組配以取得在硬體裝置的模擬期間在硬體裝置的一或多個介面處遇到的交易資料之改變的時間線。該模擬是基於由要對韌體碼執行的一或多個單元測試所定義的一或多個模擬參數。該電路/構件係組配以使用模擬之硬體裝置的交易資料之改變的該時間線來執行該韌體碼之該一或多個單元測試。該一或多個單元測試是基於該一或多個模擬參數。
圖1b及1c顯示用於對韌體碼執行單元測試之一對應方法之示例的流程圖。該方法包含取得110在硬體裝置的模擬期間在硬體裝置的一或多個介面處遇到的交易資料之改變的時間線。該模擬是基於由要對韌體碼執行的一或多個單元測試所定義的該一或多個模擬參數。該方法包含使用所模擬之硬體裝置的交易資料之改變的該時間線來執行120該韌體碼之該一或多個單元測試。該一或多個單元測試是基於該一或多個模擬參數。
以下,關於設備10而敘述設備10、裝置10、方法以及對應之電腦程式的功能性。關於設備10而敘述的特徵可同樣地被包括在對應的裝置、方法,及電腦程式中。
本揭露內容的各種示例有關於用以對適合於與一硬體裝置互動的韌體碼執行單元測試的設備10、裝置10、方法及電腦程式。特別是,如上所概述,所提出的概念可善用前述的第一及第二模擬的特性為矽前韌體開發中的單元測試提供改善的性能與覆蓋範圍。
所提出的概念係應用在軟體與硬體之間的邊界-其被使用來對韌體執行單元測試,而該韌體是被使用以管理及/或存取該硬體。舉例來說,該韌體可對應於、或實作一電腦系統之統一可延伸韌體介面(UEFI)或基本輸入/輸出系統(BIOS)的一子系統。然而,示例不限於此情境-所提出的概念可適合於依賴於與硬體互動的各種類型韌體。
一般上,前述韌體與硬體裝置互動。為此目的,(硬體)暫存器可被硬體裝置暴露,該硬體可被韌體寫入及/或讀取。硬體暫存器典型地是使用正反器實作,且可相似於記憶體被實作,但有經由該暫存器控制之額外的硬體為基礎的功能性。在本揭露內容的各種示例中,是假設受測試韌體經由一或多個暫存器與硬體裝置互動。因此,該硬體裝置經由被寫入到該一或多個暫存器內及/或從該一或多個暫存器讀取的資料,被模製做為該模擬的一部分。換句話說,獨立於是否有執行該第一或第二模擬,此互動係經由該一或多個暫存器所執行。在此案例中,該一或多個暫存器可對應於該硬體裝置的介面或諸介面。因此,對該一或多個暫存器在一測試案例(可對應於在該一或多個單元測試期間發生的測試案例)期間發生的改變可被記錄並重放以供與該第一模擬使用。此超出了在一些其他系統中所使用的方式,其中靜態響應是經由該硬體裝置之(受模擬)暫存器所提供。除此之外,此特徵可使源於應用至該第二及第一模擬之不同測試參數的覆蓋範圍延伸。
該電路係組配以取得在硬體裝置的模擬期間在硬體裝置的一或多個介面處遇到的交易資料之改變的時間線,該模擬是基於由要對韌體碼執行的一或多個單元測試所定義的一或多個模擬參數。換句話說,該交易資料是基於該硬體裝置之一模擬。該模擬,進而是基於一或多個模擬參數。這些模擬參數對應於在要對韌體碼執行之該一或多個單元測試期間要使用的那些模擬參數。因此,該硬體裝置的模擬被定製為要對該韌體碼執行之該一或多個單元測試。關於先前所使用的用語,被使用來取得交易資料之改變的時間線之模擬對應於前述「第二模擬」,且該一或多個單元測試是使用前述的「第一模擬」,雖然併入了使用該「第二模擬」決定的該交易資料之改變的時間線。舉例來說,該交易資料是對於韌體為相關的資料,例如,藉由該韌體裝置讀取及/或寫入(亦即,存取)的資料。舉例來說,在硬體裝置的一或多個介面處遇到的交易資料之改變的時間線可為在該一或多個單元測試期間遇到的該硬體裝置之一行為的一抽象表示。
雖然(用於取得交易資料之改變的時間線之)該硬體裝置之該模擬不必須是由設備10執行,但在一些示例中可由其執行。替代地,(用於取得交易資料之改變的時間線之)該硬體裝置之該模擬可由一單獨的裝置執行,例如關連於圖2a中介紹的設備20或裝置20。
因此,該電路可被組配以藉由基於該一或多個模擬參數來模擬該硬體裝置、儲存在該硬體裝置的模擬期間在該硬體裝置的一或多個介面處遇到的交易資料(例如,使用該儲存電路),以及基於所儲存之交易資料決定該交易資料之改變的時間線而取得該交易資料之改變的時間線。因此,如圖1c所示,該交易資料之改變的時間線可藉由基於該一或多個模擬參數來模擬210該硬體裝置、儲存220在該硬體裝置的模擬期間在該硬體裝置的一或多個介面處遇到的交易資料,以及基於所儲存之交易資料決定230該交易資料之改變的時間線。
在模擬期間,模擬之硬體裝置的狀態被監控與紀錄以決定該交易資料之改變的時間線。假設該硬體裝置是經由一或多個暫存器被該韌體存取,該硬體裝置的內部狀態可能不如該硬體裝置的「外部」狀態,亦即該一或多個暫存器之內容更有意義。舉例來說,韌體碼可經由該硬體裝置的一或多個暫存器與該硬體裝置互動。因此,該交易資料之改變的時間線可代表該硬體裝置的該一或多個暫存器之一狀態或內容隨時間的改變。舉例來說,儲存該交易資料的動作可包含儲存在模擬期間遇到的模擬之硬體裝置的一或多個暫存器的內容。舉例來說,該交易資料,亦即該一或多個暫存器之狀態或內容,可與指示該交易資料/該暫存器之狀態或內容何時發生改變的一時間戳記一起被儲存。舉例來說,在初始時,可決定該一或多個暫存器之狀態或內容的一快照,且可儲存對該一或多個暫存器之一暫存器的每個改變,待用於決定該交易資料之改變的時間線。決定該交易資料之改變的時間線的動作可因此包含(基於所儲存之狀態或內容的改變以及對應之時間戳記來)決定模擬之硬體裝置的該一或多個暫存器之狀態或內容的改變的時間線。
如先前已概述,該硬體裝置之「內部」狀態可能對該韌體碼的後續單元測試無關­-因此,可被捨棄。除此之外,不是該硬體裝置的每個暫存器都可被使用來與該韌體(或與耦接於該硬體裝置之另一個硬體裝置)互動,有一些可能僅為對該一或多個單元測試無關的狀態暫存器。因此,被記錄的該一或多個暫存器可為由該一或多個單元測試所存取的暫存器。舉例來說,僅被使用於另一個脈絡(例如,針對不是該一或多個單元測試之部分的一重置程序)中的一暫存器可被無視,其狀態或內容不會被儲存,這可降低該交易資料之改變的時間線的複雜度。
一般上,可以使用於執行該一或多個單元測試的一模擬器可存取的一資料格式儲存該交易資料之改變的時間線。舉例來說,可儲存該交易資料之改變的一清單,而該清單包含該一或多個暫存器之改變的一編年清單。
如上該,該硬體裝置的模擬類似於該第二模擬,亦即,模擬將該硬體裝置之功能性模製的該硬體裝置的表示式。有各種方式執行此類模擬。舉例來說,可使用表示該硬體裝置之功能性,亦即對該硬體裝置之(內部)操作模製的該代碼來規定該硬體裝置。因此,可基於規定該硬體裝置之功能性(例如,包括該內在運作/狀態)的代碼來模擬該硬體裝置。舉例來說,該代碼可基於一硬體描述語言,諸如Verilog、系統Verilog或VHDL (非常高速積體電路硬體描述語言)。替代地,該代碼可被轉換成一暫存器轉移級表示式,且該暫存器級表示式可被使用來模擬該硬體裝置。替代地,一網表表示式,其可為一後合成網表或一預合成網表,可被使用來執行該模擬。換句話說,可基於該硬體裝置之一暫存器轉移層表示式或一網表表示式模擬該硬體裝置。做為另一種選擇,實際的硬體可被使用來執行該模擬。舉例來說,可使用一FPGA來模製該硬體裝置之功能性,或可使用一現有的該硬體裝置之實現來模擬該硬體裝置。因此,可使用一現場可程式化閘陣列或使用一現有的該硬體裝置之硬體實現來模擬該硬體裝置。以此脈絡,用語「模擬該硬體裝置」表示該硬體裝置的一軟體摹本被建立,其在之後被使用於一或多個單元測試。
如較早之前該,相同的一或多個模擬參數被用以模擬該硬體裝置並用以執行該一或多個單元測試(其係基於將該硬體裝置之模擬納入考量的另一個模擬)。各種模擬參數可被一起設置用於該硬體裝置的模擬以及用於該一或多個單元測試。舉例來說,該一或多個模擬參數可包含與該硬體裝置之一設定有關的至少一個模擬參數,例如,一轉移率等。額外地或替代地,該一或多個模擬參數可包含與控制該硬體裝置之行為的一軟體設定有關的至少一個模擬參數,諸如,一驅動器設定。最後,可將外部設定納入考量。舉例來說,如較早之前該,該硬體裝置可為用以經由一或多個記憶體模組插槽而與一或多個記憶體模組介接的一記憶體控制器。該模擬以及該一或多個單元測試可基於該等記憶體模組插槽之數量,例如是將哪種類型記憶體模組插入哪個記憶體模組插槽。換句話說,該一或多個模擬參數可包含與該一或多個記憶體模組插槽之群體有關的至少一個模擬參數。然而,可將相同概念使用於經由韌體控制的其他類型硬體裝置,例如圖形處理單元、加速器卡、網路介面等等。
一旦例如藉由模擬或自一外部設備/裝置而取得交易資料之改變的時間線,其可被使用為該一或多個單元測試的部分。一單元測試係一軟體定義的測試,其被使用來驗證一部份軟體(或硬體)基於一組給定參數產生一預期結果。一般上,單元測試係被定義來涵蓋一部份硬體或軟體之所有或大多數的使用案例及邊界案例,且係對著諸如韌體碼的軟體碼庫或對著一硬體裝置自動地運行。一般上,每個單元測試包含使用來呼叫該軟體之一函數或一硬體之一操作的一組參數,該函數或操作的結果係與該單元測試的該預期結果做比較。若該結果對應於該預期結果,則該單元測試通過,否則失敗。
舉例來說,該電路係組配以使用所模擬之硬體裝置之交易資料之改變的時間線來執行該韌體碼之該一或多個單元測試,其中該一或多個單元測試係基於該一或多個模擬參數。舉例來說,可使用一或多個進一步模擬來執行該一或多個單元測試,其中交易資料之改變的時間線係使用來對該硬體裝置之該行為模製。換句話說,該一或多個單元測試可為基於一或多個進一步模擬,其中該一或多個進一步模擬係基於交易資料之改變的時間線。舉例來說,該交易資料之改變的時間線可在該一或多個單元測試內被回放(做為一或多個進一步調變中之該硬體裝置的回應)以對該硬體裝置之(外部)行為模製。因此,對比於在一開始介紹的「第一模擬」,該交易資料不是在一或多個功能模擬中被靜態地提供而是基於該硬體裝置之先前模擬被動態地回放。
如較早之前該,該韌體碼可經由該硬體裝置之該一或多個暫存器與該硬體裝置介接。因此,可使用該硬體裝置之該一或多個暫存器之狀態或內容隨時間的改變來執行該一或多個單元測試。換句話說,可使用所模擬之硬體裝置之該一或多個暫存器之狀態或內容的改變的時間線來執行該一或多個單元測試。
如將關於圖3a至5b更詳細的顯示,提出的概念可特別使用於存取一記憶體控制器之韌體的驗證。因此,該硬體裝置可為用以經由一或多個記憶體模組插槽而與一或多個記憶體模組介接的一記憶體控制器。舉例來說,該一或多個單元測試可與用以初始該一或多個記憶體模組之一電子信號訓練流有關。在一電子信號訓練流中,一信號時序被調整為該記憶體之存取時間及響應時間。舉例來說,該交易資料之改變的時間線可與該一或多個記憶體模組對由該記憶體控制器提供之一電子訓練信號的響應有關。換句話說,該硬體裝置的模擬模製了該記憶體控制器及該記憶體之組合對該電子信號訓練流之執行的一響應。因此該等改變的時間線之一或多個暫存器的值可指示該一或多個記憶體模組之一訓練的一結果。
在本揭露內容中,一模擬基於一或多個模擬參數被執行,該模擬被使用於一或多個單元測試。在一些案例中,變更模擬參數可能是有利的,因此可執行更多種類的單元測試。因此,可使用一或多個模擬參數的多個集合來執行該模擬。因而該一或多個單元測試可為基於一或多個模擬參數的該(相同)多個集合。換句話說,一或多個模擬參數的多數個集合可被使用來支援多個種類的單元測試。
作為一個示例,該硬體裝置可為用以經由一或多個記憶體模組插槽而與一或多個記憶體模組介接的一記憶體控制器。一或多個參數的多數個集合可被使用來涵蓋該記憶體控制器的各種面向,例如,該一或多個記憶體模組插槽的多數個不同群體,或多數個不同訓練樣式(包括訓練樣式的多數個不同時序)。換句話說,該一或多個單元測試可與用以初始該一或多個記憶體模組之該電信號訓練流有關。舉例來說,一或多個模擬參數的該等多個集合係基於被使用來執行該電信號訓練流的多個訓練樣式。
介面電路12或用以通訊的構件12可對應於一或多個輸入及/或輸出, 用以在一模組內、在模組之間或在不同實體的模組之間,接收及/或傳送資訊,該資訊根據一特定碼可為數位(位元)值。舉例來說,該介面電路12或用以通訊的構件12可包含組配來接收及/或傳送資訊的電路。
舉例來說,處理電路14或用以處理的構件14可使用一或多個處理單元、一或多個處理裝置、任何用以處理的構件,例如一處理器、一電腦或可與相應適配軟體操作的一可程式化硬體組件實作。換句話說,該處理電路14或用以處理的構件之所描述功能亦可以軟體實作,然後在一或多個可程式化硬體組件上執行。此類硬體組件可包含一般用途處理器、數位信號處理器(DSP)、微控制器等。
舉例來說,儲存電路16可包含電腦可讀儲存媒體之群組的至少一元件,諸如一磁性或光學儲存媒體,例如,一硬碟驅動器、一快閃記憶體、軟碟、隨機存取記憶體(RAM)、可程式化唯讀記憶體(PROM)、可抹除可程式化唯讀記憶體(EPROM)、一電子式可抹除可程式化唯讀記憶體(EEPROM),或一網路儲存器。
設備10、裝置10、方法及電腦程式的更多細節及面向係關連於上述或下述提出概念或一或多個示例被提及(例如圖2a至5b)。設備10、裝置10、方法及電腦程式可包含對應於上述或下述之該提出概念或一或多個示例的一或多個面向的一或多個額外選擇性特徵。
圖2a顯示用於準備用於對韌體碼執行單元測試之資料之一設備20或裝置20之一示例的一區塊圖。舉例來說,設備20或裝置20可以相似於圖1a之設備10或裝置10來實作。舉例來說,設備20或裝置20可聚焦於關連圖1a至1c而概述之模擬面向。
設備20包含組配以執行設備20之功能性的電路。舉例來說,設備20可包含處理電路24及儲存電路26。可選地,設備20可進一步包含介面電路22。處理電路24係與介面電路22以及與儲存電路26耦接。舉例來說,處理電路24可經組配以,例如,與介面電路22 (用以交換資料/資訊)及/或與儲存電路26 (用以儲存資訊)結合來提供設備20之功能性。因此,對應裝置20包含經組配以執行裝置20之功能性的構件。舉例來說,對應裝置20可包含可由處理電路24實作之用以處理24的構件、可由介面電路22實作之用以通訊22的構件,以及可由儲存電路26實作之用以儲存資訊26的構件。裝置20之組件係被定義為組件構件,其可由設備20之各別結構組件實作。
電路/構件係經組配以基於一或多個模擬參數來模擬硬體裝置,該一或多個模擬參數是由要對韌體碼執行之一或多個單元測試定義。電路/構件係經組配以儲存在該硬體裝置的模擬期間在該硬體裝置之一或多個介面處遇到的交易資料。電路/構件係經組配以決定在該硬體裝置之該一或多個介面處遇到的交易資料之改變的時間線。
圖2b顯示包含用於準備用於對韌體碼執行單元測試之資料之設備或裝置20以及用於對韌體碼執行單元測試之設備或裝置10的一系統之一示例的區塊圖,如關連於圖1a至1c所顯示。
圖2c顯示用於準備適合於對韌體碼執行單元測試之資料之一對應方法之一示例的流程圖。該方法包含基於該一或多個模擬參數來模擬210該硬體裝置,該一或多個模擬參數是由要對韌體碼執行之一或多個單元測試定義。該方法包含儲存220在該硬體裝置的模擬期間在該硬體裝置之一或多個介面處遇到的交易資料。該方法包含決定230在該硬體裝置之該一或多個介面處遇到的交易資料之改變的時間線。
變得明顯地,圖2a至2c之設備20、裝置20、方法及電腦程式與圖1a至1c之設備10、裝置10、方法及電腦程式的面向有關,該面向執行該模擬以取得交易資料之改變的時間線。各自的功能性因而已經關連於圖1a至1c被介紹過。特別地,如同已經關連於圖1a至1c所介紹者,儲存該交易資料的動作可包含儲存在模擬期間遇到的模擬之硬體裝置的一或多個暫存器的狀態或內容。舉例來說,決定該交易資料之改變的時間線的動作可包含決定模擬之該硬體裝置的該一或多個暫存器之狀態或內容之改變的時間線。舉例來說,可使用所模擬之該硬體裝置之該一或多個暫存器的狀態或內容之改變的時間線來執行該一或多個單元測試。
介面電路22或用以通訊的構件22可對應於一或多個輸入及/或輸出, 用以在一模組內、在模組之間或在不同實體的模組之間,接收及/或傳送資訊,該資訊根據一特定碼可為數位(位元)值。舉例來說,該介面電路22或用以通訊的構件22可包含組配來接收及/或傳送資訊的電路。
舉例來說,處理電路24或用以處理的構件24可使用一或多個處理單元、一或多個處理裝置、任何用以處理的構件,例如一處理器、一電腦或可與相應適配軟體操作的一可程式化硬體組件實作。換句話說,該處理電路24或用以處理的構件之所描述功能亦可以軟體實作,然後在一或多個可程式化硬體組件上執行。此類硬體組件可包含一般用途處理器、數位信號處理器(DSP)、微控制器等。
舉例來說,儲存電路26可包含電腦可讀儲存媒體之群組的至少一元件,諸如一磁性或光學儲存媒體,例如,一硬碟驅動器、一快閃記憶體、軟碟、隨機存取記憶體(RAM)、可程式化唯讀記憶體(PROM)、可抹除可程式化唯讀記憶體(EPROM)、一電子式可抹除可程式化唯讀記憶體(EEPROM),或一網路儲存器。
設備20、裝置20、方法及電腦程式的更多細節及面向係關連於上述或下述提出概念或一或多個示例被提及(例如圖1a至1c、3a至5b)。設備20、裝置20、方法及電腦程式可包含對應於上述或下述之該提出概念或一或多個示例的一或多個面向的一或多個額外選擇性特徵。
以下會關連於MRC驗證來說明提出之概念。記憶體參考碼子系統是被使用來在啟動程序期間初始記憶體子系統之UEFI (統一可延伸韌體介面)韌體中最大的IP模組中的一者。MRC子系統之主要功能可為訓練該記憶體信號以供資料存取以及建立實體位址與邏輯位址之間的記憶體映射以供OS使用。對於記憶體訓練,基本的方式是組配MC (記憶體控制器)及DDRIO PHY之暫存器以調整信號延遲及電壓等,然後檢查響應信號並相應地調整暫存器設定,直到信號可以自MC側及DIMM側兩者正確地被擷取並具有良好的餘裕。可如圖3a中摘要顯示此架構。圖3a顯示一記憶體參考碼子系統的示意圖。圖3a顯示MRC韌體310,其經由暫存器接取與記憶體控制器320及DDRIO PHY 330通訊,DDRIO PHY 330經由DDR匯流排340與DIMM 350通訊。
在矽前階段中,矽IP區塊通常為不可得,因此在使用諸如Simics與RcSim的模擬器執行的該第一模擬中,MC及DDRIO PHY 320;330兩者都被實作為軟體模型360,而暫存器接取行為被實作為黑盒子。圖3b顯示具有一黑盒子模擬之一記憶體參考碼子系統的示意圖。DIMM側350被(響應資料370)之一系列預定義資料結構替換以在DDR匯流排330上提供交易流。
然而,如先前所敘述,依此方式,響應資料可以只提供有限樣本來驅動該電信號訓練流,像是針對一資料信號之良好形狀的眼圖,並且做為矽後階段中的HW裝置,可能缺乏產生複信號改變的能力,像是信號抖動、失真或干擾。考量到信號及訓練步驟的數目,列舉現實世界中所有可能情境以達成矽前中高軟體測試覆蓋範圍是不可行的。
在第二模擬中,所有矽IP皆以諸如系統-Verilog之硬體描述語言被實作為白盒子並被內建/包裹以提供相同暫存器介面供MRC韌體調用。圖3c顯示具有一白盒子模擬之一記憶體參考碼子系統的示意圖,其中所有IP區塊都被矽模擬模型替換。舉例來說,記憶體控制器320被記憶體控制器之一RTL模型320a替換、DDRIO PHY 330被DDRIO PHY 330之一RTL模型330a替換,以及DIMM 350被DIMM 350之一RTL模型350a替換。在此模型中,MC/DDRIO與該DIMM之間的資料交易可完全地模擬該矽平台中的序列、樣式及值,因而接近於現實世界情況的端到端流。
在圖3c中,RTL (暫存器轉移級)模型是數位電路在數位信號流與暫存器上的邏輯操作方面的抽象,其可以表現得就像是記憶體訓練程序之矽模型。此可為測試矽設計及韌體實現兩者提供全面的方式,然而其計算上係昂貴及/或緩慢。
為了善用兩種模擬的優點,提出之概念提供一「紀錄及復原」方法以擷取來自該第二模擬的資料並將該資料饋送進該第一模擬。舉例來說,該流可包含一或多個下列任務: (1)  指定包括硬體設定、軟體設定、DIMM群體等的一組態。 (2)  以該第二模擬中之該組態運行一測試案例並擷取該交易資料流。在本示例中,一測試案例係一記憶體訓練步驟,該交易資料係來自DIMM到MC的響應,其為指示在某些訓練樣式下測試之信號結果的暫存器值。 (3)  將該資料轉換成能被該第一模擬耗用的預定義格式。在本示例中,所記錄的暫存器值可被構造成一檔案中的多維度陣列。在陣列中的資料可表示由每個特定訓練步驟決定的來自各別插槽、通道、秩,或位元的信號。 (4)  為該第一模擬設定相同的測試組態並運行相同的測試案例。 (5)  在對該第一模擬的測試執行期間,讀取在(3)中準備的資料並在韌體需要來自該等暫存器之響應時將該資料饋送進該韌體。這樣,能夠以高速取得與該第二模擬中的相同通過/失敗結果。
關於MRC驗證,此流的一典型用法顯示於以下圖式4a中:圖4a顯示概述了用於記憶體參考碼驗證之一部屬中之一資料流的示意圖。在左側,顯示該第二模擬,在右側,顯示該第一模擬。
該第一模擬及該第二模擬兩者都使用被設定(1, 4)的相同DIMM組態420a;420b並執行(2, 5)相同訓練步驟430a;430b。MRC碼410被使用來產生在各別訓練步驟430a;430b中使用的構建映像。訓練步驟430a的執行(2)的交易資料440被處理和轉換(3) 450以決定結構資料460。藉著資料被記錄和管理,來自該第二模擬的所有訓練步驟(或稱為測試案例)可以(藉由恢復資料及執行測試案例)在第一模擬中被複製,因此開發人員和驗證團隊兩方能夠在此模型上從事回歸測試、單元測試及錯誤調查。他們能夠從該第一模擬提供的快速執行速度和更多除錯能力中受益,同時還具有作為第二模擬從韌體/軟體角度的全面訓練流覆蓋範圍以檢測及重現問題。
舉例來說,記憶體訓練具有一個組件來訓練資料信號(亦稱為資料品質訓練,DQ)。當在該第二模擬中執行此訓練時,可以從系統日誌中擷取資料並將其轉譯為預定義的表格格式。
這種經擷取資料的一示例顯示於圖5a及5b中。圖5a及5b顯示訓練資料(圖5a)及所擷取交易資料之結果(圖5b)的示意表示。圖5a針對不同訓練碼(列)以行顯示所有40位元(DDR5之一個子通道)的訓練資料。如在中間沒有填充所示,中間的訓練碼(例如,訓練碼27到38)沒有顯出錯誤(即它們通過),而其他訓練碼在一些位元中部分產生錯誤(即,它們失敗)。圖5b顯示針對一個資料位元的時間掃描結果的眼圖。這些表格可被轉換為該第一模擬可以使用的資料結構(多維度表格)以運行電信號訓練流。
再者,MRC訓練資料亦可從現有的硬體平台中擷取並應用於該第一模擬以降低硬體成本或重複顧客問題。此方法能夠大幅提高矽前的驗證和開發速度、更早檢測並修復錯誤。在當前世代的產品中開發的記錄資料和測試案例亦可被應用於下一代產品之衍生特徵的驗證,因而甚至能更有助於加速下一代產品的矽前開發。
關連於先前示例之特定一者所描述的面向及特徵亦可與進一步示例中的一或多個做組合以替換該進一步示例的相同或相似特徵或者將這些特徵額外地引入到進一步示例中。
一示例(例如,示例1)有關於用以對韌體碼執行單元測試的一設備(10),該韌體碼適用於與一硬體裝置互動,該設備包含被組配來取得在該硬體裝置之模擬期間在該硬體裝置的一或多個介面處遇到的交易資料之改變的時間線的電路,該模擬係基於由要對韌體碼執行之一或多個單元測試定義的一或多個模擬參數。該電路被組配來使用所模擬之硬體裝置的交易資料之改變的時間線來執行該韌體碼的一或多個單元測試,該一或多個單元測試係基於該一或多個模擬參數。
另一個示例(例如,示例2)有關於先前描述的示例(例如,示例1)或本文描述的示例中的任何一者,進一步包含該韌體碼經由該硬體裝置的一或多個暫存器而與該硬體裝置互動。
另一個示例(例如,示例3)有關於先前描述的示例(例如,示例2)或本文描述的示例中的任一者,進一步包含交易資料之改變的時間線表示該硬體裝置之該一或多個暫存器之狀態或內容隨時間的改變,其中使用該硬體裝置之該一或多個暫存器之狀態或內容隨時間的改變來執行該一或多個單元測試。
另一個示例(例如,示例4)有關於先前描述的示例(例如,示例1至3中之一者)或本文描述的任何示例,進一步包含在該硬體裝置之一或多個介面處遇到的交易資料之改變的時間線為在該一或多個單元測試期間將遇到的硬體裝置之行為的抽象表示。
另一個示例(例如,示例5)有關於先前描述的示例(例如,示例1至4中之一者)或本文描述的示例中的任一者,進一步包含該一或多個模擬參數包含與該硬體裝置之設定相關的至少一個模擬參數。
另一個示例(例如,示例6)有關於先前描述的示例(例如,示例1至5中之一者)或關於本文描述的任何示例,進一步包含該一或多個模擬參數包含與控制該硬體裝置之行為的軟體設定相關的至少一個模擬參數。
另一個示例(例如,示例7)有關於先前描述的示例(例如,示例1至6中之一者)或本文描述的任何示例,進一步包含該硬體裝置係一記憶體控制器,其用於經由一或多個記憶體模組插槽與一或多個記憶體模組介接,其中該一或多個模擬參數包含與該一或多個記憶體模組插槽的群體有關的至少一個模擬參數。
另一個示例(例如,示例8)有關於先前描述的示例(例如,示例1至7中之一者)或本文描述的任何示例,進一步包含基於指定該硬體裝置之功能性的代碼來模擬該硬體裝置,該代碼係基於一硬體描述語言。
另一個示例(例如,示例9)有關於先前描述的示例(例如,示例1至7中之一者)或本文描述的任何示例,進一步包含基於暫存器轉移層表示或該硬體裝置的網表表示來模擬該硬體裝置。
另一個示例(例如,示例 10)有關於先前描述的示例(例如,示例 1 至 7中之一者)或本文描述的任何示例,進一步包含使用現場可程式化閘陣列或使用現有硬體裝置的硬體實現來模擬該硬體裝置。
另一個示例(例如,示例11)有關於先前描述的示例(例如,示例1至10中之一者)或本文描述的任何示例,進一步包含該硬體裝置為用於經由一或多個記憶體模組插槽與一或多個記憶體模組介接的記憶體控制器。
另一個示例(例如,示例12)有關於先前描述的示例(例如,示例11)或本文描述的任何示例,進一步包含該一或多個單元測試與用以初始化一或多個記憶體模組的電子信號訓練流有關。
另一個示例(例如,示例13)有關於先前描述的示例(例如,示例11至12中之一者)或本文描述的任何示例,進一步包含該交易資料之改變的時間線與該一或多個記憶體模組對由該記憶體控制器提供之電子訓練信號的響應有關。
另一個示例(例如,示例14)有關於先前描述的示例(例如,示例13)或本文描述的示例中的任一者,進一步包含該交易資料之改變的時間線包含模擬之硬體裝置之一或多個暫存器的狀態或內容改變的時間線,其中該一或多個暫存器的值指示該一或多個記憶體模組的訓練結果。
另一個示例(例如,示例15)有關於先前描述的示例(例如,示例1至14中之一者)或本文描述的示例中的任一者,進一步包含使用一或多個模擬參數的多個集合來執行模擬。
另一個示例(例如,示例16)有關於先前描述的示例(例如,示例15)或本文描述的示例中的任一者,進一步包含該硬體裝置是用以經由一或多個記憶體模組插槽與一或多個記憶體模組介接的記憶體控制器,其中該一或多個單元測試與用以初始化該一或多個記憶體模組的電信號訓練流有關,其中一或多個模擬參數的該等多個集合係基於被使用於執行該電信號訓練流的多個訓練樣式。
另一個示例(例如,示例17)有關於先前描述的示例(例如,示例1至16中之一者)或本文描述的任何示例,進一步包含該電路被組配以藉由基於該一或多個模擬參數模擬該硬體裝置、儲存在該硬體裝置之模擬期間在該硬體裝置之一或多個介面處遇到的交易資料,以及基於所儲存的交易資料決定該交易資料之改變的時間線,來取得該交易資料之改變的時間線。
另一個示例(例如,示例18)有關於先前描述的示例(例如,示例17)或本文描述的任何示例,進一步包含儲存該交易資料的動作包含儲存在模擬期間遇到的所模擬硬體裝置之一或多個暫存器的狀態或內容,其中決定該交易資料之改變的時間線的動作包括決定所模擬硬體裝置之該一或多個暫存器的狀態或內容之改變的時間線,並且其中該一或多個單元測試係使用所模擬硬體裝置之該一或多個暫存器的狀態或內容改變的時間線來執行。
一示例(例如,示例19)有關於用以準備適合於對韌體碼執行單元測試的資料之設備(10;20),該韌體碼係適合與硬體裝置互動,該設備包括被組配以基於一或多個模擬參數來模擬該硬體裝置的電路,該一或多個模擬參數係由要對該韌體碼執行的一或多個單元測試定義。該電路被組配以在該硬體裝置的模擬期間儲存在該硬體裝置之一或多個介面處遇到的交易資料。該電路被組配以決定在該硬體裝置之該一或多個介面處遇到的該交易資料之改變的時間線。
另一個示例(例如,示例20)有關於先前描述的示例(例如,示例19)或本文描述的任何示例,進一步包含儲存該交易資料的動作包括儲存在模擬期間遇到的所模擬硬體裝置之一或多個暫存器的狀態或內容,其中決定該交易資料之改變的時間線的動作包括決定所模擬硬體裝置之該一或多個暫存器的狀態或內容改變的時間線,並且其中該一或多個單元測試係使用所模擬硬體裝置之該一或多個暫存器的狀態或內容改變的時間線來執行。
一示例(例如,示例21)有關於用於對韌體碼執行單元測試的裝置(10),該韌體碼係適合於與一硬體裝置互動,該裝置包含被組配以取得在該硬體裝置之模擬期間在該硬體裝置之一或多個介面處遇到的交易資料之改變的時間線的構件,該模擬係基於由要對該韌體碼執行的一或多個單元測試定義的一或多個模擬參數。該構件被組配以使用所模擬硬體裝置的交易資料之改變的時間線來執行該韌體碼的該一或多個單元測試,該一或多個單元測試係基於該一或多個模擬參數。
另一個示例(例如,示例22)有關於先前描述的示例(例如,示例21)或本文描述的示例中的任一者,進一步包含該韌體碼經由該硬體裝置之一或多個暫存器與該硬體裝置互動。
另一個示例(例如,示例23)有關於先前描述的示例(例如,示例22)或本文描述的示例中的任一者,進一步包含該交易資料之改變的時間線表示該硬體裝置之該一或多個暫存器的狀態或內容隨時間的改變,其中該一或多個單元測試係使用該硬體裝置之該一或多個暫存器的狀態或內容隨時間的改變來執行。
另一個示例(例如,示例24)有關於先前描述的示例(例如,示例21至23中之一者)或本文描述的任何示例,進一步包含在該硬體裝置之該一或多個介面處遇到的該交易資料之改變的時間線是在該一或多個單元測試期間將遇到的該硬體裝置之一行為的抽象表示。
另一個示例(例如,示例25)有關於先前描述的示例(例如,示例21至24中之一者)或本文描述的示例中的任一者,進一步包含該一或多個模擬參數包含與該硬體裝置之設定有關的至少一個模擬參數。
另一個示例(例如,示例26)有關於先前描述的示例(例如,示例21至25中之一者)或本文描述的示例中的任一者,進一步包含該一或多個模擬參數包含與控制該硬體裝置之行為的軟體設定有關的至少一個模擬參數。
另一個示例(例如,示例27)有關於先前描述的示例(例如,示例21至26中之一者)或本文描述的示例中的任一者,進一步包含該硬體裝置為用以經由一或多個記憶體模組插槽與一或多個記憶體模組介接的記憶體控制器,其中該一或多個模擬參數包含與該一或多個記憶體模組插槽的群體有關的至少一個模擬參數。
另一個示例(例如,示例 28)有關於先前描述的示例(例如,示例 21 至 27 中之一者)或本文描述的任何示例,進一步包含該硬體裝置係基於指定該硬體裝置之功能的代碼來模擬該硬體裝置,該代碼係基於一硬體描述語言。
另一個示例(例如,示例29)有關於先前描述的示例(例如,示例21至27中之一者)或本文描述的任何示例,進一步包含該硬體裝置係基於該硬體裝置的一暫存器轉移層表示或一網表表示來模擬。
另一個示例(例如,示例 30)有關於先前描述的示例(例如,示例21至27中之一者)或本文描述的任何示例,進一步包含該硬體裝置係使用現場可程式化閘陣列或使用該硬體裝置之現有硬體實現來模擬。
另一個示例(例如,示例31)有關於先前描述的示例(例如,示例21至30之一者)或本文描述的示例中的任一者,進一步包含該硬體裝置係用以經由一或多個記憶體模組插槽與一或多個記憶體模組介接的記憶體控制器。
另一個示例(例如,示例32)有關於先前描述的示例(例如,示例31)或本文描述的任何示例,進一步包含該一或多個單元測試與用以初始化該一或多個記憶體模組之電子信號訓練流有關。
另一個示例(例如,示例33)有關於先前描述的示例(例如,示例31至32中之一者)或本文描述的任何示例,進一步包含該交易資料之改變的時間線與該一或多個記憶體模組對由該記憶體控制器提供的電子訓練信號之一響應有關。
另一個示例(例如,示例34)有關於先前描述的示例(例如,示例33)或本文描述的任何示例,進一步包含該交易資料之改變的時間線包含所模擬硬體裝置之一或多個暫存器的狀態或內容改變的時間線,該一或多個暫存器的值指示該一或多個記憶體模組的訓練結果。
另一個示例(例如,示例35)有關於先前描述的示例(例如,示例21至34中之一者)或本文描述的示例中的任一者,進一步包含該模擬係使用一或多個模擬參數之多個集合來執行。
另一個示例(例如,示例36)有關於先前描述的示例(例如,示例35)或本文描述的任何示例,進一步包含該硬體裝置為用以經由一或多個記憶體模組插槽與一或多個記憶體模組介接的記憶體控制器,其中該一或多個單元測試與用以初始化該一或多個記憶體模組的電信號訓練流有關,其中一或多個模擬參數的該等多個集合係基於被用於執行該電信號訓練流的多個訓練樣式。
另一個示例(例如,示例37)有關於先前描述的示例(例如,示例21至36中之一者)或本文描述的任何示例,進一步包含該構件被組配來藉由基於一或多個模擬參數來模擬該硬體裝置、儲存在該硬體裝置的模擬期間於該硬體裝置之一或多個介面處遇到的交易資料,以及基於所儲存的交易資料決定該交易資料之改變的時間線,以取得該交易資料之改變的時間線。
另一個示例(例如,示例38)有關於先前描述的示例(例如,示例37)或本文描述的任何示例,進一步包含儲存該交易資料的動作包含儲存在模擬期間遇到的所模擬硬體裝置之一或多個暫存器的狀態或內容,其中決定該交易資料之改變的時間線的動作包含決定所模擬硬體裝置之該一或多個暫存器的狀態或內容改變的時間線,並且其中該一或多個單元測試係使用所模擬硬體裝置之該一或多個暫存器的狀態或內容改變的時間線來執行。
示例(例如,示例39)有關於用以準備適合於對韌體碼執行單元測試的資料之裝置(10;20),該韌體碼係適合與硬體裝置互動,該裝置包含被組配來基於一或多個模擬參數來模擬該硬體裝置的構件,該一或多個模擬參數係由要對該韌體碼執行的一或多個單元測試定義。該構件被組配來儲存在該硬體裝置之模擬期間在該硬體裝置之一或多個介面處遇到的交易資料。該構件被組配來決定在該硬體裝置之該一或多個介面處遇到的該交易資料之改變的時間線。
另一個示例(例如,示例40)有關於先前描述的示例(例如,示例39)或本文描述的任何示例,進一步包含儲存該交易資料的動作包含儲存在模擬期間遇到的所模擬硬體裝置之一或多個暫存器的狀態或內容,其中決定該交易資料之改變的時間線的動作包含決定所模擬硬體裝置之該一或多個暫存器的狀態或內容改變的時間線,並且其中該一或多個單元測試係使用所模擬硬體裝置之該一或多個暫存器的狀態或內容改變的時間線來執行。
一個示例(例如,示例41)有關於一種用以對韌體碼執行單元測試的方法,該韌體碼係適用於與硬體裝置互動,該方法包含取得(110)在該硬體裝置之模擬期間在該硬體裝置之一或多個介面處遇到的交易資料之改變的時間線,該模擬係基於由要對該韌體碼執行的一或多個單元測試定義的一或多個模擬參數。該方法包含使用所模擬硬體裝置的交易資料之改變的時間線來執行(120)該韌體碼的該一或多個單元測試,該一或多個單元測試係基於該一或多個模擬參數。
另一個示例(例如,示例42)有關於先前描述的示例(例如,示例41)或本文描述的任何示例,進一步包含該韌體碼經由該硬體裝置之一或多個暫存器與該硬體裝置互動。
另一個示例(例如,示例43)有關於先前描述的示例(例如,示例42)或本文描述的示例中的任一者,進一步包含該交易資料之改變的時間線表示該硬體裝置之該一或多個暫存器的狀態或內容隨時間的改變,其中該一或多個單元測試係使用該硬體裝置之該一或多個暫存器的狀態或內容隨時間的改變來執行。
另一個示例(例如,示例44)有關於先前描述的示例(例如,示例41至 43中之一者)或本文描述的任何示例,進一步包含在該硬體裝置之一或多個介面遇到的該交易資料之改變的時間線係在該一或多個單元測試期間將遇到的該硬體裝置之行為的一抽象表示。
另一個示例(例如,示例45)有關於先前描述的示例(例如,示例41至44之一者)或本文描述的示例中的任一者,進一步包含該一或多個模擬參數包含與該硬體裝置的設定有關的至少一個模擬參數。
另一個示例(例如,示例46)有關於先前描述的示例(例如,示例41至45之一者)或本文描述的示例中的任一者,進一步包含該一或多個模擬參數包含與控制該硬體裝置之行為的軟體設定有關的至少一個模擬參數。
另一個示例(例如,示例47)有關於先前描述的示例(例如,示例41至46之一者)或本文描述的示例中的任一者,進一步包含該硬體裝置係用以經由一或多個記憶體模組插槽與一或多個記憶體模組介接的記憶體控制器,其中該一或多個模擬參數包含與該一或多個記憶體模組插槽的群體有關的至少一個模擬參數。
另一個示例(例如,示例48)有關於先前描述的示例(例如,示例41至47中之一者)或本文描述的任何示例,進一步包含該硬體裝置係基於指定該硬體裝置之功能性的代碼來模擬,該代碼係基於一硬體描述語言。
另一個示例(例如,示例49)有關於先前描述的示例(例如,示例41至47之一者)或本文描述的示例中的任一者,進一步包含該硬體裝置係基於該硬體裝置之一暫存器轉移層表示或的一網表表示來模擬。
另一個示例(例如,示例50)有關於先前描述的示例(例如,示例41至47中之一者)或本文描述的任何示例,進一步包含該硬體裝置係使用一現場可程式化閘陣列或使用該硬體裝置之現有硬體實現來模擬。
另一個示例(例如,示例51)有關於先前描述的示例(例如,示例41至50之一者)或本文描述的示例中的任一者,進一步包含該硬體裝置係用以經由一或多個記憶體模組插槽與一或多個記憶體模組介接的記憶體控制器。
另一個示例(例如,示例52)有關於先前描述的示例(例如,示例51)或本文描述的任何示例,進一步包含該一或多個單元測試與用以初始化該一或多個單元測試的電子信號訓練有關。
另一個示例(例如,示例53)有關於先前描述的示例(例如,示例51至52中之一者)或本文描述的任何示例,進一步包含該交易資料之改變的時間線與該一或多個記憶體模組對由該記憶體控制器提供的電子訓練信號之響應有關。
另一個示例(例如,示例54)有關於先前描述的示例(例如,示例53)或本文描述的示例中的任一者,進一步包含該交易資料之改變的時間線包含所模擬硬體裝置之一或多個暫存器的狀態或內容改變的時間線,該一或多個暫存器的值指示該一或多個記憶體模組的訓練結果。
另一個示例(例如,示例55)有關於先前描述的示例(例如,示例41至54之一者)或本文描述的示例中的任一者,進一步包含該模擬係使用一或多個模擬參數的多個集合來執行。
另一個示例(例如,示例56)有關於先前描述的示例(例如,示例55)或本文描述的示例中的任一者,進一步包含該硬體裝置係用以經由一或多個記憶體模組插槽與一或多個記憶體模組介接的記憶體控制器,其中該一或多個單元測試與用以初始化該一或多個記憶體模組的電信號訓練流有關,其中該一或多個模擬參數的該等多個集合係基於被用於執行該電信號訓練流的多個訓練樣式。
另一個示例(例如,示例57)有關於先前描述的示例(例如,示例56)或本文描述的示例中的任一者,進一步包含該交易資料之改變的時間線係藉由基於該一或多個模擬參數來模擬(210)該硬體裝置、儲存(220)在該硬體裝置之模擬期間在該硬體裝置之一或多個介面處遇到的交易資料,以及基於所儲存交易資料來決定(230)該交易資料之改變的時間線而取得。
另一個示例(例如,示例58)有關於先前描述的示例(例如,示例57)或本文描述的任何示例,進一步包含儲存該交易資料的動作包含儲存在模擬期間遇到的所模擬硬體裝置之一或多個暫存器的狀態或內容,其中決定該交易資料之改變的時間線的動作包含決定所模擬硬體裝置之該一或多個暫存器的狀態或內容改變的時間線,以及其中該一或多個單元測試係使用所模擬硬體裝置之該一或多個暫存器的狀態或內容改變的時間線來執行。
一個示例(例如,示例59)有關於一種用以準備適用於對韌體碼執行單元測試的資料之方法,該韌體碼係適用於與硬體裝置互動,該方法包含基於一或多個模擬參數來模擬(210)該硬體裝置,該一或多個模擬參數由要對該韌體碼執行的一或多個單元測試定義。該方法包含儲存(220)在該硬體裝置之模擬期間在該硬體裝置之一或多個介面處遇到的交易資料。該方法包含決定(230)在該硬體裝置之該一或多個介面處遇到的該交易資料之改變的時間線。
另一個示例(例如,示例60)有關於先前描述的示例(例如,示例59)或本文描述的任何示例,進一步包含儲存該交易資料的動作包含儲存在模擬期間遇到的所模擬硬體裝置之一或多個暫存器的狀態或內容,其中決定該交易資料之改變的時間線的動作包含決定所模擬硬體裝置之該一或多個暫存器的狀態或內容改變的時間線,以及其中該一或多個單元測試係使用所模擬硬體裝置之該一或多個暫存器的狀態或內容改變的時間線來執行。
一示例(例如,示例61)有關於包含根據示例1至18之一者的設備(10)及根據示例19或20之一者的設備(20)的系統。
一示例(例如,示例62)有關於包含根據示例21至38之一者的裝置(10)及根據示例39或30之一的裝置(20)的系統。
一示例(例如,示例63)有關於包括程式碼的機器可讀儲存媒體,當該程式碼被執行時,致使一機器執行示例41至58之一者的方法或根據示例59或60的方法。
一示例(例如,示例64)有關於具有程式碼的電腦程式,其用以在該電腦程式在一電腦、一處理器或一可程式化硬體組件上執行時,實行示例41至58之一者的方法或根據示例59或60之一者的方法。
一示例(例如,示例65)有關於包括機器可讀指令的機器可讀儲存器,當該等機器可讀指令被執行時,用以實作一方法或實現如任何審查中請求項所請求或任何示例中所示的一設備。
如本文所使用,用語「模組」是指可在一硬體組件或裝置中實作的邏輯、在一處理單元上運行的軟體或韌體,或其組合中,用以執行與本揭露內容一致的一或多個操作。軟體及韌體可被實施為儲存在非暫時性電腦可讀儲存媒體上的指令及/或資料。如本文所使用,用語「電路」可包含,單獨地或以任何組合,非可程式化(固線式)電路、諸如處理單元的可程式化電路、狀態機電路及/或儲存可由可程式化電路執行的指令之韌體。本文描述的模組可共同地或單獨地被實施為形成運算系統之一部分的電路。因此,任何模組都可以被實作為電路。被稱為被程式化以執行一方法的運算系統可被程式化為經由軟體、硬體、韌體或其組合來執行該方法。
所揭露的任何方法(或其一部分)可被實作為電腦可執行指令或一電腦程式產品。此類指令可致使一運算系統或能夠執行電腦可執行指令的一或多個處理單元執行所揭露的任何方法。如本文所使用,用語「電腦」是指本文描述或提及的任何運算系統或裝置。因此,用語「電腦可執行指令」是指可由本文描述或提及的任何運算系統或裝置執行的指令。
示例可進一步為或關於包括一程式碼的一(電腦)程式,用以在該程式在一電腦、處理器或其他可程式化硬體組件上執行時執行上述方法中的一或多者。因此,上述該等方法之不同者的步驟、操作或程序亦可由程式化電腦、處理器或其他可程式化硬體組件執行。示例亦可涵蓋程式儲存裝置,例如數位資料儲存媒體,其為機器可讀、處理器可讀或電腦可讀的並且編碼及/或含括機器可執行、處理器可執行或電腦可執行程式及指令。程式儲存裝置可包括或為例如數位儲存裝置、諸如磁碟及磁帶的磁性儲存媒體、硬碟驅動器,或光學可讀數位資料儲存媒體。其他示例亦可包括電腦、處理器、控制單元、(現場)可程式化邏輯陣列((F)PLA)、(現場)可程式化閘陣列((F)PGA)、圖形處理器單元(GPU)、特定應用積體電路(ASIC)、積體電路(IC)或單晶片系統(SoC)的系統,其被程式化以執行上述方法的步驟。
電腦可執行指令可例如為運算系統之一操作系統、本地儲存至運算系統的應用程式,或運算系統可存取(例如,經由一網路瀏覽器)的遠端應用程式的一部分。本文所敘述之方法中的任一者皆可藉由一單一運算系統或由一網路環境中操作的一或多個聯網運算系統執行的電腦可執行指令來執行。電腦可執行指令及對該等電腦可執行指令的更新可從遠端伺服器下載到一運算系統。
此外,應當理解,所揭露技術的實現不限於任何特定的電腦語言或程式。舉例來說,所揭露的技術可由以C++、C#、Java、Perl、Python、JavaScript、Adobe Flash、C#、組合語言,或任何其他程式化語言編寫的軟體來實作。同樣地,所揭露的技術不限於任何特定的電腦系統或硬體類型。
除此之外,任何以軟體為基礎的實施例(例如,包含用以致使一電腦執行所揭露方法之任一者的電腦可執行指令)可通過合適通訊工具被上傳、下載或遠端接取。此類合適通訊工具包括,例如網際網路、全球資訊網、內部網路、電纜(包括光纖電纜)、磁通訊、電磁通訊(包括RF、微波、超音波和紅外線通訊)、電子通訊,或其他此類通訊工具。
進一步應理解,在描述或申請專利範圍中揭露的數個步驟、程序、操作,或功能的揭露內容不應被解釋為暗示這些操作必然依賴於所描述的順序,除非在個別情況中明確陳述或出於技術原因所需。因此,先前的描述不會將數個步驟或功能的執行限制為某個順序。除此之外,在進一步的示例中,單一步驟、功能、程序,或操作可包括及/或被拆分成數個子步驟、子功能、子程序,或子操作。
如果已經針對一裝置或系統描述了某些面向,則這些面向也應被理解為對應方法的描述。例如,該裝置或系統的一區塊、裝置或功能上的面向可對應於對應方法的一特徵,諸如一方法步驟。因此,關於一方法所描述的面向亦應被理解為一對應裝置或一對應系統的一對應區塊、一對應元件、一性質或一功能特徵的描述。
所揭露的方法、設備及系統不應被解釋為以任何方式進行限制。相反地,本揭露內容係針對各種揭露實施例的所有新穎且非顯而易見的特徵及面向,單獨且以彼此的各種組合與子組合。所揭露的方法、設備及系統並不被限制於任何特定面向或特徵或其組合,所揭露的實施例亦不要求呈現任何一或多個特定優點或解決問題。
參考本揭露內容的設備或方法而在本文呈現的操作理論、科學原理,或其他理論描述已經為了更佳地理解之目的而提供,並且不旨在限制範圍。所附申請專利範圍中的設備及方法不限制於以由此類操作理論所描述的方式來運作那些設備及方法。
以下申請專利範圍在此併入詳細描述中,其中每個請求項可作為單獨的示例獨立存在。亦應注意,雖然在申請專利範圍中附屬請求項是指與一或多個其他請求項的特定組合,但其他示例亦可包括附屬請求項與任何其他附屬或獨立請求項的標的之組合。這類組合係在此明確提出,除非在個別情況下陳述無意進行特定組合。除此之外,對於任何其他獨立請求項,一請求項之特徵亦應被包括在內,即使該請求項未直接界定為附屬於該其他獨立請求項。
10,20:設備、裝置 12,22:介面電路 14,24:處理電路 16,26:儲存電路 110:取得交易資料之改變的時間線 120:執行一或多個單元測試 210:模擬硬體裝置 220:儲存交易資料 230:決定交易資料之改變的時間線 310:MRC韌體 320:記憶體控制器 320a,330a,350a:RTL模型 330:DDRIO PHY 340:DDR匯流排 350:DIMM 360:軟體模型 370:響應資料 410:MRC碼 420a,420b:DIMM組態 430a,430b:訓練步驟 440:交易資料 450:轉換 460:結構資料
設備及/或方法的一些示例將僅藉助示例敘述於以下,並參照隨附圖式,其中 圖1a顯示用於對韌體碼執行單元測試之一設備或裝置之一示例的區塊圖; 圖1b及1c顯示用於對韌體碼執行單元測試之一方法之示例的流程圖; 圖2a顯示用於準備用於對韌體碼執行單元測試之資料之一設備或裝置之一示例的區塊圖; 圖2b顯示包含用於準備用於對韌體碼執行單元測試之資料之一設備或裝置以及用於對韌體碼執行單元測試之一設備或裝置的一系統之一示例的區塊圖; 圖2c顯示用於準備適合於對韌體碼執行單元測試之資料之一方法之一示例的流程圖; 圖3a顯示一記憶體參考碼子系統的示意圖; 圖3b顯示具有一黑盒子模擬之一記憶體參考碼子系統的示意圖; 圖3c顯示具有一白盒子模擬之一記憶體參考碼子系統的示意圖; 圖4顯示概述了用於記憶體參考碼驗證之一部屬中之一資料流的示意圖;以及 圖5a及5b顯示所擷取交易資料之訓練資料及結果的示意表示。
10:設備、裝置
12:介面電路
14:處理電路
16:儲存電路

Claims (25)

  1. 一種用於對韌體碼執行單元測試之設備,該韌體碼係適合於與一硬體裝置互動,該設備包含電路,該電路經組配以: 取得在該硬體裝置之模擬期間於該硬體裝置之一或多個介面處遇到的交易資料之改變的一時間線,該模擬係基於由要對該韌體碼執行之一或多個單元測試所定義之一或多個模擬參數;以及 使用所模擬之該硬體裝置之交易資料之改變的該時間線來執行該韌體碼之該一或多個單元測試,該一或多個單元測試係基於該一或多個模擬參數。
  2. 如請求項1的設備,其中該韌體碼經由該硬體裝置之一或多個暫存器與該硬體裝置互動。
  3. 如請求項2的設備,其中該交易資料之改變的該時間線表示該硬體裝置之該一或多個暫存器之一狀態或內容隨時間的改變,其中該一或多個單元測試係使用該硬體裝置之該一或多個暫存器之該狀態或內容隨時間的該等改變來執行。
  4. 如請求項1的設備,其中於該硬體裝置之該一或多個介面處遇到的該交易資料之改變的該時間線為要在該一或多個單元測試期間遇到的該硬體裝置之一行為的一抽象表示式。
  5. 如請求項1的設備,其中該一或多個模擬參數包含與該硬體裝置之一設定有關的至少一個模擬參數。
  6. 如請求項1的設備,其中其中該一或多個模擬參數包含與控制該硬體裝置之該行為之一軟體設定有關的至少一個模擬參數。
  7. 如請求項1的設備,其中該硬體裝置係一記憶體控制器,該記憶體控制器用於經由一或多個記憶體模組插槽與一或多個記憶體模組介接,其中該一或多個模擬參數包含與該一或多個記憶體模組插槽的一群體有關的至少一個模擬參數。
  8. 如請求項1的設備,其中該硬體裝置係基於指定該硬體裝置之功能性的代碼來模擬,該代碼係基於一硬體描述語言。
  9. 如請求項1的設備,其中該硬體裝置係基於一暫存器轉移層表示或該硬體裝置的一網表表示來模擬。
  10. 如請求項1的設備,其中該硬體裝置係使用一現場可程式化閘陣列或使用該硬體裝置之一現有硬體實現來模擬。
  11. 如請求項1的設備,其中該硬體裝置係用於經由一或多個記憶體模組插槽與一或多個記憶體模組介接的一記憶體控制器。
  12. 如請求項11的設備,其中該一或多個單元測試與用於初始化該一或多個記憶體模組之一電子信號訓練流有關。
  13. 如請求項11的設備,其中該交易資料之改變的該時間線與該一或多個記憶體模組對由該記憶體控制器所提供的一電子訓練信號之一響應有關。
  14. 如請求項13的設備,其中該交易資料之改變的該時間線包含所模擬之該硬體裝置之一或多個暫存器的狀態或內容改變的一時間線,其中該一或多個暫存器的值指示該一或多個記憶體模組之一訓練的一結果。
  15. 如請求項1的設備,其中該模擬係使用一或多個模擬參數之多個集合來執行。
  16. 如請求項15的設備,其中該硬體裝置為用於經由一或多個記憶體模組插槽與一或多個記憶體模組介接的一記憶體控制器,其中該一或多個單元測試與用於初始化該一或多個記憶體模組的一電信號訓練流有關,其中一或多個模擬參數的該等多個集合係基於被使用於執行該電信號訓練流的多個訓練樣式。
  17. 如請求項1的設備,其中該電路係組配以藉由下列動作來取得該交易資料之改變的該時間線:基於該一或多個模擬參數模擬該硬體裝置、儲存在該硬體裝置之模擬期間於該硬體裝置之一或多個介面處遇到的交易資料、以及基於所儲存的該交易資料來決定該交易資料之改變的該時間線。
  18. 如請求項17的設備,其中儲存該交易資料的動作包含儲存在模擬期間遇到的所模擬之該硬體裝置之一或多個暫存器的一狀態或內容,其中決定該交易資料之改變的該時間線的動作包含決定所模擬之該硬體裝置之該一或多個暫存器之狀態或內容改變的一時間線,並且其中該一或多個單元測試係使用所模擬之該硬體裝置之該一或多個暫存器之狀態或內容改變的該時間線來執行。
  19. 一種用於準備適合於對韌體碼執行單元測試的資料之設備,該韌體碼係適合與一硬體裝置互動,該設備包含被組配以進行下列動作的電路: 基於一或多個模擬參數來模擬該硬體裝置,該一或多個模擬參數係由要對該韌體碼執行的一或多個單元測試所定義; 在該硬體裝置的模擬期間儲存於該硬體裝置之一或多個介面處遇到的交易資料;以及 決定於該硬體裝置之該一或多個介面處遇到的該交易資料之改變的一時間線。
  20. 如請求項19之設備,其中儲存該交易資料的動作包含儲存在模擬期間遇到的所模擬之該硬體裝置之一或多個暫存器的一狀態或內容,其中決定該交易資料之改變的該時間線的動作包含決定所模擬之該硬體裝置之該一或多個暫存器之狀態或內容改變的一時間線,並且其中該一或多個單元測試係使用所模擬之該硬體裝置之該一或多個暫存器之狀態或內容改變的該時間線來執行。
  21. 一種用於對韌體碼執行單元測試的裝置,該韌體碼係適合於與一硬體裝置互動,該裝置包含經組配以進行下列動作的構件: 取得在該硬體裝置之模擬期間於該硬體裝置之一或多個介面處遇到的交易資料之改變的一時間線,該模擬係基於由要對該韌體碼執行的一或多個單元測試所定義的一或多個模擬參數;以及 使用所模擬之該硬體裝置的交易資料之改變的該時間線來執行該韌體碼的該一或多個單元測試,該一或多個單元測試係基於該一或多個模擬參數。
  22. 如請求項21之裝置,其中該構件被組配以藉由以下動作來取得該交易資料之改變的該時間線:基於該一或多個模擬參數來模擬該硬體裝置、儲存在該硬體裝置的模擬期間於該硬體裝置之一或多個介面處遇到的交易資料、以及基於所儲存的該交易資料來決定該交易資料之改變的該時間線。
  23. 一種用於對韌體碼執行單元測試的方法,該韌體碼係適用於與一硬體裝置互動,該方法包含: 取得(110)在該硬體裝置之模擬期間於該硬體裝置之一或多個介面處遇到的交易資料之改變的一時間線,該模擬係基於由要對該韌體碼執行的一或多個單元測試所定義的一或多個模擬參數; 使用所模擬之該硬體裝置的交易資料之改變的該時間線來執行(120)該韌體碼的該一或多個單元測試,該一或多個單元測試係基於該一或多個模擬參數。
  24. 如請求項22之方法,其中該交易資料之改變的該時間線係藉由下列動作來取得:基於該一或多個模擬參數來模擬(210)該硬體裝置、儲存(220)在該硬體裝置之模擬期間於該硬體裝置之一或多個介面處遇到的交易資料、以及基於所儲存的該交易資料來決定(230)該交易資料之改變的該時間線。
  25. 一種包括程式碼之機器可讀儲存媒體,當執行該程式碼時,用以致使一機器執行如請求項23或24之一者的方法。
TW111126530A 2021-09-29 2022-07-14 用於對韌體碼執行單元測試之設備、裝置、方法及電腦程式 TW202319914A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
WOPCT/CN2021/121797 2021-09-29
PCT/CN2021/121797 WO2023050184A1 (en) 2021-09-29 2021-09-29 Apparatuses, devices, methods and computer program for performing unit tests on firmware code

Publications (1)

Publication Number Publication Date
TW202319914A true TW202319914A (zh) 2023-05-16

Family

ID=85781097

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111126530A TW202319914A (zh) 2021-09-29 2022-07-14 用於對韌體碼執行單元測試之設備、裝置、方法及電腦程式

Country Status (3)

Country Link
CN (1) CN117413253A (zh)
TW (1) TW202319914A (zh)
WO (1) WO2023050184A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116909894B (zh) * 2023-07-12 2024-04-05 北京计算机技术及应用研究所 一种虚实融合的混合动态测试平台设计方法
CN116820432B (zh) * 2023-08-30 2023-11-21 中国人民解放军国防科技大学 一种bmc固件自动适配主板传感器的方法及系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI306191B (en) * 2005-04-13 2009-02-11 Via Tech Inc A method for debugging a firmware program and a debugging microprocessor
US10546086B2 (en) * 2014-02-18 2020-01-28 Optima Design Automation Ltd. Hard error simulation and usage thereof
CN112685240A (zh) * 2020-12-30 2021-04-20 瓴盛科技有限公司 芯片子系统验证方法和装置
CN113032195B (zh) * 2021-03-24 2023-05-23 上海西井信息科技有限公司 芯片仿真验证方法、系统、设备及存储介质

Also Published As

Publication number Publication date
CN117413253A (zh) 2024-01-16
WO2023050184A1 (en) 2023-04-06

Similar Documents

Publication Publication Date Title
TW202319914A (zh) 用於對韌體碼執行單元測試之設備、裝置、方法及電腦程式
KR100491461B1 (ko) SoC 설계 검증을 위한 방법 및 장치
Aarno et al. Software and system development using virtual platforms: full-system simulation with wind river simics
JP2018139136A5 (zh)
US9026966B1 (en) Co-simulation methodology to address performance and runtime challenges of gate level simulations with, SDF timing using emulators
TW201401172A (zh) 用於場可編程閘極陣列(fpga)基硬體加速器之週期精確的與週期再現的記憶體
CN102521444A (zh) 软硬件协同仿真/验证方法及装置
WO2024130861A1 (zh) 一种云原生的硬件逻辑仿真fpga加速方法及系统
US20130024178A1 (en) Playback methodology for verification components
US20020072889A1 (en) Efficient array tracing in a logic simulator machine
US20170185710A1 (en) Testbench Restoration Based On Capture And Replay
US20020188432A1 (en) Circuit model generation and circuit model testing
CN116340150A (zh) 一种基于uvm的可重用的寄存器性能交互验证系统及其应用
Cho et al. A full-system VM-HDL co-simulation framework for servers with PCIe-connected FPGAs
US20140325468A1 (en) Storage medium, and generation apparatus for generating transactions for performance evaluation
JP2000215226A (ja) 論理検証装置
CN113204929A (zh) 基于sv和uvm实现ahb vip的方法、电子装置及存储介质
CN114328045A (zh) 一种bmc的i2c调试方法、系统、装置及计算机可读存储介质
JP2013020425A (ja) オープンソースソフトウェアを利用したハードウェア・ソフトウェア協調検証方法
US6829572B2 (en) Method and system for efficiently overriding array net values in a logic simulator machine
US20200210536A1 (en) Co-simulation repeater with former trace data
KR101412576B1 (ko) 가상 보드 플랫폼, 시스템-온-칩 시뮬레이션 장치, 시스템-온-칩 시뮬레이션 방법 및 시스템-온-칩 검증 방법
CN116451625B (zh) 用于rtl和带sdf网表的联合仿真的装置和方法
US20230419006A1 (en) Smart feedback design for verification
Engblom et al. A fully virtual multi-node 1553 bus computer system