色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

SystemVerilog中的隊列

芯片驗證工程師 ? 來源:芯片驗證工程師 ? 作者:芯片驗證工程師 ? 2022-10-31 10:09 ? 次閱讀

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

第0個位置表示第一個元素,第$個位置表示隊列的最后一個元素。

隊列也是一個一維unpacked數組。隊列可用于建模后進先出(LIFO)或先進先出(FIFO) buffer。

data_type queue_name [$ : ];

下面是隊列的示例

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

上面的例子中聲明了兩種類型的隊列:有界隊列和
無界隊列。

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

無界隊列為:

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

無界隊列的大小沒有上限。

仿真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的前兩個元素(dq1[0]和dq1[1])。之后,賦值最后一個條目(dq1[$])為'h01。此時dq1[1]就是'h01。最后在賦值dq1[1]為'h02,實際打印:

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

push一個新值“mike”到隊列“mname”

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

打印初始化的隊列dq2,然后push一個值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。但請注意,由于這個時候q2[2]還不存在,所以會忽略或者報錯。

0 q2='{'h1, 'h0}

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

 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處插入一個值

dq2.insert(256);

由于" dq2 "是一個最大下標為255的有界數組,試圖插入索引為256的值會報錯:

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.

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Verilog
    +關注

    關注

    28

    文章

    1351

    瀏覽量

    110119
  • System
    +關注

    關注

    0

    文章

    165

    瀏覽量

    36965
  • 隊列
    +關注

    關注

    1

    文章

    46

    瀏覽量

    10898

原文標題:SystemVerilog中的隊列

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

收藏 人收藏

    評論

    相關推薦

    SystemVerilog的Virtual Methods

    SystemVerilog多態能夠工作的前提是父類的方法被聲明為virtual的。
    發表于 11-28 11:12 ?709次閱讀

    SystemVerilog的“const”類屬性

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

    SystemVerilog的聯合(union)介紹

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

    SystemVerilog的斷言手冊

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

    SystemVerilog$cast的應用

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

    SystemVerilog的Queue Methods

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

    SystemVerilog的操作方法

    SystemVerilog提供了幾個內置方法來支持數組搜索、排序等功能。
    的頭像 發表于 10-31 10:10 ?2861次閱讀

    SystemVerilog可以嵌套的數據結構

    SystemVerilog除了數組、隊列和關聯數組等數據結構,這些數據結構還可以嵌套。
    的頭像 發表于 11-03 09:59 ?1608次閱讀

    SystemVerilog的package

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

    SystemVerilog的struct

    SystemVerilog“struct”表示相同或不同數據類型的集合。
    的頭像 發表于 11-07 10:18 ?2465次閱讀

    SystemVerilog的Shallow Copy

    SystemVerilog的句柄賦值和對象復制的概念是有區別的。
    的頭像 發表于 11-21 10:32 ?922次閱讀

    SystemVerilog的Semaphores

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

    ZWave的消息隊列機制是什么

    這篇文章就來看看 ZWave 是通過什么機制為我們提供了一個便捷的消息隊列處理機制。
    的頭像 發表于 02-14 13:41 ?797次閱讀
    ZWave<b class='flag-5'>中</b>的消息<b class='flag-5'>隊列</b>機制是什么

    帶你了解SystemVerilog的關聯數組

    SystemVerilog,我們知道可以使用動態數組實現數組元素個數的動態分配,即隨用隨分
    的頭像 發表于 06-09 09:46 ?7480次閱讀
    帶你了解<b class='flag-5'>SystemVerilog</b><b class='flag-5'>中</b>的關聯數組

    Systemverilog的Driving Strength講解

    systemverilog,net用于對電路連線進行建模,driving strength(驅動強度)可以讓net變量值的建模更加精確。
    的頭像 發表于 06-14 15:50 ?1594次閱讀
    <b class='flag-5'>Systemverilog</b><b class='flag-5'>中</b>的Driving Strength講解
    主站蜘蛛池模板: 超碰在线观看| 久久亚洲精品AV无码四区| 美女露出撒尿的部位| 在野外被男人躁了一夜动图| 久久青青草原综合伊人| 久久亚洲一级α片| 最近中文字幕免费高清MV视频6 | 欧美特黄99久久毛片免费| 99热免费精品店| 同桌别揉我奶了嗯啊| 黑人巨茎大战白人女40CMO| 制服丝袜 快播| 日韩亚洲欧美中文高清| 国产在线观看成人免费视频| 在线观看成人免费视频| 青草影院天堂男人久久| 国产盗摄一区二区三区| 诱人的秘书BD在线观看| 日本高清不卡码无码v亚洲| 国产欧美国日产在线播放| 在线免费公开视频| 色婷婷激情AV精品影院| 久久99精品AV99果冻| 97在线视频免费观看97| 天天日免费观看视频一1| 久草青青在线| 成人在线观看视频免费| 伊人大香线蕉精品在线播放| 日本一本免费线观看视频| 久久www99re在线播放| 成人性生交大片免费看4| 一区视频免费观看| 骚妇BB双飞插| 乱爱性全过程免费视频| 国产精品…在线观看| 506070老熟肥妇bbwxx视频| 四川老师边上网课边被啪视频| 久久4k岛国高清一区二区| 动态抽插图视频| 98久久人妻少妇激情啪啪| 亚洲欧美无码2017在线|