我有一个带有实际输入的SV子块:
`include "Components.sv"
module EPO_REG #(parameter bit ExtIso = 1, real th_high = 5.5 , real th_low = 4.2)(input bit EPO_SETPOINT, NVC_PMOS_ON, NVC_NMOS_ON ,**input var real IVcc5, Viso, Vcc5_ext** ,output real EpoPower, Vcc5, IEPO);
real Iin;
real Vout;
real Vcap;
real Ids_nmos;
...........
...........
我将此块放在VHDL顶级(或Testbench)中,例如以这种方式:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.NUMERIC_STD.ALL;
USE IEEE.MATH_REAL.ALL;
entity EPO_REG_WRAP is
GENERIC (
ExtIso : bit := '1';
th_high : REAL := 5.5;
th_low : REAL := 4.2
);
PORT (
NVC_PMOS_ON : IN STD_LOGIC;
NVC_NMOS_ON : IN STD_LOGIC;
EPO_SETPOINT : IN STD_LOGIC;
Vcc5_ext : IN REAL;
IVcc5 : IN REAL;
Viso : IN REAL;
Vcc5 : OUT REAL;
EpoPower : OUT REAL;
IEPO : OUT REAL
);
end;
architecture beh of EPO_REG_WRAP is
COMPONENT EPO_REG
GENERIC (
ExtIso : bit := '1';
th_high : REAL := 5.5;
th_low : REAL := 4.2
);
PORT (
NVC_PMOS_ON : IN STD_LOGIC;
NVC_NMOS_ON : IN STD_LOGIC;
EPO_SETPOINT : IN STD_LOGIC;
Vcc5_ext : IN REAL;
IVcc5 : IN REAL;
Viso : IN REAL;
Vcc5 : OUT REAL;
EpoPower : OUT REAL;
IEPO : OUT REAL
);
end component;
begin
UEPO_REG: EPO_REG
GENERIC MAP(
ExtIso => '1',
th_high => 5.5,
th_low => 4.2
)
PORT MAP(
NVC_PMOS_ON => NVC_PMOS_ON,
NVC_NMOS_ON => NVC_NMOS_ON,
EPO_SETPOINT => EPO_SETPOINT,
Vcc5_ext => Vcc5_ext,
IVcc5 => IVCC5,
Viso => Viso,
EpoPower => EpoPower,
Vcc5 => Vcc5,
IEPO => IEPO
);
end;
但是我在详细说明中遇到了以下错误:
ncelab: *E,MAINVR: Mapping of Verilog var port of mode IN with VHDL port/signal of entity/component 'VCC5_EXT' (File : EPO_REG_WRAP.vhd, line: 42, position: 13) is not supported.
ncelab: *E,MAINVR: Mapping of Verilog var port of mode IN with VHDL port/signal of entity/component 'IVCC5' (File : EPO_REG_WRAP.vhd, line: 43, position: 10) is not supported.
ncelab: *E,MAINVR: Mapping of Verilog var port of mode IN with VHDL port/signal of entity/component 'VISO' (File :EPO_REG_WRAP.vhd, line: 44, position: 9) is not supported.
据我所知,SV支持端口上的实际值。我做错了什么?
答案 0 :(得分:0)
我可以通过给文件.sv
扩展名将Cadence(irun)Incisive 13.01设置为SystemVerilog来解析以下罚款。
module EPO_REG #(
parameter bit ExtIso = 1,
real th_high = 5.5 ,
real th_low = 4.2
)(
input bit EPO_SETPOINT, NVC_PMOS_ON, NVC_NMOS_ON ,
input var real IVcc5, Viso, Vcc5_ext,
output real EpoPower, Vcc5, IEPO);
endmodule
答案 1 :(得分:0)
我通过从SV-2008切换到SV-2012来解决。
SV-2008不允许从真实网络驱动,但它只管理变量。 SV-2012允许管理信号。