首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在verilog/system verilog中,最大线位宽度是多少?

在verilog/system verilog中,最大线位宽度是多少?
EN

Stack Overflow用户
提问于 2019-07-28 19:17:58
回答 3查看 2.9K关注 0票数 1

我正在尝试合成一个使用Intel Quartus软件的设计。在合成流程中,我得到了一个警告:"Verilog声明警告:向量有超过2**16位“。由于工程规格,导线长度超过2^16位。我真的需要担心这个警告吗?在Verilog/System Verilog中是否有任何关于导线最大位宽的限制?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-07-29 05:26:58

是的,你应该担心留言。这意味着你可能是在错误编码一些东西,因为我不认为你真的需要一个2^16位的整数向量(填充数组)。这意味着要表示一个大到2^16^2 = 1.1579209e+77的数字。您可能需要一个由位或字节组成的未打包数组。

票数 0
EN

Stack Overflow用户

发布于 2019-07-28 22:13:34

是的,根据SystemVerilog LRM,它可以是有限的,而且由于您的合成工具正在抛出警告,如果在您的项目的未来出现任何问题,您应该记住这一点。

对于打包数组(7.4.1节),您可能是根据警告引用的,预格式化的LRM读取:

封装阵列的最大大小可以限制,但必须至少为65 536 (2^16)位。

对于未打包的数组(第7.4.2节),它说:

实现可以限制数组的最大大小,但它们应该允许至少16 777 216 (2^24)元素。

但是,你真的需要一个2^16位宽的矢量吗?如果您有一个16位变量(例如,logic [15:0]),则可以处理2^16-1 = 65535以下的无符号值。如果你有一个2^16位宽的向量(例如logic [65535:0]),你可以将值显示到2^(2^16)-1 ≈ 2.00 × 10^19728

你能不能把你的电线分成几根小一点的电线?

票数 0
EN

Stack Overflow用户

发布于 2019-07-28 22:21:17

Verilog/SystemVerilog语言本身并不定义最大向量宽度。我隐约记得在IEEE1364 / IEEE1800 LRMs中提到的最起码的模拟值。

由于各种原因,合成器可能有其自身的局限性:例如软件复杂性、物理映射/路由、业务策略(“购买另一种工具”)等等。您收到警告的事实可能意味着物理映射/路由,因为大多数合成器都试图将所有比特保持在一个向量中;从而使整个路由和时钟树缓冲变得更容易。

2^16是很多位数,而您的设计超过了这一点。理论上,您可以将整个向量分割成更易于管理的块(如左、右),它可能会为您提供更好的路由和定时。如果您的设计满足所有要求,则可以忽略警告。当它突然不能被忽视的时候,就做好改变的准备吧。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57244232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档