【问题标题】:systemverilog randomize() : Using subsection of a bitvector membersystemverilog randomize() :使用位向量成员的子部分
【发布时间】:2018-07-28 02:54:25
【问题描述】:

我有一件物品:

class my_item extends uvm_sequence_item;                                  
  rand logic [31:0]           addr;
  ...
endclass

在我的序列中的某个地方,我想限制addr 的一部分:

  my_item temp_item;
  temp_item = my_item::type_id::create("temp_my_item");

  int mem_end_addr = 0x1234_5678;
  temp_item.randomize() with {
    ...
    addr[15:8] > mem_end_addr[15:8];  //---->>> does this work?
    ...
  };

SV randomize() 是否能够处理rand logic 字段的这种子选择?

【问题讨论】:

    标签: logic constraints system-verilog


    【解决方案1】:

    SystemVerilog 不关心哪些位受到约束,只是约束表达式必须为真。这就是为什么您应该始终调用randomize() 作为测试返回值的条件语句的一部分。

    【讨论】:

      【解决方案2】:

      是的,应该可以。由于您仅对位 [15:8] 有限制,因此将相应地生成这些位,而其他位将尽可能随机。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-19
        相关资源
        最近更新 更多