我有一个通过函数创建的接口记录,但是当我尝试编译时,我得到一个关于接口不受约束的错误。VHDL记录没有完全约束
记录:
type t_my_if is record
wdata : std_logic_vector;
wen : std_logic;
end record;
函数声明:
function init_my_if_signals(data_width : natural) return t_my_if;
函数体:
function init_my_if_signals(data_width : natural) return t_my_if is
variable init_if : t_my_if(wdata(data_width - 1 downto 0));
begin
init_if.wdata := (others => '0');
init_if.wen := '0';
return init_if;
end function;
注ŧ尽管其中一个记录参数是std_logic_vector
,但它的大小在通过初始化函数创建时被定义。所以我不知道为什么我收到以下错误:
(vcom-1361) Subtype of "my_if" is not fully constrained.
的接口是实体的inout
端口上,所以它看起来是这样的:
my_if : inout t_my_if := init_my_if_signals(8)
编辑:
下面的代码有效,但我希望能够动态定义数据宽度,所以这个解决方案对我来说并不是最优的。
新纪录:
type t_my_if is record
wdata : std_logic_vector(7 downto 0;
wen : std_logic;
end record;
新功能:
function init_my_if_signals(data_width : natural) return t_my_if is
variable init_if : t_my_if;
begin
--same as above
可以记录时instantiatied我没有定义呢?
我在2008年编译模式。像您在编辑中一样添加约束条件解决了我的问题。谢谢! – Aaron