日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > > 芯片驗(yàn)證工程師
[導(dǎo)讀]在基于Verilog或VHDL的驗(yàn)證平臺(tái)中,驗(yàn)證平臺(tái)和DUT連接在一起,驗(yàn)證平臺(tái)中包含激勵(lì)發(fā)送和響應(yīng)監(jiān)測(cè)模塊,在仿真的開始DUT和驗(yàn)證平臺(tái)就被加載到仿真器的內(nèi)存當(dāng)中并在整個(gè)仿真期間一直存在。也就是說(shuō),驗(yàn)證平臺(tái)和DUT都是靜態(tài)對(duì)象。SystemVerilog是對(duì)于Verilog的擴(kuò)...

在基于Verilog或VHDL的驗(yàn)證平臺(tái)中,驗(yàn)證平臺(tái)和DUT連接在一起,驗(yàn)證平臺(tái)中包含激勵(lì)發(fā)送和響應(yīng)監(jiān)測(cè)模塊,在仿真的開始DUT和驗(yàn)證平臺(tái)就被加載到仿真器的內(nèi)存當(dāng)中并在整個(gè)仿真期間一直存在。也就是說(shuō),驗(yàn)證平臺(tái)和DUT都是靜態(tài)對(duì)象。

SystemVerilog是對(duì)于Verilog的擴(kuò)展,但是這種擴(kuò)展幾乎是一個(gè)新語(yǔ)言的誕生,因?yàn)镾ystemVerilog增加了對(duì)于面向?qū)ο蠹夹g(shù)(Object Orientated
Programming,OOP)的支持從而更加適合于EDA仿真驗(yàn)證。


SystemVerilog語(yǔ)言增強(qiáng)的關(guān)鍵就是class,基于class構(gòu)建測(cè)試平臺(tái)更符合當(dāng)今驗(yàn)證環(huán)境越來(lái)越復(fù)雜的現(xiàn)狀。


目前工業(yè)界最通用的UVM就是提供了一些用于創(chuàng)建通用測(cè)試平臺(tái)的SystemVerilog基類庫(kù),這個(gè)基類庫(kù)可以在任何支持IEEE 1800標(biāo)準(zhǔn)的仿真器上運(yùn)行。


class是所需要?jiǎng)?chuàng)建對(duì)象的模板,只有在實(shí)際創(chuàng)建對(duì)象的時(shí)候才會(huì)占用內(nèi)存,當(dāng)該對(duì)象不被使用后就會(huì)自動(dòng)被后臺(tái)進(jìn)程回收內(nèi)存。class中定義了成員變量和方法,這個(gè)方法可以是不消耗時(shí)間的function,也可以是消耗時(shí)間的task。


在創(chuàng)建類對(duì)象之前,這個(gè)類的定義必須要已經(jīng)存在于內(nèi)存當(dāng)中,因此在SystemVerilog測(cè)試平臺(tái)中需要在module中定義不同驗(yàn)證組件類,因?yàn)閙odule中存在的都是靜態(tài)對(duì)象,其在仿真過(guò)程中會(huì)一直存在。同理,一個(gè)class定義中不能包含一個(gè)module。因?yàn)閏lass是動(dòng)態(tài)對(duì)象,會(huì)在仿真過(guò)程中被回收。

?

下面是一個(gè)如何在靜態(tài)module中創(chuàng)建對(duì)象和回收對(duì)象的示例:


一個(gè)包含數(shù)據(jù)message和相應(yīng)的函數(shù)的class:

class example; string message; function void set_message(string ip_string); message = ip_string; endfunction: set_message function void print(); $display("%s", message); endfunction: printendclass: example在module中仿真開始創(chuàng)建對(duì)象和釋放對(duì)象內(nèi)存:

module tb; example C; // Null handle after elaboration initial begin C = new(); // Handle points to C object in memory C.set_message("This object has been created"); #10; C.print(); C = null; // C has been dereferenced, object can be garbage collected endendmodule: tb

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉