来自Synopsys的GHDL中的IEEE:作为选项传递,但没有正确考虑

时间:2018-03-23 16:41:54

标签: vhdl ghdl

我正在使用GHDL模拟器,但我无法弄清楚如何使用非IEEE软件包,如 std_logic_textio (显然来自Synopsys),对于各种解析非常有用(在我的情况下是hread)。

我仔细编译了我的代码,并附带一个选项,表明我的ieee是Synopsys版本。

ghdl -a --ieee=synopsys system_tb.vhd

但是,我仍然收到错误:

system_tb.vhd:25:10:error: unit "std_logic_textio" not found in library "ieee"
system_tb.vhd:25:10:error:  (use --ieee=synopsys or --std=08 for this non-standard synopsys package)

我在这里使用的GHDL版本:

GHDL 0.35-dev (2017-03-01-221-gf170a6e) [Dunoon edition]
 Compiled with GNAT Version: 4.9.3
 mcode code generator

如何正确编译我的代码?

更新:以下是我的GHDL安装的一些信息,由github档案制作:

  • linux mint 18.2 Sonya
  • which ghdl返回 /usr/local/bin/ghdl
  • locate std_logic_textio返回
  • /usr/local/lib/ghdl/src/ieee2008/std_logic_textio.vhdl
  • /usr/local/lib/ghdl/src/synopsys/std_logic_textio.vhdl

更新:我还使用llvm后端重新编译了GHDL并获得了相同的结果。

2 个答案:

答案 0 :(得分:0)

which ghdllocate std_logic_textio报告的内容(如果您正在运行Linux)?

which ghdl
/opt/ghdl/mcode/bin/ghdl

locate std_logic_textio
/opt/ghdl/mcode/lib/ghdl/src/ieee2008/std_logic_textio.vhdl
/opt/ghdl/mcode/lib/ghdl/src/synopsys/std_logic_textio.vhdl

告诉我相关的库源位于相对于ghdl可执行文件的正确位置。据我所知,mcode ghdl(这是一个JIT编译器)不会像gcc和llvm那样构建编译的.o文件。

所以当你安装ghdl时,我猜测有些东西误入歧途,而且std_logic_textio.vhdl源位置错误或完全丢失。

使用这些对象的路径以及您的操作系统以及您安装ghdl的方式更新问题(来自github?),我们会看看是否可以进一步了解。

答案 1 :(得分:0)

我终于解决了这个问题:我使用LLVM后端从源代码重新编译了GHDL。然后问题显得更清楚了:显然,我真正的问题是在精化阶段,而不是分析......我的终端上出现的信息指的是精化阶段。我通过在精化阶段添加-e选项来解决错误。

我们还需要在精化期间传递ieee选项(在分析期间需要时)

关于mcode版本,我无法解释报告的行为。