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

在SystemVerilog模块中调用VHDL包内函数报错问题咨询

VHDL与SystemVerilog混合仿真问题解答

示例代码

VHDL包文件(my_package.vhd)

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

package my_package is
    -- Type declarations
    type my_array is array (0 to 3) of std_logic_vector(7 downto 0);

    -- Constant declarations
    constant MY_CONSTANT : std_logic_vector(7 downto 0) := "10101010";

    -- Function declarations
    function add(a, b: std_logic_vector(7 downto 0)) return std_logic_vector;
end package my_package;

package body my_package is
    function add(a, b: std_logic_vector(7 downto 0)) return std_logic_vector is
    variable result : std_logic_vector(7 downto 0);
    begin
        result := std_logic_vector(unsigned(a) + unsigned(b));
        return result;
    end function;
end package body my_package;

SystemVerilog模块(sv_module.sv)

// Import VHDL package and its contents
import my_package::*;


module sv_module;
    
    
    logic [7:0] a, b, result;

    initial begin
        a = 8'h05;
        b = 8'h03;
        result = add(a, b);
        $display("Result of VHDL add: %h", result);
    end
endmodule

编译命令

vcom -mixedsvvh -work ../my_lib ../vhd_source/my_package.vhd
vlog -mixedsvvh -work ../my_lib ../sv_source/sv_module.sv

疑问点

  • 为何只有将sv_module.sv编译到与my_package.vhd相同的库../my_lib时才能成功?否则会报错vlog-13006:无法找到包;
  • 编译成功后仿真时为何出现报错vopt-7063:无法在层级名称'add'中找到'add'。

问题解答

问题1:跨库引用VHDL包失败的原因

Questasim中,VHDL包属于编译时指定的目标库,SystemVerilog的import语句默认仅在当前模块所在的库中查找目标包。如果将SV模块编译到与VHDL包不同的库,import my_package::*不会自动搜索其他库中的包。

若要实现跨库引用,需在import时显式指定库名,例如:

import my_lib::my_package::*;

但这种方式需要确保目标库已被工具正确加载,相比之下,将相关文件编译到同一库是更简单可靠的方案,避免跨库引用的兼容性问题。

问题2:仿真时找不到函数add的原因

这是Questasim混合语言仿真的解析限制导致的:虽然使用了import my_package::*导入包成员,但VHDL包中的函数无法直接通过裸名(如add)被仿真优化工具(vopt)正确识别。

解决方法是调用函数时显式添加包名前缀:

result = my_package::add(a, b);

显式限定包名后,工具能明确定位到函数的定义位置,避免优化阶段的解析错误。

内容的提问来源于stack exchange,提问作者Edu Fer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 08:30:21