首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vhdl设计调试技巧

vhdl设计调试技巧
EN

Stack Overflow用户
提问于 2015-03-06 17:38:03
回答 2查看 759关注 0票数 1

我使用VHDL已经有一段时间了,我发现,调试VHDL设计比设计它更难。因为进程是并发的,所以很难知道设计的哪一部分有bug。

像C一样,我们可以使用一些简单的欺骗规则,比如放一条printf语句来查看错误的位置,有没有什么简单的技巧和技巧可以在VHDL中找到这样的错误。

也请建议我任何网站或do文件,这可以用于相同的。

EN

回答 2

Stack Overflow用户

发布于 2015-03-06 18:37:42

这个问题可能有点模糊,但这里有一些我尝试做的事情,以使设计更容易处理。它是基于观点的,但确实来自个人经验。

  • 为您的模块编写测试平台。测试是一个非常大的主题,我不会尝试深入讨论,但您应该有一些测试,以便您可以在模拟器中评估您的设计。对于任何不是琐碎的设计,在模拟器中查找代码中的问题比在目标PCB中更容易、更快。
  • 保持设计模块化。就像任何编程一样,你通常不应该有巨大的3000行文件,因为很难一下子把这些功能保存在你的脑海里。一个例外可能是查找表;即使这样,我也倾向于将表放在它自己的文件中,没有其他东西,以保持“真实”的功能代码更具可读性。
  • 您可以使用简单的断言在模拟过程中捕获某些类型的问题。示例:

如果(rising_edge(clk)),则断言(a /= b)报告"a和b永远不应该相等!“severity error;end if;

  • 同样,您可以单独使用report语句来打印信号值。示例:

如果(rising_edge(clk)),则报告"count is now“&integer‘’image(Count);end if;

Report在编译后的simulation.

  • If中不做任何事情,它只针对Report,你已经有了针对你的设计的测试平台,而且它仍然很难调试,试着为设计中的各个模块编写简单的测试平台。使用C或其他语言编程,您不需要等到程序完成后才进行任何测试;您将在编写新功能时不断地测试它。VHDL语言中的等价物是在编写模块时测试各个模块,然后将它们组装成更复杂的functionality.

  • Try和一些更高级的验证技术。首先,您的模拟器可能会生成代码覆盖率指标。除此之外,还有几种改进测试的方法,例如约束随机测试、自我检查测试、基于断言的验证等等。这本身就是一个完整的话题。
票数 6
EN

Stack Overflow用户

发布于 2015-03-06 22:03:54

相对于其他编程语言(如C、Python等),我实际上发现VHDL更容易调试。该语言本身相当简单,因为它不容易创建复杂的算法。根据我的经验,容易调试的秘诀是保持模块尽可能简单,并将它们组合在一起以创建复杂的结构。这样,查找bug就变得更容易了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28895956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档