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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3115|回复: 10

[求助] 约束中小数一般怎么处理?

[复制链接]
发表于 2023-1-24 17:10:24 | 显示全部楼层 |阅读模式

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

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

x
约束里是不是不能写小数;如果项目中我们在约束中向上向下取整造成的精度损失怎么处理呢?求大佬解答下萌新的困惑,感谢!
发表于 2023-1-28 16:30:39 | 显示全部楼层
扩成整数随机再除?
发表于 2023-1-29 15:50:32 | 显示全部楼层
之前是这么干的:比如需要real a小数后3精度,原本范围应该0.000-10.000,约束b值就约束范围0-10000.通过post_random中a= 1.000*b/1000 来使用就好了。
 楼主| 发表于 2023-2-11 17:18:56 | 显示全部楼层


anpengfei 发表于 2023-1-28 16:30
扩成整数随机再除?


我是这么做的,但是除完是不是还是有损失,误差是不是会有影响?
 楼主| 发表于 2023-2-11 17:22:31 | 显示全部楼层


tom9393 发表于 2023-1-29 15:50
之前是这么干的:比如需要real a小数后3精度,原本范围应该0.000-10.000,约束b值就约束范围0-10000.通过po ...


谢谢前辈!我之前没考虑到精度的问题。但是会不会有无误差的情况,精度误差是不是没法避免呢?
发表于 2023-2-11 21:30:00 | 显示全部楼层
real类型在vcs约束会报错,在xrun约束需要数模混合的license
发表于 2023-2-14 14:19:18 | 显示全部楼层
本帖最后由 qsh123_123 于 2023-2-14 14:29 编辑

约束里不支持直接对real数据类型进行约束随机化,所以得使用pre_randomize/post_randomize手动计算real类型随机数的小数点的数值;
手动随机化的方式挺多,我之前的一种方式是在定义了real类型的变量之外,额外定义小数点后各个精度的控制位的rand int变量,然后在post_randomize函数里面类似泰勒展开将所有精度位相加即可。
如下图,是最终post_randomize()函数里的随机化结果求值过程:


                               
登录/注册后可看大图

bpp_real是最终需要随机化得到浮点数,bpp_int是整数位(单独随机),bpp[3:0]是4个bit的精度控制位,每个bit对应的1/2,1/4,1/8,1/16的精度,然后在post_randomize()里面全部累加,就可以做到二进制的小数点后4位精度控制的随机化。其他精度和进制类似。

发表于 2023-2-14 15:03:51 | 显示全部楼层


zhuimeng2020 发表于 2023-2-11 17:18
我是这么做的,但是除完是不是还是有损失,误差是不是会有影响?


为什么有误差呢,你总有个精度吧,几位精度就扩几位,也可以多扩……
 楼主| 发表于 2023-2-23 09:31:28 | 显示全部楼层


qsh123_123 发表于 2023-2-14 14:19
约束里不支持直接对real数据类型进行约束随机化,所以得使用pre_randomize/post_randomize手动计算real类型 ...


学习了~ 谢谢前辈
 楼主| 发表于 2023-2-23 09:32:36 | 显示全部楼层


anpengfei 发表于 2023-2-14 15:03
为什么有误差呢,你总有个精度吧,几位精度就扩几位,也可以多扩……


不知道精度应该控制成几位,怕随机后的变量,最终影响时序什么的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-9-23 15:24 , Processed in 0.026960 second(s), 6 queries , Gzip On, Redis On.

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