【问题标题】:Passing array from system verilog to VHDL将数组从系统verilog传递到VHDL
【发布时间】:2014-06-03 21:56:54
【问题描述】:

我有一个 VHDL 代码,它需要一个通用元素数组。 COEF_LIST : coef :=(0,0,1,1,2,-2,1,-2,1)

如何将新的 COEF_LIST 集从我的系统 verilog 测试台发送到 VHDL 实体?

VHDL 中的泛型与verilog 中的参数相同。

我将 coef 声明为

  parameter  real COEFF[8:0] = '{0,0,1,1,2,-2,1,-2,1}; 

在系统verilog中。

我尝试通过使用(在我的 verilog 测试平台中)

 vhdl_entity  #(
                 .COEF_LIST(COEFF)
               )

我收到以下错误

                 **.COEF_LIST(COEFF)
                                |

ncelab: *E,CFIGTC (./vhdl_entity_tb.vams,41|36): VHDL generic vhdl_entity.COEF_LIST (../views/rtl/vhdl_entity.vhd: line 34, position 14) 类型与 Verilog 不兼容. irun: E,ELBERR: 细化期间出错(状态 1),正在退出。*

这不起作用。如何使其与 VHDL 兼容? 我用的是incisiv 13.20.008版本

有人可以建议怎么做吗?

【问题讨论】:

  • 您能否详细说明问题所在? (最好通过编辑您的帖子)
  • 尝试通过在 VHDL 实体上设置默认参数来简化问题,看看是否可行。您已声明为实数数组,但 VHDL 阐述器可能会将数组视为整数列表。看看当你给数字加上小数点后会发生什么。
  • 发布 VHDL 实体的声明(只是泛型就足够了,没有端口)以更好地显示发生了什么。

标签: arrays generics parameter-passing vhdl system-verilog


【解决方案1】:

似乎您将 COEF_LIST 声明为 VHDL 中的整数数组,而您正试图从 SystemVerilog 传递实数数组。尝试更改为:

parameter int COEFF[8:0] = '{0,0,1,1,2,-2,1,-2,1};

【讨论】:

  • 假设COEF_LIST : coef :=(0,0,1,1,2,-2,1,-2,1) 是泛型接口列表中的泛型声明,coef 的类型声明从现有信息中是不可知的。仅当数组类型 coef 具有整数基类型并且 incisiv 提供隐式类型转换时,您的答案才有效。这似乎是两个语言域之间的类型不兼容问题,需要在两个域中进行修复。
  • @DavidKoontz 因此答案中的“似乎”而不是“因为”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多