Debugging 调试VHDL:如何调试?

Debugging 调试VHDL:如何调试?,debugging,vhdl,Debugging,Vhdl,我是VHDL的新手,不知道如何调试VHDL代码 是否有任何软件可以让我随着时间的推移或诸如此类的事情了解VHDL实体的内部信号 请帮助。使用类似的模拟软件。这种软件通常相当昂贵。一般来说,如果使用vhdl合成器,您将获得它的一些轻量级变体或类似软件,这些软件足以用于较小的事情。Xilinx提供了其设计套件的免费版本:。这个网页包含VHDL模拟器,尽管上次我试过,我更喜欢ModelSim的模拟器。但情况可能已经改变了 Wepack也不同于ModelSim,因为它不仅是模拟器,而且是成熟的FPGA设

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

是否有任何软件可以让我随着时间的推移或诸如此类的事情了解VHDL实体的内部信号


请帮助。

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

Xilinx提供了其设计套件的免费版本:。这个网页包含VHDL模拟器,尽管上次我试过,我更喜欢ModelSim的模拟器。但情况可能已经改变了

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


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

对于不完全符合语言规范的小型工作,GHDL可以作为模拟器IME使用。当你把事情推得更远时(你必须这样做,你不能仅仅在硅芯片上调试任何一段相当大的代码),你可能会发现你需要花一些钱在像Mentor的Modelsim/Questa或Aldec的ActiveHDL/Riviera这样的东西上

正如其他帖子所指出的,你可能需要一个类似的。但是,要调试模拟,有几种不同的方法:

  • 经典的打印语句——只需在过程代码中混入
    writeline(输出,[…])
    。如果您刚刚开始,那么添加打印语句将是非常宝贵的。对于我所做的大多数模拟调试(这是我工作的一部分),我几乎所有的调试都是基于我们在设计和测试中建立的打印语句进行的。只有在最终调试或更困难的问题上,我才使用下一个调试方法

  • “倾销”模拟(和)。这是设计(或设计的子集)的逐周期跟踪。这就好像你把一根线连到你设计的每一根电线上。所有你想要的关于你的设计的信息,但是在一个非常低的水平——信号水平。要使用此方法,请执行以下操作:

  • 创建模拟“转储”。此类转储的基本格式是。无论您使用哪种模拟器,都需要阅读有关如何制作VCD的文档。(您也可以在文档中搜索“dump”——您的模拟器可能会使用不同的文件格式进行转储。)

  • 创建模拟转储后,您可以将转储加载到。如果您正在使用,则将使用查看转储

注意:如果要使用GHDL和gtkwave调试VHDL代码,可以使用以下命令将其安装到上:

% sudo apt-get install geda ghdl

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

根据成本和可用性,这里提到的其他选项可能更合适。然而,到目前为止,我使用过的最好的HDL/netlist调试器是

您正在寻找的是VHDL模拟器。有几种备选方案可供选择:

  • 导师模型
  • 锡林克斯伊希姆
  • Aldec Riviera和ActiveHDL
  • 西米利
  • Simili软件是一个性能有限的免费版本

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


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

    首先,我创建了测试台来测试我的组件,使用isim来模拟此测试台,我在主代码区域插入断点,使用“单步执行”按钮单步执行代码,或使用“运行”按钮跳转到下一个断点
    与我使用任何编程语言一样,“调试”VHDL的专业方法是创建“测试台”。就像其他的VHDL一样,它很复杂。这里有一个“如何测试工作台”链接:


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

    操作系统没有限制,我可以访问Windows和Linux。您的答案非常有用。我会尽快试用,并在必要时寻求进一步帮助。价格不贵:Altera的Quartus免费提供ModelSim的轻量级版本。