那曲檬骨新材料有限公司

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

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

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

參數(shù)化Class中的靜態(tài)屬性

芯片驗(yàn)證工程師 ? 來源:片驗(yàn)證工程師 ? 作者:片驗(yàn)證工程師 ? 2022-12-02 09:17 ? 次閱讀

static屬性一般是在編譯的時(shí)候就已經(jīng)分配了內(nèi)存,并被這個(gè)類的所有實(shí)例共享,

也就是在仿真時(shí)刻0之前就已經(jīng)完成了靜態(tài)屬性的內(nèi)存分配。

但是,參數(shù)化類中的靜態(tài)屬性可能有所區(qū)別。參數(shù)化類中的靜態(tài)屬性(參數(shù)化)是在參數(shù)初始化的時(shí)候才會(huì)分配。

 // Class with parameters
 class with_param #(type T = int);
 static T static_with_p;
 endclass
 
 // Class without Parameters
 class without_param;
 static int static_wo_p;
 endclass
 
 module top;
 initial begin
 $display("static_wo_p = %0d", without_param :: 
static_wo_p);
 $display("static_with_p = %0d", with_param :: 
static_with_p);
 end
 endmodule: top

在上面的兩個(gè)class中,一個(gè)包含parameter (with_param),還有一個(gè)不包含parameter(without_param).

在各自class中,我們都聲明了靜態(tài)屬性。在訪問靜態(tài)屬性“static_wo_p”時(shí)沒有問題,而在訪問靜態(tài)屬性
“static_with_p”時(shí),編譯器會(huì)報(bào)錯(cuò)(Error或者Warning):

Warning-[PCSRMIO] Class scope used outside of class
testbench.sv, 59
"with_param::static_with_p"
An unspecialized class scope '::' reference was seen.  To access
a static member of the default specialization outside the class
'with_param', use 'with_param#( )::' instead. This will be an
error in a future release.

需要修改成下面這樣的寫法才能編譯通過。

$display("static_with_p = %0d", with_param # ( ) :: static_with_p);

下面這個(gè)例子更能夠展示參數(shù)化類中的靜態(tài)屬性非參數(shù)類中的靜態(tài)屬性的區(qū)別:

class with_param #(type T = int);
static T counter = 2;
function new;
counter++;
endfunction: new
endclass: with_param


class with_param_extend extends with_param #(real);
endclass: with_param_extend


typedef with_param #(byte) s_byte;
s_byte S1 = new( );
s_byte S2 = new( );
with_param S3 = new( );
with_param #(bit[2:0]) S4 = new( );
with_param_extend S5 = new( );
initial begin
$display ("Counter value of S1 instance = %0d", with_param 
#(byte)::counter);
$display ("Counter value of S2 instance = %0d", s_byte:: 
counter);
$display ("Counter value of S3 instance = %0d", with_param 
#()::counter);
$display ("Counter value of S4 instance = %0d", with_param 
#(bit[2:0])::counter);


$ d i s p l a y ( " C o u n t e r 
value of S5 instance =%0d",with_param_extend::counter);
end

仿真log:

Counter value of S1 instance = 4
Counter value of S2 instance = 4
Counter value of S3 instance = 3
Counter value of S4 instance = 3
Counter value of S5 instance = 3.000000
 V C S S i m u l a t i o n R e p o r t

上面的例子中S1、S2、S3、S4、S5中的參數(shù)T分別被覆蓋成byte、byte、int、bit[2:0]、real,所以只有S1(s_byte)和S2(s_byte)中的靜態(tài)屬性counter彼此共享。

參數(shù)類的擴(kuò)展類

class class1 #(type T = int);
 ….
endclass
 
class class2 #(type P = real) extends class1;


class class3 #(type P = real) extends class1 #(integer);


class class4 #(type P = real) extends class1 #(P);

上面是一個(gè)參數(shù)化類的擴(kuò)展類示例,class1是一個(gè)參數(shù)化類,參數(shù)T默認(rèn)為"int"。

class2增加了一個(gè)參數(shù)P,此時(shí)參數(shù)T為默認(rèn)的"int"

class3增加了一個(gè)參數(shù)P,此時(shí)參數(shù)T覆蓋成"integer"

class4增加了一個(gè)參數(shù)P,此時(shí)參數(shù)T也覆蓋成為P

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

    關(guān)注

    0

    文章

    23

    瀏覽量

    8577
  • static
    +關(guān)注

    關(guān)注

    0

    文章

    33

    瀏覽量

    10407

原文標(biāo)題:參數(shù)化Class中的靜態(tài)屬性

文章出處:【微信號(hào):芯片驗(yàn)證工程師,微信公眾號(hào):芯片驗(yàn)證工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何使SOLIDWORKS參數(shù)設(shè)計(jì)軟件提升效率

    SOLIDWORKS參數(shù)設(shè)計(jì)軟件-SolidKits.AutoWorks可實(shí)現(xiàn)智能選型、自動(dòng)修改產(chǎn)品屬性、產(chǎn)品參數(shù)、產(chǎn)品狀態(tài)、圖紙更新、
    的頭像 發(fā)表于 12-19 15:53 ?416次閱讀

    如何使用ADC_PRO來測試ADC的INL與DNL等靜態(tài)特性參數(shù)

    使用ADC-PRO來評(píng)估ADC的性能,動(dòng)態(tài)特性參數(shù)已可以通過MultiFFT來計(jì)算,但靜態(tài)特性參數(shù)似乎無法計(jì)算,MultiHistogram似乎只能給出與噪聲有關(guān)的參數(shù),INL與DN
    發(fā)表于 12-10 06:29

    請問靜態(tài)變量如何放到flash

    比如有有很多的靜態(tài)變量,如何防到flash。 我用了const修飾,編譯出來,但是還是在rodate段,該段不是在80k的ram嗎?
    發(fā)表于 07-12 09:26

    FPGA設(shè)計(jì),對SPI進(jìn)行參數(shù)結(jié)構(gòu)設(shè)計(jì)

    今天給大俠帶來FPGA設(shè)計(jì),對SPI進(jìn)行參數(shù)結(jié)構(gòu)設(shè)計(jì),話不多說,上貨。 為了避免每次SPI驅(qū)動(dòng)重寫,直接參數(shù),盡量一勞永逸。S
    發(fā)表于 05-07 16:09

    如何設(shè)置靜態(tài)IP代理

    靜態(tài)IP
    jf_60146132
    發(fā)布于 :2024年04月29日 07:46:31

    FPGA設(shè)計(jì),對SPI進(jìn)行參數(shù)結(jié)構(gòu)設(shè)計(jì)

    今天給大俠帶來FPGA設(shè)計(jì),對SPI進(jìn)行參數(shù)結(jié)構(gòu)設(shè)計(jì),話不多說,上貨。 為了避免每次SPI驅(qū)動(dòng)重寫,直接參數(shù),盡量一勞永逸。S
    發(fā)表于 04-11 18:29

    如何調(diào)整S7-1500S7-GRAPH FB的保持性屬性

    FB 塊屬性“優(yōu)化的塊訪問”默認(rèn)勾選并且顯示灰色無法操作,如圖 2 所示。對于需要從CPU停止時(shí)所處步號(hào)繼續(xù)運(yùn)行的應(yīng)用場合,必須設(shè)置保持性屬性為“保持”。
    發(fā)表于 04-03 09:17 ?844次閱讀
    如何調(diào)整S7-1500<b class='flag-5'>中</b>S7-GRAPH FB的保持性<b class='flag-5'>屬性</b>

    arcgis圖層字段怎么批量輸入屬性

    對于ArcGIS圖層字段的批量輸入屬性,可以通過以下步驟完成: 打開ArcMap軟件,并加載需要編輯屬性的圖層。 在ArcMap的主菜單,選擇“編輯(Edit)”選項(xiàng),然后選擇“開始編輯
    的頭像 發(fā)表于 02-25 14:15 ?5211次閱讀

    arcgis如何在屬性表中選擇多個(gè)屬性

    在ArcGIS,你可以通過多種方式來選擇屬性的多個(gè)屬性。下面是一些常用的方法: 方法一:使用Select by Attributes工具 在ArcGIS的
    的頭像 發(fā)表于 02-25 11:10 ?1.5w次閱讀

    arcgis按屬性選擇not(t)怎么用

    ArcGIS是一款強(qiáng)大的地理信息系統(tǒng)軟件,用于處理和分析地理數(shù)據(jù)。通過屬性選擇工具,用戶可以基于數(shù)據(jù)的屬性條件來選擇特定的要素。 在ArcGIS屬性選擇的語法是基于結(jié)構(gòu)
    的頭像 發(fā)表于 02-25 11:08 ?4383次閱讀

    arcgis如何關(guān)聯(lián)兩個(gè)屬性

    在ArcGIS,關(guān)聯(lián)兩個(gè)屬性表是一個(gè)重要的操作,可以通過此操作將兩個(gè)表的數(shù)據(jù)關(guān)聯(lián)起來,以便進(jìn)行分析和查詢。下面是詳細(xì)介紹如何在ArcGIS實(shí)現(xiàn)
    的頭像 發(fā)表于 02-25 11:01 ?4475次閱讀

    mapgis如何進(jìn)行屬性連接

    MapGIS是一種強(qiáng)大的GIS(地理信息系統(tǒng))軟件,它提供了許多功能來處理和分析空間數(shù)據(jù)。在MapGIS屬性連接是一種非常有用的功能,它可以將兩個(gè)或多個(gè)地圖層屬性信息進(jìn)行關(guān)聯(lián)和
    的頭像 發(fā)表于 02-25 10:59 ?1764次閱讀

    mapgis區(qū)屬性參數(shù)

    MapGIS是一種基于地圖信息系統(tǒng)的軟件平臺(tái),它提供了豐富的地理空間數(shù)據(jù)處理和空間數(shù)據(jù)分析功能,可以幫助用戶進(jìn)行空間數(shù)據(jù)的可視、查詢、分析和決策。其中一項(xiàng)重要的功能就是區(qū)屬性參數(shù),也稱為區(qū)域
    的頭像 發(fā)表于 02-25 10:56 ?1170次閱讀

    mapgis如何給區(qū)屬性賦值

    地進(jìn)行數(shù)據(jù)分析和可視。 在MapGIS給區(qū)屬性賦值有多種方法,下面將詳細(xì)介紹其中的幾種常用方法。 1.手動(dòng)賦值 手動(dòng)賦值是最直接和簡單的方法。首先,在MapGIS打開需要進(jìn)行
    的頭像 發(fā)表于 02-23 17:49 ?2404次閱讀

    proteus屬性賦值工具怎么用

    Proteus是一種電路設(shè)計(jì)和仿真軟件,在進(jìn)行電路設(shè)計(jì)和仿真時(shí),屬性賦值是非常重要的步驟。屬性賦值工具可以幫助用戶快速有效地配置電路元件的屬性,從而實(shí)現(xiàn)電路的準(zhǔn)確仿真。下面是關(guān)于Proteus
    的頭像 發(fā)表于 02-23 17:19 ?4832次閱讀
    网络百家乐官网模拟投注| 海王星百家乐官网的玩法技巧和规则 | 明升国际娱乐| 大发888中文官网| 真博百家乐的玩法技巧和规则| 百家乐赌博机假在哪里| 属猪属蛇做生意怎么样| 威尼斯人娱乐的微博| 金满堂百家乐的玩法技巧和规则 | 唐人博彩| 亚洲顶级赌场 网投领导者| sz新全讯网新112| 百家乐玩法说| 任我赢百家乐软件| 百家乐缆法排行榜| 百家乐台布21点| 墓地风水24山| 百家乐官网路单生| 万龙百家乐官网的玩法技巧和规则 | 百家乐破解版| 百家乐游戏开发软件| 百家乐三珠投注法| 百家乐贴| 网上百家乐哪家较安全| 百家乐有没有破解之法| 老钱庄百家乐的玩法技巧和规则| 恒利百家乐的玩法技巧和规则| 新锦江百家乐的玩法技巧和规则| 棋牌百家乐有稳赚的方法吗 | 三公百家乐官网在线哪里可以| 阴宅24山吉凶| 百家乐里面的奥妙| 百家乐注册开户送彩金| 赌博百家乐判断决策| 百家乐赌博工具| 真人百家乐赌场娱乐网规则| 路单百家乐的玩法技巧和规则| 西游记百家乐娱乐城| 现金二八杠游戏| bet365维护| 皇冠娱乐城|