【问题标题】:Debugging VHDL: How to?调试 VHDL:如何?
【发布时间】:2011-03-29 06:13:11
【问题描述】:

我是 VHDL 新手,不知道如何调试 VHDL 代码。

是否有任何软件可以让我了解我的 VHDL 实体的内部信号随着时间的推移或类似的东西?

请帮忙。

【问题讨论】:

  • 操作系统没有限制,Windows和Linux都可以访问

标签: debugging vhdl


【解决方案1】:

正如其他帖子所指出的,您可能需要simulator,例如GHDL。但是,要调试您的模拟,有几种不同的方法:

  • 经典打印语句——只需在您的程序代码中混入writeline(output,[...])See this hello world example. 如果您刚刚开始,那么添加打印语句将非常宝贵。对于我所做的大部分模拟调试(这是我工作的一部分),我根据我们在设计中建立的打印语句和testbench 进行几乎所有的调试。只是为了最后的调试,或者更难的问题我使用下一个调试方法。

  • “转储”模拟(for GHDL see this pagethis one)。这是您的设计(或设计的子集)的逐周期跟踪。就好像您将logic analyzer 连接到设计中的每一根线。您可能想要的有关您的设计的所有信息,但处于非常低的级别 - 信号级别。要使用此方法:

    1. 创建一个模拟“转储”。这种转储的基本格式是Value Change Dump or VCD。无论您使用哪种模拟器,您都需要阅读有关如何创建 VCD 的文档。 (您也可以在您的文档中搜索“转储”——您的模拟器可能会使用不同的文件格式进行转储。)

    2. 创建模拟转储后,然后将转储加载到 wave-form viewer。如果您使用的是gEDA package,那么您将使用gtkwave 来查看转储。

注意如果您想使用 GHDL 和 gtkwave 来调试您的 VHDL 代码,您可以使用以下命令将它们安装到 ubuntu

% sudo apt-get install geda ghdl

(假设您对运行 ubuntu 的机器具有 root 访问权限)

【讨论】:

  • 您的回答非常翔实。我会尽快尝试并在必要时寻求进一步的帮助
【解决方案2】:

Xilinx 提供其设计套件的免费版本:http://www.xilinx.com/tools/webpack.htm。 Webpack 包含 VHDL 模拟器,虽然我上次尝试时更喜欢 ModelSim 的模拟器。不过它可能已经改变了。

Wepack 也不同于 ModelSim,因为它不仅是模拟器,而且是成熟的 FPGA 设计套件。

ModelSim 的缺点是它的许可证——据我所知,它只对学生免费。

【讨论】:

    【解决方案3】:

    根据成本和可用性,此处提到的其他可能更合适。然而,迄今为止我使用过的最好的 HDL/网表调试器是Verdi

    【讨论】:

      【解决方案4】:

      您正在寻找的是一个 VHDL 模拟器。有多种选择可供选择:

      1. Mentors Modelsim
      2. 赛灵思 ISim
      3. Aldec Riviera 和 ActiveHDL
      4. 类似

      Simili 软件作为免费版本提供,但性能有限。

      安装模拟器后,您需要学习如何使用它。通常,您也必须用 VHDL 编写测试平台,但有些模拟器可以让您从图形用户界面创建刺激信号。您可以在此页面上找到大量基于 VHDL 的测试平台示例:VHDL Tutorials

      在模拟器中,您可以在波形查看器中直观地检查设计状态,还可以在代码中设置断点来调试设计。

      【讨论】:

        【解决方案5】:

        使用ModelSim 之类的模拟软件。这种软件通常非常昂贵。一般来说,如果使用您的 vhdl 合成器,您将获得它的一些轻量级变体或类似的软件,足以处理较小的事情。

        【讨论】:

        • 不贵:ModelSim 的轻量级版本随 Altera 的 Quartus 免费提供。
        【解决方案6】:

        对于不完全推动语言规范的小型工作,GHDL 可以作为模拟器 IME 正常工作。当您进一步推动事情时(您必须,您不能仅在硅片中调试任何相当大的代码),您可能会发现您需要在 Mentor 的 Modelsim/Questa 或 Aldec 的 ActiveHDL/Riviera 之类的东西上花费一些钱。

        【讨论】:

          【解决方案7】:

          首先我创建了测试台来测试我的组件,使用 isim 来模拟这个测试台,我在主要代码区域插入断点,使用 step into 按钮进入代码,或者 run 按钮跳转到下一个 break观点 就像我习惯使用任何编程语言一样

          【讨论】:

            【解决方案8】:

            “调试”VHDL 的专业方法是创建“测试平台”。像其他所有 VHDL 一样,它很复杂。这是“如何测试平台”链接:vhdl Testbenches

            我很懒。我也不专业。我更喜欢做所谓的“强迫”。如果您使用的是 Xilinx、ModelSim 或 Vivado,那么您可以将 VHDL 代码放入“仿真”中。在那里,您可以将信号添加到波形,选择这些信号(右键单击它们)并将它们的值强制为“0”或“1”。然后在“强制”输入之后,运行模拟几纳秒并查看输出。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多