<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于指令級模擬器加邏輯仿真器實現協同驗證環境的搭建

電子設計 ? 來源:現代電子技術 ? 作者:幸強 ? 2021-05-26 11:47 ? 次閱讀

1 概述

硬件協同驗證的概念已經提出多年,但是直到這些年隨著SOC技術的發展,軟硬件協同驗證技術才得到更多的關注和重視,并得到發展。軟硬件協同驗證是一種在硬件流片封裝之前,驗證SOC系統硬件和軟件是否能夠正確工作的技術。協同驗證又可以叫作虛擬原型技術,因為硬件部分的仿真雖然跟真實硬件的運行基本一樣,但是硬件仿真其實是通過在工作站上的一個軟件程序的運行來實現的。協同驗證的基本框架如圖1所示。

對比傳統的驗證方法,協同驗證技術使得軟件設計工程師能夠在設計早期進行調試,可以較早的進行軟硬件的整合,縮短上市時問(time-to-market)。另一方面,通過軟硬件協同驗證,可以為硬件設計工程師提供了一整套非常接近于現實的激勵集,有利用于提高驗證的質量。

協同驗證系統由一個硬件執行環境和一個軟件執行環境組成,通過事件和命令,使用一些機制,在這兩個環境間進行控制。軟件的執行環境用于產生總線周期的序列,協同驗證工具將總線周期轉換成許多信號事件或者命令集,并驅動這些信號事件命令進入硬件執行環境,然后對總線周期響應進行硬件環境取樣,這一響應又被傳送回軟件環境。同時,保持硬件及軟件環境問的同步以便硬件或軟件環境都可發現由于錯失響應而導致有誤的情形。

軟硬件協同驗證中,軟硬件部分都是通過建模的方式實現。其中硬件建模方式有如下幾種:采用FPGA原型或模擬系統;采用HDL及邏輯仿真器;采用高級程序語言(如C/C++語言)編寫的行為模型。軟件也可通過幾種方式執行:采用ISS(指令集仿真器)在CPU上運行;通過編譯,并在運行仿真程序的主機上運行。在一般的SOC設計中,硬件建模一般用硬件描述語言來實現,軟件一般需要編譯成針對SOC硬件嵌入式核的目標代碼,因此在本文中,將采用指令級模擬器加邏輯仿真器(ISS with logicsimulator)的方法來構建協同驗證環境。

2 進程間通信

軟硬件仿真器之間的通信是協同驗證中的關鍵技術。由于軟件仿真和硬件仿真使用獨立的兩個進程,因此可以使用Unix下的進程間通信(Inter Process Communication,IPC)技術來實現軟硬件仿真器之間的信息交互。常用的幾種Unix IPC有無名管道,有名管道(FIFO)和Unix套接字(Socket)。無名管道是Unix中最常用的IPC方式,優點是非常簡潔,弱點是他只能在相關的,有共同祖先的進程間使用;有名管道(FIFO)和無名管道的區別在于他是持久穩定的,而且可以讓無任何關聯的進程問交換數據;套接字是一種抽象數據結構,用以創建一條在沒有關聯的進程間發送、接收消息的通道(連接點),一旦通道建立之后,被連接起來的進程就可以通過普通的文件系統存取例程來進行通信了。在通信的兩方中,一方稱為客戶程序(client),另一方稱為服務程序(server)。建立過程如圖2所示。對比上述3種通信方式的特點,這里使用UnixSocket來實現兩個進程間的通信。

3 消息傳遞

在本環境中,軟硬件間的通信可以看作是一個消息傳遞的過程,在軟件環境和硬件環境中添加數據傳輸函數,并通過接口實現信息交互,如圖3所示。

在兩個進程消息傳遞的過程中,消息可以分為3類:同步的數據傳輸;異步的數據傳輸;無數據傳輸的同步信號。同步的數據傳輸是指在一種機制下,保證在發送端進程發送數據時,接收端進程處在正確的狀態;如果發送端進程發起一次數據傳輸時,接收端不處在合適的狀態,發送端則阻塞這次傳輸直到接收端準備好。異步的數據傳輸是指發送端進程在發送數據時,不考慮這次數據或者前一次的數據是否被接收端接收到,數據沒有緩沖,每次新發送的數據都會覆蓋前一次的數據,因此,在一次傳輸中,數據可能被接收多次或者接收不到。通常這種傳輸用來傳遞狀態信息。無數據傳輸的同步信號,用來同步兩個進程的狀態,沒有數據的交換。一個進程可使用同步信號來通知另外一個進程開始一次任務或者等待其完成一次任務。

軟件環境和硬件環境中數據傳輸函數與接口間的通信方式是不同的。在軟件環境中,數據傳輸函數只包括簡單的讀寫操作,讀寫操作分為同步和異步兩種模式。在硬件環境中,需要定義一些端口來控制數據傳輸,每一個端口使用不同的協議。進行同步數據傳輸時,在硬件環境中使用握手端口,同時與軟件環境中的同步讀寫函數配合。握手端口共有4個,分為兩個SENDs(數據從硬件環境到接口)和兩個RECVs(數據從接口到硬件環境)。每個SENDs,RECVs又根據硬件環境是請求方還是應答方分為Q_SENDs,Q_RECVs和A_SENDs,A_RECVs。進行異步的數據傳輸時,在硬件環境中定義兩個端口PORT_IN和PORT_OUT,與軟件環境中的異步讀寫函數配合進行傳輸。另外,需要定義一個EVENT端口,發送無數據傳輸的同步信號,用來同步軟件環境和硬件環境的仿真時間。

表1中總結了在接口中端口的使用。在這個協同驗證環境中,通過這些端口的使用,設計者可以忽略底層細節,有選擇的使用以上端口來實現軟硬件之間信息交互。

4 協同驗證環境的實現

4.1 基本構架

整個環境的基本構架如圖4所示,左右兩個框分別表示軟件仿真進程和硬件仿真進程,他們之間通過UnixSockets交換信息,Verilog PLI是他們交互的接口。下面對環境的各個部分進行介紹。

在軟件環境中,指令級模擬器(ISS)是一種仿真CPU行為的程序,他在主機上運行,可以仿真軟件程序的可執行鏡像。把SOC軟件編譯成針對SOC硬件嵌入式核的目標代碼后,即可在指令級模擬器上仿真。C的總線模型(C BFM)用來實現指令級到周期級的轉換,并實現總線接口功能,與硬件環境相連接,同時還包含了Unix Sockets的服務程序。

硬件環境包含2部分。一部分是Verilog PLI Inter-face。他是軟件和硬件交互的接口,一方面通過UnixSockets的客戶程序與軟件環境交互信息;一方面通過一些任務函數,根據Sockets傳遞過來的信息,向硬件發出請求或者應答信號。另一部分是待驗證的硬件模型,用Ver-ilog描述,他的外圍是一段控制程序(verilog controlstub),在仿真的每一個時刻調用PLI中的函數,通過端口與Verilog PLI Interface交互信息。

4.2 功能實現

圖5給出了軟硬件環境通過A_RECV端口實現通信的例子。

當軟件需要向硬件寫入一個數據時,首先通過Socket將數據發送給PLI;PLI接收數據,同時拉高請求線,向硬件發出請求;硬件模型得到清求后,通過Verilog ControlStub接收數據,傳遞給內部寄存器,并拉高應答線,向PLI發出應答。PLI得到應答后拉低請求線,同時發出同步信號給Socket,硬件模型得到拉低的請求后,拉低應答線,一次傳輸結束。當軟件需要進行下一次寫操作時,首先需要通過Socket讀取同步信號,有同步信號時即可開始下一次操作。其他的端口握手過程與此類似。

4.3 協同模擬同步

指令集模擬器以指令為單位進行模擬,時鐘每次推進一個指令周期,指令周期長度則隨指令的不同而不同。硬件模擬器通常采用事件驅動模擬算法,他以事件為調度對象,硬件模擬器按照事件發生的時間進度推進時鐘,時間單位一般由用戶的設計指定,例如納秒,微秒等。因此必須采用一定的機制對二者進行同步,并且他們之間能否同步將直接影響到協同模擬的正確性。指令集模擬器和硬件模擬器之間通常采用Lock-step方式進行同步。采用該同步方式必須首先確定同步點,保證在兩個同步點之間的時間間隔內不發生軟硬件交互事件。如前文所述,Verilog PLIInterface是軟硬件模擬器之間的信息交換界面,所以同步點會因為交互信息的不問而不同。而硬件模擬器是以事件發生的時間順序推進時鐘,要保證其時鐘不會越過同步點,就必須引入同步信號,即時間為同步點的信號,硬件模擬器完成一個事件后,需要向Verilog PLI Interface發回一個同步信息,說明硬件模擬器的時鐘己推進到同步點。

5 結 語

設計驗證是SOC設計的關鍵技術之一,貫穿整個SOC技術,隨著SOC技術的發展,軟硬件協同驗證技術得到了更多的關注和重視。與過去把整個環境當作單一的一個進程處理的方法不同,本環境將軟硬件仿真的過程分離開來,使用Unix Sockets來實現軟硬件之間的通信,更接近實際情況。同時,由于兩個仿真過程并行執行,仿真速度更快,效率更高。在該環境中,軟件用編程語言來編寫,硬件用硬件描述語言來建模,符合一般軟硬件工程師的習慣,較早的進行軟硬件的整合。在此環境中,軟硬件之間通信的吞吐量是影響仿真速度的瓶頸,下一步作者將針對協同模擬同步及優化進行研究。

責任編輯:gt

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1603

    文章

    21328

    瀏覽量

    593267
  • 仿真器
    +關注

    關注

    14

    文章

    988

    瀏覽量

    82998
  • 模擬器
    +關注

    關注

    2

    文章

    818

    瀏覽量

    42698
收藏 人收藏

    評論

    相關推薦

    SkyEye模擬器的音頻輸出模擬模塊設計與實現

    【作者】:李恒庭;洪永強;【來源】:《廈門大學學報(自然科學版)》2010年02期【摘要】:SkyEye是一個指令模擬器,用它能模擬多種嵌入式開發板,目前
    發表于 04-24 09:14

    為什么需要仿真器

    為什么需要仿真器  軟件模擬器和目標 Monitor提供了一種經濟的調試手段,對于很多設計來說已經足夠。但是也有很多場合,需要利用仿真器來找到程序錯誤。 無論在哪一種場合,仿真器都能夠
    發表于 08-11 14:18

    如何設計和驗證SoC

    的,不只是兩個驗證工具的采購價格千差萬別。多年來,難以甚至無法在軟件模擬器和硬件仿真器上進行重用。這兩個環境通常需要由完全不同的團隊執行不同的流程。然而,ST Microelectro
    發表于 04-05 14:17

    概倫電子千兆電路仿真器NanoSpiceGiga?介紹

    SPICE引擎,精度遠超FastSPICE,確保功耗/漏電/時序/噪聲等的精度要求  千兆:十億單元以上的電路規模,可用于全芯片仿真驗證  高性能:通過并行仿真實現比FastSPIC
    發表于 07-01 09:14

    什么是功率電機模擬器

    概述潤科通用研發的功率電機模擬器,利用FPGA高速實時仿真技術、變頻對拖技術模擬電動機和機械負載,測試對象為控制
    發表于 07-06 07:55

    51單片機指令模擬器 精選資料分享

    MCS-51單片機指令模擬器,除了DA指令外,其它指令都可以模擬。實現了254條
    發表于 07-13 07:13

    51單片機指令模擬器 精選資料分享

    MCS-51單片機指令模擬器,除了DA指令外,其它指令都可以模擬。實現了254條
    發表于 07-13 06:24

    如何用gazebo仿真器搭建一個三維虛擬環境

    Rviz 中查看各傳感的采集信息。2. 用 gazebo 仿真器搭建自己的一個三維虛擬環境,可以是一個室內環境(家庭
    發表于 12-17 07:10

    LVGL模擬器該怎樣去搭建

    LVGL模擬器搭建我用的是vs搭建模擬器,實際上很簡單,去下載最新的vs然后我是選擇了接下來,下載安裝。再下載官方的模擬器。就可以進行
    發表于 01-18 09:31

    8051系列單機編輯調試仿真器(8051模擬器)

    8051系列單機編輯調試仿真器(8051模擬器)
    發表于 08-05 08:21 ?177次下載
    8051系列單機編輯調試<b class='flag-5'>仿真器</b>(8051<b class='flag-5'>模擬器</b>)

    ARM指令仿真器的設計與實現

    指令仿真器是目前嵌入式系統研究中一個極其重要的領域,一個靈活高效且準確度高的仿真器不僅可以實現對嵌入式系統硬件環境
    發表于 10-28 16:52 ?49次下載

    水下應急維修用吊機仿真模擬器設計與實現_徐寶昌

    水下應急維修用吊機仿真模擬器設計與實現_徐寶昌
    發表于 01-16 14:04 ?0次下載

    仿真器模擬器的不同_仿真器模擬器的區別簡單分析

    仿真器模擬器經常被混淆,兩者有些許相似,但是是兩個不同的概念,本文為大家帶來仿真器模擬器的區別簡單分析。
    發表于 01-05 14:27 ?8186次閱讀

    PDSDK COM 套件參考手冊(仿真器/模擬器調試器定制套件)

    PDSDK COM 套件參考手冊(仿真器/模擬器調試器定制套件)
    發表于 05-05 19:29 ?0次下載
    PDSDK COM 套件參考手冊(<b class='flag-5'>仿真器</b>/<b class='flag-5'>模擬器</b>調試器定制套件)

    PDSDK COM 套件參考手冊(仿真器/模擬器調試器定制套件)

    PDSDK COM 套件參考手冊(仿真器/模擬器調試器定制套件)
    發表于 06-26 19:21 ?0次下載
    PDSDK COM 套件參考手冊(<b class='flag-5'>仿真器</b>/<b class='flag-5'>模擬器</b>調試器定制套件)
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>