精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

如何設計和構建Testbench呢?

sanyue7758 ? 來源:芯片學堂 ? 2023-05-08 10:16 ? 次閱讀

Testbench是幾乎所有做動態仿真驗證的工程師都要面對的問題,可能是需要設計,或者開發,又或者是維護,總有很多事情要在這上面折騰。Testbench可以很簡單,也可以很復雜。

在面對具體的驗證對象的時候,如何利用我們手頭的工具,比如SV/UVM/Python等,去搭建一個簡潔高效的、可維護性和可重用性強的testbench,是一個非常重要且值得討論的問題,甚至不同的工程師就能總結出自己的一套經驗法則。

本文將從架構(Architecture)、實現(Implementation)、維護(Maintenance)這三個方面著手,討論設計和構建testbench通常需要考慮的問題,不涉及編程實操,不涉及驗證計劃。

01 Architecture

Testbench架構定義很大程度影響著仿真程序的執行效率。這里的討論將分三個小點展開:驗證環境本身結構,層次化測試激勵,以及配置信息的傳播。

最簡單的驗證環境,或者說驗證環境的一般雛形,包括driver、monitor、sequencer、model、checker、scoreboard等這么一些組件,連接關系也很簡單。然而在實際工程項目中,特別是到了系統集成級,由于驗證對象很龐大,驗證環境的組件數量往往成倍數增加,連接關系和控制關系也會變得更加復雜。

層次化的測試激勵來源于我們對測試場景的定義和對激勵控制的需求。一般來說,測試場景定義得越抽象,測試激勵的層次就會相應地增加,對測試激勵的控制也會更加復雜。舉個例子,假設我們想要測試CHI NoC中HN對某一種transaction的響應行為,那么只需要啟動讓RN agent直接發出transaction的sequence即可;某天我們想要測試HN處理不同hazard(多筆請求產生沖突)的行為,那么我們可以通過封裝多個base sequence來實現該目的。

配置信息的傳播在testbench架構中很重要。配置信息一般包括對DUT參數或者宏定義的配置、驗證環境組件的開關配置、測試激勵權重的配置等等。配置信息使得當前驗證環境可以被有效復用,可以覆蓋到更多的測試場景。通常我們可以通過分享config對象句柄的方式來傳遞配置信息。

02 Implementation

在實現上要考慮的問題會比較雜,這里舉幾個常見的主題:數據結構的定義,建模和檢查方式,覆蓋率收集,以及仿真的啟動和結束。

數據結構的定義應當完整,并提供足夠的方法使其能夠被高效操作。數據結構容易直接想到的就是sequence_item的定義,決定了數據在testbench各組件中游走的包格式。除此之外,需要定義config對象的數據結構,自定義的建模方式可能需要一種新的數據類型等等。

建模和檢查方式強依賴于驗證計劃。大白話是,確定需要覆蓋的測試點和覆蓋方法,對此再分門別類定義checker,根據checker所需要的信息定義建模方式。這里的建模指的是在testbench中實現DUT中某個模塊的功能,或者記錄DUT狀態信息,使得檢查測試結果時有理有據。

覆蓋率是芯片項目驗收的關鍵技術指標,收集覆蓋率就變成testbench必要的功能。定義覆蓋點的位置以及收集覆蓋率的方式都比較靈活,如果沒有統一規劃和管理,容易讓同一個testbench中收集覆蓋率變得分散而不好管理。

仿真的啟動和結束主要為了實現這兩部分功能:測試用例開始前的初始化和仿真結束時的狀態檢查。仿真驗證不代表一上來就給驗證對象灌激勵,除了要處理好復位、上電流程之外,通常還要其他初始化工作,比如將某些接口tie成固定值、初始化控制寄存器的值、加載memory的內容等等。仿真結束時,除了要確保DUT已經完成對測試激勵的完整響應,還需要檢查DUT以及testbench自身的一些狀態是否符合預期。

03 Maintenance

在項目迭代中通常會復用到前項目的驗證環境,這就導致testbench的維護工作需要做得比較長遠,否則容易積重難返,最后誰也不敢做出更新或者改進。Testbench的維護有這么幾個重要的主題:驗證環境的集成,工程目錄結構,各類腳本管理,以及相關文檔的整理。

驗證環境的集成指的是將底層驗證環境的向上復用,這種操作在實際項目中非常常見,也是提高驗證效率和節約人力的好方法。當testbench需要被集成復用,需要提前溝通好雙方的需求和配置方式。

工程目錄結構一般要遵守項目管理的統一安排,使得環境在需要維護時檢索效率比較高。否則,當驗證環境變得非常龐大之后,在一個結構混亂的工程目錄中找文件會非常麻煩,所以不要隨意存放文件。

環境腳本雖然不作為testbench本身的一部分,卻是維護驗證環境的必要工具。這里的腳本主要的工作有文本處理、自動化生成文件、提交仿真任務等內容,當需求發生變化,相應的腳本也就需要更新和維護。






審核編輯:劉清

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

    關注

    0

    文章

    181

    瀏覽量

    19140
  • python
    +關注

    關注

    56

    文章

    4782

    瀏覽量

    84462
  • 芯片驗證
    +關注

    關注

    5

    文章

    34

    瀏覽量

    47201
  • DUT
    DUT
    +關注

    關注

    0

    文章

    189

    瀏覽量

    12342

原文標題:芯片驗證 | 大話題:如何設計和構建Testbench

文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    testbench 設計教程

    testbench 設計教程
    發表于 09-12 12:06

    分享一些testbench的文檔教你如何寫好testbench

    這個論壇感覺說testbench的略少,分享一些testbench的文檔。。。。。
    發表于 09-08 18:03

    testbench設置的問題

    本帖最后由 平漂流 于 2017-5-21 11:09 編輯 如圖,看Verilog仿真視頻教程里面,在testbench設置時候,直接復制“blocking_vlg_tst”到top
    發表于 05-21 11:04

    LFSR testbench V1.2

    LFSR testbench The LFSR testbench can help you understand the LFSR basics: 1. Change
    發表于 05-14 11:18 ?50次下載

    Writing Testbench

    Writing Testbench:The Quebec Bridge Company was formed in 1887 and for the nextthirteen years, very
    發表于 07-10 17:30 ?0次下載
    Writing <b class='flag-5'>Testbench</b>

    編寫高效率的testbench

    編寫高效率的testbench,學習編寫測試文件的小伙伴們。
    發表于 05-11 16:40 ?16次下載

    testbench_book

    verilog Testbench
    發表于 12-13 22:20 ?3次下載

    testbench怎么寫_testbench經典教程VHDL

     testbench是一種驗證的手段。首先,任何設計都是會有輸入輸出的。但是在軟環境中沒有激勵輸入,也不會對你設計的輸出正確性進行評估。那么此時便有一種,模擬實際環境的輸入激勵和輸出校驗的一種“虛擬
    發表于 12-01 17:22 ?5.6w次閱讀
    <b class='flag-5'>testbench</b>怎么寫_<b class='flag-5'>testbench</b>經典教程VHDL

    簡單的Testbench設計

    testbench是一種驗證的手段。首先,任何設計都是會有輸入輸出的。但是在軟環境中沒有激勵輸入,也不會對你設計的輸出正確性進行評估。那么此時便有一種,模擬實際環境的輸入激勵和輸出校驗的一種“虛擬
    的頭像 發表于 03-08 14:35 ?2452次閱讀

    介紹FPGA中testbench的編寫技巧

    原來模塊中的輸入信號,定義成reg 類型,原來模塊中的輸出信號,定義為wire類型,但這里有個問題,如果在testbench中本身有一個模塊需要,如用來產生時鐘,送給要仿真的模塊,那怎么定義信號類型
    發表于 01-06 14:52 ?1921次閱讀
    介紹FPGA中<b class='flag-5'>testbench</b>的編寫技巧

    典型的UVM Testbench架構

    UVM類庫提供了通用的代碼功能,如component hierarchy、transaction level model(TLM),configuration database等等,使用戶能夠創建任何類型的Testbench架構。
    的頭像 發表于 05-22 10:14 ?2048次閱讀
    典型的UVM <b class='flag-5'>Testbench</b>架構

    testbench是什么? testbench測試的機制是什么?

    廢話不多說直接上干貨,testbench就是對寫的FPGA文件進行測試的文件,可以是verilog也可以是VHDL。
    的頭像 發表于 06-28 16:44 ?4655次閱讀
    <b class='flag-5'>testbench</b>是什么? <b class='flag-5'>testbench</b>測試的機制是什么?

    Verilog Testbench怎么寫 Verilog Testbench文件的編寫要點

    之前在使用Verilog做FPGA項目中、以及其他一些不同的場合下,零散的寫過一些練手性質的testbench文件,開始幾次寫的時候,每次都會因為一些基本的東西沒記住、寫的很不熟練,后面寫的時候稍微
    的頭像 發表于 08-01 12:44 ?3541次閱讀
    Verilog <b class='flag-5'>Testbench</b>怎么寫 Verilog <b class='flag-5'>Testbench</b>文件的編寫要點

    Testbench的基本組成和設計規則

    ??對于小型設計來說,最好的測試方式便是使用TestBench和HDL仿真器來驗證其正確性。一般TestBench需要包含這些部分:實例化待測試設計、使用測試向量激勵設計、將結果輸出到終端或波形窗口便于可視化觀察、比較實際結果和預期結果。
    的頭像 發表于 09-01 09:57 ?1168次閱讀
    <b class='flag-5'>Testbench</b>的基本組成和設計規則

    編寫高效Testbench的指南和示例

    Testbench是驗證HDL設計的主要手段,本文提供了布局和構建高效Testbench的指南以及示例。另外,本文還提供了一種示例,可以為任何設計開發自檢Testbench
    的頭像 發表于 10-29 16:14 ?140次閱讀
    編寫高效<b class='flag-5'>Testbench</b>的指南和示例