3、实现局部重构
完成是为实现局部重构的前期准备工作后,将进入实现局部重构的过程,生成局部重构位流文件。此过程在Xilinx的局部重构平台--PlanAhead集成环境下实现。
PlanAhead是Xilinx的可选工具,是ISE工具链的补充,通常是设计者在同一FPGA上需要实现最高性能、持续改进提高速度且要求紧凑设计的一个解决方案。PlanAhead用于设计和分析XilinxFPGA上电路的工具,它基于层次布局的原理,在综合和布局布线(PAR)阶段之间使用,它使设计者能够更快速地分析、修改、约束和实现设计。本实验就在Xilinx推出PlanAhead的最新版本-PlanAhead9.2.5集成环境下实现,其界面如图2.40所示。下面介绍实现的局部重构的主要步骤。
图2.40 PlanAhead9.2.5界面
3.1创建PlanAhead工程
(1)创建工程
图2.41启动创建PlanAhead新工程导航
启动PlanAhead,点击File-〉New Project菜单,进入PlanAhead的工程导航,如图2.41所示,点击“Next”,进入工程名和位置输入对话框如图2.42所示,指定工程创建路径“d:\EAPR_Workshop\part1\PA_project”,输入工程名“project_led”。单击“Next”,进入设计输入选择对话框,如图2.43所示,选择马上输入,单击“Next”进入网表输入对话框。
图2.42创建新的PlanAhead对话框
图2.43 PlanAhead工程设计输入选项
(2)添加网表
图2.44添加网表
选中“d:\EAPR_Workshop\Lab\part1\netlists\top\top.ngc”作为网表文件.然后点击“Add”,设置目录“EAPR_Workshop/Lab/part1/netlist/static”和“EAPR_Workshop/Lab/part1/netlist/fast”、“EAPR_Workshop/Lab/part1/netlist/slow”等作为网表目录,网表设置如图2.44所示,单击“Next”进入指定器件型号对话框。
(3)指定器件型号
图2.45指定工程的器件
选择SelectPart…,在列表框中选择器件“xc2vp30-f896-7”,如图2.46所示。点击“OK”,单击“Next”进入下一步,添加约束文件。
(4)添加约束文件
约束文件在“EAPR_Workshop\Lab\part1\data\top.ucf”,约束文件应该如图2.467设置,单击“Open”。
图2.46添加约束文件
图2.47工程概述
单击“Next”进入工程概述对话框,如图2.47所示,单击“Finish”完成工程创建过程,进入PlanAhead集成环境。
3.2设置工程特性
图2.48工程局部重构特性设置
在PlanAhead集成环,单击“File-〉SetPRProject”菜单,将本工程特性设置成局部重构,如图2.48所示。
3.3定义重构实例
在集成环境的“Netlist View”网表视图中,选中局部重构模块“reconfig_moudle”,右击弹出菜单,点击“Draw Pblock”菜单,如图2.49所示。在右边的器件视图“Device View”中,按住鼠标左键拖动,画出一个大小适当的矩形框,此矩形框将来就是FPGA上的一个局部可重构区域PRR。完成矩形框后弹出对话框要求输入快名字,输入“pblock_ reconfig”,入图2.50所示单击“OK”,在“Physical Hierarchy”视图中“floorplan_1”的“root”下 可看到刚才输入物理块“pblock_reconfig”。在Netlist视图下,选中重构模块,右击弹出菜单如图2.51所示,单击“Set Reconfigurable…”,弹出设置可重构实例对话框“Set Partial Reconfigurable Instance”,如图2.52所示,输入模块名字“medium”,单击“Ok”。
图2.49为局部重构模块画矩形框菜单
图2.50输入名称
图2.51把矩形框特性设成可重构
图2.52设置可重构实例
3.4添加动态模块
图2.53添加可重构模块对话框
在PlanAhead的网表视图“Netlist”下选中动态模块,点击鼠标右键出现弹出菜单,点击“Add Reconfigurable Module...”,出现添加可重构模块导航对话框如图2.53所示。单击“Next”弹出动态模块命名对话框,如图2.54所示,输入“fast”,单击“Next”,弹出网表输入对话框如图2.55所示,在“Netlist file”框中选中“netlists\fast”目录下选中“reconfig_module.ngc”文件如图2.56所示。
图2.54为可重构模块命名
图2.55可重构模块网表输入对话框
图2.56为可重构模块选择网表文件
图2.57为网表添加约束文件
在PlanAhead9.2.x下可以为每个动态模块添加各自的特别的约束文。由于本实验,对每个动态重构模块没有特别的要求,因此单击“Next”,跳过此步,则弹出添加可重构模块的摘要对话框,单击“Finish”完成一个动态模块网表的输入。重构上述步骤,分别命名“medium”、“slow”,把“netlists\medium”和“netlists\slow”目录下的“reconfig_module.ngc”加入。在添加可重构模块网表后,在PlanAhead集成环境下部的控制台“Console”和“I/O Ports”之后增加一活页“ExploreAheadRuns”,这页中的“floorplan_1”出现你所添加的动态可重构模,如图2.59所示。
图2.58可重构添加摘要对话框
图2.59用户添加的动态模块
3.5放置总线宏
图2.60放置总线宏
图2.61改变菜单模式为创建位置约束
总线宏是预先布线的宏 ,需要布局布线之前正确放置.在PlanAhead集成环境的网表视图NetlistView下选择BusMacro,改变菜单选择模式如跨在可重构区域边界,如图2.60所示。注意总线宏的方向,放在动态可重构区域的左边还是右边,要与顶层设计保持一致,否则设计规则检查时会出错。
3.6设计规者检查
在完成了PlanAhead工程网表的输入、正确放置了总线宏等后需要经过局部重构的设计规则检查,以保证实现的正确。Xilinx开发了一套针对局部重构的设计规则,以确保寄存器传输级的总线宏实例总线宏的正确例化和放置,也包括局部重构特定的其他规则。设计规则检查出错,则不可能成功生成局部重构的位流文件。单击PlanAhead的“Tools-〉RunDRC”菜单选项,如图2.72所示,弹出设计规则检查对话框,如图2.63所示,为了加快速度,只选择“PraitialReconfi”选项进行检查,确保控制台Console没有出现错误信息(红色的感叹号为错误信息,黄色的感叹号为警告信息,)。
图2.62运行设计规则检查
图2.63检查规则选择
3.7静态部分实现
图2.64静态部分实现菜单
通过设计规则检查后,就可进入实现局部重构的流程中了。在“ExploreAhead Runs”页面窗口下,选择“static”,点击右键,弹出菜单,入图2.64所示,单击“Launch Runs..”,则弹出运行对话框如图2.65所示,对话框列出你的计算机处理器数量和放置输出选项,可以采用缺省值(如果计算机CPU为双核则显示可用处理器数量为2,如果是单核的CPU则显示1),为了加快速度,充分利用多处理器技术,则在Number of Jobs选择可用的处理器数量。
图2.65静态部分运行选项
单击“OK”,静态部分就开始实现,在Monitor页对话框中,可以看到实现过程的输出信息。当进度条显示100%时表示静态部分正确实现,如果有错误则不能进行到100%。
图2.66静态部分实现过程
3.8动态模块实现
动态模块实现,可以在静态模块实现后多个动态模块同时选择实现,由计算机自动管理运行如图2.69,对于多核CPU可以选择多核运行如图2.68所示,该计算机为双核,故PlanAhead显示计算机有2个处理器,用户可以指定多个处理来实现。动态模块实现的过程与静态部分实现的过程类似。所有的模块实现后,各个模块的进度条显示100%,如图2.70所示。
图2.67实现动态模块
图2.68同时实现多个动态模块选择多核CPU同时运行
图2.69同时实现多个动态模块
图2.70全部实现
3.9生成位流文件
实现局部重构的最后一步是组装,就是合并静态模块和局部可重构模块,创建配置FPGA的位流文件。将创建好几种位流文件:整体位流文件(full bit file),当FPGA初始化时配置FPGA,局部位流文件(partial bit file)FPGA在整体位流文件配置后再下载到FPGA中。所有的.bit文件都在PlanAhead自动生成的“merge”文件夹中。组装过程完全自动运行。
在“ExploreAhead Runs”视图下选中“floorplan_1”,点击鼠标右键,在弹出菜单中点击“Run PR Assemble..”(如图2.71),弹出图2.72所示的对话框,根据设计者的需要,在每个可重构区域中选择一个可重构模块作为缺省模块,用于FPGA初始化时装载,即缺省模块被并入full.bit文件。在本例子中选择medium作为初始化模块。
图2.71组装菜单
图2.72组装过程为动态重构区域选择缺省模块
图2.73组装过程的输出对话框
选择好缺省可重构模块后,单击“OK”则进入组装过程,并弹出组装过程输出对话框,显示组装过程,如图2.73所示,这个过程运行时间相对长,大约需要5分钟,读者耐心等待。组装完成后弹出图2.74所示对话框。
图2.73组装过程进行阶段显示在对话框中
图2.74组装过程成功结束
图2.75 PlanAhead自动创建的目录结构
组装完成后局部可重构流程就完成了,PlanAhead自动创建目录结构如图2.75所示,生成的用于配置的所有.bit文件全部在“floorplan_1/merge”目录下,如图2.76所示。局部重构流程