通过在可编程逻辑器件中嵌入低成本、高性能的处理器,芯片开发商不但能提高系统的整体性能,而且能够从可编程逻辑器件原本就具备的开发时间短、上市快的特点受益。利用本文谈到的Floorplanner工具可以对嵌入式处理器、相关的IP和定制逻辑进行布局控制和分组,简化复杂系统级芯片的开发,提高系统整体性能。
嵌入式处理器内核越来越多地在FPGA设计中得到采用,人们开始认识到高级可编程逻辑所带来的好处。通过将低成本高性能的嵌入式处理器内核与可定制的FPGA电路配合使用,电子设备生产商能为其特定的产品量身定制芯片,从而以较低的成本和较快的速度将产品推向市场。但若想合理地采用这项先进技术,设计者需要功能强大的工具才能满足设计要求。 Floorplanner即是适合这类应用的一种工具,它允许设计者控制嵌入式处理器、相关IP以及定制逻辑的布局和分组,从而简化复杂的系统级芯片的开发过程,并提升系统的整体性能。
本文将讨论如何在一个集成了PowerPC内核、一个DDR内存控制器以及一个LCD控制器的嵌入式系统的开发过程中采用Floorplanner。在图1中,DDR内存控制器通过一个高速处理器本地总线(PLB)与PPC相连,因而在该系统中可以通过高速内存访问来实现指令和数据传输。LCD控制器对带宽要求较低,可以通过较低速的片上外围总线(OPB)与PPC连接,OPB通过一个PLB到OPB桥将低速的外围内核与PLB相连。图中还显示了两个片上存储控制器和BRAM的用法,这是一个很重要的特性。从系统模块图可以看出,当系统中额外增加其它总线控制器时,嵌入式系统设计能够轻松地对其提供支持。
系统生成
我们可以采用系统生成器来定义所需处理器以及相关控制器的参数,从而简化嵌入式系统的设计和创建,并产生嵌入式系统的源设计 (通常包含一个处理器内核、几个总线结构以及现有的IP)。同时,系统生成器还能产生系统启动所需的软件头文件。有了这些工具,软、硬件设计工程师就能同时并行地进行嵌入式系统开发。
对硬件设计工程师而言,系统生成器能够创建系统中关键部件安装时所需的所有文件,并能使外围器件定义、外围器件创建、以及处理器上数百个管脚与外围器件和系统总线的连接自动进行。对于开发工程师而言,系统生成器在进行HW/SW系统权衡时能提供很大帮助,而且还能解决软硬件优化的问题。如果没有系统生成器,则必须手动产生系统,将使系统设计时间和设计复杂度增加。
如何利用Floorplanner
很多EDA厂商都提供的另一种工具是Floorplanner,硬件设计工程师利用该工具可以控制摆放那些与他们所感兴趣的功能相关的逻辑,并且在功能实现后立即查看器件内的布局线路情况。以嵌入式系统为例,Floorplanner可以帮助设计工程师查看和(或)控制处理器以及相关外围器件的摆放,这些外围器件的布局可能对满足设计性能要求非常关键。
如前所述,PowerPC 405内核中包含一个片上存储(OCM)控制器,该OCM控制器既能提供到64位指令BRAM(ISBRAM)的接口,也能提供到32位数据BRAM (DSBRAM)的接口,它最多能寻址16MB的DSBRAM和16MB的ISBRAM。OCM控制器最大的优点是能够保持一个固定的执行时延。为了满足 FPGA的时序的要求,硬件设计工程师必须控制OCM BRAM相对于OCM控制器接口的摆放位置:DSBRAM必须放在PPC405核之上,而ISBRAM必须置于PPC405之下,如图2所示。要想控制这类布局,最简单的方法也许就是采用Floorplanner工具。
Floorplanner具有查看和(或)摆放逻辑的功能,该工具应用恰当时能够提升嵌入式系统的性能,但若应用不当则会降低系统性能。因此,用户要想成功地应用该工具,还应该注意以下几点建议:
1. 硬件设计工程师在采用Floorplanner对硬件开始布局之前,必须清楚了解设计和目标结构,这对正确的设计布局和硬件资源利用非常关键。
2. 在对FPGA进行物理布局时必须优先考虑I/O。如图3所示,控制信号I/O应该放在FPGA的顶部或底部,数据总线I/O应放在左侧或右侧,这样才能保证最有效地利用FPGA的布线资源,并最大程度地优化性能。
3. 算术功能在FPGA中通常利用专用的进位链(carry-chain)来实现,进位链在一个特殊的垂直方向上运行。例如,一个10位计数器的进位链就在从器件底端到顶端的垂直方向上运行。因而,设计者可以将其总线的LSB置于器件的底部而将MSB置于顶部,充分利用进位链的方向性。
4. Floorplanner根据逻辑层次的不同来显示逻辑单元,因而很容易将逻辑单元划分为公共的组或区域。这种根据层次分组的方式利用了本地布线资源,因而能够降低信号延迟,提高电路性能。
5. 如图4所示,交替地放置相关的总线。硬件设计工程师可以通过交替放置相关的I/O总线来降低信号延迟,但只有在这样的处理不增加额外的逻辑单元时才有意义。需要提醒的是,在进行布线决策时一定要把整个设计看作一个整体。
硬件设计工程师在嵌入式系统设计中适当注意以上几点,就能轻松地对一个设计进行组织和规划。在对嵌入式系统进行底层规划之前,设计工程师必须首先给不同的组分配逻辑资源。组通常都是基于设计层次的,设计层次为嵌入式系统提供了一个自然的边界,Floorplanner可以利用这个边界轻松地进行组创建。系统生成器在创建系统的每一个模块时均相应创建了独特的分层参考,这就使得嵌入式系统的组定义变得非常简单。在需要进行底层规划的组创建好之后,就可以分配放置这些组的物理区域。每个组的放置需要基于前面的几点建议和设计版图来进行。
设计版图约束
Floorplanner提供了三种方法来约束逻辑模块和逻辑组的物理位置分配:
1. 第一种方法就是将逻辑部件置于一个特定的物理位置,或放在某个特定的元件内部。例如,数据总线的一个输出(以第10位为例)可以分配给器件的第37脚。但这类分配没有灵活性,布局工具和布线工具必须将第10位的输出驱动置于器件管脚37中。这种方法还可以用于布局和分配一组逻辑部件。
2. 第二种方法是将某个逻辑单元或逻辑组分配给一个物理区域。通常采用的都是这种方法,因为它允许布局工具和布线工具移动某区域组内的逻辑单元,以实现最优的布局和布线。为了优化系统设计,功能更强大的Floorplanner工具还支持组间重叠,以及在一个经过底层规划的区域实现不经底层规划处理的逻辑。
3. 第三种方法是创建关联布局宏(Relationally Plalced Macro, RPM)。RPM定义了各逻辑单元之间的相对版图设计,但准确的布局是由布局和布线工具决定的,这样可以得到最佳的设计性能。例如,一个查找表(LUT) 可以与一个触发器置于同一块(slice)内,而一个块又可以直接置于另一块之上。RPM使设计工程师能够控制某些特定模块的布线,但并没有严格地限制布局和布线工具。
通过在嵌入式系统设计中应用以上提出的建议和方法,硬件设计工程师就能控制某些特定部件的布局,改善器件的整体布线(通过利用区域性分组),并控制某些特定部件之间的相对布局(通过采用RPM)。
应用举例
图5采用了PPC 405来说明上面所述方法和建议,该应用是包含了2个UART和一个BRAM控制器的嵌入式设计。
在该设计中,系统生成器创建层次边界,而逻辑组则在这些边界的基础上创建。为PLB仲裁器、UART和BRAM内存控制器均可创建区域组(area group)。将BRAM和PPC 405限制在特定位置,以使设计达到最佳性能。应该注意的是,在分配一个区域组时,必须为该区域中的逻辑单元分配足够的资源。而当 Floorplanner的功能更强大时,还能为用户提供每个区域组所需的资源。本例中的区域组中所包含的资源为实现所需资源量的两倍。这样,通过向经底层规划处理后的区域中添加布局额外的逻辑单元(不包含在组中逻辑单元)可以对设计进一步优化。
在分配资源时,BRAM内存控制器被置于硅片的中央,这样可以对所有BRAM元件以及PPC 405内核进行同等的访问。在本设计之中BRAM中包含了PPC 405内核所需的数据和指令。UART1和UART2的位置在IO附近,以尽可能减少输入到时钟和时钟到输出的时间。设计中有两个PLB接口,一个是 CPU指令端PLB接口,另一个是CPU数据端PLB接口。因此,PLB仲裁器被放在PPC 405内核旁边。
分配给每一个区域组的逻辑单元均根据区域约束进行布局,而且为提高设计性能,还在设计中混入了额外的逻辑单元,这也正说明了为什么在每个区域组分配时都要保留一定的额外空间的原因。