gpt4 book ai didi

VHDL - 为什么直接在函数上使用长度属性会产生警告?

转载 作者:行者123 更新时间:2023-12-02 02:39:50 25 4
gpt4 key购买 nike

我有一个 VHDL 函数,它返回记录的 std_logic_vector 表示形式,并且我想要该 std_logic_vector 的长度。我可以直接在函数上使用长度属性。为什么这会在 ModelSim 中产生警告?我是否会引发一些微妙的问题?谷歌搜索警告文本没有发现任何我认为有帮助的内容。

my_function_returns_slv(my_record)'length;

** Warning: ../src/my.vhd(line#): (vcom-1515) Prefix of predefined attribute "length" is function call "my_function_returns_slv"

我已经编写了通过连接记录元素的 std_logic_vector 表示来组装输出的函数。记录的长度在编译时是固定的,但我不想对长度进行硬编码。我需要长度来创建使用函数输出的信号。因此,我不能只在函数的输出上调用 'length (例如:在保存函数输出的信号上调用 'length),因为不可能声明不受约束的信号来保存输出。我可以编写一个类似的函数来计算 std_logic_vector 的长度,但这会添加一些重要的代码,特别是对于我拥有的记录数。我应该接受 ModelSim 警告并继续吗?我是否应该处理编写函数来组合记录位宽的额外代码?有更好的解决方案吗?

有用的记录我正在使用的打包/解包子程序:

http://www.eda-twiki.org/twiki/pub/P1076/RecordReflectionToSlv/standard_functions.vhd

谢谢!

最佳答案

直接在函数上使用 'length 属性可以被视为只是获取函数结果的另一部分而不是主要输出,因此从概念的角度来看,这应该没有问题.

所以我会接受 ModelSim 警告,但也会将其视为该工具担心构造的指示,因此我会检查我的其他工具,例如综合工具和代码检查器,直接在函数调用上接受属性的使用。

看来您可以通过创建如下函数来避免 ModelSim 警告:

function len(slv : std_logic_vector) return natural is
begin
return slv'length;
end function;

这样就不会导致 ModelSim 警告:

signal MY_LEN : natural := len(slv_not(CONST));

因此,能够使用此类封装来避免警告,这首先证实了该警告有点不稳定。

关于VHDL - 为什么直接在函数上使用长度属性会产生警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40274025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com