久久久精品一区ed2k-女人被男人叉到高潮的视频-中文字幕乱码一区久久麻豆樱花-俄罗斯熟妇真实视频

factory機(jī)制怎么實(shí)現(xiàn)

本篇內(nèi)容介紹了“factory機(jī)制怎么實(shí)現(xiàn)”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

精河ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

    factory其實(shí)就是一個(gè)宏,當(dāng)設(shè)計(jì)set_override等操作時(shí),才有必要去理解factory機(jī)制的原理。factory機(jī)制更多的是體現(xiàn)在內(nèi)部編程應(yīng)用上,它為眾多其他機(jī)制的實(shí)現(xiàn)提供了可能。換句話說(shuō),factory機(jī)制是UVM的內(nèi)功,那么UVM的外功自然就是field automation機(jī)制。

1.UVM認(rèn)證

    在定義一個(gè)類時(shí),UVM強(qiáng)烈建議使用uvm_component_utils或uvm_object_utils宏來(lái)注冊(cè)。UVM就知道我們定義了一個(gè)類:

class A extends uvm_component;

`uvm_component_utils(A)

....

endclass

    當(dāng)使用上述代碼注冊(cè)A后,那么要?jiǎng)?chuàng)建一個(gè)A的實(shí)例可以這樣做:

A a;

a = A::type_id::create(“a”,this);

    假設(shè)前面你的A沒有使用uvm_component_utils實(shí)例化,那么A實(shí)例化只要使用這種方式:

A a;

a = new(“a”,this);

    這種想法看上去比上一種法子更簡(jiǎn)單一些,不過(guò)上一種法子才是UVM推薦的。使用UVM認(rèn)證的方式實(shí)例化,可以使用UVM的眾多功能,而后者不行。

2.override功能

    假設(shè)我們已經(jīng)自己定義了一個(gè)my_driver,在跑80%的case的時(shí)候,這個(gè)driver是足夠使用的,但是在剩余的20%的case中,我們需要對(duì)my_driver的行為做出某些改變,這時(shí)就可以用到override功能。使用override功能的第一步要先從my_driver派生出一個(gè)類,把這個(gè)類的行為定義好:

class new_driver extends my_driver;

...

`uvm_component_utils(new_driver)

endclass

    之后,在具體的case的build_case中,調(diào)用override相關(guān)函數(shù):

class case_x extends base_test;

function void build_phase(uvm_phase phase);

...

set_type_override_by_type(my_driver::get_type(),new driver::get_type());

endfunction

endclass

    經(jīng)過(guò)上述過(guò)程之后,那么在跑case_x的時(shí)候,系統(tǒng)中運(yùn)行的my_driver就是new_driver類型的,其行為是new_driver的行為。不過(guò)這有一個(gè)前提,那就是my_driver在他的agent中實(shí)例化的時(shí)候,要使用factory的方式實(shí)例化。

class my_agent;

my_driver drv;

function void build_phase(uvm_phase phase);

...

drv=my_driver::type_id::create(“drv”,this);

endfunction

endclass

    假如不使用上面的這種寫法,而是使用drv=new(“drv”,this)的寫法進(jìn)行實(shí)例化,那么override功能是不能實(shí)現(xiàn)的。

3.factory的本質(zhì):重寫了new函數(shù)

    有了factory之后,除了可以使用類名創(chuàng)建實(shí)例之外,還可以通過(guò)一個(gè)代表類名字的字符串來(lái)進(jìn)行實(shí)例化,除此之外還可以進(jìn)行override功能。所以從本質(zhì)上看,factory機(jī)制其實(shí)是對(duì)systemverilog中new函數(shù)的重載。因?yàn)檫@個(gè)原始的new函數(shù)實(shí)在是太簡(jiǎn)單了,功能太少,經(jīng)過(guò)factory機(jī)制的改良之后,進(jìn)行實(shí)例化的方法就多了很多。

“factory機(jī)制怎么實(shí)現(xiàn)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

文章題目:factory機(jī)制怎么實(shí)現(xiàn)
瀏覽路徑:http://sd-ha.com/article44/jgshee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、網(wǎng)站收錄、移動(dòng)網(wǎng)站建設(shè)、云服務(wù)器、企業(yè)網(wǎng)站制作外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)