精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

SystemVerilog中的隊(duì)列

芯片驗(yàn)證工程師 ? 來(lái)源:芯片驗(yàn)證工程師 ? 作者:芯片驗(yàn)證工程師 ? 2022-10-31 10:09 ? 次閱讀

隊(duì)列是大小可變的有序集合,隊(duì)列中元素必須是同一個(gè)類型的。隊(duì)列支持對(duì)其所有元素的訪問(wèn)以及在隊(duì)列的開始或結(jié)束處插入和刪除。

第0個(gè)位置表示第一個(gè)元素,第$個(gè)位置表示隊(duì)列的最后一個(gè)元素。

隊(duì)列也是一個(gè)一維unpacked數(shù)組。隊(duì)列可用于建模后進(jìn)先出(LIFO)或先進(jìn)先出(FIFO) buffer。

data_type queue_name [$ : ];

下面是隊(duì)列的示例

module dq;
 // A queue of 8-bit bytes – unbounded queue
 bit[7:0] dq1[$];
 // A queue of strings – unbounded queue
 string mname[$] = { "Bob" };
 // An initialized queue – unbounded queue
 bit[15:0] dq2[$] = { 3, 2, 7, 1 };
 // A bounded queue – size = 256. Maximum index @255.
 bit q2[$:255];
 //bit q2[255:$]; // Compile ERROR – invalid syntax
 int dq2_size;
 initial
 begin
 dq1[0] = 'hff;
 dq1[1] = 'h00;
 dq1[$] = 'h01; //last entry - will override dq1[1]='h00
 $display($stime,,,"dq1=",dq1);
 dq1[1] = 'h02;
 $display($stime,,,"dq1=", dq1);
 mname[1] = "mike"; //push-in - grow the queue
 $display($stime,,, "mname=", mname);
 //displays initialized 4 entries
 $display($stime,,,"dq2=", dq2);
 dq2[4] = {16'h 1111};
 $display($stime,,,"dq2=", dq2);
 q2[0] = 1;
 q2[1] = 0;
 $display($stime,,, "q2=",q2);
 q2[3] = 1; //skipped entry '2' - so no 3rd entry
 $display($stime,,, "q2=",q2);
 dq2_size = dq2.size( );
 $display($stime,,,"dq2 size = %0d",dq2_size);
 for (int i = 0; i < dq2_size; i++) //read the 
entire queue
 $display($stime,,,"dq2[%0d] = %0h", i, dq2[i]);
 //insert a value at index 256 which is out of bound
 //dq2.insert(256,1); //You get a run-time Error
 end
 endmodule

上面的例子中聲明了兩種類型的隊(duì)列:有界隊(duì)列和
無(wú)界隊(duì)列。

有界隊(duì)列:
“q2[$:255];”有界的意思是最大下標(biāo)
隊(duì)列是有界的。在本例中,最大索引是255,這意味著它可以存儲(chǔ)的元素是256(0到255)。如果你想在index 256插入元素,就會(huì)出現(xiàn)溢出,數(shù)據(jù)就會(huì)丟失。

無(wú)界隊(duì)列為:

bit[7:0] dq1[$]; // A queue of 8-bit bytes – unbounded queue
string mname[$] = { "Bob" }; // A queue of strings – unbounded queue
bit[15:0] dq2[$] = { 3, 2, 7, 1 }; // An initialized queue –  unbounded queue

無(wú)界隊(duì)列的大小沒(méi)有上限。

仿真log:

 0 dq1='{'hff, 'h1}
 0 dq1='{'hff, 'h2}
 0 mname='{"Bob", "mike"}
 0 dq2='{'h3, 'h2, 'h7, 'h1}
 0 dq2='{'h3, 'h2, 'h7, 'h1, 'h1111}
 0 q2='{'h1, 'h0}
 0 q2='{'h1, 'h0}
 0 dq2 size = 5
 0 dq2[0] = 3
 0 dq2[1] = 2
 0 dq2[2] = 7
 0 dq2[3] = 1
 0 dq2[4] = 1111
 V C S S i m u l a t i o n R e p o r t

將值'ff'和'00" 賦給dq1的前兩個(gè)元素(dq1[0]和dq1[1])。之后,賦值最后一個(gè)條目(dq1[$])為'h01。此時(shí)dq1[1]就是'h01。最后在賦值dq1[1]為'h02,實(shí)際打?。?/p>

0 dq1='{'hff, 'h1}
0 dq1='{'hff, 'h2}

push一個(gè)新值“mike”到隊(duì)列“mname”

0 mname='{"Bob", "mike"}

打印初始化的隊(duì)列dq2,然后push一個(gè)值16'h1111

0 dq2='{'h3, 'h2, 'h7, 'h1}
0 dq2='{'h3, 'h2, 'h7, 'h1, 'h1111}

然后,賦值q2[0] = 1, q2[1] = 0。

0 q2='{'h1, 'h0}

賦值q2[3] = 1。但請(qǐng)注意,由于這個(gè)時(shí)候q2[2]還不存在,所以會(huì)忽略或者報(bào)錯(cuò)。

0 q2='{'h1, 'h0}

然后,讀取整個(gè)隊(duì)列dq2。首先得到隊(duì)列的大小并將其存儲(chǔ)在dq2_size中,遍歷整個(gè)隊(duì)列并顯示每個(gè)元素。

 0 dq2 size = 5
 0 dq2[0] = 3
 0 dq2[1] = 2
 0 dq2[2] = 7
 0 dq2[3] = 1
 0 dq2[4] = 1111

最后,在索引256處插入一個(gè)值

dq2.insert(256);

由于" dq2 "是一個(gè)最大下標(biāo)為255的有界數(shù)組,試圖插入索引為256的值會(huì)報(bào)錯(cuò):

Error-[DT-MCWII] Method called with invalid index
testbench.sv, 45
"insert" method called with invalid index (index:256)
Please make sure that the index is positive and less than size.

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1345

    瀏覽量

    109996
  • System
    +關(guān)注

    關(guān)注

    0

    文章

    165

    瀏覽量

    36888
  • 隊(duì)列
    +關(guān)注

    關(guān)注

    1

    文章

    46

    瀏覽量

    10889

原文標(biāo)題:SystemVerilog中的隊(duì)列

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    SystemVerilog的Virtual Methods

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

    SystemVerilog的“const”類屬性

    SystemVerilog可以將類屬性聲明為常量,即“只讀”。目的就是希望,別人可以讀但是不能修改它的值。
    發(fā)表于 11-29 10:25 ?2100次閱讀

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

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

    SystemVerilog的斷言手冊(cè)

    SystemVerilog Assertion Handbook1 ROLE OF SYSTEMVERILOG ASSERTIONSIN A VERIFICATION METHODOLOGY
    發(fā)表于 07-22 14:12 ?20次下載

    SystemVerilog$cast的應(yīng)用

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

    SystemVerilog的Queue Methods

    上面我們通過(guò)隊(duì)列dq1展示了push和pop的行為。然后我們聲明了有界隊(duì)列q3,最大的index限制是5,所以這個(gè)隊(duì)列最大的size是6.
    的頭像 發(fā)表于 10-31 09:20 ?1014次閱讀

    SystemVerilog的操作方法

    SystemVerilog提供了幾個(gè)內(nèi)置方法來(lái)支持?jǐn)?shù)組搜索、排序等功能。
    的頭像 發(fā)表于 10-31 10:10 ?2704次閱讀

    SystemVerilog可以嵌套的數(shù)據(jù)結(jié)構(gòu)

    SystemVerilog除了數(shù)組、隊(duì)列和關(guān)聯(lián)數(shù)組等數(shù)據(jù)結(jié)構(gòu),這些數(shù)據(jù)結(jié)構(gòu)還可以嵌套。
    的頭像 發(fā)表于 11-03 09:59 ?1564次閱讀

    SystemVerilog的package

    SystemVerilog packages提供了對(duì)于許多不同數(shù)據(jù)類型的封裝,包括變量、task、function、assertion等等,以至于可以在多個(gè)module中共享。
    的頭像 發(fā)表于 11-07 09:44 ?1218次閱讀

    SystemVerilog的struct

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

    SystemVerilog的Shallow Copy

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

    SystemVerilog的Semaphores

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

    ZWave的消息隊(duì)列機(jī)制是什么

    這篇文章就來(lái)看看 ZWave 是通過(guò)什么機(jī)制為我們提供了一個(gè)便捷的消息隊(duì)列處理機(jī)制。
    的頭像 發(fā)表于 02-14 13:41 ?761次閱讀
    ZWave<b class='flag-5'>中</b>的消息<b class='flag-5'>隊(duì)列</b>機(jī)制是什么

    帶你了解SystemVerilog的關(guān)聯(lián)數(shù)組

    SystemVerilog,我們知道可以使用動(dòng)態(tài)數(shù)組實(shí)現(xiàn)數(shù)組元素個(gè)數(shù)的動(dòng)態(tài)分配,即隨用隨分
    的頭像 發(fā)表于 06-09 09:46 ?7323次閱讀
    帶你了解<b class='flag-5'>SystemVerilog</b><b class='flag-5'>中</b>的關(guān)聯(lián)數(shù)組

    Systemverilog的Driving Strength講解

    systemverilog,net用于對(duì)電路連線進(jìn)行建模,driving strength(驅(qū)動(dòng)強(qiáng)度)可以讓net變量值的建模更加精確。
    的頭像 發(fā)表于 06-14 15:50 ?1516次閱讀
    <b class='flag-5'>Systemverilog</b><b class='flag-5'>中</b>的Driving Strength講解