在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1575|回复: 8

[求助] "Solve before not allowed on empty array"问题

[复制链接]
发表于 2022-3-1 09:39:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
请教一下各位,下面的代码理论上应该是没有什么问题的,但是用xrun跑会报问题,请教一下怎么解决?跟版本有关?

//***********************
    rand bit [7:0] data [][];
    rand bit [2:0] b_size;
    rand bit [3:0] b_len;
    constraint data_size {
        /*  solve order constraints  */
        solve b_len before data;
        solve b_size before data;

        /*  rand variable constraints  */
        data.size() == b_len+1;
        foreach (data[i] )
            data[i].size() == 2**b_size;
    }
//***********************

报的log:
        solve b_len before data;
                              |
xmsim: *E,RNDCNSTE (./transaction.sv,62|30): Randomization constraint has this error, which will cause the randomize function to return 0 and no new rand values will be set:
Solve before not allowed on empty array.
发表于 2022-3-1 11:05:11 来自手机 | 显示全部楼层
动态数组用之前不应该先new【】吗,这里换成queue是不是也能实现你的功能,换成queue后before data换成before data.size()应该就可以了
发表于 2022-3-1 15:27:28 | 显示全部楼层
本帖最后由 笃定 于 2022-3-1 15:43 编辑

试一下这个rand bit [7:0] data [][];
   rand bit [7:0] data [][];
    rand bit [2:0] b_size;
    rand bit [3:0] b_len;
    constraint data_size {
        /*  solve order constraints  */
        solve b_len before data;
        solve b_size before data;

        /*  rand variable constraints  */
        b_len -> data.size() == b_len+1;
        foreach (data )
            b_size -> data.size() == 2**b_size;
    }
发表于 2022-3-2 11:24:24 | 显示全部楼层
没调用randomize()?
b_len随机成0了?
 楼主| 发表于 2022-3-2 14:43:23 | 显示全部楼层


eaglezhang01 发表于 2022-3-1 11:05
动态数组用之前不应该先new【】吗,这里换成queue是不是也能实现你的功能,换成queue后before data换成befo ...


对,用queue其实也可以实现
 楼主| 发表于 2022-3-2 14:44:58 | 显示全部楼层


笃定 发表于 2022-3-1 15:27
试一下这个rand bit [7:0] data [][];
   rand bit [7:0] data [][];
    rand bit [2:0] b_size;


这个方式编译通过不了哦,感谢。目前已经找到替代办法了,随机化之后在post_randomize再去new data[][]

 楼主| 发表于 2022-3-2 14:45:54 | 显示全部楼层


anpengfei 发表于 2022-3-2 11:24
没调用randomize()?
b_len随机成0了?


这只是其中一部分代码,会去调用随机化的。

 楼主| 发表于 2022-3-2 14:46:48 | 显示全部楼层
感谢各位,已经找到替代办法了,在post_randomize里再去new data[][]就可以解决了。
发表于 2022-3-2 14:48:18 | 显示全部楼层


barbossa 发表于 2022-3-2 14:45
这只是其中一部分代码,会去调用随机化的。


嗯,调用了就行,我用vcs跑了没问题……你看下b_len的值
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-2 12:34 , Processed in 0.025684 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表