RM新时代网站-首页

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

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

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

淺析UVM中的Virtual Sequences

芯片驗(yàn)證工程師 ? 來源:芯片驗(yàn)證工程師 ? 2023-06-20 09:28 ? 次閱讀

在一個(gè)系統(tǒng)級(jí)的驗(yàn)證環(huán)境中,多個(gè)驗(yàn)證組件并行地產(chǎn)生激勵(lì)。測(cè)試用例開發(fā)者可能希望協(xié)調(diào)多個(gè)通道激勵(lì)之間的時(shí)序和數(shù)據(jù)。

Virtual sequences與virtual sequencer相關(guān)聯(lián),用于協(xié)調(diào)測(cè)試平臺(tái)中的激勵(lì)生成。一般來說,一個(gè)virtual sequencer包含對(duì)其子sequencer的引用,即driver sequencers或其他virtual sequencers。

Virtual sequences可以調(diào)用其他virtual sequences,以及每個(gè)子sequencer中的sequences(driversequences)。

在下圖中,virtual sequencer在ethernetcpu驗(yàn)證組件上調(diào)用配置sequences。這些配置sequences是在模塊級(jí)測(cè)試期間開發(fā)的,可以在系統(tǒng)級(jí)測(cè)試時(shí)復(fù)用。

f9662d78-0eab-11ee-962d-dac502259ad0.png

有三種方式可以讓virtual sequencer與它的subsequencers交互:

Virtual sequencers和subsequencers同時(shí)發(fā)送激勵(lì)。

禁用subsequencers。Virtualsequencers是唯一的驅(qū)動(dòng)。

使用grab()和ungrab()--Virtualsequencers在有限的時(shí)間內(nèi)控制激勵(lì)發(fā)送。

當(dāng)使用virtual sequences時(shí),大多數(shù)測(cè)試用例開發(fā)用戶都會(huì)只從virtual sequences中調(diào)用sequences。要調(diào)用sequences,需要執(zhí)行以下操作之一:

使用'uvm_do宏 。

使用sequence start()方法。

創(chuàng)建一個(gè)Virtual Sequencer

為了從一個(gè)sequencer中對(duì)多個(gè)sequencers進(jìn)行控制,可以使用一個(gè)不附屬于driver的sequencer,這就是virtual sequencer。要?jiǎng)?chuàng)建一個(gè)virtual sequencer,需要:

從uvm_sequencer類派生出一個(gè)virtual sequencer類。

在virtual sequencer中添加對(duì)其他subsequencer的指針(在更高層次的驗(yàn)證組件(通常是top-level environment)中)。

下面的例子聲明了一個(gè)有兩個(gè)subsequencers的virtual sequencer。

f99fd1ea-0eab-11ee-962d-dac502259ad0.png

Subsequencers可以是driver sequencers或其他virtual sequencers。

創(chuàng)建一個(gè)Virtual Sequence

要?jiǎng)?chuàng)建一個(gè)virtual sequence:

從uvm_sequence派生出一個(gè)sequence類。

定義一個(gè)body()方法。

使用`uvm_ do_on(或` uvm_do_on_with)宏來調(diào)用subsequencers的sequences。

使用`uvm_do(或`uvm_do_with)宏來調(diào)用當(dāng)前virtual sequencer中的其他virtual sequences。

一個(gè)virtual sequence不能使用`uvm_do或`uvm_do_with來執(zhí)行數(shù)據(jù)項(xiàng)的發(fā)送,只能執(zhí)行sequences。

下面的例子顯示了一個(gè)簡(jiǎn)單的virtual sequence控制兩個(gè)subsequencers:cpu sequencerethernet sequencer。假設(shè)cpu sequencer有 一 個(gè) cpu_config_seq sequence,ethernet sequencer有一個(gè) eth_large_payload_seq序列。

f9d01e7c-0eab-11ee-962d-dac502259ad0.png

f9d75e80-0eab-11ee-962d-dac502259ad0.png

控制其他Sequencers

當(dāng)使用virtual sequencer時(shí),需要考慮subsequencers和virtualsequence之間的關(guān)系。有三種典型的可能性:

virtual sequencer和subsequencers同時(shí)產(chǎn)生激勵(lì)。subsequencers產(chǎn)生的數(shù)據(jù)項(xiàng)和virtual sequencer產(chǎn)生的數(shù)據(jù)項(xiàng)被混合在一起,并由driver以任意順序執(zhí)行。

禁用subsequencers。使用uvm_config_db::set將subsequencers的default_sequence屬性設(shè)置為null。

fa0449a4-0eab-11ee-962d-dac502259ad0.png

使用grab()/lock()和ungrab()/unlock()。在這種情況下,一個(gè)virtual sequence可以在有限的時(shí)間內(nèi)實(shí)現(xiàn)對(duì)其subsequencers的完全控制,然后讓原始sequences繼續(xù)工作。grab和lock防止其他sequence在被鎖定的sequencer上被執(zhí)行。

grab()方法將lock request放在sequencer仲裁隊(duì)列的頭部,允許調(diào)用者阻止當(dāng)前等待授予的數(shù)據(jù)項(xiàng)被處理,而lock()方法將lock request放在隊(duì)列的末端,允許數(shù)據(jù)項(xiàng)在授予lock之前被處理。

fa35d5e6-0eab-11ee-962d-dac502259ad0.png

將Virtual Sequencer連接到Subsequencers上

要連接一個(gè)virtual sequencer和它的subsequencers,需要在驗(yàn)證環(huán)境的connect()phase將sequencer的實(shí)例賦值給virtual sequencer中指定的sequencer指針。

v_sequencer.cpu_seqr = cpu_seqr; 
v_sequencer.eth_seqr = eth_seqr;

下面這個(gè)例子顯示了一個(gè)top-level environment,它實(shí)例化了ethernet和cpu驗(yàn)證組件以及控制這兩個(gè)組件的virtual sequencer。

在top-level environment中,各個(gè)組件內(nèi)部的sequencers的路徑是已知的,可以根據(jù)該路徑將sequencers連接到virtual sequencer上。

fa427ab2-0eab-11ee-962d-dac502259ad0.png

?





審核編輯:劉清

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

    關(guān)注

    98

    文章

    14476

    瀏覽量

    136429
  • UVM
    UVM
    +關(guān)注

    關(guān)注

    0

    文章

    182

    瀏覽量

    19167
  • sequence
    +關(guān)注

    關(guān)注

    0

    文章

    23

    瀏覽量

    2840

原文標(biāo)題:UVM中的Virtual Sequences

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    SystemVerilogVirtual Methods

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

    IC驗(yàn)證"UVM驗(yàn)證平臺(tái)加入factory機(jī)制"(六)

    平臺(tái),因?yàn)?b class='flag-5'>UVM的特性幾乎一 點(diǎn)都沒有用到。像上節(jié)my_driver的實(shí)例化及drv.main_phase的顯式調(diào)用,即使不使用UVM,只使用簡(jiǎn)單的SystemVerilog也可以完 成。本節(jié)將會(huì)
    發(fā)表于 12-08 12:07

    IC驗(yàn)證“UVM驗(yàn)證平臺(tái)加入objection機(jī)制和virtual interface機(jī)制“(七)

    在上一節(jié),**《IC驗(yàn)證"UVM驗(yàn)證平臺(tái)加入factory機(jī)制"(六)》**雖然輸出了“main_phase is called”,但是“data is drived”并沒有
    發(fā)表于 12-09 18:28

    數(shù)字IC驗(yàn)證之“什么是UVM”“UVM的特點(diǎn)”“UVM提供哪些資源”(2)連載...

    原文鏈接:https://zhuanlan.zhihu.com/p/345775995大家好,我是一哥,上章內(nèi)容主要講述兩個(gè)內(nèi)容,芯片驗(yàn)證以及驗(yàn)證計(jì)劃。那本章我們主要講述的內(nèi)容有介紹什么是uvm
    發(fā)表于 01-21 16:00

    什么是uvmuvm的特點(diǎn)有哪些呢

    直觀的印象,就是uvm驗(yàn)證平臺(tái),它是分層的結(jié)構(gòu)。圖中的每一個(gè)巨型框都代表著平臺(tái)的一個(gè)構(gòu)成元素。這些元素呢,我們稱為平臺(tái)組建,下面來簡(jiǎn)單的分析一下。從最底層上來看,agent 包含了driver,monitor和sequencer,其中driver ,monitor
    發(fā)表于 02-14 06:46

    UVM sequence分層有哪幾種方式呢

    ; i< u_item.num_items; i++)`uvm_send(u_item.item)endtask : bodyendclass: upper_env_item_seq在上面的例子
    發(fā)表于 04-11 16:37

    請(qǐng)問一下在UVM的UVMsequences是什么意思啊

    UVM方法學(xué),UVMsequences 是壽命有限的對(duì)象。UVM sequencesuvm_sequence_item基類擴(kuò)展得到,
    發(fā)表于 04-11 16:43

    談?wù)?b class='flag-5'>UVMuvm_info打印

    uvm_report_enabled(xxx),會(huì)分析傳過來的severity和id的配置verbosity要大于傳過來的verbosity,(get_report_verbosity_level(severity, id
    發(fā)表于 03-17 16:41

    virtual sequence和virtual sequencer的操作步驟

    對(duì)于初入行的驗(yàn)證工程師,理解和搭建UVM驗(yàn)證環(huán)境是很重要的,而其中,virtual sequence的機(jī)制又是很有用很重要的一部分。本文希望通過了一些問題的回答,以及一個(gè)相對(duì)完整的結(jié)構(gòu)幫助經(jīng)驗(yàn)尚淺的工程師理清思路。
    發(fā)表于 09-15 10:33 ?6次下載
    <b class='flag-5'>virtual</b> sequence和<b class='flag-5'>virtual</b> sequencer的操作步驟

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

    UVM或者SV,經(jīng)常會(huì)碰到被virtual修飾的 class、sequence、sequencer、interface、function,不
    的頭像 發(fā)表于 06-16 11:34 ?1426次閱讀

    UVMuvm_config_db機(jī)制背后的大功臣

    本次講一下UVMuvm_config_db,在UVM中提供了一個(gè)內(nèi)部數(shù)據(jù)庫(kù),可以在其中存儲(chǔ)給定名稱下的值,之后可以由其它TB組件去檢索。
    的頭像 發(fā)表于 06-20 17:28 ?1411次閱讀

    如何用Verdi查看UVM環(huán)境的變量?

    我們常用的debug UVM的方法是通過打印log實(shí)現(xiàn)。有沒有辦法像 debug RTL代碼一樣將 UVM 變量拉到波形上看呢?答案是有的,下面讓我們看看是怎么做到的。
    的頭像 發(fā)表于 06-25 16:01 ?1730次閱讀
    如何用Verdi查看<b class='flag-5'>UVM</b>環(huán)境<b class='flag-5'>中</b>的變量?

    UVMuvm_config_db機(jī)制背后的大功臣

    本次講一下UVMuvm_config_db,在UVM中提供了一個(gè)內(nèi)部數(shù)據(jù)庫(kù),可以在其中存儲(chǔ)給定名稱下的值,之后可以由其它TB組件去檢索。
    的頭像 發(fā)表于 06-29 16:57 ?1275次閱讀

    UVM設(shè)計(jì)的sequence啟動(dòng)方式有哪幾種呢?

    本篇介紹UVM的sequence,這是UVM中最基礎(chǔ)的部分。對(duì)于前面介紹的uvm_callback, uvm_visitor等,很少被使用
    的頭像 發(fā)表于 08-17 10:07 ?4251次閱讀
    <b class='flag-5'>UVM</b>設(shè)計(jì)<b class='flag-5'>中</b>的sequence啟動(dòng)方式有哪幾種呢?

    如何將sequences類型添加或注冊(cè)到sequence library里呢?

    uvm_sequence_library是從uvm_sequence擴(kuò)展而來的,它是一個(gè)容納了一系列其它sequences類型的容器,在啟動(dòng)時(shí),它會(huì)根據(jù)模式從這系列sequences
    的頭像 發(fā)表于 09-08 15:06 ?638次閱讀
    如何將<b class='flag-5'>sequences</b>類型添加或注冊(cè)到sequence library里呢?
    RM新时代网站-首页