VHDL测试台中的系统Verilog模型,真实端口问题



我有一个带有实际输入的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顶层(或测试台)中,例如:

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支持端口上的实际值。我做错了什么?

当Cadence(irun)Incisive 13.01设置为SystemVerilog时,我可以通过为文件提供.sv扩展名来解析以下fine。

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

我通过从SV-2008切换到SV-2012来解决。

SV-2008不允许从真正的网络驱动,但它只管理变量。SV-2012允许对信号进行管理。

最新更新