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

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

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

3天內不再提示

一種可重用constraint的實現方法

sanyue7758 ? 來源:驗證芯發現 ? 2023-05-04 10:17 ? 次閱讀

近期看到一種關于約束的復用方法,總結分享如下。

在不同的用例中,隨機參數的隨機約束不會完全一致,最典型的就是錯誤或者異常用例的非法取值約束。對于這種不同的約束,常見的處理辦法就是繼承,并重寫原有參數的約束,如下所示。

class item;
rand bit[3:0] A;
constraint c{
    A > 0;
}
//....
endclass

class abnormal_item;
constraint c{
    A == 0;//覆蓋原有的A>0約束
}
//....
endclass

除了存在可能的過度繼承問題,繼承方式是一種"靜態"的is-a關系,一旦abnormal_item確定后,參數的約束就已確定,不具備動態添加或者刪除約束的能力。

到這里,提一下Decorator Pattern(裝飾者模式)。Decorator Pattern大致是一種這樣的思路:

在Decorator Pattern的結構中,可以動態地給一個對象添加新的功能,同時又不改變其結構,將對象的行為分為核心功能和可選功能。核心功能指對象最基本的職責,而可選功能則是在不改變核心職責的情況下增加的功能。通過使用裝飾者模式,可以動態地將可選功能裝飾在核心功能之上,使對象的功能更加靈活......

借鑒類似的思路,可以將隨機參數和其約束分離開來,將隨機約束視作對原參數的"裝飾",進而達到動態、可復用隨機約束的目的。

一個實例的類圖結構如下:

660c26f2-e7e3-11ed-ab56-dac502259ad0.png

在這種結構下,大致分為兩層:
第一層是包含隨機參數的激勵定義層,item僅包含隨機參數的聲明,不包含參數的約束內容。constrainted_item繼承于item,不包含直接的參數約束,而是通過add_instance_cons方法,動態的添加對隨機參數的約束。
第二層是約束實現層,抽象類abstract_constraint僅包含item類,不實現對tem參數的具體約束,不同的約束由可重用的子類實現,即圖中的reusable_cons實現。

相關參考代碼如下。

隨機參數定義:

class item;
    rand int val;
endclass

class constrained_item extends item;
    `constraints_utils(item)
endclass

抽象和約束實現定義:

virtual class abstract_constraint #(type T = int);

  protected T object;

  function void set_object(T object);
    this.object = object;
  endfunction
endclass

class only_even_values extends abstract_constraint #(item);
    constraint c {
      object.val % 2 == 0;
    }
endclass

動態添加約束和隨機:

initial begin
    automatic constrained_item i = new();
    automatic only_even_values only_even = new();
    i.add_instance_constraint(only_even);

    repeat (100) begin
      if (!i.randomize())
        $fatal(0, "Randomization failure");
      //....
    end
end

上述的constraints_utils實現代碼如下:

`define constraints_utils(TYPE) 
...
  local rand constraints::abstract_constraint #(TYPE) instance_constraints[$]; 
  function void add_instance_constraint(constraints::abstract_constraint #(TYPE) c); 
    constraints::abstract_constraint #(TYPE) c_copy = new c; 
    c_copy.set_object(this); 
    instance_constraints.push_back(c_copy); 
  endfunction 
...

可以看到,constrained_item內部包含了一個rand類型的instance_constraints隊列,用于存儲分離約束的句柄。同時only_even_values內也包含了指向constrained_item的句柄。當constrained_item進行randomize時,instance_constraints隊列也會隨機,在only_even_values內完成對constrained_item的參數約束。





審核編輯:劉清

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

    關注

    0

    文章

    2

    瀏覽量

    6997

原文標題:一種可重用constraint的實現方法:參數/隨機約束分離

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

收藏 人收藏

    評論

    相關推薦

    C語言接口與實現--創建重用軟件的技術

    C語言接口與實現--創建重用軟件的技術
    發表于 11-07 17:17

    c接口和實現:創建重用軟件的技術 源碼下載

    c接口和實現:創建重用軟件的技術 源碼分享關于如何設計、實現和有效使用庫函數的指南少之又少(如果說還有的話)。這本書作填補了這個空白。它可以作為下
    發表于 02-07 21:21

    一種基于FPGA的DSU硬件實現方法

    摘要:為了實現對非相干雷達的接收相參處理,基于數字穩定校正(DSU)的原理,采用ALTERA公司的StratixⅡ系列芯片和VHDL編程語言,設計了一種基于FPGA的DSU硬件實現方法
    發表于 06-28 08:27

    一種高檔FPGA重構配置方法

    求大神分享一種高檔FPGA重構配置方法
    發表于 04-29 06:16

    經典C語言接口與實現:創建重用軟件的技術

    )倡導基于接口的C語言設計理念及其實現技術,深入詳細地描述了24個C語言接口及其實現。C語言接口與實現(創建重用軟件的技術)通過敘述如何用
    發表于 09-25 06:42

    μClinux下實時任務的一種實現方法

    文中以ARM7 TDMI 處理器為例,闡述了μClinux 進程調度的原理。根據該原理,提出了一種在μClinux 平臺下實現實時任務的設計方法,這種方法較簡單,易于
    發表于 08-29 09:19 ?11次下載

    一種特殊陣列實現DOA估計的方法

    一種特殊陣列實現DOA估計的方法:提出了一種基于特殊陣列形式實現doa估計的方法,在均勻線性陣列
    發表于 03-18 16:18 ?19次下載

    Boost電路的一種軟開關實現方法

    Boost電路的一種軟開關實現方法 摘要:提出了一種Boost電路軟開關實現方法
    發表于 07-11 10:12 ?7879次閱讀
    Boost電路的<b class='flag-5'>一種</b>軟開關<b class='flag-5'>實現</b><b class='flag-5'>方法</b>

    電池容量計的一種實現方法

    電池容量計的一種實現方法 摘要:介紹一種計量電池容量的方法,即對電池充進能量和放出能量進行計算并乘以相應的損失系數從而指示電池的容量。采用
    發表于 07-21 14:41 ?919次閱讀
    電池容量計的<b class='flag-5'>一種</b><b class='flag-5'>實現</b><b class='flag-5'>方法</b>

    一種新型SVPWM調制方法的研究與實現

    一種新型SVPWM調制方法的研究與實現
    發表于 03-30 14:40 ?7次下載

    一種基于DSP脈寬調制電路實現方法的研究

    一種基于DSP脈寬調制電路實現方法的研究
    發表于 06-17 16:48 ?14次下載

    《C語言接口與實現:創建重用軟件的技術》電子教材免費下載

    《C語言接口與實現:創建重用軟件的技術》概念清晰、實例詳盡,是本有關設計、實現和有效使用C語言庫函數,掌握創建
    發表于 08-27 08:00 ?32次下載

    一種新型量測影像與GPS、IMU組合的導航方法

    本文提出了一種基于量測影像與衛星、慣性組合導航方法,研究了系統框架、實現原理和關鍵技術。
    的頭像 發表于 01-01 13:37 ?8256次閱讀
    <b class='flag-5'>一種</b>新型<b class='flag-5'>可</b>量測影像與GPS、IMU組合的導航<b class='flag-5'>方法</b>

    C語言接口與實現創建重用軟件的技術PDF電子書免費下載

    《C語言接口與實現:創建重用軟件的技術》概念清晰、實例詳盡,是本有關設計、實現和有效使用C語言庫函數,掌握創建
    發表于 05-11 08:00 ?18次下載
    C語言接口與<b class='flag-5'>實現</b>創建<b class='flag-5'>可</b><b class='flag-5'>重用</b>軟件的技術PDF電子書免費下載

    一種基于緩存塊重用信息的動態旁路策略

    非易失性存儲器具有能耗低、擴展性強和存儲密度大等優勢,替代傳統靜態隨機存取存儲器作為片上緩存,但其寫操作的能耗及延遲較高,在大規模應用前需優化寫性能。提出一種基于緩存塊重用信息的動
    發表于 04-29 15:48 ?4次下載
    <b class='flag-5'>一種</b>基于緩存塊<b class='flag-5'>重用</b>信息的動態旁路策略