使用【Sources】源文件视图和RTL编辑器
PlanAhead允许导入多种不同类型的源文件,包括HDL和NGC核。在RTL编辑器中可以打开、编辑、开发RTL源文件。下面我们介绍【Sources】源文件视图和RTL编辑器的使用。
1. 认识【Sources】源文件视图。
源文件视图显示方式:在【Sources】源文件视图窗口单击,最大化此窗口,如图10-9所示。
图中【Name】栏显示文件名,其中有三个文件类型Core、Verilog和VHDL。【Library】栏显示相应的源文件属于哪个库。【Location】栏显示文件路径。【Local】显示导入文件是不是成功。
在源文件视图窗口的右上角显示有分组方式,共有4种分组方式,分别是【Group by Type】按类型分组,如图10-9所示,【Group by Source Root】按源文件位置分组,如图10-10所示,【Flat View】打平,按字母顺序分组,如图10-11所示。
2. 指定库文件的方法。
在图10-9所示【Sources】源文件视图窗口选择VHDL目录下除了bft.vhdl的文件,单击鼠标右键,在弹出菜单中选择【Set Library…】,在【Set Library】窗口输入bftLib库名。如图10-12所示。这样,就为这几个VHDL文件指定了库文件。
3. RTL源文件编辑器。
在【Sources】窗口双击HDL文件,就会打开RTL源文件编辑器。在编辑窗口,用右键弹出菜单,设计者可以进行各种编辑操作,例如:删除、复制、查找、替换等。如果单击【Find in File】,出现图10-13所示对话框,键入clk,软件就会找到所有源文件中含有clk的字段,如图10-14所示,选择一个查找结果并双击,会打开相应的源文件,并在源文件中定位。
三、 创建RTL源文件
在PlanAhead中可以新建HDL源文件,还可以使用语言模板。
1. 在【Sources】窗口单击鼠标右键,在弹出菜单中选择【Create Source…】打开图10-15所示对话框。输入源文件名,指定存储路径、语言类型和库名。
2. 单击【OK】按钮,打开myfile.vhdl窗口,在此窗口空白处单击右键菜单选择【Insert Template…】打开Xilinx语言模板,选择一个模板,例如选择一个计数器,单击【OK】按钮,此模板就会出现在myfile.vhdl文件中,如图10-16所示。当然,设计者可以在这里输入自己的HDL代码。
四、 探测和分析RTL设计
PlanAhead提供RTL源码探测功能,可以对导入的RTL源码进行编译,编译的错误和警告信息可以被显示出来,可以用这些信息进行交叉定位,很方便地定位到错误或警告源。RTL逻辑层次可以展开,可以用来进行各种分析。一旦使用探测功能,所有RTL视图都允许逻辑对象的交叉探测。RTL网表和层次视图显示了设计的逻辑层次结构。RTL原理图视图允许交互逻辑探测。查找命令可以用来查找逻辑对象。实例属性视图显示了所选实例的信息,包括资源使用信息。RTL DRC工具会告诉设计者设计中哪些地方可以进行功耗和性能优化。
1. 运行RTL探测。在菜单栏选择【Tools】→【Run Elaboration…】,弹出【Run Elaboration】对话框,如图10-17所示,在顶层模块名中输入top,单击【Options】域的浏览按钮,设置综合属性,这里单击【Cancel】,使用默认值,在【Run Elaboration】对话框单击【OK】,开始RTL探测。
探测结果如图10-18所示。其中有很多Warning,可以单击这些Warning,交叉探测功能会将警告定位在相应的源码中,这样就可以很方便地找到源码中存在的问题。
还可以通过单击【Elaboration】窗口中的图标,切换显示/隐藏Warning信息。如果设计中存在错误,错误信息也会显示在此窗口。
2. 通过RTL网表视图和层次视图检查RTL层次。在图10-19所示的RTL视图中选中一个实例化模块iwb_biu,在右键弹出菜单中选择【Show Definition】、【Show Source】或【Show Hierarchy】,分别会显示功能定义窗口、源代码窗口和层次窗口。图10-20的【Show Definition】窗口显示了所选实例的功能定义文件,图10-21的【Show Source】窗口显示了对所选实例进行例化的位置,图10-22的【Show Hierarchy】窗口显示了所选实例在整个设计中的层次关系。
3. 检查RTL原理图。在图10-19所示RTL视图中选中实例化模块iwb_biu,在鼠标右键弹出菜单中选择【Schematic】命令,打开图10-23所示的【RTL Schematic】原理图窗口,窗口中显示了所选实例的原理图。
在【RTL Schematic】窗口,分别双击iwb_biu的biu_cyc引脚(外部和内部),则biu_cyc引脚的源和负载会显示出来,如图10-24所示。
在【RTL Schematic】窗口,选择图中的MUX,单击鼠标右键选择【Show Source】命令,会打开MUX在源文件中位置。
在【RTL Schematic】窗口,单击鼠标左键,按住不放,从左下方拖拉到右上方,松开左键,图中所显示的图就会缩小一些,向相反的方向拖拉,图就会放大一些,放大/缩小倍数取决于拖拉位移的大小。
4. RTL原理图中查找命令的使用。
在【RTL Schematic】视图窗口,运行【Edit】→【Find】命令,打开图10-25所示查找对话框,按图中所示设置各选项,单击【OK】按钮。可以找到设计中用到的所有BRAM资源,如图10-26所示,用右键弹出菜单可以定位每一个BRAM在不同的设计文件中的位置。
5. 检查RTL资源统计结果。
在RTL网表列表窗口,选择TOP顶层文件,这时,在网络列表属性窗口可以看到TOP的相关属性,包括,RTL资源的使用、RTL层次资源、存储资源、原语统计、接口网络数和时钟报告。如图10-27所示。
6. RTL 的DRC 检查。
运行【Tools】→【Run DRC】打开RTL DRC 设置对话框,如图10-28 所示。使用默认设置,单击【OK】按钮,开始DRC 检查。
运行结束,DRC 检查结果如图10-29 所示,图中,错误标识为红色,警告标识为橙色,信息标识为黄色。选择最后一个LATCH 的警告RPLD #1,【Violation Properties】窗口显示相应的信息,并出现一个蓝色的链接,单击此链接,RTL 网表窗口会出现相应的实例,选择此实例,右键菜单可以将此实例定位到多个文件中,如【RTL Schematic】窗口。
7. 配置多个综合策略。
对RTL 源码进行综合时,需要设置综合属性,例如综合时是以速度为目标,以面积为目标,还是以功耗为目标,综合时是否使用DSP48 资源,状态机用哪种编码方式等,这些属性的设置会影响综合过程,产生不同的综合结果。综合策略是指由多个综合属性的不同设置组成的不同综合方式,以指导综合工具按照这些综合方式对源码进行解析。接下来简单介绍在PlanAhead 中是如何应用多种综合策略的。
运行【Tools】→【Run Multiple Strategies】,打开【Run Multiple Strategies】对话框,单击【Next】,打开图10-30 所示【Set Up Synthesis Runs】对话框,使用默认值。
在图10-30 中,单击【Next】打开图10-31 选择综合策略对话框,在此窗口单击【More】会增加一个综合策略,单击浏览按钮,弹出图10-32 所示对话框,在此对话框中可以选择综合策略。
图10-32中有已经存在的几种不同的综合策略,对每种综合策略,都有简短的描述,以说明此种综合策略的作用。在右键弹出菜单中选择【Edit Strategy】,打开图10-33所示对话框,在这里可以看到每一种综合策略是由哪些属性组合而成的。除了PlanAhead软件提供的综合策略,用户还可以创建自定义综合策略。
在图10-31 中单击【More】两次,单击浏览按钮选择不同的综合策略,设置好的策略窗口如图10-34 所示。共设置了3 个综合策略, synth_1(IOB 打包, 优化时序) 、synth_2(PlanAhead 默认设置)、synth_3(面积优化)。单击【Next】按钮,进入图10-35 启动选项设置对话框,选择【Do not launch now】,先不运行多策略进程。这里重点介绍操作流
程。
在随后出现的对话框中,单击【Next】、【Finish】退出综合策略设置。PlanAhead 窗口最下方会增加【Design Runs】对话框,选择一个【Runs】进程,这时在属性窗口会出现图10-36 所示【Synthesis Run Properties】窗口,单击其中的【Options】选项卡,在这里可以改变综合属性的设置。选择一个综合进程,单击【Design Runs】对话框旁边的按钮启动综合进程,如图10-37 所示。