特权同学

《基于FPGA的快速系统原型开发》CH3.2译

0
阅读(3499)

3.2 FPGA设计流程

高层次的FPGA设计流程包含了需求分析、结构设计、实现以及验证。在需求分析阶段,定义并完善高层次的需求,这一阶段的任务是完成系统功能的说明。下一阶段是结构设计阶段,这一阶段进行厂商、器件型号和开发工具的选择,也是对设计团队进行培训的最佳的时机。该阶段主要对设计中固定的离散功能模块与可编程模块进行划分,并对软硬件的执行进行划分,由此进行设计模块的划分。结构阶段完成后才是实现阶段。

设计实现包括设计输入、设计约束、设计整合、功能仿真、时序验证、报告分析以及产生可下载到目标板的配置文件。在紧接着的验证阶段中,为了确保系统需求的正确执行,正式并(如果有可能)独立的对设计进行测试。该阶段涉及持续并全面的仿真、设计测试、对目标板上的FPGA部件的调试和功能验证。表3.1列出了不同设计阶段的主要行为。

表3.1

设计阶段

主要行为

需求定义阶段

定义并完善高层次工程项目的详细功能和性能需求,解决歧义、争论和矛盾;需求文档化,精益求精。

结构设计阶段

选择功能实现技术;选择器件厂商、具体型号和开发工具;定义系统架构,考虑设计实现的可升级性;分割固定的离散功能模块与可编程模块;分割设计功能是使用软件还是硬件实现;定义设计模块功能和接口。

实现阶段

实现整个设计,设计输入、复查、约束、整合;初始设计仿真、时序验证、报告审查和分析。

验证阶段

设计测试,全面仿真、时序验证、必要的设计更改;产生下载到目标板的配置文件;在目标板上调试和验证功能;使用基于FPGA的嵌入式逻辑分析仪功能。

在设计阶段,很可能大量的时间和资源都花费在寻找某个重大的缺陷上,这是很常见的事。例如,大多数的设计循环周期花费在了设计优化、整合、调试和验证阶段,而比例很小的时间是花费在需求定义、结构设计、模块划分和初始设计输入阶段。这很有意思,因为只耗费少量资源的早期的设计阶段对设计实现产生着最重大的影响。如何掌控这些关键点是本书不断重复的主题。在这些功能设计阶段的努力能够对整个设计效率产生重大影响。

对设计早期的时间花费和努力程度产生影响的因素有很多。清晰、完整并合理的需求定义将使结构设计的效率得到提高。细致的进行结构设计有利于设计模块的划分与实现更加容易。如果很好的对设计模块进行划分并对其功能、性能和接口都做好定义,那么这个设计模块的开发、实现、复查、评估和测试就更加容易。越清楚有效的开发、执行并测试设计,进行整合、改进与维护也就越容易。如果这个有效的开发顺序能够被持续不断的执行下去,就能够最小化设计周期,避免很多由于不合理的设想,或者最后一刻的改变所带来的设计问题。

在设计早期额外的付出可以大大消减在执行一些固定(可变)功能块时所付出的总的时间和精力。快速原型开发流程是的基础是任何既定设计功能的优化、整合、调试和验证需要花费的时间和努力的最小化。

下面将对设计的主要阶段必须完成的任务的更多细节进行描述。

需求阶段

设计说明书——定义并详细描述功能需求、接口、性能以及设计余量。修订并保持设计需求说明书,使其成为 “活生生的文档”。

结构设计阶段

系统工程化/模块划分——为设计划分功能块、功能性分配、性能需求。定义系统结构以及设计层次。确定哪些设计模块将实现需求功能。

实现阶段

设计输入(HDL)——使用高层次软件语言(HDL)作为设计输入。编写代码实现功能需求,初步设计仿真,代码配置控制。

RTL综合——将高层次HDL代码块综合成低层次电路称之为寄存器传输逻辑(RTL)。RTL定义了布尔等式、数据存储和设计元件连接性。通过综合约束和软件选项能够影响设计实现。

行为级仿真——基于假设的门延时和布线延时的仿真。

布局布线——将RTL设计映射成FPGA器件可用的设计单元。设计工具反复的调整逻辑单元布局,使得设计单元找到“最佳”的位置。设计信号或者网络也会反复的连接或走线,从而寻找“最佳”的连接方案。“最佳”的定义就是“足够好”的达到或超过定义的性能需求。

时序仿真—— 一旦FPGA设计在目标器件上完成了布局布线(也称之为适配),相应的逻辑延时和走线延时就会被反馈到固定的数据库文件(包含了这些参数)中。使用更新后的数据库文件进行仿真,从而验证综合后的动态时序。

验证阶段

FPGA设计下载——定义了FPGA内每个可配置单元的设计文件被下载到器件中。该步骤也称为“配置”。

调试和验证——使用外部测试设备探测内部节点信号,设计功能和真实性能得到验证。

在详细的设计说明之外,快速嵌入式开发也需要设计者为高效率的设计、验证和测试作出努力。原型开发的另一个挑战是设计中包含相当多的新的未测试过的功能。最后,主要目标是尽可能快速高效的设计、调试、测试并递交完成预期功能需求的电路。

例如,在进行FPGA管脚分配映射时,设计者必须清楚内部信号的走线,从而减少片上信号线的交叉和冲突(可能发生在FPGA器件的某个死角)。如果设计团队对可以预知的后果视而不见,作出错误的决定,那么很可能需要返工。

图3.2给出了一个优化的设计流程。注意持续的自然迭代过程将贯穿于独立的设计步骤和阶段。最终的设计目标是最小化可以避免的设计迭代,从而达到设计效率的最大化。

图3.2

在这些关键的各方面额外的努力才会将开发时间减小到最低,也能够消减、限制或消除常见的错误和疏忽。开发流程中把握好这些细节才有可能达到最高效的设计实现:节约预算、减少日程安排并最小化实现期望功能所需要的各种资源。下面列出了包含一些设计风险的方面。

设计的风险

无法还原设计

无法集齐原始/所需的文件

混淆而无法找到最新版本的文件

影响多个设计“链”的设计更新带来的挑战

没有合适的工具、更新、相关文档(速成文档)和许可文件

如何使用较短的程序设计周期在相同等级下达到更高的效率是最大的挑战。尽管基本的设计方法在器件说明文档、应用笔记和其它技术文献或培训中都能够获得,但是最深刻的教训却是从亲身经历过的失败中获得的。这也通常是我们不愿意看到并希望避免的,而最重要的是不要重复失败。

Baidu
map