You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何控制SystemVerilog类的rand_mode?实现仅随机化指定成员的需求

解决方法

首先明确:你之前用b_const.constraint_mode(0)只是禁用了b的约束,但b本身还是rand类型变量,所以随机化时依然会被赋予随机值,这就是问题所在。要实现仅随机化a、不随机化b和c,有两种简便方法:

方法一:指定randomize()的随机化变量列表

直接在randomize()中传入需要随机化的变量名,这样只有指定的变量会被随机化,其他rand变量保持当前值(未初始化则为默认的x态,若之前赋值过则保留赋值结果)。

示例代码:

A at = new();
// 仅随机化a,b和c保持原有状态
assert(at.randomize(a));

方法二:关闭b和c的随机属性

通过rand_mode(0)将b、c的随机属性关闭,这样它们会被当作普通变量,随机化过程中不会被修改。

示例代码:

A at = new();
at.b.rand_mode(0);
at.c.rand_mode(0);
assert(at.randomize());

如果需要后续恢复b、c的随机属性,只需调用rand_mode(1)即可。


内容的提问来源于stack exchange,提问作者mmmw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 04:55:13