没有参数的VHDL函数?

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

Mat*_*lor 6

定义没有输入的函数时,应该省略括号,例如:

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