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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2035|回复: 2

[求助] 关于约束控制的疑问

[复制链接]
发表于 2015-5-28 21:31:43 | 显示全部楼层 |阅读模式

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

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

x
直接上代码,体现更清楚
class A;
    rand int data;

    constraint a_cons {
        data inside {[1 :9]};
        data % 2 == 0;
    }
endclass

class B;
    rand int data;

    constraint b_cons {
        data inside {[1 :9]};
        data % 2 == 1;
    }
endclass


class C;
    A a=new();
    B b=new();

    constraint c_cons{
        b.data == a.data + 3;
    }
endclass

意图很简单,a、b中的域data都是0~9的整数,a为偶数,b的为奇数。
现在在c类里想要将其之间的data差距控制为3.

疑问1:然而这样的代码,对C进行randomize后得到的结果却并不是预期的,求助大神,为何?

疑问2:考虑过在c中,将约束c_cons改为c的post_randomize,也是不行,想知道这种层级包含class的随机的顺序是如何进行的?或者能提供一种思路也好,谢谢!
发表于 2015-5-29 06:32:41 | 显示全部楼层
a和b的randomize啥时候调用的?
各个类的randomize是独立求解的,你这样不行。
可以放在一个类里,或者搞个全局变量,各个类通过全局变量关联,在约束中调用。
 楼主| 发表于 2015-5-29 21:17:01 | 显示全部楼层
回复 2# zw84611


   嗯 原打算直接对第三个类进行randomize的 达不到效果 你的意思是各自分别randomize,全局变量作为中间的临时转存是吧?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-12-18 23:26 , Processed in 0.018624 second(s), 6 queries , Gzip On, Redis On.

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