FPGA 项目中包含哪些任务
2021/12/23
工程实践中,任何使用FPGA器件进行的新项目都包含一个典型的任务列表。这些任务是开发团队在项目展开过程中遇到的,从建立产品需求开始,直到FPGA设计工作准备好。任务的类型有两种:项目建立与设计/开发。
项目准备和建立任务包括项目需求、架构说明、FPGA的选择、工具的选择和组织设计团队。
设计和开发任务包括引脚分配、RTL设计、仿真和验证、综合和物理实现、布局规划和时序收敛及设计测试。具体流程如图1所示
项目准备和建立任务
产品和项目需求
对产品和项目需求给予合适的描述,既困难又非常重要。它把所有项目/产品的需求放在同一张纸上,消除了项目进行过程中的不明确性,避免了日后的二次修正。正确的需求文档可用于商业、研究,甚至是学生承担的项目。
典型情况下,销售和营销团队提出产品需求,工程管理人员和架构师将其转换为工程项目。
设计需求文档的详细程度可以不同。小项目可以是几页纸,或者是一封电子邮件。对于大型的多FPGA产品项目,如ASIC原型平台、军事通信系统、高端交换机等,该文件有数百页长,由多人共同编写。
架构说明
架构说明依据项目指标,通常是由团队中最有经验的工程师、系统架构师编写。这些人在硬件、逻辑和软件设计中拥有丰富经验,标准的熟悉书写规范,并具有良好的人际关系。如果需要,工程师与销售和营销团队也要沟通,这有助于理清和调整需求。
架构说明应描述诸如项目技术可行性、顶层框图(描述不同部件之间的划分)、主要接口和可能的实现方式。
重要的是,在这个阶段进行的可行性分析,将确定现实条件能否满足项目的性能、成本、尺寸和其他设计目标。例如,对于深度包检测引擎所需的处理速度,即便使用最新的FPGA都不能实时完成。此时,一种解决方案是当项目进人调试阶段时,采用新的即将投人市场的FPGA系列,可临时使用工程样片。
软件,硬件和逻辑的顶层框图应包括主要接口。接口一定要准确、不含糊,并且所有团队成员说明的方式相同。架构说明还包含整体功能在多个FPGA之间的划分及它们之间的接口。
架构说明是一份必须维护且保持更新的文件,工程团队成员通过查阅它来编写更详细的模块级文档,并且进行设计工作。销售和营销团队用它来建立材料清单( BOM)和估算最终产品成本。
FPGA的选择
FPGA的选择过程包括选择FPGA供应商、系列、容量和速度等级。一.个项目中使用不同供应商的产品和不同FPGA系列的情况并不少见。只要FPGA满足项目指标,它们之间的接口就不会成为问题。
选择来自不同供应商的FPGA时,会使项目管理变得复杂。例如,设计者需要使用从不同供应商购买的多种工具。即便如此,我们在实际中还是会选择不同供应商的FPCA。一个原因是每个供应商提供的器件都具有独特的功能。例如,不同供应商的FPGA产品在存储器、控制器、串并/并串变换器的速率、逻辑容量、用户IO数量等方面存在差异。
FPGA的容量估算
有关FPCA容最估算、ASIC设计的一般准则和标准的更详细介绍请面后续持续更新。
估算容量大小的最可靠办法是建立最终的RTL实现。在有些情况下这是可能的,例如项目已经转换为RTL级,将其移植到性能改善的最新FPGA中,此时可以估算出所需的FPGA容量。然而,因为大多数的设计开始时并末写出完整的RTL级代码,因此准确地估算容量是不现实的。剩下的唯一选择是估计每个子模块的大小,并把它们累加起来。实际设计时有可能会重复使用以往设计的模块,其资源消耗是明确的。此外,第三方IP核通常包括资源占用数据。其余的模块以原型化方式得到。
只确定逻辑片(Slice)、查找表(LUT)和触发器的使用是设计者常犯的错误。其他的FPGA资源往往被忽略,这可能会导致以后出现问题。估算的容量大小应包括所有在设计中使用的FPGA资源类型:嵌人式存储器、DSP、IO、时钟、锁相环(PLL),以及其他如PCI Express接口和以太网MAC这样的专用内核。
FPGA的速度分析
对FPGA架相和IO速度的正确分所有两个非常重要的因素。首先, 最大设计速度会影响FPGA速度等级的选择,反过来又影响成本。其次, 最大设计速度会影响设计的可行性。
高速网络交换机或协议处理常可能要求FPGA以300 M以上的顿率运行,接近FPGA
器件的极限。原型设计时小部分电路可能满足时序要求,然而,因为诸如布线模块之间的延迟等其他因素影响,整个设计可能并不成功。这是使用这种方法的常见缺陷。
另一个例子是ASIC仿真/原型设计平台,它具有不同的设计特点。ASIC仿真设计通常
是以LUT为主,以低到100 MH的频率运行。但是,如果这样一个平台包含了几个FPGA,其中IO速度将成为瓶颈问题,直接影响整个原型平台的工作评率。
设计速度越高,编译时间就越长,付出的努力就越多。因此,我们的目标是使用尽可能低的速度实现设计要求,这将会降低材料和开发成本。
FPGA的功耗分析
FPGA数量的增加会使得功耗成为敏感问题。功耗的估计结果会影响FPGA的选择,甚至决定了在产品中使用FPGA的可行性。
正确而精细的功耗估计需要大量的设计知识,包括逻辑容量、翻转速度和相当准确的IO特性。
持续关注,后续将对低功耗优化技术给出更详细的说明。
工具的选择在很大程度上取决于FPGA供应商。在选择设计工具时,没有很大的灵活性。一般情况下,FPGA供应商都有专用的开发工具幻境。
持续关注,后续将描述一些典型的设计工具
组织设计团队
一名工程师是不足以处理项目的所有设计任务的。即使是小的FPGA设计项目,也需要一个具备宽广专业知识和经验水平的团队才能进行开发工作。
一些设计任务需要很深层次的专业知识,如协议或算法的理解。这些任务由在某一特定领域拥有高学历、但对FPGA懂得较少的工程师来完成。其他任务则需要大量的逻辑设计经验,以便最终的RTL实现更加高效。另外,综合、布局和时序收敛也需要专用工具的相关知识。
另一个趋势是团队越来越全球化。同一团队的成员可能居住在世界各地。这增加了大量的通信开销,使协作和高效的项目管理变得更加困难。
组织一个团队,给每个团队成员委派合适的任务,对于项目按计划可靠开展是必不可少的。
FPGA设计和开发任务
01
详细的模块级和接口文档
详细的模块级和接口文档经常是随意性很大的任务,特别是对于那些没有既定管理规则的小公司而言。
接口说明包括寄存器描述和FPGA与软件之间的访问过程。
模块级说明描述了FPGA模块之间及FPGA内部各模块之间的接口,如片间总线和片内总线。
引脚分配
FPGA引脚分配需要PCB设计者和FPGA逻辑设计团队之间密切合作,将所有顶层设计的端口分配到FPGA的输人/输出端口上。它通常需要两个团队之间反复沟通,直到双方满意。PCB设计者所关心的是最大程度优化印制板层数、信号完整性、电路板上元件数目、电源管理方案和时钟分布。
FPGA逻辑设计者主要关注I0布局和特征。IO布局会影响布局布线和时序收敛。某些IO(如高速总线)必须组合在一起来处理,时钟必须连接到具有时钟功能的引脚上,三态和双向引脚必须给予充分关注。
在引脚分配过程结束时,必须通过设计规则检查( DRC),包括正确的引脚区域分配规则和同时开关输出(SSO)。要逐个观察所有规则是非常困难的。使用Xilinx的PAhead工具可以简化这一任务。
在多数情况下,因为真正的设计尚未出台,因此逻辑设计者需要创建一个虚拟设计来与正确的I0特性相匹配。
引脚分配需要时间及对细节的关注。如果没有正确完成,它可能会再以后的项目阶段导致很多问题,可能需要电路板布局的变化和重新分配引脚。即使是经验丰富的设计者,也常常低谷这一任务的重要性。
RTL设计
RTL设计是项目的一部分, 通常会消耗大部分时间和资源。有几个因素可能会导致RTL设计发生变化:
-
不正确的仿真
-
综合和物理实现过程中的问题
-
布局和时序收敛
-
板上测试中产生的问题
仿真和验证
无论是Verilog还是VHDL的RTL代码,都是为了在特定FPGA对象上进行综合而编写的。即使代码是正确的,也并不能足以通过所有测试。究其原因在于综合、物理实现、布局规划和时序收敛过程中发生的许多问题都会对代码产生影响。
这样的问题经常发生在两种情况下,一是逻辑设计者没有经验;二是设计流程不正确。开发者花费了大量时间进行墨块的仿真。当墨块进行综合时,会发现很多错误和警告,使得以前所有的仿真结果无效。
更加合理的设计流程是将最新设计的RTL代码同时进行综合和仿真,及时校正所有错误和严重警告。这一阶段预计需要反复多次。
因此,仿真和综合同时进行会提高设计者的时间利用率,继而提高项目的整体进度。
布局规划和时序收敛
与正确估算设计的完成时间相比,布局规划和时序收敛更是无法预测的任务。即使是最有经验的FPGA逻辑设计者,也会低估时序收敛所耗费的时间和精力。这可能需要几个星期的时间进行设计开发,通过数十次迭代进行布局布线和RTL代码修改,才能实现大型设计的时序收敛。
在硬件平台上对设计进行测试,是设计交付前的最后一个步骤。
由于仿真和综合的不匹配会出现潜在问题,持续关注,这将会在后续更新详细说明。
设计总结
许多设计团队在项目完成后,都会进行一个正式的项目总结,用来确定不同问题产生的根源,如一些被忽略的、但可能会致命的问题,或不可预见的技术问题。项目总结报告的目标是要汲取教训、制定计划,避免今后发生同类问题。
没有回复内容