[SV]SystemVerilog queue的初始化以及绿书上面的写法

         SystemVerilog queue的初始化以及绿书上面的写法

 

       前言:在《SystemVerilog验证 测试平台编写指南》(原书第二版)2009年9月第一版这本书的第29页,对队列的操作有如下的例子。在声明queue的时候,同时对queue做了初始化

int    j = 1,

  q2[$]   = {3, 4},
  q[$]     = {0, 2, 5};

       放在小环境中验证,我们会发现上述写法并没有报语法错误,但是queue的初始化并没有实现,对于q2和q,它的szie任然是0。(上述验证使用的时VCSMX/1906SP2-1)

 

一、实例验证

       下面我们做以下几个小程序来验证一下queue的初始化的语法。

 

 1.1、使用queue_name[$] = {};对queue做初始化,行不通

module queue_test();

  int               qt[$];
  
  string            sw_trg_reg_q[$];


  initial begin
    qt[$] = {0, 1, 2, 3, 4};
    
    sw_trg_reg_q[$] = {"DSB_HP_IMM_TRG_0", "DSB_HP_IMM_TRG_1", "DSB_HP_IMM_TRG_2", "DSB_HP_IMM_TRG_3"};

    $display("qt.size() = %0d, sw_trg_reg_q.size() = %0d", qt.size(), sw_trg_reg_q.size());
  end
  

endmodule
  • Simulation Output

qt.size() = 0, sw_trg_reg_q.size() = 0

 

 1.2、正确的queue初始化发方法:qt = {0, 1, 2, 3, 4};

module queue_test();

  int               qt[$];
  
  string            sw_trg_reg_q[$];


  initial begin
    qt = {0, 1, 2, 3, 4};
    
    sw_trg_reg_q = {"DSB_HP_IMM_TRG_0", "DSB_HP_IMM_TRG_1", "DSB_HP_IMM_TRG_2", "DSB_HP_IMM_TRG_3"};

    $display("qt.size() = %0d, sw_trg_reg_q.size() = %0d", qt.size(), sw_trg_reg_q.size());
  end
  

endmodule
  • Simulation Output

qt.size() = 5, sw_trg_reg_q.size() = 4

 

二、SystemVerilog Queue的使用建议

  1. 每次在使用之前,先执行一次delete操作 

  2. 在声明queue的时候对queue做初始化

  3. 在过程语句中对queue做初始化,直接用queue_name = {};不需要使用“'”

  4. 如果是用queue来做缓存,在最后一定要check queue有没有空

 

 

RabbitMQ是一种使用AMQP协议的开源消息中间件,可用于实现消息队列初始化队列绑定和解绑是RabbitMQ中重要的操作。 当我们启动一个RabbitMQ实例时,需要进行一些初始化操作来准备之后的消息传输。其中,初始化队列是必须的一步。在RabbitMQ中,队列用于存储消息,并将它们传递给想要接收这些消息的应用程序。通过初始化队列,我们可以为队列设置一些属性,如队列的名称、持久化方式以及一些其他的配置项。 绑定是将交换机和队列关联起来的过程。交换机用于接收消息并将其路由到一个或多个队列队列与交换机通过绑定进行关联,以便在消息到达交换机时,能够将其路由到正确的队列中。绑定时,我们需要设置交换机的名称、类型以及路由规则等。 在某些情况下,我们可能需要解绑队列和交换机,以取消它们之间的关联。解绑可以根据需求来实现动态的队列和交换机之间的解除关系。当我们不再需要某个交换机或队列时,可以通过解绑来清除它们之间的绑定关系,从而减少系统的复杂性和不必要的资源占用。 总结起来,RabbitMQ的初始化队列绑定和解绑是为了确保系统正常运行和消息传输的准备工作。通过初始化队列,我们可以为队列设置各种属性。而绑定和解绑则是为了建立或取消交换机与队列之间的路由关联,以便正确地传递和处理消息。这些操作让我们能够更好地管理和控制消息的传输,提高系统的可靠性和可扩展性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

元直数字电路验证

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值