最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

config_db機(jī)制詳解

2022-12-06 04:13 作者:不吃蔥的酸菜魚  | 我要投稿

目錄

????????config_db機(jī)制

????????????????set函數(shù)范式

????????????????get函數(shù)范式

????????????????set和get函數(shù)的執(zhí)行順序

????????????????多層次多次發(fā)送set時(shí),set優(yōu)先級(jí)確定

config_db機(jī)制

????????前言:本篇博客詳細(xì)講解UVM中config_db機(jī)制的用法,包括不限于應(yīng)用場(chǎng)景以及config_db參數(shù)配置。

? ? ? ? 說到底,config_db機(jī)制其實(shí)就是為了傳輸“東西”而生的,這個(gè)“東西”既可以是一個(gè)uvm_object繼承而來的類,譬如interface和transaction,又可以是一個(gè)bit或者整型int等基礎(chǔ)變量。“東西”的傳輸依賴兩個(gè)函數(shù):

config_db機(jī)制分為set和get兩個(gè)操作,set和get一般都成對(duì)出現(xiàn)。

set函數(shù)范式

? ? ? ? uvm_config_db #(傳輸數(shù)據(jù)類型)::set(發(fā)送源地址, “相對(duì)于發(fā)送源的接收方地址”, “傳輸數(shù)據(jù)名稱”, 傳輸數(shù)據(jù)內(nèi)容);

? ? ? ? set:自頂向下set,如從top_tb向下driver設(shè)置參數(shù),即在top_tb中進(jìn)行set。

? ? ? ? 舉個(gè)例子,我們要用uvm_config_db傳輸一個(gè)int類型的變量var,傳遞值為var=100,傳遞到driver中,而driver被封裝成agt里,agt又被封裝到env下。那么set函數(shù)從top_tb出發(fā),可以如下寫道:

? ? ? ? uvm_config_db #(int)::set(this, "env.agt.drv", "var", 100);

????????第一個(gè)參數(shù)this和第二個(gè)參數(shù)"env.agt.drv"構(gòu)成目標(biāo)路徑,也可以寫成 set(this.env, "agt.drv", "var", 100);

????????第三個(gè)參數(shù)是傳遞給該路徑的哪個(gè)成員。

????????第四個(gè)是要設(shè)置的參數(shù)的值。

get函數(shù)范式

? ? ? ? uvm_config_db #(傳輸數(shù)據(jù)類型)::get(A, "B", "傳輸數(shù)據(jù)名稱", 傳輸數(shù)據(jù)內(nèi)容);

? ? ? ? uvm_config_db #(int)::get(this, " ", "var", var);

????????這里A和B合起來為數(shù)據(jù)接收方的地址。第一個(gè)參數(shù)必須是uvm_component實(shí)例的指針,第二個(gè)參數(shù)是相對(duì)此實(shí)例的路徑。一般來說,如果第一個(gè)參數(shù)被設(shè)置成this,第二個(gè)參數(shù)可以是一個(gè)空的字符串。

? ? ? ? 第三個(gè)參數(shù)要和set中的第三個(gè)參數(shù)嚴(yán)格一致。

????????第四個(gè)參數(shù)表示要把接收到的var變量傳遞給driver中的哪個(gè)成員變量

有些情況下的get可以省略,build_phase中的super.build_phase語句,當(dāng)執(zhí)行到driver的super.build_phase時(shí),會(huì)自動(dòng)執(zhí)行g(shù)et語句。

set和get函數(shù)的執(zhí)行順序

????????set必須要寫在get之前,一般來說,這個(gè)函數(shù)都會(huì)寫在build_phase中,build_phase的運(yùn)行順序是從層次結(jié)構(gòu)高的到層次結(jié)構(gòu)低的,假如有一個(gè)需要從sqr發(fā)送到env的數(shù)據(jù),寫在build_phase中是會(huì)報(bào)錯(cuò)的。那么就可以改變函數(shù)的位置,在env中,把函數(shù)改寫到后面的任何一個(gè)phase都是可以的。
????????如果收信和發(fā)信都寫在main_phase中,就要格外注意在時(shí)間上的先后順序,否則將會(huì)報(bào)錯(cuò)。
這是沒有發(fā)信但是收信了的情況。如果發(fā)信了但是沒有收信的,將不會(huì)報(bào)錯(cuò)。

多層次多次發(fā)送set時(shí),set優(yōu)先級(jí)確定

????????① 先以時(shí)間為準(zhǔn),最近收到的具有最高權(quán)威;

????????② 當(dāng)收到時(shí)間相同時(shí),層次越高,優(yōu)先級(jí)越低。例如,uvm_test_top與env都對(duì)driver進(jìn)行了設(shè)置,則使用uvm_test_top的設(shè)置。

注意

(1)接口傳遞一定要在run_test之前;

(2)config_db操作要在c1、c2例化之前例化前設(shè)置才能夠創(chuàng)建實(shí)例后,將變量值設(shè)置進(jìn)去。







? ? ? ??


config_db機(jī)制詳解的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
新津县| 巴中市| 涟水县| 黔西| 西昌市| 辽宁省| 浦北县| 大渡口区| 上思县| 漳平市| 定西市| 桂东县| 建湖县| 疏附县| 阿拉尔市| 夏河县| 天峻县| 阿勒泰市| 桓台县| 永定县| 云安县| 临武县| 广东省| 光山县| 武宁县| 德庆县| 平阴县| 汝州市| 冷水江市| 苍梧县| 扶绥县| 铜鼓县| 兴山县| 唐海县| 德安县| 建湖县| 乌审旗| 湖南省| 承德市| 安徽省| 南投县|