分享

设计实现和时序仿真

 njnh 2014-06-12
实现过程
     ISE中的实现(Implement)过程,是将综合输出的逻辑网表翻译成所选器件的底层模块与硬件原语,并将设计映射到器件结构上,进行布局布线,达到在选定器件上实现设计的目的。
实现过程主要分为3个步骤:
1)翻译(Translate)
   翻译的主要作用是将综合输出的逻辑网表翻译为Xilinx特定器件的底层结构和硬件原语
2)映射(MAP)
   映射的主要作用是将设计映射到具体型号的器件上
3)布局布线(Place&Route)
   布局布线的主要作用是调用Xilinx布局布线器,根据用户约束和物理约束,对设计模块进行实际布局,并根据设计连接,对布局后的模块进行布线,产生FPGA配置文件。

设计约束原理
   设计约束文件直接影响设计性能和设计效率。Xilinx的ISE软件提供了实现不同类型约束的方法。
ISE约束入口方法

 ISE工具约束类型 芯片类型 
Constraints  Editor 时序 所有CPLD和FPGA 
 PlanAheadIO布局和面积组约束 所有FPGA 
 PACEIO布局 所有CPLD 
 Schematic and Symbol EditorsIO布局和其他布局约束 所有CPLD和FPGA 

用户约束文件(User Constraints File,UCF)是一个ASCII文件,该文件指明了用于逻辑设计的约束。设计者可以使用文本编辑器和约束编辑器来创建UCF文件。这些约束影响逻辑设计在目标器件的实现方式。设计者可以使用UCF文件来覆盖设计入口所声明的约束。
UCF文件时NGDBuild的输入。UCF文件将成为生成后的NGD文件的一部分。对于FPGA芯片来说,当设计被映射时,将使用这些约束中的一部分,并且将其中的一部分约束写入到MAP所生成的物理约束(Physical Constraints File ,PCF)文件中。PCF文件被物理设计工具使用(比如PAR 和时序分析工具),在设计映射后,将运行物理设计工具。
在下面的文件中可以找到逻辑约束条件:
1)网表约束文件(Netlist Constraint File,NCF)是由综合工具生成的ASCII文件。
2)UCF文件时由用户生成的ASCII文件。
NCF文件和UCF文件的通用规则包括:
1)UCF和NCF文件是大小写敏感
2)每一个描述使用“;"结束。
3)当描述超过一行时不需要使用连接符进行连接(由于分号表示结束)。
4)Xilinx推荐设计者将相似的块和元件构成一个组来进行一个时序约束,而不需要分别进行约束。
5)UCF和NCF文件的注释使用#符号开头。
6)在UCF和NCF文件中,描述不需要规定先后顺序。
7)将NET和INST名字用双引号括住表示。
    #  Virtex 6 ML605 Evaluation Platform
   NET "fpga_0_RS232_Uart_1_RX_pin" IOSTANDARD = LVCMOS25;
   NET "fpga_0_RS232_Uart_1_RX_pin" LOC = J24;
8)设计人员可以对一个给定的实例进行多个约束。
INST myInst LOC=P53 | IOSTANDARD =LVPECL33 | SLEW = FAST ;
如果约束出现冲突时,UCF覆盖NCF和原理图、网表的约束。NCF覆盖原理图和网表约束。

PCF文件时一个ASCII文件,其中包括两部分:
1)由映射工具产生的物理约束。
2) 由用户输入的物理约束

时序约束原理
Xilinx软件允许设计者为设计指定精确的时序要求。使用全局或者路径指定的约束,来指定这些要求。
用于指定时序约束的基本方法是在用户约束文件中输入这些约束。此外,能在源文件中输入约束。
一旦设计者定义了时序规范和映射了设计,PAR基于这些要求布局和布线设计。
使用命令行工具TRACE或者时序分析器来分析指定时序要求的结果。
当一个网络有多处时序约束时,XST以下面的顺序来处理时序约束:
1)信号上指定的约束
2)顶层模块指定的约束
3)顶层模块全局约束





引脚约束
引脚约束用来确定IO引脚的工作特性,其约束主要包括以下几个方面:
1)位置约束:用来定义设计的I/O在FPGA引脚上的位置。该约束的文字描述:
      NET “name" LOC = "A23";
2)IO 标准约束:用来定义I/O引脚的电气标准。该约束的文字描述:
      NET ”name" IOSTANDARD = “LVTTL”;
3)IO驱动能力约束:用来定义输出引脚的驱动能力(以电流mA表示)。该约束的文字表述:
    INST  “instance_name” DRIVE = {2 | 4 | 6 | 8 | 12 | 16 | 24};
 4)IO抖动率约束:用来定义输出引脚的抖动率。可选择的参数包括SLOW和FAST。
5)IO延时约束:用来定义输入路径的延迟元件。可选择的参数包括NONE(关闭所有的IBUF和IFD路径延迟)、BOTH(打开所有的IBUF和IFD路径延迟)、IBUF(设置关闭在I/O元件内的任何寄存器的延迟,同时如果输入缓冲驱动I/O元件外的一个寄存器的D引脚则打开元件外的寄存器延迟)、IFD(打开任何I/O元件外的寄存器,同时如果寄存器占用了I/O元件的输入侧则关闭元件外的寄存器的延迟)(不考虑IOB=TRUE约束)。该约束文字描述:
   INST “instance_name" IOBDELAY = {NONE | BOTH | IBUF | IFD};
6)IO端约束:用于映射约束。可选的参数:PULLDOWN(当I/O无驱动时,保证其为逻辑低,避免三态)、PULLUP(当I/O无驱动时,保证其为逻辑高,避免三态),KEEPER(包含输出引脚的值)。该约束的文字描述:
 NET ” pad_net_name“ {KEEPER | PULLUP | PULLDOWN};


                

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多