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

Specman E用参数表示零位数量:定义CUSTOM_BITS'd0编译报错求解决

解决Specman E中参数化零值的约束编译错误

错误原因

你遇到的GEN_NO_GENERATABLE_NOTIF错误,本质是Specman的约束求解器检测到当前约束块中没有需要随机生成的元素——比如你用keep把变量直接固定为CUSTOM_BITS'd0这种常量,没有给求解器提供任何可生成的取值空间。

解决方法

根据你的需求,分两种场景处理:

场景1:变量无需随机,固定为参数化零值

直接放弃keep约束,改用初始化或赋值的方式:

extend sys {
    CUSTOM_BITS: uint = 8;
    // 方式1:声明时直接初始化
    some_var: uint(CUSTOM_BITS) = CUSTOM_BITS'd0;
    
    // 方式2:在方法中赋值
    run() is also {
        another_var.set(CUSTOM_BITS'd0);
    };
};

场景2:变量需要随机,但零是可选值之一

确保约束中包含可生成的取值范围,比如:

extend sys {
    CUSTOM_BITS: uint = 8;
    some_var: uint(CUSTOM_BITS);
    
    // 允许变量取0到该位数最大值之间的任意值
    keep some_var in [CUSTOM_BITS'd0 .. (2**CUSTOM_BITS - 1)];
    
    // 或者指定零为其中一个可选值(搭配其他选项)
    // keep some_var == CUSTOM_BITS'd0 or some_var == CUSTOM_BITS'd10;
};

参数化零值的替代写法

Specman E中也支持0[CUSTOM_BITS]的写法,和CUSTOM_BITS'd0等价,你可以根据习惯选择:

keep some_var == 0[CUSTOM_BITS];

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 13:03:15