硬件/軟件接口(簡稱為"HSI")是一個術語,用來描述 SoC 外圍設備的配置和功能,以及它們如何與CPU交互。
從寄存器位到訪問類型、屬性和功能的各種因素的數量,在現代SoC中可能是絕對令人吃驚的。 例如,如果有一個32位地址總線,可以訪問2 ^ 32內存映射寄存器。如果每個寄存器本身都有32位寬,那么寄存器位的總數就會變成(32 * 2 ^ 32)或2 ^ 37,或137,438,953,472!但是如果地址總線是64位呢? 如果 SoC 中有多 cpu 核心怎么辦? 很明顯,典型的 SoC 體系結構是復雜的。
不可否認的是,目前的行業趨勢只會導致更先進的 SoC,其外圍設備的數量將比以往任何時候都多。 為了理解這一切,更不用說管理它,它將要求我們完全重新思考HSI。 無論已經走了多遠,還是要去向何方地方,都是如此。
HSI的今天
在任何特定的時刻,都會遇到各種各樣的因素。 多個處理器,包括周圍有大量可編程的外設。所有的東西都通過片上網絡連接在一起。 這個列表還在繼續。
在現代 CPU 的背景下,HSI 和指令集架構(ISA)基本上是一樣的。 這是軟件對硬件進行"會話"的層。 中央處理器可以是 ARM,RISC-V ——這并不重要,因為這個過程保持不變。 為想要的目標編寫一個C或 C++ 程序,編譯它,然后放到 CPU 上。 這就是如何與寄存器和外部總線進行交互的方式,以及I/O。
在實際的 SoC 方面,還必須處理相互連接的fabric,這是連接CPU 和各種可編程從設備的紐帶。 這些從設備可能有他們自己的存儲,或者甚至可以是一個低速總線,這取決于具體的情況對嵌入式寄存器的讀寫來編程。 當從這種類型的宏觀視角來看事物時,寄存器和中斷是IP的HSI。

圖1 CPU/IP HSI
雖然迄今為止,這種做法一直運作良好,但也很難說它給任何項目帶來了一些重大的挑戰。在最近的一項研究中,仔細研究了芯片功能缺陷的根源,設計錯誤是主要原因。 規格的變化和規格的不正確或不完整也是其中的一個方面。 所有這些問題的嚴重程度和它們的普遍性一樣,而且它們都有相同的共同點: 超過50%的問題屬于這三個類別中的任何一個,直接回到了 HSI 層面。
舉個例子,以收銀機為例, 總是要記住面對的是各種各樣的不同類型。 UART、鎖、中斷、 FIFO 和分頁都只是眾多例子中的一小部分。 像間接寄存器和觸發緩沖寄存器這樣的復雜寄存器都有其潛在的并發癥,寄存器組或內存數組也是顯然不同的。
僅僅基于這一點,就很容易看出為什么所有問題中有一半以上可以直接與硬件/軟件接口聯系起來。 同樣復雜的是,許多公司都有自己獨特的針對 SoC 的挑戰和要求。
人們很容易對這個消息采取悲觀的態度,并把它看作是可怕的事情。 但這也是值得慶祝的事情,這意味著如果花時間修復 HSI 層,也可以修復芯片功能缺陷。
需要靈活而創新的未來
當想到各種各樣的 HSI 信息消費者時,這個列表可能比人們意識到的要長得多。 除了設備驅動程序、固件和硬件驗證等因素外,還需要考慮技術文檔、診斷、應用軟件、硬件設計等等。 對基礎規范的一個改變需要在所有這些領域進行重大轉變,這就是為什么找到一個解決方案,讓這些變化自動滲透到所有相關的視圖中。
IDesignSpec (IDS)只是眾多例子之一,在解決所有這些問題方面取得了重大進展。 這些類型的解決方案通常與各種不同的輸出相兼容,這取決于您的需求,包括但不限于像 Verilog/VHDL,c Model,UVM 等等。它們通常可以從批處理(想象: 命令行)到 Word 和 Excel,到開源的選項,比如 Open Office。

現在可以生成一個單一的基于 uvm 的寄存器模型,該模型涵蓋所有的核查元素,以及更多地騰出寶貴的時間,讓實際員工專注于更重要的事情。
最后,可以使用一個單一的工具來創建測試序列和環境,創建正式屬性和斷言,從規范中創建 UVM 序列和固件例程,并幫助實現跨平臺的 HSI 層規范,該規范以一種一直存在的方式平等地為所有各方服務。
這一切都超越了簡單的自動化。 它代表了硬件和軟件作為概念朝著下一個進化方向邁出的重要一步。下一代的HSI解決方案已經取得了很大進展,它們不僅有助于解決"老派"做事方式中存在的絕大多數挑戰,而且對于能想到的幾乎每一個強大到不容忽視的行業都存在一些重大影響。
功能安全
國際標準化組織發揮重要作用的許多領域之一與功能安全和 ISO 26262標準有關。 例如,汽車工程師需要確保他們的設計沒有單一的故障點,他們堅持這個標準的 ECC-CRC 和奇偶校驗,或者其他技術,如三模冗余(或 TMR)。
對于某些用于安全目的的應用程序來說,HSI 也具有重要的歷史意義。 你可以看到很多情況下,內存映射是用一個關鍵序列鎖定的,在這個序列中,必須用特定的值將一系列寫入某個地址,以使狀態機能夠通過解鎖整個內存映射所需的進程。
最后,醫療是一個硬件/軟件接口非常重要的領域,因為遵守某些要求對于任務至關重要。 此外,他們也都把他們自己獨特的要求放在 HSI 層本身上,影響了如何實現某些因素以及未來的情況。
不幸的是,正如 HSI 在理論上一樣重要,在執行過程中,它在很大程度上處于最糟糕的停滯狀態。 這就像以前一樣重要,但是有些挑戰是絕對阻礙創新的,而不是推動創新向前發展。
在最后
毫無疑問,在處理復雜的硬件 / 軟件界面時,存在著許多挑戰。 然而,通常情況下,也存在著大量的機會。這一領域的進步,IDesignSpec 只是眾多例子中的一個,使得人們有可能改變他們對于 HSI 的看法變得更好
硬件 / 軟件接口背后的想法確實有很長的路要走,而且他們還有很長的路要走。 但與此同時,好東西是值得為之奮斗的,因為"正確的方法"幾乎保證了整體生產力的顯著提高。 "錯誤的方法"保證丟失大量的周期調試等問題,這意味著它根本不是一個真正的選擇。