Xilinx_FPGA高级开发工具

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

专用约束
• FROM_TO约束:定义两个组之间的时序约束,可以是用户组, 或与定义组(FFS,LATCHES,PADS,RAMS等)
• TIMESPEC “TS_P2S”=FROM PADS TO FFS 25ns; • TIMESPEC “TS_C2S”=FROM FFS TO FFS 30ns;
高级约束(Advanced)
• 分组约束: TNM/TNM_NET/ TPT/THRU
• 专用约束: FROM_TO
分组约束(TNM_NET)
• 点击对应”Create…” • 输入Time Name • 选择线网 • 增加组内线网
• 示例 •Baidu NhomakorabeaNET “clk”
TNM_NET=“my_net”; • NET “clk_ibuf”
能修改; • 对需要修改的域,鼠标双击修改;
分组约束
• 新建分组: • 选中信号 • 填Group Name • 单击Create Group
• 示例 • 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”;
• 示例 • INST
“dpd_data01/dpd_fai_ bank01/cnt[0]” INIT=0; • INST “dpd_data01/dpd_fai_ bank01/cnt[1]” INIT=0;
管脚和区域约束
• 实现软件: • 底层工具编辑器(FPGA Editor),布局规划器 (Floorplanner),管脚与区域约束编辑器(PACE)
• 示例 • TIMEGRP
“dpd_datain_i” OFFSET=IN 20ns “clk” HIGH;
杂项约束(Misc…)
• 局部约束 • I/O端口 • 工作电压 • 工作温度 • 区域分组 • DCM反馈路径延迟 • 初始化控制
杂项约束(INIT Value for…)
• Filter:筛选 • Init Value:值
Tclk_skew • Tclk_skew = Tcd2 – Tcd1
D SET Q
Tlogic
Tnet
logic
D SET Q
Tcd1
Q CLR
Tcko
Tcd2
Q CLR
Tsetup
时钟约束语法(简单方法)
• [约束信号] PERIOD = {周期长度}{HIGH|LOW} [脉 冲持续时间] • 约束信号:NET “net_name”或TIMEGRP “group_name” • HIGH|LOW:第一个脉冲为高电平/低电平 • 脉冲持续时间:该脉冲持续时间
clk_syn PHASE+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]
FPGA应用
Xilinx FPGA高级开发工具
高级工具
• 约束与约束相关工具 • Constraint Editor,PACE
• 配置下载工具(iMPACT) • 第三方工具
• 仿真器:ModelSim • 综合器:Simplify • 在线逻辑分析仪(ChipScope) • 时序分析器(Timing Analyzer)
TNM/TNM_NET分组约束
• TNM约束添加到线网时不穿越IBUFG/BUFG组件,TNM_NET可 穿越IBUFG/BUFG
TIMEGRP分组约束
• 分组合并和拆分 • 合并:TIMEGRP “New_group”=“old_group1” “old_group2”…; • 拆分:TIMEGRP “New_group”=“old_group1” EXCEPT “old_group2”…;
全局约束(Global)
周期约束(PERIOD)
• Jitter:抖动 • Specify Time • Relative to
• 倍数 • 相移
• 示例: • NET “clk”
TNM_NET=“clk”; • TIMESPEC
“TS_clk”=PERIOD “clk” 20ns HIGH 50%
输入约束
• OFFSET_IN_AFTER:时钟之后可以到达输入端,芯片内部延迟上限 • OFFSET_IN_BEFORE:时钟之前必须到达输入端 • NET “DATA_IN” OFFSET = IN 10.0 BEFORE “CLK_50MHz” • NET “DATA_IN” OFFSET = IN 10.0 AFTER “CLK_50MHz”
网 • Clock Edge:上升沿/下
降沿
• 示例: • OFFSET=OUT 20ns AFTER
“clk” HIGH;
端口约束(Ports)
• 针对除时钟以 外的信号
• 分组约束,输 入约束,输出 约束
单端口约束
• 目前版本不能修改端口方向、位置等; • 对灰色的N/A的域因已经在其它相关地方定义,不
• 举例 • NET SYS_CLK PERIOD=10ns HIGH 4ns
时钟约束语法(推荐方法)
• TIMESPEC “TSidentifier”=PERIOD “TNM_reference” {周期长度} {HIGH|LOW} [脉冲 持续时间];
• TIMESPEC:时序规范标识; • TS+标识:TS属性定义,可用于派生时钟定义
• 设计层次 • “*”:所有层次 • “Level1/*”:level1及以下层次 • “Level1/*/”:level1中模块,但不遍历更低层次
• 注释 • “#”:单行注释 • “/* */”:跨行注释
• 示例 • NET “*AT?” • INST “/loads_of_logic/*” LOC=CLB_r*c8;
输入延迟约束(Pad to Setup)
• OFFSET:偏移 • Clock Pad Net:时
钟线网 • Clock Edge:上升
沿/下降沿
• 示例 • OFFSET=IN 20ns
BEFORE “clk” HIGH;
输出延迟约束
• OFFSET:偏移 • Clock Pad Net:时钟线
• 周期约束(PERIOD约束) • 偏移约束(OFFSET约束) • 静态路径约束
• 专门约束 • 分组约束
时序约束
• 周期约束(PERIOD约束):FF到FF • 偏移约束(OFFSET约束):IPAD到FF,FF到OPAD • 静态路径约束:IPAD到OPAD
Offset_in_Before
约束输入工具
• 约束编辑器(Constraints Editor) • 全局约束(Global) • 端口约束(Ports) • 高级约束(Advanced) • 杂类(Misc)
• 引脚与区域约束编辑器(PACE) • 文本编辑
全局约束
• 针对时钟信号 • 全局约束分为:
• 周期约束(PERIOD) • 输入延迟约束(Pad to Setup) • 输出延迟约束(Clock to Pad)
• 示例 • TIMEGRP “big_group”=“small_group” “medium_group”
TPSYNC分组约束
• 同步点分组。如约束附加在NET,NET驱动源为同步点;如 果是INST,它的输出为同步点;如果是输入输出引脚,该 引脚为同步点;
• {NET|INST|PIN} “ob_name” TPSYNC=“New_part”
AllClockNetPeriod
IPAD
logic
IPAD
D SET Q Q CLR
logic
D SET Q Q CLR
IPAD
Inpad_to_Outpad
Offset_in_After
OPAD
OPAD
logic
周期约束
• Tcko:时钟输出 • Tlogic:组合逻辑延迟 • Tnet:网线延迟 • Tsetup:建立时间 • Tclk_skew:时钟偏移 • 时钟最小周期:Tclk = Tcko + Tlogic + Tnet + Tsetup –
• MAXDELAY约束:定义特定线网最大延迟 • NET “EN” MAXDELAY=5ns;
• MAXSKEW约束:控制线网偏移不大于某值 • NET “SIG_3” MAXSKEW=3ns;
• TIG约束:定义时序无关路径 • NET “Sig_5” TIG
UCF语法项目
• 通配符 • “*”:代表任何字符串及空格串 • “?”:代表一个字符
• 举例 • NET “clk_50M” TNM_NET=“sys_clk” • TIMESPEC “TS_sys_clk” = PERIOD “sys_clk”
20 HIGH 10
时钟约束语法(派生方法)
• TIMESPEC “clk_syn” = PERIOD “clk” 5ns;
• 反向时钟: • TIMESPEC “clk_syn_180”=PERIOD “clk_180”
Tin_after Tin_before
Tp
输出约束
• OFFSET_OUT_BEFORE:下一个时钟到来之前必须完成输出 • OFFSET_OUT_AFTER:本时钟有效沿之后必须输出 • NET “DATA_OUT” OFFSET = OUT 10.0 BEFORE “CLK_50MHz” • NET “DATA_OUT” OFFSET = OUT 10.0 AFTER “CLK_50MHz”
TNM_NET=“my_net”; • NET “clk_c”
TNM_NET=“my_net”;
专用约束(Pad To Setup for Source Synchronous(OFFSET IN BEFORE)
• 点击对应”Create…” • 选择源时序分组 • 输入Time
Requirement • 选择时钟网及边沿 • 选择设置作用分组
约束
• 目的: • 控制综合与实现,设计高性能电路; • 获得正确时序分析报告 • 指定引脚位置和电气标准
• 时序约束,分组约束 • 管脚约束,区域约束
约束文件
• UCF:文本文件,由用户输入; • NCF:由综合工具自动生成; • PCF:
• 映射产生的物理约束 • 用户输入的约束
时序相关约束
Tout_after Tout_before
Tp
分组约束
• 将同步元件分为不同的组,每组附加各自的约束 • 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”
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;
相关文档
最新文档