Specman Agent子模块实例数量配置问题:monitors大小异常排查
问题解答
关于Specman是否支持配置子模块实例数量
Specman完全支持通过参数配置子模块实例的数量,你的场景就是这类需求的典型应用,只是代码写法有误导致未生效。
问题原因及修复方案
你当前代码里keep monitors.size() == read_only(num_of_channels);的写法存在错误,read_only()的作用是在约束中标记变量为只读属性,不能用来直接引用参数值约束列表大小。
修复后的代码
`unit phy_slave_agent_u like uvm_agent { !num_of_channels : uint(bits:4); monitors : list of phy_slave_monitor_u is instance; keep monitors.size() == num_of_channels; }
额外注意事项
要确保num_of_channels的赋值时机在约束求解阶段之前(比如Specman的pre_generate阶段、顶层环境配置或命令行参数传入),这样约束求解时才能获取到正确的参数值,生成对应数量的monitor实例。
如果修复后仍有问题,可排查:
num_of_channels是否被正确赋值为非0的有效值- 是否存在其他约束与该约束冲突,导致列表大小被强制设为0
内容的提问来源于stack exchange,提问作者Zeev Gal
相关产品推荐
相关产品推荐

