gpt4 book ai didi

vhdl - VHDL 包 'IEEE.std_logic_arith' 是否随 ghdl 一起提供?

转载 作者:行者123 更新时间:2023-12-01 17:19:27 25 4
gpt4 key购买 nike

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

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

  • Windows 7(专业版、x64、德语)
  • PowerShell 4.0
  • Python 3.4
  • Xilinx ISE 14.7(x64,英文)
  • Xilinx Vivado 2014.2(x64,英文)
  • 适用于 Windows 的 GHDL 0.31 (http://sourceforge.net/projects/ghdl-updates/)

  • 所以问题1:这个包是否包含在 GHDL 中?

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

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

    所以这是我要编译的文件列表/编译顺序(Xilinx' *.prj-files 的修改版本):
    # board and device configuration
    #vhdl poc "tb/common/my_config_KC705.vhdl"

    # IEEE packages
    #xilinx ieee "ieee/std_logic_1164.vhd"
    #xilinx ieee "ieee/std_logic_arith.vhd"

    # Xilinx Packages and Primitives
    xilinx unisim "unisims/unisim_VCOMP.vhd"
    xilinx unisim "unisims/unisim_VPKG.vhd"
    xilinx work "unisims/primitive/FD.vhd"
    xilinx work "unisims/primitive/BUFG.vhd"
    xilinx work "unisims/primitive/BUFR.vhd"
    xilinx work "unisims/secureip/GTXE2_CHANNEL.vhd"

    该列表被翻译成 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 中的 FOREIGN 属性错误:
    PS D:\VHDL\git\SATAController\lib\PoC\temp\ghdl> & 'C:\Program Files (x86)\GHDL\0.31\bin\ghdl.exe' -a --std=02 '-P.' --work=ieee 'C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd'
    GHDL Messages:
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:211:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:212:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:213:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:214:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:215:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:216:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:218:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:219:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:220:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:221:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:223:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:224:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:225:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:227:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:228:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:229:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:231:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:232:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:233:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:235:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:236:15: value of 'FOREIGN attribute does not begin with VHPIDIRECT
    C:\Xilinx\14.7\ISE_DS\ISE\vhdl\src\ieee\std_logic_arith.vhd:238:15: 'FOREIGN allowed only for architectures and subprograms

    问题二:如何编译 ieee.std_logic_1164?

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

    这样做的目的是什么?
  • iSim 模拟非常慢 -> 大约 15 ns sim-time 在 1 秒 cpu-time 中计算; 100 us -> 40 分钟等待
  • iSim 使用大约 2.6 GiB 的主内存 - 可能是 GHDL 更节省
  • xSim 对我们的 VHDL 库有些提示 - 所以 iSim 目前是选项 #1
  • 我之前用 Xilinx 原语测试过 GHDL 并且它工作正常,所以下一个挑战是模拟一个 Secureip 组件 :)
  • 如果我有足够的时间,我也会尝试 QuestaSim
  • 最佳答案

    是的,这个包包含在 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

    你会发现包 std_logic_arith .

    因为存在相互冲突的声明,您会发现还需要使用 -fexplicit分析和详细说明期间的命令行选项。

    分析( -a )或细化( -e )期间给出的选项遵循命令。

    如何编译 ieee.std_logic_1164?

    您应该不需要分析包 ieee.std_logic_1164 , 它们是预先分析的。首先尝试上述方法(更常见的是 synopsys)。请注意,指导者和 synopsys 包都不包含任何 FOREIGN 属性。 FOREIGN 属性修饰以外语编程语言实现的子程序声明(函数)。
    info ghdlghdl.html ( GHDL guide)第 5 节 VHDL 的 GHDL 实现(使用供应商库的小节,它提供了一些关于处理 unisim 的建议)。还有一节与其他语言的接口(interface)处理如何使用 FOREIGN 属性。

    另请参阅 3.10 IEEE 库陷阱,解释非 IEEE '标准' 库的问题,撇开 Tristan 的非母语英语拼写错误。

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

    我已经在 OS X 下的 ghdl 的 mcode 版本上成功地分析和使用了 unisim 库,而无需修改 IEEE 库。

    您会发现 ghdl 在内存利用率方面不是最节俭的,也不是最快的。

    还有一个 Ghdl-discuss您可以加入的邮件列表。 ghdl 正在 Sourceforge 上积极开发。见 ghdl-updates . ghdl-0.32 应该会在今年发布(希望如此),并且会增加对 -2008 的支持以及无数的修复。

    Windows 版本可能是取代 mcode 版本(它是 32 位二进制文​​件)的新解释版本。目前所有的开发工作都由 Tristan Gingold 独自完成。他还实现了一个全方位的 LLVM 后端版本,它有望在 Windows 上实现更好的性能。

    关于 FOREIGN 属性

    我发现我有几个 Xilinx std_logic_arith打包包含 FOREIGN 属性的源文件,尽管行号减四。

    属性和编译器编译指示的组合,例如:
      -- pragma map_to_operator MULT_TC_OP
    -- pragma type_function MULT_SIGNED_ARG
    -- pragma return_port_name Z

    用于允许加速功能执行。 ghdl 无法使用外语库,mcode (Windows) 版本无论如何都无法使用它们。在 中也有要求5.8.1 对外申报在 GHDL 指南中, FOREIGN 属性的字符串值包含前缀为“VHPIDIRECT”,这是一个限制,允许在 gcc 版本中进行链接,如果找到这些库的 ABI,无论如何都不能保证兼容。

    您可以简单地注释掉错误消息中找到的属性。没有加速执行的可能性,这无论如何都需要 ghdl 的 gcc 版本。

    与使用 ghdl 的 Synopsys 软件包相比,没有性能优势。

    关于vhdl - VHDL 包 'IEEE.std_logic_arith' 是否随 ghdl 一起提供?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25837237/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com