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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2783|回复: 12

[求助] 数组中的default赋初值不能用吗

[复制链接]
发表于 2023-3-7 14:41:54 | 显示全部楼层 |阅读模式

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

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

x
按书上arrary=`{9,8,default:1}


报错,是不能用,还是有其他写法?
发表于 2023-3-7 15:06:41 | 显示全部楼层
屏幕截图 2023-03-07 150605.png
发表于 2023-3-7 19:40:25 | 显示全部楼层
新手才会玩弄这些语法游戏,你这写法就算语法过了可读性也太差了
 楼主| 发表于 2023-3-7 21:49:17 | 显示全部楼层


meistin 发表于 2023-3-7 19:40
新手才会玩弄这些语法游戏,你这写法就算语法过了可读性也太差了


但是写起来可能方便?想把代码简化
发表于 2023-3-8 09:20:14 | 显示全部楼层


zhuimeng2020 发表于 2023-3-7 21:49
但是写起来可能方便?想把代码简化


真的没多大意义
 楼主| 发表于 2023-3-8 10:26:06 | 显示全部楼层


要是别人代码这么写了,我看起来会方便一点。

感觉确实不咋会用
发表于 2023-3-8 11:24:05 | 显示全部楼层
本帖最后由 qsh123_123 于 2023-3-8 11:35 编辑

1,使用某种不常见的语法之前,请充分理解该语法的含义以及所使用的场合。default赋初值不能用于普通的packed数组。
2,参考《IEEE Std1800-2017 IEEE Standard for SystemVerilog--Unified Hardware Design, Specification, and Verification Language》的7.8.6、7.8.7和7.9.11章节,他们都是描述Associative arrays和Associative array methods的,引用原文如下图,仔细分析理解一下红框内的说明:“If a default value is specified, then reading a nonexistent element shall yield the specified default value...”——这里面说明了,当去读取联合数组不存在的成员时,default的值才会被返回。

                               
登录/注册后可看大图


在其中的章节7.8.6里面提到的表格7-1可以很明显地看到,这段语法描述的nonexistent entry限定在了Variable-size unpacked array的类型里面,而这种size容量可变的unpacked数组只有动态数组、队列和联合数组,且IEEE里面的default赋初值的语法举例只出现在associative array联合数组里面。普通的数组是带有数字下标且对应的value是跟数字下表positional对应的,只有联合数组是不一定存在数字下标(例如用string作为下标index搜索),这类数组才会出现nonexistent的index/entry去查找数组内容,所以default语法在这里才有意义。


                               
登录/注册后可看大图

所以,很明显,你还没理解该语法的用途所限定的场景就随意扩展到普通的数组上了,报错不是很正常么。
3,不要给团队随意增加难以阅读的代码风格,特别是常人不去翻IEEE语法字典都看不懂的代码风格——这是给其他人增加毫无意义的工作量的同时,对验证工作的推进和实际功能验证本身还没啥帮助。难道你会给自己不常用的语法风格写注释解释不成?

说实话,这段语法连我都需要去翻查IEEE字典才看懂其作用。先熟悉常用语法和其使用场景,再去扩展自己的能力边界。。不常用的知识有点像鸡肋,食之无味弃之可惜,学有余力有空的时候,拿来消遣还行,例如《哈利波特》里面的赫敏那样,拿大部头字典来消遣一下,也是不错的,或许会比玩游戏看看剧更香,业余时间去鼓捣吧,嗯。。。


 楼主| 发表于 2023-3-8 16:59:08 | 显示全部楼层


qsh123_123 发表于 2023-3-8 11:24
1,使用某种不常见的语法之前,请充分理解该语法的含义以及所使用的场合。default赋初值不能用于普通的pack ...


牛!学习了, 谢谢前辈。看书有点强迫症,也是没必要太纠结这些
发表于 2023-3-9 12:15:52 | 显示全部楼层
我反倒是特别欣赏你这样的学习方式,自己动手敲一敲代码,实验一下,这不就发现书的错误了吗,有的人读了发现了吗?绿皮书可不止有这个错误,
再说绿皮书那么经典,里面的东西能有多偏多冷呢
发表于 2023-3-9 15:21:53 来自手机 | 显示全部楼层
讲真,没啥意思这样子搞。你就不能老老实实写个循环来赋值?或者$readmem赖赋值?新手不要关注这些东西,没用!等你写的多了,熟练了再慢慢整这些语法的边边角角,并用到你的项目中,这样别人接手也会头疼,增加被抄底的难度,保饭碗!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-9-23 17:23 , Processed in 0.036038 second(s), 7 queries , Gzip On, Redis On.

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