还是最初的目的,这个东西新手可能无法理解其中的精髓,本人同样是刚入门的半新人,对其中的属性参数也并不是很了解,但还是发这么一篇文章,目的是为了给自己留下一个工具,日后进修的时候,不用在到处查资料。
ISE主要包括以下环节:综合 (Synthesize - XST)-> 实现(Implement Design) (翻译(Translate),映射(Map),布局布线(Place & Route))-> 生成比特流(Generate Programming File)
【一、综合】
所谓综合,就是将HDL语言、原理图等设计输入翻译成由与、或、非门和RAM、触发器等基本逻辑单元的
逻辑连接(网表),并根据目标和要求(约束条件)优化所生成的逻辑连接,生成EDF文件。
右键点击Synthesize - XST -> 选择Process Properties…(如图)
分别介绍一些选项的意义:
【Optimization Goal】:优化的目标。该参数决定了综合工具对设计进行优化时,是以面积还是以速度作为优先原则。面积优先原则可以节省器件内部的逻辑资源,即尽可能地采用串行逻辑结构,但这是以牺牲速度为代价的。而速度优先原则保证了器件的整体工作速度,即尽可能地采用并行逻辑结构,但这样将会浪费器件内部大量的逻辑资源,因此,它是以牺牲逻辑资源为代价的。
【Optimization Effort】:优化器努力程度。这里有【normal】和【high】两种选择方式。对于【normal】,优化器对逻辑设计仅仅进行普通的优化处理,其结果可能并不是最好的,但是综合和优化流程执行地较快。如果选择【high】,优化器对逻辑设计进行反复的优化处理和分析,并能生成最理想的综合和优化结果,在对高性能和最终的设计通常采用这种模式;当然在综合和优化时,需要的时间较长。
【Use Synthesis Constraints File】:使用综合约束文件。如果选择了该选项,那么综合约束文件XCF有效。
【Synthesis Constraints File】:综合约束文件。该选项用于指定XST综合约束文件XCF的路径。
【Keep Hierarchy】:综合时,是否保持层次结构
【Global Optimization Goal】:全局优化目标。可以选择的属性包括有【AllClockNets】、【Inpad To Outpad】、【Offest In Before】、【Offest Out After】、【Maximm Delay】。该参数仅对FPGA器件有效,可用于选择所设定的寄存器之间、输入引脚到寄存器之间、寄存器到输出引脚之间,或者是输入引脚到输出引脚之间逻辑的优化策略。
【Generate RTL Schematic】:生成寄存器传输级视图文件。该参数用于将综合结果生成RTL视图。
【Write Timing Constraints】:写时序约束。该参数仅对FPGA有效,用来设置是否将HDL源代码中用于控制综合的时序约束传给NGC网表文件,该文件用于布局和布线。Xilinx特殊选项Xilinx特殊选项用于将用户逻辑适配到Xilinx芯片的特殊结构中,不仅能节省资源,还能提高设计的工作频率.也给大家介绍一些选项:【Add I/O Buffers】:插入I/O缓冲器。该参数用于控制对所综合的模块是否自动插入I/O缓冲器。默认为自动插入。 【Max Fanout】:最大扇出数。该参数用于指定信号和网线的最大扇出数。这里扇出数的选择与设计的性能有直接的关系,需要用户合理选择。
【Register Duplication】:寄存器复制。该参数用于控制是否允许寄存器的复制。对于高扇出和时序不能满足要求的寄存器进行复制,可以减少缓冲器输出的数目以及逻辑级数,改变时序的某些特性,提高设计的工作频率。默认为允许寄存器复制。
【Equivalent Register Removal】:等效寄存器删除。该参数用于指定是否把寄存器传输级功能等效的寄存器删除,这样可以减少寄存器资源的使用。如果某个寄存器是用Xilinx的硬件原语指定的,那么就不会被删除。默认为使能。
【Register Balancing】:寄存器配平。该参数仅对FPGA有效,用于指定是否允许平衡寄存器。可选项有【No】、【Yes】、【Forward】和【Backward】。采用寄存器配平技术,可以改善某些设计的时序条件。其中,【Forward】为前移寄存器配平,【Backward】为后移寄存器配平。采用寄存器配平后,所用到的寄存器数就会相应地增减。默认为寄存器不配平。
【Move First Flip-Flop Stage】:移动前级寄存器。该参数仅对FPGA有效,用于控制在进行寄存器配平时,是否允许移动前级寄存器。如果【Register Balancing】的设置为【No】,那么该参数的设置无效。
【Move Last Flip-Flop Stage】:移动后级寄存器。该参数仅对FPGA有效,用于控制在进行寄存器配平时,是否允许移动后级寄存器。如果【Register Balancing】的设置为【No】,那么该参数的设置无效。
【Pack I/O Registers into IOBs】:I/O寄存器置于输入输出块。该参数仅对FPGA有效,用于控制是否将逻辑设计中的寄存器用IOB内部寄存器实现。在Xilinx系列FPGA的IOB中分别有输入和输出寄存器。如果将设计中的第一级寄存器或最后一级寄存器用IOB内部寄存器实现,那么就可以缩短IO引脚到寄存器之间的路径,这通常可以缩短大约1~2ns的传输时延。默认为【Auto】。
【Slice Packing】:优化Slice结构。该参数仅对FPGA有效,用于控制是否将关键路径的查找表逻辑尽量配置在同一个Slice或者CLB模块中,由此来缩短LUT之间的布线。这一功能对于提高设计的工作频率、改善时序特性是非常有用的。默认为允许优化Slice结构。
【Optimize Instantiated Primitives】:优化已例化的原语。该参数控制是否需要优化在HDL代码中已例化的原语。默认为不优化。
目前为止,只有【Keep Hierarchy】本人用的最多,选择YES,保持工程的层次化结构,有利于Analyze Design Using ChipScope选择抓波信号。
【二、实现】
所谓实现就是将综合输出的逻辑网表翻译成所选器件的底层模块与硬件原语(翻译过程),将设计映射到器件结构上(映射过程),进行布局布线(布局布线过程)。
1.翻译:逻辑网表 ->xilinx底层结构硬件原语。
设计文件和约束文件
-> NGD(原始类型数据库)、BLD(NGD生成过程中的报告)
2.映射:将设计映射到具体型号的器件上。
将NGD经过映射到目标器件特定的物理逻辑单元,保存在NCD(展开的屋里设计数据库)
NGD、NMC(物理宏库文件)、MFP(映射布局规划期) -> NCD(物理映射信息)、PCF(物理的约束信息)、NGM(静态时序分析)、MRP(映射报告,通过Floorplanner生成的布局约束文件,设计占用的目标资源,映射过程中出现的警告和错误等等)
【Generate Post-Map Static Timing】:产生映射静态时序分析报告,启动分析器(Timing Analyzer)分析映射后的静态时序。
【Manually Place & Route (FPGA Editor)】:启动FPGA底层编辑器进行手动布局布线,指导Xilinx自动布局布线器。
【Generate Post-Map Simulation Model】:产生映射后的仿真模型。
3.布局布线;根据用户的约束和物理约束,对设计模型进行实际的布局,并根据设计连接,对布局后的模块进行布局布线,产生FPGA配置文件。
读取NCD文件,布局布线将映射后生成的物理逻辑单元在目标系统中放置和连线,并提取相应的时间参数。
NCD、PCF ->NCD、DLY(网络延迟信息)、PAD(引脚配置信息)、PAR
4.Generate Programming File
好好的高清图,经过修剪上传成这破图了,凑合看吧。
总结:
就是给自己留一个资料库,日后需要的时候再来看。优化的时候,选择适当的选项会提供FPGA开发效率。
NOTE:
I/O Pin Planning (PlanAhead)
- Pre-Synthesis ---- 综合之前只能分配管脚约束.
I/O Pin Planning (PlanAhead)
- Post-Synthesis ---- 综合之前只能分配管脚约束.