项目管理
a)项目经理需要每周严格分析项目进度。分析过程包括10个主要任务:
1)分析和审议关键路径;
2)重新考虑下周计划的任务;
3)与评审组的其他人员讨论任务的优先级并最终达成一致;
4)为加速关键路径的执行制定一个计划;
5)找出排在关键路径之后有风险的其他路径;
6)检查分配给关键路径资源上的负荷;
7)与管理者确认资源的可用性;
8)确认项目计划中需要更多工作量的部分;
9)找准活动项;
10)对任务进行微调。
项目经理一定不要被项目已完成的百分比数所蒙蔽,这是一个非线性函数,所完成的百分比数对于估计剩余任务持续期没有用处。
设计说明书
a)被各方完全认同的设计说明书确保了参与项目的各小组之间工作的协调和一致。这也确保了交付的产品符合设计说明书上规定的功能,从而满足客户需求。设计说明书也有助于对项目的开发成本、资源、项目进度进行精确的估算。高质量的设计说明书使我们可以全程跟踪项目的进展,最终制造出高质量的产品。设计说明书也可以作为编写产品使用或维护说明书的参考,这些说明书将与产品一起递交给用户。在所有的说明书中,都应对说明书更改的部分做出明确的标记。此外,应该用版本控制软件来保存设计说明书。FPGA从定义到开发过程的各个不同阶段都必须编写设计说明书。
b)高级功能说明书由系统工程小组创建并负责维护。该文件介绍了FPGA设计的基本功能,其中包括FPGA和软件接口之间必要的交互,以及PCB上FPGA与其他设备的接口。高层次功能说明书应当由负责FPGA设计小组的经理和负责软件设计的经理共同评审。在评审之后,文档应做更新,以反映所做的变更,并回答评审过程中所提出的问题。这一评审过程一直反复进行,直到所有问题都得到解决,并且整个FPGA设计小组都理解并一致赞同这些必要的调整。
→
可执行的说明书描述的是最终系统功能的抽象模型,实质上它是该系统的虚拟原型机。大部分可执行说明书都是用类似C的系统描述语言写的。这些语言十分适合为想要实现的系统创建功能模型,但它不能描述系统中诸如时序、功耗、设计规模等关键特性。必须再编写一份高层次的说明书作为可执行说明书的附件,才能表示系统的这些关键特性。这个阶段的虚拟原型机是系统模型和测试平台,测试平台也是可执行说明书的一部分分。可执行说明书适用于整个开发过程,用来检查具体的执行过程是否能满足可执行说明书的要求。
c)FPGA设计小组应编写一份详细的功能设计说明书,它体现的是高层次的功能需求指标。这份说明书应由FPGA设计小组负责编写,并应经由FPGA设计小组和他们的管理者,以及来自系统工程和软件设计小组的代表们评审通过。最终定稿的说明书应该包括FPGA设计的功能、FPGA与系统其他部分(包括软件)之间的接口细节。
资源调查
工程资源
a)项目工程资源的分配属于项目管理任务。每人工作任务的安排是否恰当,人力资源配备是否足够至关重要。从事FPGA设计工作,需要考虑的不仅是从事FPGA设计的工程师,还必须包括为完成设计任务不可或缺的其他工程师。
b)依据设计项目的大小或复杂性,较大的设计项目通常需要由来自不同工程学科,具有不同技术背景的工程师所组成的团队才能承担。从硬件工程师的视角观察,还需要关注电路板的设计工作,因此必须确保团队中有电路板布局设计师。他们必须与FPGA工程师保持密切联系,还需要确保团队人员之间有良好的合作关系。如果电路板上有高速信号,特别当设计中包含高速收发器或高速存储器接口时,团队中还需要有信号完整性工作经验的工程师参与。
c)项目主管必须确保算法专家在整个设计过程和实现之后的调试过程中在场,以便随时回答硬件工程师的提问。
d)确定哪部分工作可利用公司内部的工程资源实现,哪部分工作必须依靠外部专家解决,是工程资源分配中的一个重要决策。
第三方IP
a)设计主管必须关注总共有哪些第三方IP可用,其中哪几个IP将被用于本设计。同样,他必须关注公司内部有哪些IP可以被重复使用,是否有来自其他项目的IP可用于本次使用的FPGA系列。假如正在使用第三方IP,也许还应该关注购买这个IP所附带的服务。
FPGA器件的选择
a)FPGA器件的特殊功能
1)首先应该关注的方面是FPGA器件的专用资源。设计需要高速串行接口吗?如果需要的话,需要多少个通道,各通道的性能又如何?许多FPGA器件都自带收发器。收发器性能可分为三个档次,其最高速度分别是3.125Gbit/s、6.5Gbit/s、10Gbit/s。这些影响到设计性能和FPGA成本,因此是器件选择过程中的重要因素。还需要关注设计的带宽要求。收发器的速度和数量决定了带宽。
2)如果正在实现的算法是运算量密集的算法,诸如DSP加密算法或雷达应用方面的算法,这就要求FPGA器件具有大量的DSP模块,并拥有足够多的RAM模块可与这些DSP模块接口。DSP模块的配置十分重要。存储模块的深度和数量会影响有多少处理可在芯片上执行,如果内部存储器不够多的话,就需要外部存储器。还需要关注执行的乘法运算的位宽是多少。如果DSP模块没有足够多的位宽,就不得不用逻辑来组合DSP块以实现所需的功能。这会影响正在执行操作的性能。
3)设计调试过程中的资源消耗也需要考虑。在设计调试期间,内部存储器块常被用于保存逻辑分析仪的数据。
b)FPGA的规模选型
1)如果存在老版本设计就应以它为基础,并把将使用的IP占用的面积估算在内,然后根据经验,考虑为实现新功能还需要增加多少额外的面积.一旦完成了这项工作,在已有的面积上再增加25%。
2)一些FPGA供应商提供的设计工具拥有在同系列的不同规模器件之间自动完成设计移植的功能,同时能保持引脚不变。但这些功能对所使用的引脚资源是有限制的,只能使用同系列特定规模范畴内器件上都存在的引脚资源。这样做的好处是避免电路板重新设计。→通常不同档次产品里的电路板和安装的FPGA完全相同,所不同的只是FPGA的编程文件,低档次产品的FPGA编程文件中的功能被减少了一些而已。只要保持引脚兼容,就可以去除一些功能,以便使用规模小一点的FPGA器件实现设计,从而进一步降低材料的成本。
c)速度需求
1)FPGA供应商提供的产品说明书告诉设计师在时钟和IO性能方面期望能够达到的绝对最大值。虽然这些指标是可以达到的,但真正要达到这些指标可能会增大布局布线的难度,延长时序收敛周期,因此应将速度指标降低约15%,给时序收敛留出安全余量。
2)速度等级的选择将直接影响FPGA器件的价格。选用FPGA时,建议从一开始就选用速度等级最高的器件,尽快拿到装有该FPGA器件的电路板,从而及早进行软件调试和硬件功能检查。若用速度等级最高的FPGA器件实现设计,则比较容易满足设计的时序要求。
d)引脚
1)设计需要的IO接口类型将影响FPGA器件所需要的引脚数目和封装类型。必须知道所需的IO标准和IO驱动强度的要求。需要多少各引脚?电源供电要求是什么?在没有开始设计时,要确定这些要求是好弄清楚所需使用的FPGA器件是如何与电路板接口的。同时也需要关注设计中的信号完整性问题。设计中是否存在大量引脚接口可能同时触发的情况,如果有的话,设计是否存在同时开关噪声SSN问题?值得注意的是,键合wirebond封装的FPGA器件通常比倒装flipchip的FPGA器件具有更差的信号完整性和IO性能。
2)建议在考虑设计的引脚数目时,为系统内嵌调试预留一些引脚。至少应预留15%的FPGA器件引脚,用来将内部信号引到芯片外供逻辑分析仪进行分析.、
e)功耗
1)根据设计说明书可以知道设计的功耗预算。FPGA器件需要多少种电源?大多数现代FPGA器件要求有多个电源供电,为IP核、IO、通常还有收发器提供各自独立的电源层。FPGA器件需要的电源个数越多,电路板上元器件成本就越高,电路板设计的复杂程度就越高。
f)器件可用性
1)如果涉及尖端技术,有可能考虑使用市面上最新的FPGA器件。最新的FPGA器件在将来价格会更合理一些。如果设计将在12个月之内投产,将在5年后批量生产。那么这样在进行批量生产时正逢所使用的FPGA器件工艺成熟且其价格最低的时候。在这种情况下,决定使用市面上最新的FPGA器件在经济上是划算的。
设计环境
脚本化的环境
a)脚本化的设计流程适用于以下5种情况:
1)项目的创建;
2)编写设计任务分工的说明书;
3)设计的编译,尤其是当设计者使用计算机集群环境进行编译时。因为使用脚本化编译环境,允许设计者通过服务器,对分布在集群环境中的编译文件进行批处理;
4)功能验证和回归测试;
5)与版本控制软件的结合。
→
对任何重复的任务,确实应该使用脚本。使用脚本有助于其他用户较容易地重现原设计者的环境和结果。
b)图形界面应该用于设计流程中交互的部分。也就是需要根据得到的结果而改变操作的地方。例如:
1)设计的系统内部调试;
2)布局操作。关注布局的细节可对器件的架构和可用资源有更好地了解。布局操作还可以在基于团队的设计环境的布局中,为用户的设计创建一个物理布局。
3)开始使用新工具时。图形界面为建立第一个项目和展示工具的特性及功能提供一个很好的方式。一旦熟练掌握了这个工具,建议将设计转换到脚本化的设计环境中。
c)脚本程序的使用能在重复的任务上节省时间和精力。它最大的益处是基于团队的设计中简化团队各成员间的任务交接。如果某人从另一个工程师那里接手一个项目或设计模块,该工程师不必为了得到设计结果而编写详细的说明来描述需要做什么,只需要给他们脚本就行,因为脚本本身就是文档。新接手的工程师看懂脚本之后运行脚本即可,他们就可以从上一个工程师停止的地方开始新的工作。
与版本控制软件的交互
a)版本控制软件可为设计的修改提供历史记录。当正在进行某项FPGA设计时,有必要知道在版本控制软件中需要递交和取出文件的最小集合。应该尽量减少这些文件的数量,因为递交的文件越多,所需的存储空间就越大,操作就越复杂。
b)为重现结果,不同的FPGA设计工具要求把不同的文件集置于版本控制软件中。因此,当使用不同FPGA厂商提供的设计工具时,版本控制软件的设置可能显著不同。而原则却都是一样的。若EDA工具使用文本文件,则它与版本控制软件之间的交互将变得十分简单。若EDA工具使用二进制文件保存关键信息,则它与版本控制系统的交互将变得比较复杂。
c)设计环境的目录结构中包含了RTL设计文件的位置、RTL库和IP库的位置、若使用软处理器还有C代码和程序存储区的位置、仿真测试平台的位置、寄存器测试结果的存储位置、FPGA软件或其他EDA软件中用来编译设计的脚本文件所在的位置。为了能使用这些文件的正确版本,必须将所有这些要素顺利地连接在一起。
问题跟踪系统的使用
a)市场上可以购买到商业化的问题跟踪系统。这些问题跟踪系统本质上是数据库系统,只是为了满足不同公司的需要而添置了一个可定制的前端。在您的设计环境中,您将使用跟踪系统去跟踪FPGA设计中所有已知的问题。这使设计工程师们能在设计出现问题时把它们记录下来。问题跟踪系统为设计团队提供设计的即时状态,并能在整个设计过程中用来跟踪设计的稳定性。它使得团队中其他成员可以知道您设计中所存在的问题,从而避免发生以下情况,即他们费力地调试自己那部分系统的一个问题,而这个问题是由您的设计造成的。通过研究这些资料,可以决定是否使用由于这个问题而导致的特殊情形,还是恢复到原先这个问题还没有显现的情形。
b)问题跟踪系统还允许用户详细记录问题是如何解决的。这使得团队成员之间互相合作一起解决设计中出现的问题非常方便。
回归测试系统
a)作为测试的一部分,设计工程师需要创建测试点以证明自己的设计符合功能要求。想要为设计提供健康检测,必须拥有一组经常在设计上运行的测试。这些测试使您拥有这样的信心,即在今后的设计修改中,不会再引入以前出现过的问题,也不会破坏现有的功能。
电路板设计
FPGA器件给电路板设计带来的挑战
a)为了满足当今系统设计高性能和高带宽要求,FPGA器件提供了大量的引脚,并且引脚的开关速度越来越快。封装引脚数的增加,加上器件支持许多不同的IO标准和封装类型,这个实际情况带来了巨大困难。修改引脚分配会导致电路板的多次改版,从而造成成本增加,耽误项目进度,其代价昂贵。
b)FPGA器件可提供灵活的引脚,并支持多种不同类型的IO标准,允许用户对引脚的驱动能力和翻转率加以控制。这一灵活性导致了合理分配FPGA引脚的复杂规则,从而对FPGA与PCB的连接提出了新要求。
c)FPGA封装的引脚数十分庞大,从而造成了EDA工具流程中PCB设计软件和FPGA设计软件之间数据管理方面的困难。
d)当选择FPGA器件时,用户可在FPGA厂商提供的软件中选择移植功能。该功能可以防止用户在分配引脚时误用同一系列不同规格器件之间不兼容的引脚。为了保险起见,建议将引脚兼容要求纳入设计规划,特别是在FPGA设计早期确定引脚的时候更要注意。
e)系统性能的提升和带宽的增大对引脚的速率提出了更高的要求。FPGA器件能以533MHz的高速率,通过64bit的DDR3 SRAM接口向SRAM写入数据。每个引脚的数据率高达1067Mbit/s。这将使得FPGA器件大量的引脚同时发生翻转,引脚同时翻转所产生的噪声又会导致器件功能失效。因此,FPGA器件必须拥有能避免同时翻转噪声SSN的引脚,而且FPGA器件的引脚与电路板连接时也必须避免SSN问题。
f)许多FPGA器件还包含速率达到11.3Gbps的收发模块,并且支持多种IO协议,如PCIe、Serial RapidIO、GbE等。基于告诉收发器的接口与电路板连接时必须小心谨慎,以避免信号完整性SI问题。
工程师角色和职责
a)按专业分为三个不同小组:FPGA组、PCB组、信号完整性组。
b)FPGA工程师
1)在PCB设计中,他负责从FPGA设计软件中生成FPGA的引脚分配图。因此,FPGA工程师应该与PCB工程师紧密配合,根据PCB设计师提出的建议,及时修改FPGA设计,更新引脚分配,并验证改动。
2)FPGA工程师还要和信号完整性工程师紧密配合,为他提供由FPGA软件生成的FPGA引脚分配图、HSPICE模型、IBIS模型、网表。
c)PCB设计工程师
1)PCB设计工程师熟悉PCB原理图软件和布局布线软件,通常负责创建电路板原理图,其中包括器件符号的生成。同时他还负责电路板的布局布线。电路板的布局,特别是电路板的布线基本上取决于电路板上元器件的引脚分配。由于FPGA的引脚分配会严重影响PCB设计工程师的工作进度,同时也潜在影响电路板的成本,因此PCB设计工程师在很大程度上会去影响FPGA的引脚分配。虽然PCB设计工程师对FPGA器件的引脚分配会产生很大影响,但他通常没有使用FPGA设计软件的想法。这使得在FPGA设计师和PCB设计师之间必须建立传递信息的有效手段,实际上这是一个双向的需求机制,即从EDA工具厂商那里购买的FPGA设计软件和电路原理图设计软件之间的双向接口机制。最常见的接口是excel。工业界电路板设计师的普遍做法是创建一个脚本,从.csv格式文件或者FPGA软件的引脚报告中生成相应的原理图符号。
2)引脚分配csv文件可用于把FPGA设计文件和电路板设计文件合并为一个整体,同时也可用于说明引脚的分配。因此,它应该被保存在版本控制软件中。
3).csv文件包含了IO标准和电流强度的许多细节,它比引脚分配文件要详细很多。IO标准和电流强度的细节会影响电路板上的信号质量,也会影响IO时序。
4)PCB设计师必须与信号完整性设计工程师沟通,为他们提供电路板布局的具体细节,以便信号完整性设计工程师建立该电路板的信号完整性模型。
d)信号完整性设计工程师
1)信号完整性设计工程师负责验证信号质量(例如过冲、下冲),并将同步翻转噪声SSN控制在规定的范围之内。总之,SI工程师负责验证电路板的时序是否达到系统的要求。
2)事实上,现在许多FPGA设计仍然没有信号完整性工程师的参与。当与FPGA器件接口时,电路板设计师往往采用保守的方式进行布局,并假定这种方式可以达到设计要求,这在大多数情况下是适用的。然而,这种方式已经不再适合系统设计的要求了。随着DDR2/3 SRAM这些类型的存储器接口的IO速度的增加,还有高速收发模块,都要求与电路板正确地端接,以防止出现SI和SSN问题。
3)按照FPGA厂商提供的应用操作说明书中所提供的准则,可以顺利地设计出这些类型的接口。然而由于每个PCB的设计有差异,建议SI设计工程师对具有高性能要求的输入/输出进行仿真。这要求SI设计工程师、FPGA设计师及PCB设计师之间要进行充分沟通。SI设计工程师需要FPGA设计师提供HSPICE模型和IBIS模型,电路板设计师需要提供电路板布局布线等具体细节。SI仿真往往需要很长时间,因而只能对那些在信号完整性上存在高风险的FPGA引脚进行仿真。
功耗和散热问题
a)滤除电源噪声
1)为了减少电源噪声,用一个干净且均匀分布的电源为电路板上所有的器件供电至关重要。在电源连接到PCB节点的附近放置一个100mF的电解电容,可以滤除低频电源噪声。若使用稳压器,则应在最后为器件提供电源的VCC和地之间的跨接电容。
2)为了减少电源层的高频噪声,去耦电容应该跨接在电源VCC和地线之间,并且尽可能靠近器件。
b)电源分配
1)在电路板上进行电源分配可以考虑电源总线网络或电源层。虽然电源总线网络是最廉价的解决方案,但它会引起电源压降,所以这种方案只适合用于低成本的双层电路板,如成本比较宽松就应该考虑使用电源层方案。
2)建议把模拟电源层和数字电源层分开,不要共用一个电源层。现实中所有FPGA器件都包含PLL,因此在电路板的设计中必须为FPGA器件分别提供模拟电源层和数字电源层。
3)总之,对电源分配的建议:
①用两个独立的电源层,把数字电源层和模拟电源层分开;
②在PLL的电源层旁边放置一个接地层;
③对PLL的电源进行布线时,避免使用多个信号层;、
④将数字器件和模拟器件连接到它们各自的接地层上;
⑤将PLL的模拟电源和数字电源隔离。
信号完整性
a)传统的数字设计不需要考虑传输线效应产生的影响。随着系统速度提高,信号频率越来越高。设计者此时不仅要考虑系统的数字属性,还必须考虑高频信号对系统产生的模拟效应。随着IO接口和存储接口数据率的增加,特别是FPGA器件中的高速收发技术的应用,可能使高频信号的模拟效应变得尤为突出。随着频率提高,高频效应占据了主导地位,即使最短的电路也会遇到例如振铃、串扰、反射、接地反弹这些问题,从而严重降低了信号完整性。信号完整性变差就会导致系统的可靠性变差,造成系统性能降低,最糟的情况是系统失效。
b)信号完整性问题通常有4种类型:单个线网的信号完整性、相邻线网间的串扰、轨线崩溃、电磁干扰。
1)单个线网的信号完整性:驱动强度是源漏电流大小的指标,压摆率是源漏电流变化快慢的指标。这两个指标共同决定了输出信号的上升和下降时间。工艺技术的尺寸越小,允许时钟频率越高,意味着信号的上升和下降时间越短。由于制造工艺技术决定了信号的上升和下降时间,这就意味着即使是低频信号,其开关切换时间也缩短了。信号的开关切换时间变短,加上瞬时电流变大,这就造成了更大的开关噪声。对高频链路信号而言,或许有必要缩短信号的上升和下降时间。然而对于低频链路信号,设计师可能要通过延长信号的上升和下降时间来降低噪声。
2)串扰:当信号沿导线传输时,就会在导线周围形成一个磁场。如果两个导线彼此相邻,这两个磁场有可能互相作用,从而导致两个信号能量的交叉耦合,即串扰。以下五种PCB设计技术能显著降低串扰:
①在布线约束允许的情况下,信号的线间距应尽量放宽;
②设计传输线时,应该将传输线尽可能地安排在与地线层相邻的层。传输线和地线层的紧密耦合能有效解除传输线和相邻信号间的耦合;
③尽可能地使用差分布线技术,特别是对那些关键的线网;
④若信号间有明显耦合,则令这些信号分布在不同的层并彼此正交;
⑤使得信号之间并行布线的长度尽可能短.使用短并行线路布线,尽可能地将长耦合的线路最短化.
3)轨线的崩溃:轨线崩溃是指分布在电路板上为芯片供电的电源和地线网络所产生的噪声。IO开关切换会在电源和地线之间的阻抗上产生一个压降。在实际电路中,这个电压降有可能造成FPGA供电电压显著降低,从而使轨线问题恶化。解决轨线问题的方法是设计更合理的电源和地线分布网络,尽可能减小电源分布系统的阻抗。
c)电磁干扰(Electro Magnetic Interference)
1)EMI源自电流的迅速变化。
2)减小措施
①尽可能在接近FPGA的位置,用旁路或退耦电容跨接电源两极;
②使用串联电阻控制高速信号的上升时间;
③VCC滤波;
④屏蔽。屏蔽元件会增加额外费用,因此是不得已的措施。
3)电路板EMI的两种常见来源
①差分信号到共模信号的转换过程中所产生的共模信号会泄露,并叠加到外部双绞线上;
②电路板上的地线反弹会在外部单端屏蔽电缆上产生共模电流。
FPGA引脚分配的设计流程
a)FPGA设计师主动
1)FPGA设计师首先需要了解电路板布局,譬如与FPGA接口的电路板器件(如存储器、收发器、微处理器等)有几个,他们的位置在哪里。然后他根据实际情况进行引脚分配。譬如,先将存储器接口分配给某个IO区,接着让FPGA设计软件自动进行引脚分配。PCB设计师为了减少电路板上的线路交叉等,只需要和FPGA设计师,就少量引脚交换做简单沟通。
b)PCB设计师主动
1)根据电路板上将与FPGA接口的元件,由PCB设计师,编写FPGA的引脚分配方案。这需要关于FPGA器件驱动能力和时钟限制的详细信息。在实际工作中,为了走好这一步,PCB设计师需要与FPGA设计师紧密配合,咨询收发器在FPGA器件上的具体位置,电源轨线的具体要求,以及与引脚输出限制有关的其他问题。然后,由PCB设计师编写第一版引脚分配方案,并将引脚信息传给FPGA设计师。
电路板设计审查要点
a)总结
1)对电路板设计进行电源热分析,以确保所有电源层在提供所需最大电流时,仍能保证电压轨线符合规范。
2)进行引脚分配检查
①用FPGA设计软件检查引脚的分配;
②根据需要将所有未使用的IO接地、接VCC、挂起;、
③检查每个IO区VCCIO的正确性;
④设计是否符合SSN准则;
⑤设计可移植的器件以适应未来设计规模的扩大或缩减。
3)对照厂商提供的配置手册,进行配置模式检查。
4)对照厂商推荐的电源设计标准,检查电源的连接和去耦。
5)进行电路板信号完整性仿真。
6)将IO时序和IO时序需求进行对比。在进行对比时,要求整个设计已接近完成或至少设计的IO接口部分已经完成。
7)将电流版设计递交给FPGA设计小组和PCB设计小组,共同完成对电路板设计的全面审查。