我正在使用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档案制作:
which ghdl
返回 /usr/local/bin/ghdl
locate std_logic_textio
返回:更新:我还使用llvm后端重新编译了GHDL并获得了相同的结果。
答案 0 :(得分:0)
which ghdl
和locate 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版本,我无法解释报告的行为。