我已经使用VHDL了一段时间,我发现,调试VHDL设计比设计它更困难。由于进程是并发的,因此很难知道设计的哪个部分存在错误。
与C一样,我们可以使用一些简单的脱粒规则,例如使用printf语句来查看错误位置,是否有任何简单的提示和技巧可以在VHDL中找到这样的错误。
还请建议我使用任何网站或做同样的文件。
答案 0 :(得分:4)
这个问题可能有点模糊,但我尝试做的一些事情是为了让设计更容易处理。它以意见为基础,但确实来自个人经验。
您可以使用简单断言在模拟过程中捕获某些类型的问题。例如:
if (rising_edge(clk)) then
assert (a /= b)
report "a and b should never be equal!"
severity error;
end if;
同样,您可以单独使用report
语句来打印信号值。例如:
if (rising_edge(clk)) then
report "count is now " & integer'image(count);
end if;
Report
在编译的FPGA中没有做任何事情,仅用于模拟。
答案 1 :(得分:1)
相对于其他编程语言(例如C,Python等),我实际上发现VHDL更容易调试。语言本身相当简单,因为它不容易创建复杂的算法。 根据我的经验,轻松调试的秘诀是尽可能简化模块,并将它们组合在一起以创建复杂的结构。这样,查找错误变得更容易。