【问题标题】:Connecting multidimensional systemverilog port to vhdl module将多维systemverilog端口连接到vhdl模块
【发布时间】:2013-12-16 10:47:39
【问题描述】:

我正在尝试在 vhdl 顶级模块中实例化一个 systemverilog 模块。 systemverilog 模块使用二维压缩数组“channel_addr_i”(一个包含 3 个地址的压缩数组,每个包含 3 位)

SystemVerilog 模块声明:

`define N_PORTS 3
`define N_CHANNELS 4 

 module pwr_ctrl(
            input   logic                clk, rst_n,     
            input   logic [`N_PORTS-1 : 0] [2 : 0]   channel_addr_i,
            input   logic [`N_CHANNELS-1  : 0]   transaction_complete_i,
            output  logic [`N_CHANNELS-1  : 0]       sleep
    );

我必须将上述模块实例化为顶级 vhdl 模块中的一个组件,并将来自 3 个不同输入端口的地址(每个地址由 3 位组成:总共 9 位)传递给 systemverilog 组件。

VHDL 实例化:

 signal ch_addr    : std_logic_vector(8 downto 0);

 component pwr_ctrl is
port(

  clk   : in std_logic;
  rst_n : in std_logic;

  channel_addr_i            : in  std_logic_vector(8 downto 0); --CONSIDERING 3 INPUT PORTS
  transaction_complete_i    : in  std_logic_vector(3 downto 0); -- CONSIDERING 4 CHANNELS    
  sleep                     : out std_logic_vector(3 downto 0)

  );

 ch_addr  <= axi_addr(31 downto 29) & axi1_addr_n(31 downto 29) & addr_ahb(31 downto 29);


  power_ctrl : pwr_ctrl
port map(

  clk           => aclk,
  rst_n         => aresetn,

  channel_addr_i          => ch_addr,
  transaction_complete_i  => transaction_complete_i,
  sleep                   => sleep

);
end component; 

但是 modelsim 给出了这个错误: ** 错误:(vsim-8428) 无法将 VHDL 数组信号连接到 Verilog 多维数组端口 'channel_addr_i'。

除了更改 systemverilog 模块中的端口类型之外,任何人都可以提出其他替代方案吗?

【问题讨论】:

    标签: vhdl verilog system-verilog


    【解决方案1】:

    感谢 Martin 的评论。您的问题可以通过以下方式解决:

    type two_dim_array is array (natural range &lt;&gt;, natural range &lt;&gt;) of std_logic;

    我申报并分配成功。对不起我的愚蠢回答:(


    老答案

    在这种情况下,我认为 System-verilog 与 VHDL 不兼容,因为旧的 VHDL 并不真正支持多维数组。但是,你应该试试这个(我还没有尝试过,因为我们的实验室使用的是非常旧的 modelsim):

    将您的设置更改为 VHDL 2008 然后您可以声明类型

    type two_dim_array is array (natural range &lt;&gt;) of std_logic_vector;

    然后再试一次。

    但是,最好的情况是将您的 system-verilog 扩展为具有扩展数组的包装器。

    P/S:上次我尝试了system-verilog项目,多维数组在综合工具中自动扩展为一维数组。但是,模拟工具可能不允许这样做。祝你好运!

    【讨论】:

    • VHDL does support 2d arrays: type twod is array (natural range &lt;&gt;, natural range &lt;&gt; ) of std_logic;
    • @MartinThompson:非常感谢,我真的忘记了:(
    • 没问题,对于听起来刺耳的评论表示歉意,它的本意是“简单而翔实”,但出来有点“突然”!
    • @MartinThompson:我不是天生会说英语的人,所以我真的不明白你的评论。如果我做错了什么,请写得更简单。无论如何,我真的很抱歉我的错误:(
    • 您无需感到抱歉。我很抱歉 - 因为我的第一条评论有点粗鲁:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 1970-01-01
    相关资源
    最近更新 更多