<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天內不再提示

創建約束隨機測試目標

芯片驗證工程師 ? 來源:芯片驗證工程師 ? 2023-06-17 14:06 ? 次閱讀

為了實現驗證目標,測試用例開發者需要控制測試激勵的生成以覆蓋特定的場景。測試用例開發者可以用下面這些方法控制測試激勵的創建:

添加約束條件來控制單個數據項。

使用UVM sequences來控制多個數據項的順序。這種方法提供了更多的靈活性和控制。

約束數據項

默認情況下,sequencers會生成完全隨機的數據項。測試用例編寫者可以控制生成的數據項數量,并向數據項添加約束。為了約束數據項,需要:

識別驗證組件中的數據項類和它們的字段。

創建一個數據項類的派生,增加或覆蓋默認約束。

在測試用例中,調整環境以使用新定義的數據項。

使用命令行選項指定測試用例名稱來運行仿真。

ebcde712-0c4b-11ee-962d-dac502259ad0.png

ebdb03b6-0c4b-11ee-962d-dac502259ad0.png

數據項類的定義

派生類中的幾個字段來自于DUT規格。例如,一個幀(frame)應該有一個payload被發送到DUT。其他字段的存在是為了幫助測試用例開發者控制激勵數據的生成。例如,字段parity_type不被發送到DUT,但它允許測試用例開發者輕松地指定和控制奇偶分布。這樣的控制字段被稱為 "旋鈕knobs"。

驗證組件的文檔應該列出數據項的旋鈕、它們的作用和合法范圍。

數據項約束可以來自DUT的規范,例如一個合法的幀必須有不等于0的error_bits_c。數據項中不同類型的約束對數據項的生成進行約束。例如,在約束塊default_parity_type中,奇偶校驗位被約束為90%合法(good parity)和10%非法(bad parity)。

創建一個特定的測試用例

在測試用例中,用戶可能希望改變數據項的生成方式。例如,測試用例開發者可能希望有short delays,這可以通過派生一個新的數據項類并根據需要添加約束或其他類成員來實現。

ebf1a562-0c4b-11ee-962d-dac502259ad0.png

UVM類庫的factory機制可以用來將派生類(short_delay_frame)引入到環境中。

ec01b182-0c4b-11ee-962d-dac502259ad0.png

調用factory函數set_type_override_by_type(),指示環境使用short-delay幀。有時,測試用例可能想向某一個接口發送特殊的流量,同時繼續向其他接口發送常規流量。這可以通過在一個UVM組件中使用set_inst_override_by_type()來實現。

set_inst_override_by_type("uart_env0.master.sequencer.*",
uart_frame::get_type(), short_delay_frame::get_type());


通配符也可以用來覆蓋一些組件的實例,例如:

set_inst_override_by_type("uart_env*.master.sequencer.*",
uart_frame::get_type(), short_delay_frame::get_type());

責任編輯:彭菁

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

    關注

    8

    文章

    6518

    瀏覽量

    87694
  • 仿真
    +關注

    關注

    50

    文章

    3876

    瀏覽量

    132250
  • DUT
    DUT
    +關注

    關注

    0

    文章

    184

    瀏覽量

    12016

原文標題:創建約束隨機測試用例

文章出處:【微信號:芯片驗證工程師,微信公眾號:芯片驗證工程師】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    OPC為何無創建約束變量選項?

    本帖最后由 hxfengyy 于 2016-10-24 17:11 編輯 OPC為何無創建約束變量選項?還缺什么軟件沒有安裝,請大蝦們指導,QQ:235411750
    發表于 10-24 17:07

    怎么創建時序約束?

    我是一個新鮮的FPGA,當我創建時序約束時,有一些東西錯了。NgdBuild:455 - 邏輯網'Adc_Toplevel_Adc1 / Adc_Frm_inst / IntFrmClk_n'有多個
    發表于 06-08 10:18

    設計驗證中的隨機約束

    隨機約束在現代集成電路驗證中已得到國際IC 設計業界的普遍認可,并逐漸開始普及。與傳統的定向測試比較,它在驗證效率、驗證覆蓋率等方面具有諸多優勢。最新公布的Sys
    發表于 12-14 09:54 ?13次下載

    如何創建目標數據庫

    如何創建目標數據庫 在文您將學習創建目標數據庫和所有與發起方數據庫不存在依賴關系的 Service Broker 目標
    發表于 03-26 11:54 ?1274次閱讀

    基于約束修補的多目標優化算法

    針對傳統的優化算法求解多目標動態環境經濟調度( MODEED)模型時極難獲得高質量的可行解,且收斂速度慢等問題,根據MODEED模型約束特征,設計了一種約束修補策略;然后將該策略嵌入非支配排序算法
    發表于 01-05 14:31 ?0次下載

    如何為密集的高約束PCB設計創建和管理約束

    本視頻將會概述基本的約束管理概念,并演示如何為密集的高約束 PCB 設計創建和管理約束。
    的頭像 發表于 05-17 06:01 ?1707次閱讀
    如何為密集的高<b class='flag-5'>約束</b>PCB設計<b class='flag-5'>創建</b>和管理<b class='flag-5'>約束</b>

    如何創建和管理約束密集型、高度約束的PCB設計

    這個視頻概述基本約束管理的概念和演示了如何創建和管理約束密集、高度受限的PCB設計。
    的頭像 發表于 11-07 07:08 ?2524次閱讀

    PADS約束管理系統創建、審查和驗證PCB設計約束

    墊標準+和墊專業使用的強大和易于使用的約束管理系統創建、評審和驗證PCB設計約束。
    的頭像 發表于 11-04 07:02 ?1510次閱讀

    高速列車多目標約束橫向半主動控制算法

    高速列車多目標約束橫向半主動控制算法
    發表于 06-29 14:44 ?4次下載

    鑒源論壇 · 觀模丨淺談隨機測試

    隨機測試是一種使用隨機、相互獨立的程序輸入來對計算機程序進行測試的黑盒軟件測試(在完全忽略程序內部實現細節的情況下進行
    的頭像 發表于 11-18 10:14 ?985次閱讀
    鑒源論壇 · 觀模丨淺談<b class='flag-5'>隨機</b><b class='flag-5'>測試</b>

    簡述SystemVerilog的隨機約束方法

    上一篇文章介紹了SystemVerilog的各種隨機化方法,本文將在其基礎上引入SystemVerilog的隨機約束方法(constraints)。通過使用隨機
    的頭像 發表于 01-21 17:03 ?1622次閱讀

    SystemVerilog中“軟約束”與“硬約束”的應用示例

    示例中采用的是“硬約束”,因為定義在類中的約束隨機時指定的內嵌約束“矛盾”,所以導致約束解析器解析隨機
    發表于 03-15 16:56 ?2928次閱讀

    約束隨機驗證的效果真的比直接用例測試好嗎?

    當介紹uvm驗證時大家肯定都看過上面類似的圖片,以展示受約束隨機驗證相比直接用例測試如何具有先進性。
    的頭像 發表于 04-10 11:13 ?786次閱讀

    SystemVerilog的隨機約束方法

    上一篇文章《暗藏玄機的SV隨機化》介紹了SystemVerilog的各種隨機化方法,本文將在其基礎上引入SystemVerilog的隨機約束方法(constraints)。通過使用
    的頭像 發表于 09-24 12:15 ?516次閱讀

    SV約束隨機化總結

    constraint 約束隨機化類中的變量 在main_phase 之前就已經提前產生一個變量的隨機值。 用法:一般在類中定義一個rand 類型的變量, 然后根據需求寫約束
    的頭像 發表于 12-14 14:30 ?283次閱讀
    SV<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>