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

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

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

3天內不再提示

列舉一下有趣的Systemverilog數組約束示例

sanyue7758 ? 來源:芯片驗證工程師 ? 2023-05-04 17:35 ? 次閱讀

我們在工作中常常會針對數組施加各式的約束,下面列舉一下有趣的Systemverilog數組約束示例:

1、如何約束動態數組的最后一個元素為特定值。(事先不知道數組的大小)

randintsome_dynamic_array[];
constraint last_elem_c {
  some_dynamic_array[some_dynamic_array.size() - 1] == 5;
}
上面是最先想到的寫法,但是會報錯,因為SV約束語法不允許使用size()或任何其他隨機值作為索引。所以只能修改代碼:
constraint last_elem_c {
  foreach(some_dynamic_array[i])
    if (i == some_dynamic_array.size() - 1)
      some_dynamic_array[i] == 5;
}
2、約束數組中必須包含一個特定的值2。
constraint contains_c {
  2 inside { some_dynamic_array };
}
相反,如果我們約束數組中不包含值2呢?
constraint not_contains_c {
  !(2 inside { some_dynamic_array });
}
3、約束數組中每個值都是唯一的。
constraint all_elems_unique_c {
  unique { some_dynamic_array };
}
這個約束非常簡短高效,等價于下面這段冗長的代碼:
constraint all_elems_unique_c {
  foreach (some_dynamic_array[i])
    foreach (some_dynamic_array[j])
      if (i != j)
        some_dynamic_array[i] != some_dynamic_array[j];
}
上面這段代碼雖然冗長,確是我們開發數組約束的一個通用框架。 4、約束2個數組相等。如果數組是packed可以直接使用==,如果數組是unpacked,則不行。 packed array約束:
rand bit[9:0][3:0] some_packed_array, some_other_packed_array;


constraint packed_arrays_equal_c {
  some_packed_array == some_other_packed_array;
}
unpacked array約束:
rand bit[3:0] some_unpacked_array[10], some_other_unpacked_array[10];


constraint unpacked_arrays_equal_c {
  foreach (some_other_unpacked_array[i])
    some_other_unpacked_array[i] == some_unpacked_array[i];
}



審核編輯:劉清

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

    關注

    0

    文章

    113

    瀏覽量

    8213

原文標題:一些有趣的數組相關的SystemVerilog 約束

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

收藏 人收藏

    評論

    相關推薦

    Foreach對Associative Array的constraint約束問題記錄分享

    systemverilog constraint中的foreach可以對數組進行遍歷和約束,常用于普通數組,隊列或者動態數組
    的頭像 發表于 08-21 09:31 ?1171次閱讀
    Foreach對Associative Array的constraint<b class='flag-5'>約束</b>問題記錄分享

    請問一下有關壓電超聲換能器的問題

     請問一下有關壓電超聲換能器有個是接收。。個是發射!他們的 安裝的順序有要求嗎?怎么來區分哪個是發射·
    發表于 03-22 18:20

    咨詢一下有什么雙積分型的ADC推薦嗎?

    咨詢一下有什么雙積分型的ADC推薦嗎?幾乎找不到這種芯片啊,ADITI官網上都沒有找到
    發表于 02-19 17:09

    能幫忙看一下有什么問題么 數組拆分合并的

    按照教程把excel的內容創建成了數組,現在想把數組的前兩行拆成數組,所以用了索引數組,索引出兩行,也就是兩個
    發表于 11-12 10:57

    請教一下有哪些ARM的DMA電路呢

    請教一下有哪些arm的DMA電路,現在看到的是DMA330,用的bus好像是AXI的,有沒有AHB bus的DMA(ARM設計),謝謝
    發表于 06-02 09:33

    電磁爐加熱一下就停一下什么原因及解決辦法

    電磁爐有時會出現加熱故障,現象是熱一下一下在熱一下又停一下,基本隔
    發表于 03-18 09:02 ?27.4w次閱讀

    Systemverilog event的示例

    event是SystemVerilog語言中的個強大特性,可以支持多個并發進程之間的同步。
    的頭像 發表于 10-17 10:21 ?1517次閱讀

    簡述SystemVerilog的隨機約束方法

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

    使用SystemVerilog解決數組問題

    數獨是種非常流行的游戲,數獨本質上也是約束問題,所以我們可以讓SystemVerilog約束求解器來幫助我們解決。
    的頭像 發表于 03-08 14:06 ?1519次閱讀

    有趣數組相關的SystemVerilog約束

    我們在工作中常常會針對數組施加各式的約束,下面列舉一下有趣Systemverilog數組
    的頭像 發表于 03-08 13:12 ?918次閱讀

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

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

    有趣數組相關的SystemVerilog約束

    我們在工作中常常會針對數組施加各式的約束,下面列舉一下有趣的**Systemverilog數組
    的頭像 發表于 05-30 11:13 ?750次閱讀

    帶你了解SystemVerilog中的關聯數組

    SystemVerilog中,我們知道可以使用動態數組實現數組元素個數的動態分配,即隨用隨分
    的頭像 發表于 06-09 09:46 ?7294次閱讀
    帶你了解<b class='flag-5'>SystemVerilog</b>中的關聯<b class='flag-5'>數組</b>

    SystemVerilog里的regions以及events的調度

    本文講一下SystemVerilog的time slot里的regions以及events的調度。SystemVerilog語言是根據離散事件執行模型定義的,由events驅動。
    的頭像 發表于 07-12 11:20 ?1483次閱讀
    <b class='flag-5'>SystemVerilog</b>里的regions以及events的調度

    SystemVerilog的隨機約束方法

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