Можно ли определить функцию 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;
Сообщение об ошибке:
pack.vhd:1:30: empty interface list not allowed