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

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

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

SystemVerilog中的類的賦值

芯片驗證工程師 ? 來源:芯片驗證工程師 ? 作者:芯片驗證工程師 ? 2022-11-21 10:35 ? 次閱讀

當(dāng)我們聲明一個類時還沒有分配內(nèi)存,只有在實例化(new())時才會分配內(nèi)存。這個時候?qū)ο缶浔?strong>指向被分配的內(nèi)存,下面是對象句柄賦值的示例:

class PCI;
 ……
 endclass
 PCI p1; //a variable 'p1' of type PCI is created.
 //Memory is not allocated.
 p1 = new; //this is where memory is allocated for 'p1'.

 PCI p2;
 p2 = p1; //class assignment

在上面的例子中,p2是一個PCI類型的變量(尚未完成實例化分配內(nèi)存),而p1是一個完成了實例化的對象句柄。

當(dāng)賦值p2 = p1時,實際上還是只有一個對象,“p1”和“P2”對象句柄現(xiàn)在都指向相同的內(nèi)存空間。

正因為它們都指向相同的內(nèi)存空間,所以“p1”對象的變化將反映到“p2”對象,反之亦然。

96fac5d6-675d-11ed-8abf-dac502259ad0.png

module class_TOP( );
 class PCITop;
 logic [31:0] addr;
 logic [31:0] data;
 function void disp (string instName);
 
 $display("[%s] addr = %h data = %h", instName, 
addr, data);
 endfunction
 endclass : PCITop
 
 PCITop PCI1, PCI2;
 
 initial begin;
 PCI1 = new;//create object PCI1
 PCI2 = PCI1; //class assignment
 PCI1.addr = 'h1234_5678; //using PCI1 handle
 PCI1.data = 'hf0f0_f0f0;
 PCI1.disp("PCI1");
 PCI2.disp("PCI2");
 PCI2.addr = 'h8765_4321; //using PCI2 handle
 PCI2.data = 'hff_0101;
 PCI1.disp("PCI1");
 PCI2.disp("PCI2");
 end
 endmodule

仿真log:

[PCI1] addr = 12345678 data = f0f0f0f0
[PCI2] addr = 12345678 data = f0f0f0f0
[PCI1] addr = 87654321 data = ffff0101
[PCI2] addr = 87654321 data = ffff0101
 V C S S i m u l a t i o n R e p o r t

上面的例子中,我們對對象“PCI1”的修改能反映到“PCI2”,對對象“PCI2”的修改也反映到了“PCI1”。

審核編輯:湯梓紅

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

    關(guān)注

    8

    文章

    3031

    瀏覽量

    74119
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1351

    瀏覽量

    110141
  • System
    +關(guān)注

    關(guān)注

    0

    文章

    165

    瀏覽量

    36984

原文標(biāo)題:SystemVerilog中的類的賦值

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

收藏 人收藏

    評論

    相關(guān)推薦

    SystemVerilog構(gòu)造函數(shù)new

    systemverilog,如果一個沒有顯式地聲明構(gòu)造函數(shù)(new()),那么編譯仿真工具會自動提供一個隱式的new()函數(shù)。這個new函數(shù)會默認(rèn)地將所有屬性變量。
    發(fā)表于 11-16 09:58 ?3654次閱讀

    SystemVerilog的Virtual Methods

    SystemVerilog多態(tài)能夠工作的前提是父的方法被聲明為virtual的。
    發(fā)表于 11-28 11:12 ?713次閱讀

    SystemVerilog的聯(lián)合(union)介紹

    SystemVerilog ,聯(lián)合只是信號,可通過不同名稱和縱橫比來加以引用。
    的頭像 發(fā)表于 10-08 15:45 ?1418次閱讀
    <b class='flag-5'>SystemVerilog</b><b class='flag-5'>中</b>的聯(lián)合(union)介紹

    SpinalHDLBundle與普通數(shù)據(jù)類型之間的連接賦值轉(zhuǎn)換

    SpinalHDLBundle與SystemVerilog的packed struct很像,在某些場景下,與普通數(shù)據(jù)類型之間的連接賦值可以通過asBits,assignFromBi
    發(fā)表于 10-18 14:22

    更好地理解SystemVerilog的多態(tài)Polymorphism

    多態(tài)(Polymorphism) ,從字面意思上看指的是多種形式,在OOP(面向?qū)ο缶幊?中指的是同一個父的函數(shù)可以體現(xiàn)為不同的行為。在SystemVerilog,指的是我們可以使用父
    發(fā)表于 12-05 17:34

    PHP傳值賦值和引用賦值的詳細(xì)資料詳解

    本文檔的主要內(nèi)容詳細(xì)介紹的是PHP傳值賦值和引用賦值的詳細(xì)資料詳解。
    發(fā)表于 03-06 17:04 ?5次下載
    PHP<b class='flag-5'>中</b>傳值<b class='flag-5'>賦值</b>和引用<b class='flag-5'>賦值</b>的詳細(xì)資料詳解

    verilog阻塞賦值和非阻塞賦值到底有什么區(qū)別

    1、阻塞賦值操作符用等號(即 = )表示?!白枞笔侵冈谶M(jìn)程語句(initial和always),當(dāng)前的賦值語句阻斷了其后的語句,也就是說后面的語句必須等到當(dāng)前的賦值語句執(zhí)行完畢才能
    發(fā)表于 04-25 08:00 ?0次下載
    verilog<b class='flag-5'>中</b>阻塞<b class='flag-5'>賦值</b>和非阻塞<b class='flag-5'>賦值</b>到底有什么區(qū)別

    SystemVerilog$cast的應(yīng)用

    SystemVerilog casting意味著將一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型。在將一個變量賦值給另一個變量時,SystemVerilog要求這兩個變量具有相同的數(shù)據(jù)類型。
    的頭像 發(fā)表于 10-17 14:35 ?2880次閱讀

    SystemVerilog的struct

    SystemVerilog“struct”表示相同或不同數(shù)據(jù)類型的集合。
    的頭像 發(fā)表于 11-07 10:18 ?2474次閱讀

    SystemVerilog的Shallow Copy

    SystemVerilog的句柄賦值和對象復(fù)制的概念是有區(qū)別的。
    的頭像 發(fā)表于 11-21 10:32 ?925次閱讀

    數(shù)字硬件建模SystemVerilog-組合邏輯建模(1)連續(xù)賦值語句

    SystemVerilog有三種在可綜合RTL級別表示組合邏輯的方法:連續(xù)賦值語句、always程序塊和函數(shù)。接下來幾篇文章將探討每種編碼風(fēng)格,并推薦最佳實踐編碼風(fēng)格。
    的頭像 發(fā)表于 12-07 15:31 ?1561次閱讀

    SystemVerilog的Semaphores

    SystemVerilogSemaphore(旗語)是一個多個進(jìn)程之間同步的機制之一,這里需要同步的原因是這多個進(jìn)程共享某些資源。
    的頭像 發(fā)表于 12-12 09:50 ?3390次閱讀

    verilog阻塞賦值和非阻塞賦值的區(qū)別

    阻塞賦值操作符用等號(即 = )表示?!白枞笔侵冈谶M(jìn)程語句(initial和always),當(dāng)前的賦值語句阻斷了其后的語句,也就是說后面的語句必須等到當(dāng)前的賦值語句執(zhí)行完畢才能執(zhí)行
    發(fā)表于 12-19 16:49 ?7481次閱讀

    簡述python空和實例屬性賦值

    python主體沒有任何內(nèi)容,只有pass語句,稱為空。 ## 1.2 obj.attr屬性賦值 通過obj.attr=value進(jìn)行和實例屬性
    的頭像 發(fā)表于 02-21 10:30 ?1068次閱讀

    SystemVerilog:處理信號雙驅(qū)動問題解析

    SystemVerilog,類型可以分為線網(wǎng)(net)和變量(variable)。線網(wǎng)的賦值設(shè)定與Verilog的要求相同,即線網(wǎng)賦值需要使用連續(xù)
    的頭像 發(fā)表于 10-13 14:53 ?2247次閱讀
    <b class='flag-5'>SystemVerilog</b>:處理信號雙驅(qū)動問題解析