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

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

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

為什么需要使用virtual,不用可不可以?

冬至子 ? 來(lái)源:不二魚(yú) ? 作者:不二魚(yú) ? 2023-06-16 11:34 ? 次閱讀

在UVM或者SV中,經(jīng)常會(huì)碰到被virtual修飾的 class、sequence、sequencer、interface、function,不知道你有沒(méi)有這樣的疑問(wèn),為什么需要使用virtual,不用可不可以?所以就總結(jié)了一下。

  • virtual class

在一切面向?qū)ο?a target="_blank">編程語(yǔ)言中,類最基本的元素?;悾ɑ蛘哒f(shuō)父類)可以包含最基礎(chǔ)的一些組成,特征,形成最基本的框架,但是并不完整?;愖鳛橐粋€(gè)不完整的類, 它的主要作用不是被實(shí)例化,而是被拓展 ,因?yàn)?,不完整就?shí)例化也沒(méi)有意義。

在后續(xù)的環(huán)境構(gòu)建當(dāng)中,可以從這個(gè)基類擴(kuò)展出很多的子類,豐富基類的結(jié)構(gòu)。這樣的類,就可以設(shè)置成virtual class,使其變得抽象。注意,一個(gè)抽象的類,是不能夠被實(shí)例化的,它只能被繼承/擴(kuò)展,如果實(shí)例化,則會(huì)出錯(cuò)。

  • virtual function和pure virtual function

pure virtual function是偶然在工作中遇到的,可能見(jiàn)到的次數(shù)不多,但還是要學(xué)習(xí)一下。

virtual function和類的多態(tài)性有關(guān),使用戶在設(shè)計(jì)和實(shí)現(xiàn)類時(shí)不需要擔(dān)心句柄指向的對(duì)象類型是父類還是子類,只要通過(guò)虛方法,就可以進(jìn)行動(dòng)態(tài)綁定,或者SV中稱為動(dòng)態(tài)查找方法(摘自紅寶書(shū))。

簡(jiǎn)單理解就是,virtual function是基類中的函數(shù)模板,可在派生類中使用新代碼重寫(xiě)該函數(shù)模板’,它存在對(duì)的目的就是為了后續(xù)能夠重寫(xiě)該函數(shù)。如果分不清到底需不需要加上virtual,可以都加上,便于后續(xù)的重寫(xiě),不重寫(xiě)也不會(huì)報(bào)錯(cuò)。

pure virtual function 虛純函數(shù)是基類中的函數(shù)模板, 必須在派生類中用新代碼重寫(xiě) 。

總結(jié)一下:對(duì)于virtual function ,是在base中提供了一個(gè)函數(shù)模板,但不是必須進(jìn)行override,但對(duì)于pure virtual function 而言,必須進(jìn)行override,如果你忘記override,則會(huì)出現(xiàn)編譯錯(cuò)誤,也起了一種提示作用。

  • virtual sequence/sequencer

  • virtual interface

virtual interface你可以認(rèn)為語(yǔ)法就是這樣。作為類和dut之間進(jìn)行通信的唯一方法,在一個(gè)類中,如果實(shí)例化一個(gè)interface,是不允許的,出現(xiàn)了就會(huì)報(bào)語(yǔ)法錯(cuò)誤,只能在module里面直接

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

    關(guān)注

    0

    文章

    181

    瀏覽量

    19087
  • Module
    +關(guān)注

    關(guān)注

    0

    文章

    63

    瀏覽量

    12833
  • sequence
    +關(guān)注

    關(guān)注

    0

    文章

    23

    瀏覽量

    2820
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Powerpads pcb可不可以直接放封裝畫(huà)線路

    ,請(qǐng)教高手一個(gè)問(wèn)題,Power p.cb.可不可以直接放封裝畫(huà)線路,謝謝
    發(fā)表于 10-11 12:49

    pspice可不可以仿真線圈共振

    請(qǐng)問(wèn)一下pspice可不可以仿真兩個(gè)線圈的共振呢
    發(fā)表于 07-09 20:44

    multisim 可不可以做89C52 單片機(jī)的仿真?

    multisim可不可以做89C52 單片機(jī)的仿真?
    發(fā)表于 03-22 12:50

    串行12864可不可以讀出內(nèi)部數(shù)據(jù)呢?

    有沒(méi)有人告訴我串行12864究竟可不可以讀出內(nèi)部數(shù)據(jù)呢?串行12864究竟可不可以進(jìn)行讀操作呢?
    發(fā)表于 09-28 20:18

    版主,好的帖子,可不可以收藏在自己的用戶名下?

    版主,好的帖子,可不可以收藏在自己的用戶名下?
    發(fā)表于 11-16 19:53

    可不可以用來(lái)混積分

    新手需要下載大量的資料可是卻不沒(méi)有積分。。。。。可不可以發(fā)個(gè)帖子混混積分啊
    發(fā)表于 09-10 15:45

    功放后邊可不可以再加個(gè)功放

    功放后邊可不可以再加個(gè)功放
    發(fā)表于 09-22 15:10

    CC2530做開(kāi)發(fā)串口的流控可不可以不用?

    CC2530做開(kāi)發(fā)串口的流控可不可以不用?我現(xiàn)在用CC2530做開(kāi)發(fā),有兩個(gè)關(guān)于升級(jí)的問(wèn)題請(qǐng)教一下:1.OTA升級(jí)時(shí)串口的流控是必須的選項(xiàng)嗎?可不可以不用?如果
    發(fā)表于 04-05 13:39

    排阻可不可以直接用八個(gè)電阻代替啊

    排阻可不可以直接用八個(gè)電阻代替啊
    發(fā)表于 10-11 14:57

    DM8148的uboot可不可以直接用于DM8127?

    DM8148的uboot可不可以直接用于DM8127?如果不可以,需要修改哪些方面?
    發(fā)表于 06-23 04:41

    jtag V8可不可以仿真M0的芯片嗎?

    jtag V8 可不可以仿真M0的芯片嗎?
    發(fā)表于 06-03 06:22

    可不可以將ad7763與dsp相連接?

    請(qǐng)問(wèn) 可不可以將ad7763與dsp相連接,有具體連接方式嗎
    發(fā)表于 12-20 08:12

    紐扣電池各類型有什么特點(diǎn)到底可不可以充電

    本文是以紐扣電池為主題展開(kāi)的,重要是討論有關(guān)紐扣電池可不可以充電的問(wèn)題?不清楚的小伙伴看下文!
    發(fā)表于 08-29 17:18 ?5202次閱讀

    PFA管是透明的嗎,可不可以做彩色?

    PFA管是透明的嗎,可不可以做彩色? PFA管是由PFA原料做成的,PFA管的顏色也是有PFA原料的顏色決定的。追根溯源,我們看看PFA原料有哪些顏色? 以深圳君昇為例。我們?cè)谒麄儢|莞車間看到
    發(fā)表于 09-18 15:09 ?943次閱讀

    常規(guī)工字電感封裝尺寸可不可以進(jìn)行變化

    電子發(fā)燒友網(wǎng)站提供《常規(guī)工字電感封裝尺寸可不可以進(jìn)行變化.docx》資料免費(fèi)下載
    發(fā)表于 04-14 09:34 ?0次下載