【发布时间】:2011-03-29 06:13:11
【问题描述】:
我是 VHDL 新手,不知道如何调试 VHDL 代码。
是否有任何软件可以让我了解我的 VHDL 实体的内部信号随着时间的推移或类似的东西?
请帮忙。
【问题讨论】:
-
操作系统没有限制,Windows和Linux都可以访问
我是 VHDL 新手,不知道如何调试 VHDL 代码。
是否有任何软件可以让我了解我的 VHDL 实体的内部信号随着时间的推移或类似的东西?
请帮忙。
【问题讨论】:
正如其他帖子所指出的,您可能需要simulator,例如GHDL。但是,要调试您的模拟,有几种不同的方法:
经典打印语句——只需在您的程序代码中混入writeline(output,[...])。 See this hello world example. 如果您刚刚开始,那么添加打印语句将非常宝贵。对于我所做的大部分模拟调试(这是我工作的一部分),我根据我们在设计中建立的打印语句和testbench 进行几乎所有的调试。只是为了最后的调试,或者更难的问题我使用下一个调试方法。
“转储”模拟(for GHDL see this page 和 this one)。这是您的设计(或设计的子集)的逐周期跟踪。就好像您将logic analyzer 连接到设计中的每一根线。您可能想要的有关您的设计的所有信息,但处于非常低的级别 - 信号级别。要使用此方法:
创建一个模拟“转储”。这种转储的基本格式是Value Change Dump or VCD。无论您使用哪种模拟器,您都需要阅读有关如何创建 VCD 的文档。 (您也可以在您的文档中搜索“转储”——您的模拟器可能会使用不同的文件格式进行转储。)
创建模拟转储后,然后将转储加载到 wave-form viewer。如果您使用的是gEDA package,那么您将使用gtkwave 来查看转储。
注意如果您想使用 GHDL 和 gtkwave 来调试您的 VHDL 代码,您可以使用以下命令将它们安装到 ubuntu:
% sudo apt-get install geda ghdl
(假设您对运行 ubuntu 的机器具有 root 访问权限)
【讨论】:
Xilinx 提供其设计套件的免费版本:http://www.xilinx.com/tools/webpack.htm。 Webpack 包含 VHDL 模拟器,虽然我上次尝试时更喜欢 ModelSim 的模拟器。不过它可能已经改变了。
Wepack 也不同于 ModelSim,因为它不仅是模拟器,而且是成熟的 FPGA 设计套件。
ModelSim 的缺点是它的许可证——据我所知,它只对学生免费。
【讨论】:
根据成本和可用性,此处提到的其他可能更合适。然而,迄今为止我使用过的最好的 HDL/网表调试器是Verdi。
【讨论】:
您正在寻找的是一个 VHDL 模拟器。有多种选择可供选择:
Simili 软件作为免费版本提供,但性能有限。
安装模拟器后,您需要学习如何使用它。通常,您也必须用 VHDL 编写测试平台,但有些模拟器可以让您从图形用户界面创建刺激信号。您可以在此页面上找到大量基于 VHDL 的测试平台示例:VHDL Tutorials。
在模拟器中,您可以在波形查看器中直观地检查设计状态,还可以在代码中设置断点来调试设计。
【讨论】:
使用ModelSim 之类的模拟软件。这种软件通常非常昂贵。一般来说,如果使用您的 vhdl 合成器,您将获得它的一些轻量级变体或类似的软件,足以处理较小的事情。
【讨论】:
对于不完全推动语言规范的小型工作,GHDL 可以作为模拟器 IME 正常工作。当您进一步推动事情时(您必须,您不能仅在硅片中调试任何相当大的代码),您可能会发现您需要在 Mentor 的 Modelsim/Questa 或 Aldec 的 ActiveHDL/Riviera 之类的东西上花费一些钱。
【讨论】:
首先我创建了测试台来测试我的组件,使用 isim 来模拟这个测试台,我在主要代码区域插入断点,使用 step into 按钮进入代码,或者 run 按钮跳转到下一个 break观点 就像我习惯使用任何编程语言一样
【讨论】:
“调试”VHDL 的专业方法是创建“测试平台”。像其他所有 VHDL 一样,它很复杂。这是“如何测试平台”链接:vhdl Testbenches
我很懒。我也不专业。我更喜欢做所谓的“强迫”。如果您使用的是 Xilinx、ModelSim 或 Vivado,那么您可以将 VHDL 代码放入“仿真”中。在那里,您可以将信号添加到波形,选择这些信号(右键单击它们)并将它们的值强制为“0”或“1”。然后在“强制”输入之后,运行模拟几纳秒并查看输出。
【讨论】: