sv--队列

队列

system verilog 中队列是一种先进先出的存储结构,它的存储大小可变。类似于自动增长与收缩一维非压缩数组。

队列的语法规则

有界数组

有界数组深度有限,其深度为N,当存储满后不能存储新的数据。

data_type name [$:N];
logic data [$:10]

无界数组

无界数组深度无限

data_type name [$];
bit [&:0] test [$]

demo

[运行代码]

module tb;
  int data [$];
  
  initial begin
    data = {1,3,5,7,9};
    foreach(data[i])
    $display("data[%d] = %d",i,data[i]);
    $display("data = %p",data);
//delete all elements 
    data = {};
    $display("data = %p",data);
  end
  
endmodule

[运行结果]
在这里插入图片描述

队列的内建方法

function int size ()返回队列中的项数,如果为空,则为 0
function void insert (input integer index, input element_t item)在指定的索引位置插入给定项
function void delete ( [input integer index] )删除指定索引处的元素,如果未提供,则将删除所有元素
function element_t pop_front ()删除并返回队列的第一个元素
function element_t pop_back ()删除并返回队列的最后一个元素
function void push_front (input element_t item)将给定元素插入队列的前面
function void push_back (input element_t item)在队列末尾插入给定元素

[运行代码]


module tb;
  int test [$];
  
  initial begin
    test = {10,12,13,18,20};
    $display("number of test = %d,test = %p",test.size(),test);
    test.insert(1,23);
    $display("insert  23 test.size =  %d,test = %p",test.size(),test);
    test.delete(4);
    $display("delete  18 test.size =  %d,test = %p",test.size(),test);
    $display("pop_front  = %d,size =  %d,test = %p",test.pop_front,test.size(),test);
    test.push_front(99);
    $display("size =  %d,test = %p",test.size(),test);
    $display("pop_back   = %d,size =  %d,test = %p",test.pop_back ,test.size(),test);
    test.push_back(120);
    $display("size =  %d,test = %p",test.size(),test);
  end
  
  
endmodule

[运行结果]
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值