在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一種可重用constraint的實(shí)現(xiàn)方法

sanyue7758 ? 來源:驗(yàn)證芯發(fā)現(xiàn) ? 2023-05-04 10:17 ? 次閱讀

近期看到一種關(guān)于約束的復(fù)用方法,總結(jié)分享如下。

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

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

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

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

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

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

借鑒類似的思路,可以將隨機(jī)參數(shù)和其約束分離開來,將隨機(jī)約束視作對原參數(shù)的"裝飾",進(jìn)而達(dá)到動態(tài)、可復(fù)用隨機(jī)約束的目的。

一個(gè)實(shí)例的類圖結(jié)構(gòu)如下:

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

在這種結(jié)構(gòu)下,大致分為兩層:
第一層是包含隨機(jī)參數(shù)的激勵(lì)定義層,item僅包含隨機(jī)參數(shù)的聲明,不包含參數(shù)的約束內(nèi)容。constrainted_item繼承于item,不包含直接的參數(shù)約束,而是通過add_instance_cons方法,動態(tài)的添加對隨機(jī)參數(shù)的約束。
第二層是約束實(shí)現(xiàn)層,抽象類abstract_constraint僅包含item類,不實(shí)現(xiàn)對tem參數(shù)的具體約束,不同的約束由可重用的子類實(shí)現(xiàn),即圖中的reusable_cons實(shí)現(xiàn)。

相關(guān)參考代碼如下。

隨機(jī)參數(shù)定義:

class item;
    rand int val;
endclass

class constrained_item extends item;
    `constraints_utils(item)
endclass

抽象和約束實(shí)現(xiàn)定義:

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

動態(tài)添加約束和隨機(jī):

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實(shí)現(xiàn)代碼如下:

`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內(nèi)部包含了一個(gè)rand類型的instance_constraints隊(duì)列,用于存儲分離約束的句柄。同時(shí)only_even_values內(nèi)也包含了指向constrained_item的句柄。當(dāng)constrained_item進(jìn)行randomize時(shí),instance_constraints隊(duì)列也會隨機(jī),在only_even_values內(nèi)完成對constrained_item的參數(shù)約束。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • Constraint
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    7110

原文標(biāo)題:一種可重用constraint的實(shí)現(xiàn)方法:參數(shù)/隨機(jī)約束分離

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

收藏 人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    C語言接口與實(shí)現(xiàn)--創(chuàng)建重用軟件的技術(shù)

    C語言接口與實(shí)現(xiàn)--創(chuàng)建重用軟件的技術(shù)
    發(fā)表于 11-07 17:17

    c接口和實(shí)現(xiàn):創(chuàng)建重用軟件的技術(shù) 源碼下載

    c接口和實(shí)現(xiàn):創(chuàng)建重用軟件的技術(shù) 源碼分享關(guān)于如何設(shè)計(jì)、實(shí)現(xiàn)和有效使用庫函數(shù)的指南少之又少(如果說還有的話)。這本書作填補(bǔ)了這個(gè)空白。它可以作為下
    發(fā)表于 02-07 21:21

    一種基于FPGA的DSU硬件實(shí)現(xiàn)方法

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

    一種高檔FPGA重構(gòu)配置方法

    求大神分享一種高檔FPGA重構(gòu)配置方法
    發(fā)表于 04-29 06:16

    經(jīng)典C語言接口與實(shí)現(xiàn):創(chuàng)建重用軟件的技術(shù)

    )倡導(dǎo)基于接口的C語言設(shè)計(jì)理念及其實(shí)現(xiàn)技術(shù),深入詳細(xì)地描述了24個(gè)C語言接口及其實(shí)現(xiàn)。C語言接口與實(shí)現(xiàn)(創(chuàng)建重用軟件的技術(shù))通過敘述如何用
    發(fā)表于 09-25 06:42

    μClinux下實(shí)時(shí)任務(wù)的一種實(shí)現(xiàn)方法

    文中以ARM7 TDMI 處理器為例,闡述了μClinux 進(jìn)程調(diào)度的原理。根據(jù)該原理,提出了一種在μClinux 平臺下實(shí)現(xiàn)實(shí)時(shí)任務(wù)的設(shè)計(jì)方法,這種方法較簡單,易于
    發(fā)表于 08-29 09:19 ?11次下載

    一種特殊陣列實(shí)現(xiàn)DOA估計(jì)的方法

    一種特殊陣列實(shí)現(xiàn)DOA估計(jì)的方法:提出了一種基于特殊陣列形式實(shí)現(xiàn)doa估計(jì)的方法,在均勻線性陣列
    發(fā)表于 03-18 16:18 ?19次下載

    Boost電路的一種軟開關(guān)實(shí)現(xiàn)方法

    Boost電路的一種軟開關(guān)實(shí)現(xiàn)方法 摘要:提出了一種Boost電路軟開關(guān)實(shí)現(xiàn)方法
    發(fā)表于 07-11 10:12 ?8872次閱讀
    Boost電路的<b class='flag-5'>一種</b>軟開關(guān)<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>方法</b>

    電池容量計(jì)的一種實(shí)現(xiàn)方法

    電池容量計(jì)的一種實(shí)現(xiàn)方法 摘要:介紹一種計(jì)量電池容量的方法,即對電池充進(jìn)能量和放出能量進(jìn)行計(jì)算并乘以相應(yīng)的損失系數(shù)從而指示電池的容量。采用
    發(fā)表于 07-21 14:41 ?1025次閱讀
    電池容量計(jì)的<b class='flag-5'>一種</b><b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>方法</b>

    一種新型SVPWM調(diào)制方法的研究與實(shí)現(xiàn)

    一種新型SVPWM調(diào)制方法的研究與實(shí)現(xiàn)。
    發(fā)表于 03-30 14:40 ?7次下載

    一種基于DSP脈寬調(diào)制電路實(shí)現(xiàn)方法的研究

    一種基于DSP脈寬調(diào)制電路實(shí)現(xiàn)方法的研究
    發(fā)表于 06-17 16:48 ?14次下載

    《C語言接口與實(shí)現(xiàn):創(chuàng)建重用軟件的技術(shù)》電子教材免費(fèi)下載

    《C語言接口與實(shí)現(xiàn):創(chuàng)建重用軟件的技術(shù)》概念清晰、實(shí)例詳盡,是本有關(guān)設(shè)計(jì)、實(shí)現(xiàn)和有效使用C語言庫函數(shù),掌握創(chuàng)建
    發(fā)表于 08-27 08:00 ?32次下載

    一種新型量測影像與GPS、IMU組合的導(dǎo)航方法

    本文提出了一種基于量測影像與衛(wèi)星、慣性組合導(dǎo)航方法,研究了系統(tǒng)框架、實(shí)現(xiàn)原理和關(guān)鍵技術(shù)。
    的頭像 發(fā)表于 01-01 13:37 ?8645次閱讀
    <b class='flag-5'>一種</b>新型<b class='flag-5'>可</b>量測影像與GPS、IMU組合的導(dǎo)航<b class='flag-5'>方法</b>

    C語言接口與實(shí)現(xiàn)創(chuàng)建重用軟件的技術(shù)PDF電子書免費(fèi)下載

    《C語言接口與實(shí)現(xiàn):創(chuàng)建重用軟件的技術(shù)》概念清晰、實(shí)例詳盡,是本有關(guān)設(shè)計(jì)、實(shí)現(xiàn)和有效使用C語言庫函數(shù),掌握創(chuàng)建
    發(fā)表于 05-11 08:00 ?19次下載
    C語言接口與<b class='flag-5'>實(shí)現(xiàn)</b>創(chuàng)建<b class='flag-5'>可</b><b class='flag-5'>重用</b>軟件的技術(shù)PDF電子書免費(fèi)下載

    一種基于緩存塊重用信息的動態(tài)旁路策略

    非易失性存儲器具有能耗低、擴(kuò)展性強(qiáng)和存儲密度大等優(yōu)勢,替代傳統(tǒng)靜態(tài)隨機(jī)存取存儲器作為片上緩存,但其寫操作的能耗及延遲較高,在大規(guī)模應(yīng)用前需優(yōu)化寫性能。提出一種基于緩存塊重用信息的動
    發(fā)表于 04-29 15:48 ?4次下載
    <b class='flag-5'>一種</b>基于緩存塊<b class='flag-5'>重用</b>信息的動態(tài)旁路策略
    主站蜘蛛池模板: 久久久久久久国产精品电影 | 成人午夜毛片 | 欧美成人eee在线 | 亚洲资源在线视频 | 成人夜夜 | 亚洲第一免费视频 | aaaaaaa毛片 | 来吧成人综合网 | 天天做天天摸 | 3344成年在线视频免费播放男男 | 最新黄色大片 | 美女被玩 | 日韩毛片网 | 午夜爽爽爽 | 2021久久精品国产99国产精品 | 欧美色欧美亚洲高清在线观看 | 在线观看免费视频国产 | 国产一区二区丁香婷婷 | 97夜夜澡人人爽人人喊一欧美 | 亚洲欧美视频在线播放 | 四虎影午夜成年免费精品 | 亚洲五月婷婷 | 黄蓉h肉辣文大全 | 奇米影视亚洲春色77777 | 成人亚洲欧美综合 | 青青青草国产 | aⅴ天堂| 日本毛片在线观看 | 天天做天天爱天天干 | 99久久精品免费观看国产 | 久久99爰这里有精品国产 | 最近视频在线播放免费观看 | 免费在线观看一区二区 | 女人张开腿让男人做爽爽 | 在线激情网 | 午夜国产大片免费观看 | 4338×亚洲全国最大色成网站 | 免费在线观看黄色 | 可以免费看的黄色片 | 777色淫网站女女免费 | 日韩激情淫片免费看 |