首页 > 代码库 > 基于Xilinx的Synthesize

基于Xilinx的Synthesize

所谓综合。就是讲HDL语言、原理图等设计输入翻译成由与、或、非们和RAM、触发器登记本逻辑单元的逻辑连接(即网表)。并依据目标和要求(约束条件)优化生成的逻辑连接。

ISE-XST

XST是Xilinx公司自己的综合(Synthsize)工具。当我们完毕输入、仿真以及管脚分配之后就能够进行综合和实现。

双击Synthesize-XST。就能够完毕综合。

一般而言。会有三种结果:

  • 仿真完毕

  • Warn警告

  • ERROR错误

Warn会在Synthesize-XST出现黄色警示。而Error有红色标识。

综合完毕之后能够通过使用XST的View RTLSchematics工具查看RTL级结构图。

技术分享

Synthesize Proprtties

  • [Optimization Goal]:优化的目标。该參数决定了综合工具对设计进行优化时,是以面积还是以速度作为优先原则。面积优先原则能够节省器件内部的逻辑资源,即尽可能地採用串行逻辑结构,但这是以牺牲速度为代价的。而速度优先原则保证了器件的总体工作速度,即尽可能地採用并行逻辑结构,但这样将会浪费器件内部大量的逻辑资源,因此。它是以牺牲逻辑资源为代价的。

  • [Optimization Effort]:优化器努力程度。这里有[normal]和[high]两种选择方式。对于[normal]。优化器对逻辑设计仅仅进行普通的优化处理,其结果可能并非最好的,可是综合和优化流程运行地较快。假设选择[high],优化器对逻辑设计进行重复的优化处理和分析,并能生成最理想的综合和优化结果,在对高性能和终于的设计通常採用这样的模式。当然在综合和优化时,须要的时间较长。

  • [Use Synthesis Constraints File]:使用综合约束文件。假设选择了该选项,那么综合约束文件XCF有效。

  • [Synthesis Constraints File]:综合约束文件。该选项用于指定XST综合约束文件XCF的路径。

  • [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网表文件。该文件用于布局和布线。

HDL语言选项

  • [FSM Encoding Algorithm]:有限状态机编码算法。该參数用于指定有限状态机的编码方式。选项有[Auto]、[One-Hot]、[Compact]、[Sequential]、[Gray]、[Johnson]、[User]、[Speed1]、[None]编码方式,默觉得[Auto]编码方式。

  • [Safe Implementation]:将加入安全模式约束来实现有限状态机,将加入额外的逻辑将状态机从无效状态调转到有效状态,否则仅仅能复位来实现,有[Yes]、[No]两种选择,默觉得[No]。

  • [Case Implementation Sytle]:条件语句实现类型。该參数用于控制XST综合工具解释和推论Verilog的条件语句。

    当中选项有[None]、[Full]、[Parallel]、[Full-Parallel],默觉得[None]。 对于这四种选项。差别例如以下:(1)[None]。XST将保留程序中条件语句的原型,不进行不论什么处理;(2)[Full],XST觉得条件语句是完整的,避免锁存器的产生;(3)[Parallel],XST觉得在条件语句中不能产生分支。而且不使用优先级编码器;(4)[Full-Parallel],XST觉得条件语句是完整的,而且在内部没有分支。不使用锁存器和优先级编码器。

  • [RAM Extraction]:存储器扩展。该參数仅对FPGA有效,用于使能和禁止RAM宏接口。

    默觉得同意使用RAM宏接口。

  • [RAM Style]:RAM实现类型。该參数仅对FPGA有效,用于选择是採用块RAM还是分布式RAM来作为RAM的实现类型。

    默觉得 [Auto]。

  • [ROM Extraction]:仅仅读存储器扩展。该參数仅对FPGA有效,用于使能和禁止仅仅读存储器ROM宏接口。默觉得同意使用ROM宏接口。

  • [ROM Style]:ROM实现类型。该參数仅对FPGA有效。用于选择是採用块RAM还是分布式RAM来作为ROM的实现和推论类型。默觉得[Auto]。

  • [Mux Extraction]:多路复用器扩展。该參数用于使能和禁止多路复用器的宏接口。依据某些内定的算法,对于每一个已识别的多路复用/选择器,XST能够创建一个宏,并进行逻辑的优化。能够选择[Yes]、[No]和[Force]中的不论什么一种,默觉得[Yes]。

  • [Mux Style]:多路复用实现类型。

    该參数用于胃宏生成器选择实现和推论多路复用/选择器的宏类型。能够选择[Auto]、[MUXF]和[MUXCY]中的不论什么一种,默觉得[Auto]。

  • [Decoder Extraction]:译码器扩展。该參数用于使能和禁止译码器宏接口,默觉得同意使用该接口。

  • [Priority Encoder Extraction]:优先级译码器扩展。

    该參数用于指定是否使用带有优先级的编码器宏单元。

  • [Shift Register Extraction]:移位寄存器扩展。

    该參数仅对FPGA有效,用于指定是否使用移位寄存器宏单元。默觉得使能。

  • [Logical Shifter Extraction]:逻辑移位寄存器扩展。

    该參数仅对FPGA有效,用于指定是否使用逻辑移位寄存器宏单元。

    默觉得使能。

  • [XOR Collapsing]:异或逻辑合并方式。该參数仅对FPGA有效。用于指定是否将级联的异或逻辑单元合并成一个大的异或宏逻辑结构。默觉得使能。

  • [Resource Sharing]:资源共享。该參数用于指定在XST综合时,是否同意复用一些运算处理模块。如加法器、减法器、加/减法器和乘法器。

    默觉得使能。

    假设综合工具的选择是以速度为优先原则的。那么就不考虑资源共享。

  • [Multiplier Style]:乘法器实现类型。该參数仅对FPGA有效。用于指定宏生成器使用乘法器宏单元的方式。选项有[Auto]、Block]、[LUT]和[Pipe_LUT]。默觉得[Auto]。选择的乘法器实现类型和所选择的器件有关。

特殊选项

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代码中已例化的原语。默觉得不优化。

以上三个部分分别用于设置综合的全局目标和总体策略、HDL硬件语法规则以及Xilinx特有的结构属性。

<script type="text/javascript"> $(function () { $(‘pre.prettyprint code‘).each(function () { var lines = $(this).text().split(‘\n‘).length; var $numbering = $(‘
    ‘).addClass(‘pre-numbering‘).hide(); $(this).addClass(‘has-numbering‘).parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($(‘
  • ‘).text(i)); }; $numbering.fadeIn(1700); }); }); </script>

基于Xilinx的Synthesize