VHDL TestBench中的系统Verilog模型,真正的端口问题

时间:2014-09-22 13:15:23

标签: vhdl system-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顶级(或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支持端口上的实际值。我做错了什么?

2 个答案:

答案 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允许管理信号。