关于FPGA工程逻辑调试的一些总结

本文分享了Verilog同步设计的开发流程,包括撰写设计文档、代码设计、功能仿真和板卡测试。强调了遵循同步设计规则的重要性,特别是在处理多时钟域模块时。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

按照Verilog同步设计开发流程,总结一些自己的体会。

 

(1)撰写“设计文档”

在开始一个新的项目时,在实际动手写Verilog代码之前,首先是撰写“设计文档”,设计文档需要包含项目需求(项目需求要明确)、工程架构模块设计、模块端口信号定义、状态机设计、关键模块的时序图设计。

(2)Verilog设计

按照设计文档,展开Verilog代码设计。在实施Verilog代码设计过程中,可能会有一些与设计文档不同的修改,这些修改,需要及时体现在设计文档中,即需要及时更新设计文档。

(3)功能仿真

工程Verilog代码设计完之后,有必要进行功能仿真,验证设计逻辑功能是否正常。

(4)板卡测试

功能仿真通过之后,是板卡测试阶段。在该阶段,需要借助chipscope等软件逻辑分析仪等来确认逻辑时序是否正常。

板卡测试问题汇总:

a.如在ISE工程中,若逻辑设计已经确定,但存在每次编译之间由于自动布局布线不同、导致最终的功能异常的问题,则需要对该工程进行多次编译测试,测试该逻辑版本,经过多次不同的编译,看看板卡测试功能是否正常。

多次编译中,可尝试修改Map properties/starting placer cost table这个参数,该参数的不同值可以确保每次编译之间有确定的不同的布局布线。

b.当一块板卡测试通过之后,并不意味着该逻辑版本能在所有的板卡中都能通过,因此,需要对大量的板卡进行测试,以验证该工程设计在所有板卡间的一致性。

 

上述a/b过程,容易出现在Verilog工程本身含有大量的异步逻辑设计调试中。大量的异步逻辑导致,每次编译的布局布线都会存在差异,而这些差异可能会导致最终的功能异常;此外,大量的异步逻辑,在不同板卡间的适应性、一致性可能不一样,即存在一个逻辑bit文件或flash文件,在一个板卡测试中能够正常通过,但在其他板卡测试中就通不过。

c.在调试中,可能会遇到状态机的第一个状态的输出不正常,但状态机正确的跳转到了第二和第三等依次的状态,在第二和之后的状态输出都正确,唯有第一个状态的输出异常。

这种问题,可能是状态跳转存在问题,状态机在状态跳转过程中发生了不确定的问题。可以排查第一个状态相关的状态转移条件,何时进入第一个状态、何时退出第一个状态?进入及退出的条件是什么?进入及退出状态的标志信号是否存在亚稳态?

 

建议,在设计中严格遵守同步设计规则,注意区分跨时钟域信号的处理。提高自己对多时钟域模块、跨时钟域模块及信号的敏感性,这是最容易导致一个工程不稳定性的原因。

 

>>点击这里返回导航页<<

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值