在 systemverilog 模块中使用包内的 VHDL 函数时出错。混合 VHDL - SystemVerilog -mixedsvvh 示例

问题描述 投票:0回答:1

我展示了一个非常简单的示例的 VHDL 和 SystemVerilog 代码。

我想知道是否可以做我正在尝试的事情。如果是的话,为什么我会收到错误考虑到我正在使用 Questasim,这是代码:

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;

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`

我想做的事情可能吗?我想知道为什么只有当我使用与 my_package.vhd、../my_lib 相同的文件夹作为目标库时才可能编译 sv_module.sv。否则我会收到错误:vlog-13006 找不到包 而且我也想知道为什么,之后尝试模拟时,出现错误: Error (suppressible): ../sv_source/sv_module.sv(13): (vopt-7063) Failed to find 'add' in hierarchical命名为“添加”。

问候。

vhdl simulation system-verilog modelsim questasim
1个回答
0
投票

目前无法直接从另一种 HDL 语言按程序调用用一种 HDL 语言定义的过程。 Questa 的

-mixedsvvh
开关用于在混合 HDL 端口边界连接端口时共享类型信息。

© www.soinside.com 2019 - 2024. All rights reserved.