我可以在Verilog中调用VHDL函数吗
我目前正试图在我的Verilog设计中使用某些传统的VHDL代码。虽然可以在Verilog中实例化VHDL模块,但我找不到在Verilog中调用VHDL函数的方法。(除了将其包装在VHDL模块中并实例化模块之外)。在Verilog中是否有直接调用VHDL函数的方法?这可能取决于模拟器。例如,在Modelsim PE v10.2c中,不支持从Verilog/SystemVerilog直接调用VHDL函数 Verilog/SystemVerilog作用域中对VHDL对象的分层引用 支持的对象 可以引用的VHDL对象类型只有:信号、共享变量、常量、, 和未在流程中声明的泛型。不支持VHDL函数、过程和类型 支持,并且您无法读取VHDL进程变量 Modelsim PE用户手册v10.2c,第297页 您可以在SystemVerilog/VHDL模块之间使用带有导入关键字的通用包,但同样不支持VHDL函数我可以在Verilog中调用VHDL函数吗,vhdl,verilog,system-verilog,Vhdl,Verilog,System Verilog,我目前正试图在我的Verilog设计中使用某些传统的VHDL代码。虽然可以在Verilog中实例化VHDL模块,但我找不到在Verilog中调用VHDL函数的方法。(除了将其包装在VHDL模块中并实例化模块之外)。在Verilog中是否有直接调用VHDL函数的方法?这可能取决于模拟器。例如,在Modelsim PE v10.2c中,不支持从Verilog/SystemVerilog直接调用VHDL函数 Verilog/SystemVerilog作用域中对VHDL对象的分层引用 支持的对象 可以引
您最好参考您的模拟器手册,看看它是否受支持,因为显然没有普遍接受的方法。正如@Ivoudour所指出的,此功能的支持取决于模拟器。然而,对于那些这样做的人,用法应该大体相同。这意味着您可以简单地将基于VHDL的组件视为另一个模块。这假定您将设计编译到同一个库中 以下示例使用具有以下结构的ModelSim Altera Edition v10.4b: 和\u tb(VHDL)->和\u位(verilog)->和2(VHDL) and2.vhd 模拟 在ModelSim控制台中键入以下内容
vlib work
vcom and2.vhd
vlog and_bits.v
vcom and_tb.vhd
正常模拟。你在用什么工具?Cadence Incisive Enterprise Simulator?为什么要投否决票?哦,对不起@Paebbels。我不是指你。我只是想问问做过这件事的人。如有评论,将不胜感激。:)功能在哪里?打包?或者它们是某个特定实体/体系结构对的一部分?我能想到的唯一机制是编写一个PLI/VPI/DPI函数来遍历层次结构,找到函数并获得它的句柄。但我甚至不确定是否可以从VHPI/VPI调用VHDL函数/过程。请阅读(1.5年前)问题。他已经知道如何在Verilog中实例化VHDL模块。他想知道如何在Verilog模块中直接实例化用VHDL编写的函数。谢谢现在,我如何删除我的答案?
`default_nettype none
`timescale 1ns/1ns
module and_bits #(
parameter W = 5
) (
input wire [W-1:0] a,
input wire [W-1:0] b,
output wire [W-1:0] c
);
genvar i;
for (i=0; i<=W-1; i=i+1) begin: AND_GENERATE
and2 u_and2 (
.a (a[i]),
.b (b[i]),
.c (c[i])
);
end
endmodule
`resetall
library ieee ;
use ieee.std_logic_1164.all ;
entity and_tb is
end and_tb;
architecture tb of and_tb is
signal a : std_logic_vector(3 downto 0) := "0110";
signal b : std_logic_vector(3 downto 0) := "1111";
signal c : std_logic_vector(3 downto 0);
component and_bits
generic ( W : integer );
port (
a : in std_logic_vector(W-1 downto 0);
b : in std_logic_vector(W-1 downto 0);
c : out std_logic_vector(W-1 downto 0)
);
end component;
begin
dut: and_bits
generic map (W => 4)
PORT MAP(a=>a, b=>b, c=>c);
end tb ;
vlib work
vcom and2.vhd
vlog and_bits.v
vcom and_tb.vhd