大吊车挖土机

自顶而下设计FPGA

对IC设计而言,FPGA设计层级大致包括:系统级和行为级,RTL级,门级和晶体管级。然而更普遍的情况,FPGA只是用作实时数据采集控制、某些快速处理算法、PCIe\DDR3等高速数据通道,甚至某些简单的胶合逻辑等,FPGA开发工程师基本不会接触到门级和晶体管级。自顶而下FPGA设计方法,按照职位分工不同,大致归纳如下。

1. 系统架构师工作在系统级,一般使用高级语言如System C描述一个系统的规格,仿真整个系统的功能和性能等,往往不涉及具体的实现细节,但应该对系统实现所需要的资源等关键指标进行充分评估,可能包括模块互联总线形式,IO资源(Clock, GTX\GTP等),IP,核心算法等,确定FPGA选型,设计模块划分等。系统级设计工具推荐使用HDL designer,系统结构能够图形化表示,一目了然;多种输入方式:框图、流程图、状态机、真值表、基于接口设计(IBD)、表格式输入输出、HDL文本等,且都可以自动生成可综合的HDL代码。系统级的输出包括:系统设计描述和功能模块划分,FPGA资源分配,可用的IP及算法等。

2. 逻辑设计工程师工作在RTL级,他们使用Verilog\VHDL进行功能模块开发,需要精确到时钟周期;当然也可以使用System Generator(Matlab)和高层综合工具HLS(C语言)开发算法。RTL级的结果输出必须是仿真正确,代码可综合的。条件允许的话,需要进行后仿真或板级验证。RTL级的输出包括:FPGA设计文档,可综合的FPGA设计代码(不限于Verilog\VHDL, systemGen或者HLS的设计输出),性能及资源分析报告,验证方法及测试结果。

3. 验证工程师工作在行为级,他们对设计好的代码进行验证,编写的代码主要是用来产生激励,这些激励大部分抽象层次更高,仿真效率更高,然后检查相应结果。这些代码不会实现为具体硬件,有些并不需要精确到时钟周期,只是在仿真工具(ModelSim\ISim\Questa)中运行。验证工作的输出包括:验证方法步骤及代码,验证报告等。

4.硬件测试工程师的任务是对配置好的FPGA进行板级测试,在实验室环境下搭建测试平台,使用测试仪器仪表或者测试工装产生激励条件,验证测试结果是否满足设计要求。测试工程师可能完全不懂FPGA,这就要求测试文档需要相关的设计工程师的参与。这一阶段的输出包括测试步骤及接收标准文档,测试报告等。

这是我在项目中采用的自顶而下FPGA设计方法,人手够的时候,按照定义好的设计流程能够有条不紊的开展工作,减少项目成员间相互推卸责任、提高工作效率;有时候资源不足,自己身兼数职,任务繁重些,倒也自得其乐。

 

posted on 2016-04-26 17:50  大吊车  阅读(692)  评论(0编辑  收藏  举报

导航