您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > Xilinx-FPGA高级开发工具精讲
FPGA应用XilinxFPGA高级开发工具高级工具•约束与约束相关工具•ConstraintEditor,PACE•配置下载工具(iMPACT)•第三方工具•仿真器:ModelSim•综合器:Simplify•在线逻辑分析仪(ChipScope)•时序分析器(TimingAnalyzer)约束•目的:•控制综合与实现,设计高性能电路;•获得正确时序分析报告•指定引脚位置和电气标准•时序约束,分组约束•管脚约束,区域约束约束文件•UCF:文本文件,由用户输入;•NCF:由综合工具自动生成;•PCF:•映射产生的物理约束•用户输入的约束时序相关约束•周期约束(PERIOD约束)•偏移约束(OFFSET约束)•静态路径约束•专门约束•分组约束时序约束QQSETCLRDQQSETCLRDlogiclogiclogicIPADIPADIPADOPADOPADOffset_in_BeforeAllClockNetPeriodOffset_in_AfterInpad_to_Outpad•周期约束(PERIOD约束):FF到FF•偏移约束(OFFSET约束):IPAD到FF,FF到OPAD•静态路径约束:IPAD到OPAD周期约束•Tcko:时钟输出•Tlogic:组合逻辑延迟•Tnet:网线延迟•Tsetup:建立时间•Tclk_skew:时钟偏移•时钟最小周期:Tclk=Tcko+Tlogic+Tnet+Tsetup–Tclk_skew•Tclk_skew=Tcd2–Tcd1QQSETCLRDQQSETCLRDlogicTlogicTckoTsetupTnetTcd1Tcd2时钟约束语法(简单方法)•[约束信号]PERIOD={周期长度}{HIGH|LOW}[脉冲持续时间]•约束信号:NET“net_name”或TIMEGRP“group_name”•HIGH|LOW:第一个脉冲为高电平/低电平•脉冲持续时间:该脉冲持续时间•举例•NETSYS_CLKPERIOD=10nsHIGH4ns时钟约束语法(推荐方法)•TIMESPEC“TSidentifier”=PERIOD“TNM_reference”{周期长度}{HIGH|LOW}[脉冲持续时间];•TIMESPEC:时序规范标识;•TS+标识:TS属性定义,可用于派生时钟定义•举例•NET“clk_50M”TNM_NET=“sys_clk”•TIMESPEC“TS_sys_clk”=PERIOD“sys_clk”20HIGH10时钟约束语法(派生方法)•TIMESPEC“clk_syn”=PERIOD“clk”5ns;•反向时钟:•TIMESPEC“clk_syn_180”=PERIOD“clk_180”clk_synPHASE+2.5ns;•2分频时钟:•TIMESPEC“clk_syn_180”=PERIOD“clk_syn_half”clk_syn/2偏移约束•外部时钟与数据输入/输出管脚之间时序;•只能用于端口信号,不能用于内部信号;•输入偏移•输出偏移•OFFSET=[IN|OUT]”offset_time”[units]{BEFORE|AFTER}”clk_name”[TIMEGRP“group_name]输入约束•OFFSET_IN_AFTER:时钟之后可以到达输入端,芯片内部延迟上限•OFFSET_IN_BEFORE:时钟之前必须到达输入端•NET“DATA_IN”OFFSET=IN10.0BEFORE“CLK_50MHz”•NET“DATA_IN”OFFSET=IN10.0AFTER“CLK_50MHz”Tin_afterTin_beforeTp输出约束•OFFSET_OUT_BEFORE:下一个时钟到来之前必须完成输出•OFFSET_OUT_AFTER:本时钟有效沿之后必须输出•NET“DATA_OUT”OFFSET=OUT10.0BEFORE“CLK_50MHz”•NET“DATA_OUT”OFFSET=OUT10.0AFTER“CLK_50MHz”Tout_afterTout_beforeTp分组约束•将同步元件分为不同的组,每组附加各自的约束•TNM/TNM_NET:选出可构成一个分组的元件,然后整体添加到组中•TIMEGRP:分组合并和拆分•TPSYNC:将不是管脚和同步元件的组件定义为同步,以便作为时序规范起点和终点•TPTHRU:定义一个或一组路径上的关键点,可使用户定义任意期望的路径TNM/TNM_NET分组约束•选出可构成一个分组的元件,然后整体添加到组中•TNM_NET只加在网线上•{NET|INST|PIN}“ob_name”TNM=“New_name”•NET“net_name”TNM_NET=“new_name”•示例•INST“ff1”TNM=“MY_FF1”;•INST“ff2”TNM=“MY_FF1”;•NET“A0”TNM=“MY_FF1”;•NET“PADCLK”TNM_NET=“PADGRP”TNM/TNM_NET分组约束•TNM约束添加到线网时不穿越IBUFG/BUFG组件,TNM_NET可穿越IBUFG/BUFGTIMEGRP分组约束•分组合并和拆分•合并:TIMEGRP“New_group”=“old_group1”“old_group2”…;•拆分:TIMEGRP“New_group”=“old_group1”EXCEPT“old_group2”…;•示例•TIMEGRP“big_group”=“small_group”“medium_group”TPSYNC分组约束•同步点分组。如约束附加在NET,NET驱动源为同步点;如果是INST,它的输出为同步点;如果是输入输出引脚,该引脚为同步点;•{NET|INST|PIN}“ob_name”TPSYNC=“New_part”TPTHRU分组约束•定义一个或一组路径上的关键点,可使用户定义任意期望的路径•{NET|INST|PIN}“ob_name”TPTHRU=“New_name”;•示例•INST“A1”TNM=“S”•INST“A2”TNM=“E”•NET”A1toA2_1”TPTHRU=“M”•TIMESPEC“TSpath1”=FROM“A”THRU“ABC”TO“B”30;专用约束•FROM_TO约束:定义两个组之间的时序约束,可以是用户组,或与定义组(FFS,LATCHES,PADS,RAMS等)•TIMESPEC“TS_P2S”=FROMPADSTOFFS25ns;•TIMESPEC“TS_C2S”=FROMFFSTOFFS30ns;•MAXDELAY约束:定义特定线网最大延迟•NET“EN”MAXDELAY=5ns;•MAXSKEW约束:控制线网偏移不大于某值•NET“SIG_3”MAXSKEW=3ns;•TIG约束:定义时序无关路径•NET“Sig_5”TIGUCF语法项目•通配符•“*”:代表任何字符串及空格串•“?”:代表一个字符•设计层次•“*”:所有层次•“Level1/*”:level1及以下层次•“Level1/*/”:level1中模块,但不遍历更低层次•注释•“#”:单行注释•“/**/”:跨行注释•示例•NET“*AT?”•INST“/loads_of_logic/*”LOC=CLB_r*c8;约束输入工具•约束编辑器(ConstraintsEditor)•全局约束(Global)•端口约束(Ports)•高级约束(Advanced)•杂类(Misc)•引脚与区域约束编辑器(PACE)•文本编辑全局约束•针对时钟信号•全局约束分为:•周期约束(PERIOD)•输入延迟约束(PadtoSetup)•输出延迟约束(ClocktoPad)全局约束(Global)周期约束(PERIOD)•Jitter:抖动•SpecifyTime•Relativeto•倍数•相移•示例:•NET“clk”TNM_NET=“clk”;•TIMESPEC“TS_clk”=PERIOD“clk”20nsHIGH50%输入延迟约束(PadtoSetup)•OFFSET:偏移•ClockPadNet:时钟线网•ClockEdge:上升沿/下降沿•示例•OFFSET=IN20nsBEFORE“clk”HIGH;输出延迟约束•OFFSET:偏移•ClockPadNet:时钟线网•ClockEdge:上升沿/下降沿•示例:•OFFSET=OUT20nsAFTER“clk”HIGH;端口约束(Ports)•针对除时钟以外的信号•分组约束,输入约束,输出约束单端口约束•目前版本不能修改端口方向、位置等;•对灰色的N/A的域因已经在其它相关地方定义,不能修改;•对需要修改的域,鼠标双击修改;分组约束•新建分组:•选中信号•填GroupName•单击CreateGroup•示例•INST“dpd_datain_i[5]”TNM=“dpd_datain_i”;•INST“dpd_datain_i[6]”TNM=“dpd_datain_i”;•INST“dpd_datain_i[7]”TNM=“dpd_datain_i”;•INST“dpd_datain_i[8]”TNM=“dpd_datain_i”;高级约束(Advanced)•分组约束:TNM/TNM_NET/TPT/THRU•专用约束:FROM_TO分组约束(TNM_NET)•点击对应”Create…”•输入TimeName•选择线网•增加组内线网•示例•NET“clk”TNM_NET=“my_net”;•NET“clk_ibuf”TNM_NET=“my_net”;•NET“clk_c”TNM_NET=“my_net”;专用约束(PadToSetupforSourceSynchronous(OFFSETINBEFORE)•点击对应”Create…”•选择源时序分组•输入TimeRequirement•选择时钟网及边沿•选择设置作用分组•示例•TIMEGRP“dpd_datain_i”OFFSET=IN20ns“clk”HIGH;杂项约束(Misc…)•局部约束•I/O端口•工作电压•工作温度•区域分组•DCM反馈路径延迟•初始化控制杂项约束(INITValuefor…)•Filter:筛选•InitValue:值•示例•INST“dpd_data01/dpd_fai_bank01/cnt[0]”INIT=0;•INST“dpd_data01/dpd_fai_bank01/cnt[1]”INIT=0;管脚和区域约束•实现软件:•底层工具编辑器(FPGAEditor),布局规划器(Floorplanner),管脚与区域约束编辑器(PACE)•LOC语句•基本形式:INST“instance_name”LOC=location•多个定位任选:LOC=location1,location2,…;•范围定位:INST“instance_name”LOC=location:location[SOFT];•示例•NET“Top_Module_PORT”LOC=“Chip_Port”LOC属性约束类型可用属性示例含义I/O管脚P12管脚A12阵列号B,L,T,R边界(上下左右)LB,RB,LT,RT,BR,TR,BL,TL边界一半(上左,…)Bank0,Bank1,Bank2,Bank3,Bank4,Bank5,Bank6,Bank7,管脚分组CLBCLB_R4C3(或.S0,或.S1)CLB_R6C8.S0(或S1)CLB中SLICESLICESLICE_X22Y3LOC属性约束类型可用属性示例含义TBUFTBUF_R6C7(or.0or.1)TBUF_X6Y7块RAMRAMB4_R3C1RAMB16_X2Y56硬件乘法器MULT18×18_X55Y82全局时钟GCLKBUF0(或1,2,3)全局时钟缓冲器GCLKPAD0(或1,2,3)全局时钟端口DLLDLL0P(或S)(1,2,3)DCMDCM_X0Y0管脚区域示例•INST
本文标题:Xilinx-FPGA高级开发工具精讲
链接地址:https://www.777doc.com/doc-4749081 .html