use*_*461 3 parameters compiler-errors function vhdl
是否可以定义一个没有参数的 VHDL 函数?
我正在尝试计算记录类型中的位数,但为此需要创建该类型的实例。因此,由于我不能只定义const BITS = t_rec.a'length + t_rec.b'length
,我想定义一个function BITS() return natural
实例化记录rec : t_rec
并返回 的函数rec.a'length + rec.b'length
。然而,编译器unexpected '(')
在函数声明处甚至在到达定义之前就失败了。
我只会包含一个未使用的虚拟参数,但我怀疑 lint 工具会抱怨。
在记录之前为每个记录字段定义子类型会过于冗长。
完整示例:
package pack is function BITS() return natural; end package pack; package body pack is function BITS() return natural is begin return 0; end function; end package body pack;
Run Code Online (Sandbox Code Playgroud)
错误信息:
pack.vhd:1:30: empty interface list not allowed
定义没有输入的函数时,应该省略括号,例如:
function BITS return natural is
variable rec : rec_t;
begin
return rec.a'length + rec.b'length;
end function;
Run Code Online (Sandbox Code Playgroud)
调用该函数时也不应包含括号。例如:
report integer'image( BITS );
Run Code Online (Sandbox Code Playgroud)
不是
report integer'image( BITS() );
Run Code Online (Sandbox Code Playgroud)
https://www.edaplayground.com/x/5fMB
归档时间: |
|
查看次数: |
4026 次 |
最近记录: |