You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何传递长度为0的空integer_vector(即NULL数组)?

解决VHDL中传递空integer_vector给过程的问题

错误原因

你使用的""是字符串字面量,和过程参数要求的integer_vector类型完全不匹配,VHDL没有对应的隐式转换规则,因此编译器无法找到匹配的子程序入口,抛出vcom-1600错误。

正确实现方式

VHDL中创建空数组的标准语法是类型名'(),直接用这个语法生成空的integer_vector即可:

方法1:标准空数组语法

Transaction(RX_BYTES => integer_vector'());

方法2:通过颠倒范围生成空数组(可选)

如果需要显式指定范围(空数组的范围上下界只需满足上界小于下界即可):

Transaction(RX_BYTES => integer_vector(0 downto 1));

完整可运行代码

entity foo is
end entity foo;

architecture bar of foo is
  procedure Transaction (
        constant RX_BYTES     : integer_vector
        ) is
    begin
        report "RX_BYTES'length = " & to_string(RX_BYTES'length);
    end procedure;
begin

  Transaction(RX_BYTES => integer_vector'()); -- 此处修正为正确的空数组传递

end architecture bar;

运行后,ModelSim会输出预期结果:

** Note: RX_BYTES'length = 0

内容的提问来源于stack exchange,提问作者El-Coder-SB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 00:32:38