我有一个用 RAL 建模的大型寄存器映射,我想随机化一些寄存器。如果我想单独约束寄存器,那么这很简单:
reg_model.register_a.randomize() with {value > 5;}
reg_model.register_b.randomize() with {value < 2;}
reg_model.update(status);
但是,如果我想要编写的两个值之间的关系,我认为我必须为整个寄存器模型添加一个约束:
reg_model.randomize() with {register_a.value > register_b.value;}
reg_model.register_a.update(status);
reg_model.register_b.update(status);
这里的问题是模型中的其他 254 个寄存器也会随机化。我可以只更新我想要随机化的两个寄存器,但是镜像将与硬件不匹配。如果我有后门访问工作,我可以刷新镜像,但我没有,我当然不想通过前门读回 254 个寄存器。
有没有办法随机化这两个寄存器,但仍然让约束求解器保持它们之间的关系?