【问题标题】:compiler errors when compiling *.vhdl into a library - Altera Quartus II将 *.vhdl 编译到库中时出现编译器错误 - Altera Quartus II
【发布时间】:2014-03-27 19:37:36
【问题描述】:

我从http://www.vhdl.org/fphdl/ 下载了浮点包并做了以下操作:

  1. 我在我的项目中包含了 math_utility_pkg.vhd、fixed_pkg_c.vhd 和 float_pkg_c.vhd 文件
  2. 我将它们分配到一个库中(按照Compiling *.vhdl into a library, using Altera Quartus II 中的说明)
  3. 尝试编译它们,首先将我的项目的顶级实体设置为顶级实体,第二次将 float_pkg_c.vhd 设置为顶级实体

我遇到了几个问题:

  1. 我不确定是使用 ieee_proposed 库名称还是 floatfixlib,因为文档中建议使用前者,而后者在包文件中使用
  2. 编译时,我不断从包文件中收到错误(例如“未能详细调用子程序“remainder””等)
  3. 似乎在包文件具有后缀 _c 的事实之间存在一些争议,但它应该在没有它的情况下包含(例如使用 FLOATFIXLIB.float_pkg.all;),我目前无法解决该错误虽然
  4. 最后,当 float_pkg_c.vhd 设置为顶级实体时,编译器会生成此错误:“顶级设计实体“float_pkg_c”未定义”

我不断尝试上述尝试的变体,但毫无进展。

【问题讨论】:

    标签: compiler-errors floating-point vhdl intel-fpga


    【解决方案1】:

    您可能希望重新下载软件包。我没有看到 math_utility_pkg 也没有看到包中引用的库 floatfixlib。您必须有一个非常旧的版本。

    我刚刚重新下载了 Altera 发行版。在其中,我看到您交叉列出的帖子中引用的包:fixed_float_types_c.vhdl、fixed_pkg_c.vhdl 和 float_pkg_c.vhdl。我还注意到 zip 文件中的文件日期戳是:2009 年 8 月 27 日。

    【讨论】:

    • 我尝试了你的建议,似乎这是一个问题。但是,当我尝试编译项目时,我仍然得到这个输出:pastebin.com/TUtGax7M
    【解决方案2】:

    我看了:pastebin.com/TUtGax7M

    看起来包已编译,您正在尝试编译您的设计,但调用“to_float”时失败。没有看到代码,我只能猜测。对 to_float 的调用需要通过传递对象(下面的第一个赋值)或结果的索引(下面的第二个赋值)来确定结果的范围。

    signal A_fp32 : float32 ;
    . . .
    
    -- Real and/or Integer Literal
    A_fp32 <= to_float(6.5, A_fp32); -- size using A_fp32
    A_fp32 <= to_float(6.5, 8, -32); -- pass indicies
    

    我也看到分裂失败的呼吁。请注意,divide 处于综合的前沿。供应商可能支持也可能不支持划分。简短的故事是你可能需要提交一份针对分歧的错误报告,而不是使用他们的宏/向导。请注意,如果他们支持用于除法的宏/向导,那么他们可以进行综合,这对他们来说是有利的,让您尽可能多地使用他们的供应商特定代码。

    【讨论】:

    • 这仅限于信号吗?我可以在我的代码中看到问题:variable denum : integer; variable num : integer; variable dividend : float (4 downto -27); dividend := to_float(num) / to_float(denum); 您的建议很清楚,但dividend := to_float(num, dividend) / to_float(denum, dividend); 返回:“float_pkg_c.vhdl(3843) 处的 VHDL 语法错误:范围的右边界必须是一个常量”和dividend := to_float(num, 4, -27) / to_float(denum, 4, -27);返回:“SM.vhd(93) 处的 VHDL 错误:值“-27”超出目标约束范围(0 到 2147483647)”
    • 不,应该没问题。在我看来,它更像是一个工具错误。奇怪的是,这些是第一个使用负范围的软件包,而供应商一直很难使用它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多