将字段从一个类复制到另一个内部序列项

时间:2018-08-12 01:37:48

标签: system-verilog uvm

我的序列项中有两个类句柄。其中一个类包含另一个类的句柄。伪代码如下:

class seq_item extends uvm_sequence_item;
    rand class_a a;
    rand class_b b;
endclass// seq_item  

class class_a extends uvm_object;
    rand bit field_1;
    rand bit field_2; 
endclass//class_a

class class_b extends uvm_object;
    class_a a_handle;
    rand bit field_3;
    rand bit field_4;
endclass // class_b

所以,当我随机化时;我希望a_handle的field_1和field_2值与seq_item中的'a'相同。我尝试在seq_item的post_randomize内克隆($ cast(b.a_handle,a.clone()),但是它不起作用。 如何确保b.a_handle.field_1,b.a_handle.field_2的值与a.field_1,a.field_2的值相同?

1 个答案:

答案 0 :(得分:0)

您可以在seq_item内为您做一个约束

constraint fields {
  a.field_1 == b.a_handle.field_1;
  a.field_2 == b.a_handle.field_2;
}

您还需要在a_handle中将rand声明为class_b