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

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

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

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

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

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

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

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

 // 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

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

在各自class中,我們都聲明了靜態(tài)屬性。在訪問靜態(tài)屬性“static_wo_p”時沒有問題,而在訪問靜態(tài)屬性
“static_with_p”時,編譯器會報錯(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);

下面這個例子更能夠展示參數(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ù)類的擴展類

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);

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

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

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

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

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

    關(guān)注

    0

    文章

    23

    瀏覽量

    8495
  • static
    +關(guān)注

    關(guān)注

    0

    文章

    33

    瀏覽量

    10322

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

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

收藏 人收藏

    評論

    相關(guān)推薦

    arcgis如何在屬性表中選擇多個屬性

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

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

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

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

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

    mapgis如何進行屬性連接

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

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

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

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

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

    dataflash靜態(tài)變量值初始會變嗎,怎么改變變量的值?

    dataflash靜態(tài)變量值初始會變嗎,怎么改變變量的值? 若系統(tǒng)啟動初始化時,不改變變量的值該怎么設(shè)變量?
    發(fā)表于 01-15 06:27

    靜態(tài)電流什么意思 靜態(tài)電流和動態(tài)電流的區(qū)別

    靜態(tài)電流什么意思 靜態(tài)電流和動態(tài)電流的區(qū)別? 靜態(tài)電流是指電荷在不發(fā)生移動的情況下所產(chǎn)生的電流。在靜電場,電荷通過金屬導(dǎo)線或其他連續(xù)的導(dǎo)電體產(chǎn)生
    的頭像 發(fā)表于 12-19 14:02 ?2009次閱讀

    input的placeholder屬性

    input的placeholder屬性是HTML5添加的一項新屬性,它用于在輸入框顯示提示文本,以幫助用戶了解所期望的輸入內(nèi)容。當(dāng)用戶點擊或聚焦在輸入框
    的頭像 發(fā)表于 11-30 10:16 ?1755次閱讀

    placeholder屬性和value屬性的差別

    在現(xiàn)代的Web設(shè)計和開發(fā),表單是至關(guān)重要的元素之一。與此同時,placeholder屬性和value屬性在表單扮演著重要的角色。本文將詳細探討這兩個
    的頭像 發(fā)表于 11-30 10:13 ?1276次閱讀

    placeholder屬性的作用

    placeholder屬性是HTML表單的一個屬性,用于為表單字段提供占位符文本。當(dāng)用戶點擊或選擇表單字段時,占位符文本會消失,用戶可以輸入自己的內(nèi)容。它的主要作用是為用戶提供一些提示信息,讓用戶
    的頭像 發(fā)表于 11-30 10:12 ?915次閱讀

    input標(biāo)簽type的屬性值有哪些

    在HTML,input標(biāo)簽的type屬性用于指定表單輸入字段的類型。下面是一些常見的type屬性值及其對應(yīng)的輸入字段類型: text:用于輸入單行文本的文本框。 password:
    的頭像 發(fā)表于 11-30 10:10 ?3783次閱讀

    Class-F VCO的實現(xiàn)方法

    圖1給出了傳統(tǒng)Class-B和Class-C結(jié)構(gòu)的LCVCO。其中Class-B是最簡單、最常見,也是最常用的結(jié)構(gòu),但其噪聲性能和FoM并不是最優(yōu)的。
    的頭像 發(fā)表于 10-31 17:04 ?2332次閱讀
    <b class='flag-5'>Class</b>-F VCO的實現(xiàn)方法

    圖撲 HT for Web 風(fēng)格屬性手冊教程

    圖撲軟件明星產(chǎn)品 HT for Web 是一套純國產(chǎn)獨立自主研發(fā)的 2D 和 3D 圖形界面可視引擎。HT for Web(以下簡稱 HT)圖元的樣式由其 Style 屬性控制,并且不同類
    的頭像 發(fā)表于 10-11 10:50 ?442次閱讀
    圖撲 HT for Web 風(fēng)格<b class='flag-5'>屬性</b>手冊教程

    靜態(tài)代碼塊、構(gòu)造代碼塊、構(gòu)造函數(shù)及普通代碼塊的執(zhí)行順序

    在Java靜態(tài)代碼塊、構(gòu)造代碼塊、構(gòu)造函數(shù)、普通代碼塊的執(zhí)行順序是一個筆試的考點,通過這篇文章希望大家能徹底了解它們之間的執(zhí)行順序。 1、靜態(tài)代碼塊 ①、格式 在java類(方法
    的頭像 發(fā)表于 10-09 15:40 ?982次閱讀
    <b class='flag-5'>靜態(tài)</b>代碼塊、構(gòu)造代碼塊、構(gòu)造函數(shù)及普通代碼塊的執(zhí)行順序