xilinx 约束文件

几种常用的约束语句,以备查阅。

NET "clk0"  TNM_NET = "sys_clk_grp";  #在时钟网线clk上附加一个TNM_NET约束,把clk0驱动的所有同步元件定义为一个名为sys_clk的分组

#使用TIMESPEC约束sys_clk_grp的周期


TIMESPEC "TS_ sys_clk_grp " = PERIOD " sys_clk_grp " 9.9 ns HIGH 50 %; #周期9.9ns,HIGH指出时钟周期里的第一个脉冲是高电平,如果是LOW表示是低电平,占空比50%


# FROM_TO用来定义两个逻辑组之间的时序约束


#语法:TIMESPEC "TS_name " = FROM "group1" TO " group2" value;


TIMESPEC "TS_p2s" = FROM "pads" TO "ffs" 10;  # pads到ffs延迟10ns


#最大偏移约束MAXSKEW用于说明同一点驱动的时钟信号经过路径传播后,到达两个或多个终点的时间差


NET “AC97_Bit_Clk” MAXSKEW =10ns;

NET tft_wr LOC=C11  |  IOSTANDARD = LVCMOS33;

NET clk0 IOSTANDARD = LVCMOS33; #IO电平标准 有LVCMOS25、LVTTL、SSTL2_I、LVDCI_33等

NET sys_rst_in LOC = D6;

NET sys_rst_in PULLUP; # PULLUP、 PULLDOWN上拉和下拉设置

NET sys_rst_in TIG; # TIG(Timing Ignore)不进行时序约束

NET SYNC     DRIVE = 8 | SLEW = SLOW; # DRIVE :最小驱动电流,单位mA,可以有2,4,6,8,12,16这几种模式,SLEW ={FAST|SLOW|QUIETIO}, QUIETIO仅用在Spartan-3A。SLEW是压摆 ,如果slew=fast 会出现过冲,此时DRIVE如果很大(12mA)会导致输出功率的失真很厉害,有可能会不满足外接的器件的要求。


#通配符


NET gpio_char_lcd<6> LOC = AE13;

NET gpio_char_lcd<5> LOC = AC17;

NET gpio_char_lcd<4> LOC = AB17;

NET gpio_char_lcd<3> LOC = AF12;

NET gpio_char_lcd<2> LOC = AE12;

NET gpio_char_lcd<1> LOC = AC10;

NET gpio_char_lcd<0> LOC = AB10;

NET gpio_char_lcd<*> IOSTANDARD = LVCMOS33;

NET gpio_char_lcd<*> TIG;

NET gpio_char_lcd<*> PULLDOWN;   # *表示任意字符串


#区域约束


# Locate DCM/BUFG - Tools can probably figure them out automatically

#                   but just LOC them down to be safe

INST dcm_0/dcm_0/DCM_ADV_INST LOC = DCM_ADV_X0Y1;

INST dcm_1/dcm_1/DCM_ADV_INST LOC = DCM_ADV_X0Y2;

INST dcm_2/dcm_2/DCM_ADV_INST LOC = DCM_ADV_X0Y0;

INST dcm_0/dcm_0/CLK0_BUFG_INST  LOC = BUFGCTRL_X0Y0;

INST dcm_0/dcm_0/CLK90_BUFG_INST LOC = BUFGCTRL_X0Y1;

INST dcm_0/dcm_0/CLKDV_BUFG_INST LOC = BUFGCTRL_X0Y2;

INST dcm_1/dcm_1/CLK0_BUFG_INST  LOC = BUFGCTRL_X0Y31;

INST dcm_1/dcm_1/CLK90_BUFG_INST LOC = BUFGCTRL_X0Y30; 


区域的约束相当于将布局过程中指定特定型号的器件的位置,这完全可以通过FloorPlanner的GUI界面进行设置,用图形界面设置完后,配置信息会放到UCF中,这里只介绍UCF的使用。


例如:


INST "Done" LOC = "SLICE_X32Y163" ;    #Done映射为一个寄存器,映射到SLICE_X32Y163的位置上。(32,163)相当于一个坐标,可以用FloorPlanner进行查看。INST"BRAM4/BU2/U0/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v4_init.ram/TRUE_DP.SINGLE_PRIM.TDP"LOC = "RAMB16_X2Y22" ; #RAM16的一个映射。


又例如,X,Y,Z是对应的是寄存器。现在想把它们放在一个指定的区域中,我可以这样写,

INST “X” AREA_GROUP = reg;

INST “X” AREA_GROUP = reg;

INST “X” AREA_GROUP = reg;

AREA_GROUP reg RANGE = SLICE_X1Y1 :SLICE_X1Y6;


注:如何查看INST中的名称呢?在ISE中 Timing constraints editor中可以查看



ps:在ISE的files试图下,右键点击约束文件,选择source properties ,更改或者查看module association 选择该约束文件属于哪个模块 !!!!!!

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值