是VHDL包';IEEE.标准逻辑运算';是否随ghdl一起装运?

是VHDL包';IEEE.标准逻辑运算';是否随ghdl一起装运?,vhdl,simulation,xilinx,ghdl,Vhdl,Simulation,Xilinx,Ghdl,我试图用GHDL模拟Xilinx GTXE2收发器。在GTXE2_CHANNEL.vhd中,我得到一个错误,在库“ieee”中找不到“std_logic_arith” 首先,这是我的机器设置: Windows 7(pro、x64、德语) PowerShell 4.0 Python 3.4 Xilinx ISE 14.7(x64,英语) Xilinx Vivado 2014.2(x64,英语) 适用于Windows的GHDL 0.31() 所以问题1:GHDL中是否包含此包 我试图将VHD

我试图用GHDL模拟Xilinx GTXE2收发器。在GTXE2_CHANNEL.vhd中,我得到一个错误,在库“ieee”中找不到“std_logic_arith”

首先,这是我的机器设置:

  • Windows 7(pro、x64、德语)
    • PowerShell 4.0
    • Python 3.4
  • Xilinx ISE 14.7(x64,英语)
  • Xilinx Vivado 2014.2(x64,英语)
  • 适用于Windows的GHDL 0.31()
所以问题1:GHDL中是否包含此包

我试图将VHDL标准更改为VHDL-2008
--std=08
,但ghdl无法识别此选项,因此我目前正在使用VHDL-2002进行编译。但一切都没有改变

我还尝试从Xilinx的vhdl源文件夹
C:\Xilinx\14.7\ISE\u DS\ISE\vhdl\src\IEEE
手动包含IEEE源代码。但当我编译std_logic_arith时,它会抱怨缺少std_logic_1164,这通常是可以找到的。除此之外,std_logic_1164中的FOREIGN属性也存在问题

这是我要编译的文件列表/编译顺序(Xilinx'*.prj文件的修改版本):

此列表转换为GHDL命令,这些命令在临时目录中执行:

C:\Program Files (x86)\GHDL\0.31\bin\ghdl.exe -a --std=02 -P. --work=poc "D:\VHDL\git\SATAController\lib\PoC\tb\common\my_config_KC705.vhdl"
GHDL Messages:
  D:\VHDL\git\SATAController\lib\PoC\tb\common\my_config_KC705.vhdl:52:14:warning: package "my_config" does not require a body
C:\Program Files (x86)\GHDL\0.31\bin\ghdl.exe -a --std=02 -P. --work=unisim "C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\unisims\unisim_VCOMP.vhd"
C:\Program Files (x86)\GHDL\0.31\bin\ghdl.exe -a --std=02 -P. --work=unisim "C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\unisims\unisim_VPKG.vhd"
C:\Program Files (x86)\GHDL\0.31\bin\ghdl.exe -a --std=02 -P. --work=work "C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\unisims\primitive\FD.vhd"
C:\Program Files (x86)\GHDL\0.31\bin\ghdl.exe -a --std=02 -P. --work=work "C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\unisims\primitive\BUFG.vhd"
C:\Program Files (x86)\GHDL\0.31\bin\ghdl.exe -a --std=02 -P. --work=work "C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\unisims\primitive\BUFR.vhd"
C:\Program Files (x86)\GHDL\0.31\bin\ghdl.exe -a --std=02 -P. --work=work "C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\unisims\secureip\GTXE2_CHANNEL.vhd"
GHDL Messages:
  C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\unisims\secureip\GTXE2_CHANNEL.vhd:34:10: primary unit "std_logic_arith" not found in library "ieee"
最后是ieee.std_logic_1164中的外来属性错误:

问题2:如何编译ieee.std\u logic\u 1164

安装了GHDL环境的每个人都可以测试这个示例。Xilinx库不需要my_config_KC705.vhdl


这样做的目的是什么

  • iSim模拟非常慢->在1秒的cpu时间内计算大约15 ns的模拟时间;100美元->40分钟的等待
  • iSim使用大约2.6Gib的主内存-可能GHDL更节省
  • xSim对我们的VHDL库有一些抱怨,因此iSim目前是选项#1
  • 我之前用Xilinx原语测试了GHDL,它成功了,所以下一个挑战是模拟secureip组件:)
  • 如果我有足够的时间,我也会试试奎斯塔西姆

是ghdl随附此套餐

在ghdl手册或手册页中,您可以选择
--ieee=synopsys
--ieee=mentor
作为分析和详细说明命令的命令行选项

查看您的库目录:

david_koontz@Macbook: ls /opt/ghdl/ghdl_mcode/libraries/synopsys
std_logic_arith.vhdl      std_logic_misc.vhdl       std_logic_textio.vhdl
std_logic_misc-body.vhdl  std_logic_signed.vhdl     std_logic_unsigned.vhdl

david_koontz@Macbook: ls /opt/ghdl/ghdl_mcode/libraries/mentor
std_logic_arith.vhdl       std_logic_arith_body.vhdl
您可以找到package
std\u logic\u arith

由于存在相互冲突的声明,您可能会发现在分析和细化过程中还需要使用
-fexplicit
命令行选项

在分析(
-a
)或细化(
-e
)过程中给出的选项遵循以下命令

如何编译ieee.std\u logic\u 1164?

您不需要分析软件包
ieee.std_logic_1164
,它们是预先分析的。首先尝试上面的方法(通常是synopsys)。请注意,mentor和synopsys包都不包含任何外来属性。FOREIGN属性修饰用外语实现的子程序声明(函数)

info ghdl
ghdl.html
(第5节VHDL的ghdl实现)(使用供应商库的小节,其中给出了处理unisim的一点建议)。还有一个与其他语言接口的部分,处理如何使用FOREIGN属性

另请参见3.10 IEEE库陷阱,解释非IEEE“标准”库的问题,撇开Tristan的非母语英语拼写错误不谈

如果您真的想自己分析IEEE库,请先通读整个GHDL指南。它涉及几个应该首先理解的命令行选项。Windows ghdl发行版基于即时代码生成系统(mcode),该系统将代码分析为库文件(以.cf后缀结尾),并在精化过程中重新分析发行版库中找到的相同源代码

我已经成功地在OSX下的mcode版本ghdl上分析和使用了unisim库,而没有修补IEEE库

您会发现,就内存利用率而言,ghdl既不是最节省的,也不是最快的

还有一个你可以加入的邮件列表。ghdl正在Sourceforge上积极开发。看见ghdl-0.32应该在今年发布(希望如此),并将增加对-2008的支持以及大量的修复

Windows版本可能是一个新的解释版本,取代mcode版本(32位二进制)。所有的开发工作目前都由特里斯坦·金戈尔德单独完成。他还实现了一个全方位的LLVM后端版本,该版本有望在Windows上实现更好的性能

关于外来属性

我发现我有几个Xilinx
std\u logic\u arith
包源文件,其中包含外来属性,尽管行号减少了4

属性和编译器杂注的组合,例如:

  -- pragma map_to_operator MULT_TC_OP
  -- pragma type_function MULT_SIGNED_ARG
  -- pragma return_port_name Z
用于加速功能执行。ghdl无法使用这些外语库,mcode(Windows)版本在任何情况下都无法使用它们。此外,GHDL指南的5.8.1外来声明中要求外来属性的字符串值包含前缀为“VHPIDIRECT”,这是一项限制,允许在gcc版本中进行链接,在gcc版本中,这些库的ABI(如果找到)无论如何都不能保证兼容

您可以简单地注释掉错误消息中找到的属性。目前不可能加速执行,这在任何情况下都需要ghdl的gcc版本

使用ghdl的Synopsys软件包没有性能优势

david_koontz@Macbook: ls /opt/ghdl/ghdl_mcode/libraries/synopsys
std_logic_arith.vhdl      std_logic_misc.vhdl       std_logic_textio.vhdl
std_logic_misc-body.vhdl  std_logic_signed.vhdl     std_logic_unsigned.vhdl

david_koontz@Macbook: ls /opt/ghdl/ghdl_mcode/libraries/mentor
std_logic_arith.vhdl       std_logic_arith_body.vhdl
  -- pragma map_to_operator MULT_TC_OP
  -- pragma type_function MULT_SIGNED_ARG
  -- pragma return_port_name Z