cuttlefish的个人空间 https://blog.eetop.cn/verification [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

【转帖】基於SystemC/SCV模擬的高效事務處理可縮短驗證時間

已有 666 次阅读| 2008-9-25 15:24 |个人分类:SOC验证

圖1:利用SystemC縮短開發周期。

本文描述了富士通網路科技有限公司(FNT)利用SystemC驗證庫(SCV)和Incisive標準模擬器成功實現的兩個計畫。FNT在選擇Incisive實現複雜的驗證環境中,充分利用了IUS提供的功能,製作了能使用SystemC和混合HDL進行多語言模擬的整合環境。這樣,FNT不僅成功地設立了基於事務處理的開發環境(transaction based environment),還將整個驗證時間壓縮了30%。

 

圖1比較了兩個高級計畫的開發流程:從架構研究到精確到時脈周期的詳盡RTL設計,再到功能驗證。第一個流程是目前大多數公司正使用而且FNT也曾使用的典型流程。首先利用第一個計畫的開發和驗證流程開發基於C語言的演算法模型,以進行高級抽象的可行性研究。一旦該架構滿足定點C模型的要求,就將作為“黃金參考(golden

圖2:基於流程的新SystemC

 

reference)”與設計規格一起提交給HDL開發人員。通常,C模型在功能上非常精確,但不具有時序資訊,也不可重入,這意味著不能儲存任何先前運算得到的數據,如FIR濾波器中累加器的數值。這樣,該設計必須利用HDL(圖中綠色箭頭所示)工具在暫存器傳輸層重新進行開發。然後,再在RTL層執行完整的功能級驗證。

 

儘管該流程可以取得成功,但FNT公司也意識到了該流程存在的問題:由於無法在RTL實現的設計或測試中再使用特定的C模型,因此必須進行兩次設計和驗證,一次在C層面上,一次在稍後的RTL層面上。FNT公司同樣意識到,由於RTL開發人員的誤解,RTL實現中也不可避免地存在程式缺陷,尤其當需要在RTL的特定訊號級實現中導入時間和循環精密度時。SystemC及相關工具和方法的出現,有助於他們解決該流程存在的問題。

圖3:基於TB的SystemC中的Verilog DUV。

FNT公司確實這麼做了。他們的新流程重點利用了“再使用”這個理念,即透過在初期階段投入更多的時間開發和驗證能在整個RTL實現階段都能再使用的模型。需要注意的是,圖1顯示FNT正投入更多的時間在初期階段開發更為精確的功能型SytemC模型。這樣,他們就能為RTL開發人員提供適用的規格及可再使用的測試平台,因而消除了任何可能出現的誤解。因此,RTL設計和驗證只需要更少的時間,進而使整個計畫的時間縮短了30%。

 

圖2顯示了FNT新流程的詳細實現架構。

 

驗證階段(圖2中用左邊的藍色方框表示)和設計階段(綠色方框表示)顯然都再使用了模型。在設計階段,模型根據不同程度的抽象度進行開發、驗證、測試和再使用。

圖4:Verilog DMA調用序列(偽程式碼)。

 

圖2顯示的案例中,訊號處理演算法最初非常抽象,因為當時是採用浮點C/C++檢驗該想法。該想法檢驗完成,通常採用定點C對該演算法的目標功能和性能進行驗證。一旦該架構滿足期望的性能,設計組則將該演算法以RTL的方式映射為適當的微架構。這個階段通常會引發很多問題,因為C/C++和HDL之間抽象的差異通常會導致大量的設計功能缺陷。因此,這個關鍵時期必須花費額外的時間,導入HDL的時序和位精確性能,並對高度抽象的系統級模型進行性能驗證,這個過程可以利用SystemC和Incisive平台非常高效地完成。每層抽象都進行適當的功能性驗證可以有效地保證架構/結構決策。由於現在模型可以在整個設計和RTL開發階段進行再使用,因此RTL設計人員完全不用重覆進行這些關鍵性決策。透過採用基於SystemC的環境,RTL可以直接在每個抽象層進行驗證,而不用像系統架構人員那樣在演算法和微架構開發階段就使用能實現相同或類似設計意圖的“黃金參考”模型。

 

對於功能性驗證,該測試平台可以在整個製程流程中再使用,而只需要對事務器(transactor) 介面模型進行調整以適應不斷增加的模型複雜度。而且,在SystemC和RTL之間再使用測試平台模型還能大幅減少重覆開發,並保證在整個計畫周期內設計意圖不發生偏差,進而在整個開發中大幅減少冗餘開發。

圖5:SystemC驗證約束。

案例研究

 

上面介紹了FNT開發的基於SytemC的驗證環境,下面我們來研究利用新方法開發出的兩個獨立計畫。這是由FNT公司專為該設計開發的兩個獨立示例,我們將向讀者展示該公司為實現設計和驗證目標而運用的一些高級SystemC/SCV特性。

 

計畫1:

 

在第一個計畫中,DUV(一種DMA方式)採用verilog語言編寫,而測試平台的其他部份則採用SystemC/SCV編寫,CPU和RAM的事務級模型(Transaction-level model,

圖6:高層測試命令。

TLM)採用SystemC編寫。這一部份描述了事務器是如何作為RTL和TLM之間的時序介面以及如何產生並模擬CPU測試腳本,包括以下部份的測試平台隨機約束:


1. 並發和隨機DMA序列;


2. 在多個時脈域內返回的具有隨機延遲的RAM確認;


3. 具有隨機延遲的數據承載和轉儲。

 

測試計畫(如圖3所示)的圖形表述顯示了如下測試目標和分析結果:為進行DMA傳輸而隨機產生的發送至DUV的CPU命令:DMA傳輸隨機數基於特定的約束條件,即最大傳輸數為8。

 

基於可調節約束而產生的具有隨機延遲的RAM確認:

 

1. 確認具有隨機時間(0至30個時脈周期);


2. 基於CPU命令轉儲RAM數據;


3. 為分析產生事務,均為DMA傳輸流,參見圖3。

圖7:分析DMA傳輸流的事務。

測試平台調用了一組隨機CPU命令,用來對DMA進行數據讀寫。SCV隨機化處理可用來調用CPU/DMA事務。隨機化處理可以提供更接近實際的DMA及其暫存器的測試數據腳本。

 

實際驅動DMA透過一個可調用的函數實現。圖4中的函數偽程式碼描述了測試平台初始化CPU模組以驅動DUV(DMA)數據讀寫作業並強制產生一個DMA中斷。

 

為使隨機數據更具實際意義,這些數據必須限制在測試目標和設計參數的範圍內。圖5*顯示了如何為得到期望的傳輸流模式設定約束:來源/目的地址、分組數據大小、隨機REQ/ACK間隔等必須通過智慧指針(smart-pointer)和SCV約束限制在特定的範圍內。

 

圖6*顯示了上述處理的結果:在檢查期望的執行序列中,可以發現DMA讀寫不僅具有隨機數據和隨機間隔,而且還可利用平行執行緒實現,這樣就檢驗了DMA處理多個並發請求的能力。

圖8:SCV/VHDL測試平台。

 

FNT公司之後實現了事務記錄功能,這樣就能在Incisive模擬中擷取期望的序列並輕鬆地在波形觀察儀中進行觀察。利用SystemC/SCV事務記錄特性以及SCV中的嵌入式SDI(事務記錄)調用,模擬結果也確實顯示期望的測試序列得到正確執行(參見圖7*)。

 

Incisive平台中的事務處理是在模擬中記錄測試失敗原因及結果序列的簡單而有效的方法。驗證工程師一旦在模擬中檢測到問題,只需要檢查相關的事務處理,就能利用記錄的資訊定位問題,如圖8*所示。任何現有的事務間關係(如父事務與子事務之間的關係)或錯誤的事務都能利用Incisive事務瀏覽器(TxE)工具進行分析。

 

總之,Incisive平台有助於FNT公司有效地開發並驗證混合設計語言(SystemC/SCV/Verilog)模組,而且其單一的環境能使設計和驗證工程師無縫地共享測試和模組化IP,因而無需任何重覆工作。

圖9:IP訊框結構。

計畫2:

 

第二個計畫研究描述了由兩個向VHDL DUV發送隨機數據流的訊框生成器TLM組成的測試環境。FNT希望能在未來的計畫中繼續使用VHDL,這使得他們也感到一些緊迫感,因為在進行全面的測試開發之前,必須在VHDL範圍內測試SCV的隨機能力。與計畫1類似,SCV的隨機能力可用來設立分級約束,以產生隨機測試參數,實現下述測試目標:1. 隨機訊框長度和數據;2. 隨機訊框間隔;3. 基於預定義規則產生隨機錯誤分組數據。

 

圖8顯示了計畫2的測試環境,訊框數據向上行提交並同下行進行比較。需要注意的是,SystemC驗證模組環繞在VHDL模組的周圍,因而能在DUV中提供無縫的訊號電平整合。

圖10:訊框隨機化聲明。

以下各圖提供了出入VHDL DUV的隨機分組數據訊框在不同結構和約束條件下的偽程式碼。

 

圖9*聲明了結構,而圖10*則描述了對分組數據訊框進行隨機化的約束條件。需要注意的是,可以使用scv_smart_ptr提供約束和隨機化所需的全部方法(函數)。

 

圖11*顯示了以隨機數據填充訊框的偽程式碼,方法next()是SCV中的虛擬方法。只需簡單地調用智慧指針的next()函數,就能產生滿足上述結構聲明約束要求的隨機數據。圖11還顯示,next()可以重載以得到期望的功能及滿足特定約束的隨機化處理(參見圖12

    

圖12*顯示了訊框生成器的主體部份。需要注意的是,與外部事件相關的部份稱為“start_i”,圖12的左邊部份顯示,SC_MODULE的“IP_frame_gen”部份可以在VHDL測試平台中實例化為VHDL的成員(如圖13*和14*所示)。輸入和輸出SC訊號連接到對應的VHDL訊號,連接器“SC_CTOR”顯示,當“start_i”觸發時,“IP_frame_gen”模組中只啟動一個“proc()”執行緒執行。

)

圖11:訊框隨機偽程式碼。

 

右邊部份詳細說明了“proc()”方法。該方法執行一直被阻塞,直到觸發“start_i”,因為輸入事件“start_i”的正邊沿才能觸發訊框生成過程。這樣,根據圖10和11給出的約束條件,將總共產生10訊框數據。

 

模擬結果清楚地顯示SCV可以根據圖10*和11*給出的約束條件產生隨機分組數據訊框。

 

對於每個生成的數據訊框,SCV隨機化訊框中的4個元素,由此產生非常接近現實的測試腳本。隨機化報頭、數據、來源/目的地址以及訊框間隔而得到的訊框不僅能模擬實際的數據訊框,還能模擬期望的出現概率為千分之一的錯誤分組數據。

圖12:訊框生成。

本文小結

 

FNT公司證明了SystemC是功能強大的設計語言,不僅能提供高性能,還能增強硬體建模演算法的靈活度,所有這些都在相同的環境下實現。由於該語言非常適合於多重設計和驗證任務,因此FNT能在整個設計流程中實現程式碼再使用。在設計除錯中,事務級驗證可以提供更高的性能、更強的可視性及更短的周期。對於新舊模型的使用,Incisive的混合語言能力(包括SystemC)更是超過預期。最後,SCV擴展可使測試產生非常接近實際的測試數據。

 

總之,利用基於事務的測試方法,即SystemC/SCV與Incisive,FNT可以加速模擬和驗證周期,在降低整個計畫周期30%的同時,還得到更高品質的結果。(*詳見www.eettaiwan.com)

作者: Eisuke Yuri


測試工程師
Fujitsu Network Technologies LTD.
Email: yuri.eisuke@jp.fujitsu.com

Neyaz Khan
Incisive核心組驗證工程師
Cadence Design Systems
Email: nkhan@cadence.com

Junichi Tatsuda
主任銷售工程師
Cadence Design Systems, Japan
Email: tatsuda@cadence.com

Chris Dietrich
Incisive核心組總監
Cadence Design Systems
Email: chris@cadence.com


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 2

    获赞
  • 7

    评论
  • 326

    访问数

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-6-18 05:44 , Processed in 0.073021 second(s), 14 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部