您好,欢迎光临本网站![请登录][注册会员]  
文件名称: XDC 约束技巧之时钟篇.pdf
  所属分类: 硬件开发
  开发工具:
  文件大小: 930kb
  下载次数: 0
  上传时间: 2019-07-28
  提 供 者: td***
 详细说明:XDC 约束技巧之时钟篇推荐的做法是,由用户来指定这类衍生时钟的名字,其余频率等都由 自动推 导。这样就只需写明 的三个,其余不写即可。如上所示 当然,此类情况下用户也可以选择完全由自己定义衍生时钟,只需补上其余表示频 率相位关系的,包括 等等。需要注意的是,一旦 在 的输出检测到用户自定义的衍生时钟,就会报告一个 提 醒用户这个约束会覆盖工具自动推导出的衍生时钟(例外的情况见文章下半段重叠时钟部 分的描述),用户须保证自己创建的衍生钟的频率等属性正确 用户自定义的衍生时钟 工具不能自动推导出衍生钟的情况,包括使用寄存器和组合逻辑搭建的分频器等 必须由用户使用 来创建。举例如下, create_clock-name clk1-period 4 [ get_ports CKP1 create_generated_clock -name clk2 [get_pins reGA/QJ source [get_ports CKPl-divide_ by 2 l/0约東 在设计的初级阶段,可以不加约束,让工具专注于满足 内部的时序要求。 当时序要求基本满足后,再加上约束跑实现。中的约束有以下几点需要注意 不加任何约束的端口时序要求被视作无穷大。 中的 对应于中 但视角相反。 是从 内部延时的角度来约東端凵时序, 则是从系统角度来约東。 典型的时序,包括系统同步、源同步、和等等,在 图形界面的 中都有示例 版后还有一个 可供使用。 Page 3 时序例外约束 时序例外约束包括 等,这类约束除了要满足的先后顺序优先缴外,还受到自身优先级的限制。一个总 的原则就是针对同一条路径,对约束目标描述越具体的优先级越高。不同的时序例外约東 以及同一约束中不同条件的优先级如下所示: 优先级最高 from pin set_false_path -to pin set_max_delay /set_min_delay through pin from clock set multicycle path -to clock 优先级最低 举例来说,依次执行如下两条,尽管第二条较晚执行,但工具仍然认定第一条 约束设定的为到之间路径的 值 Winner set_max_ delay 15-from get_clocks clk1]-to get _clocks clk2 delay 12 -from [get_clocks clk1 再比如,对图示路径依次进行如下四条时序例外约束,优胜者将是第二条。但如果 再加入最后一条约束, 的优先级最高,会取代之前所有的时序例外约束。 REGA REGB CLKA CLKB Winner set_multicyle_path rough lut/A set_ multicycle_path 3-from REGA/Q set_multicycle_path 3-to REGB/D Take precedence set_multicycle_path 2-from CLKA-to CLKB set_false_path-through lut/0 Page 4 高级时钟约束 约束最终是为了设计服务,所以要用好就需要深入理解电路结构和设计需求 接下来我们就以常见 设计中的时钟结构来举例,详细阐述的约束技巧。 时序的零起点 定义的主时钟的起点即时序的“零起点”,在这之前的上游路径延时 都被工具自动忽略。所以主时钟创建在哪个“点”很重要,以下图所示结构来举例,分别 于 输入端口和 输出端口创建一个主时钟,在时序报告中体现出的路径延时完 全不同,很明显 的报告中缺少了之前一段的延时,时序报告不可信。 SYs Clk sysclk bad clk infra i sys clk buf E sysrst sync reg[2] kinl_buf CLR o sys clk□ IBUFG BUFR PRE ck infra DPE create clock -name sysclk -period 10 get ports sys clk Delay type Incr(ns) Path(ns) Netlist Resource(s) (clock sysclk rise edge) 0.000 0.000y 0.000 0.000 r sys clk 0.000 0.000 clk infra i/sys clk IBUFG (Prop ibufg I o) 0.766 0.756 r clk infra i/clkin1 buf/o ne- (fo=3, unplaced) ⊥.⊥09 clk infra i/clkinl BUFR Prop bufr I o) 0.314 2.189r clk infra i/sys clk buf/o net (fo=10, unplaced) 1.109 3.298 s clk int ysrst sync reg[2]/c create clock -name sysclk bad -period 10 [get pins clk infra i/sys clk buf/o] De t Incr(ns) lk bad r R clk buf/o net (fo=10, unplaced) 1.109 1.109 lk int r sysrst sync reg[2]/c Page 5 时钟定义的先后顺序 时钟的定义也遵从 的一般优先级,即:在同一个点上,由用户定义的时钟 会覆盖工具自动推导的时钟,且后定义的时钟会覆盖先定义的时钟。若要二者并存,必须 使用 选项 clk infra sysclk sys dk buf CE sysrst_sync_reg[2] clkinl buf CLR sys_elkO sys_ck CE IBUFG BUFR clkbufr° clkfsm buf PRE I CEO FDPE C[1 IGNOREO write error_reg GNOREl 1 clkbufg CLR 51 FDCE BUFGCTRL clk infra create clock -rame sysclk -period 10 [cet ports sys clk] create generated clock -name clkbufg -source get ports sys clk] -divide by 1\ [get pins clk infra i/clkfsm buf/o] create generated clock -name clkbufr -source get ports sys clk] -divide by 1 [get pins clk infra i/sys clk buf/o] -add -master clock sysclk 上述例子中 的输出端由用户自定义了一个衍生钟 ,这个衍生钟便会覆 盖此处原有的 。此外,图示 工作在 模式,其输出不会自动创建衍生钟, 但在 的输出端定义一个衍生钟 ,并使用和 选项后,这 点上会存在 和 两个重叠的时钟。如下的命令验证了我们的推论。 o get clocks -of [get pins sysrst sync reg[2]/C] sysclk clkbufr o get clocks -of [get pins write error reg/c1 clkbufg Page 6 同步时钟和异步时钟 Generated clock ssclkdivout nstpins[o. iserdese2 maste Primary Clock ssclkin Asynchronous k infr YNCLKDIVSEL o Clocks Ikin uf SERDESE2 Primary Clock Generated Clock selectio wiz w4 2 car itt sys clk int Asynchronous Clocks 不同于约東,在中,所有的时钟都会被缺省认为是相关的,也就是说,网 表中所有存在的时序路径都会被 分析。这也意味着 设计人员必须通过约束 告诉工具,哪些路径是无需分析的,哪些时钟域之间是异步的 如上图所示,两个主时钟 和 由不同的端口进入,再经由不同的 时钟网络传递,要将它们设成异步时钟,可以使用如下约束: set clock grcups -name sys ss async -asynchronous gr。up[ get clocks- include generated cl。 cks SysC⊥k] group [get clocks -include generated clocks ssclkin] 其中, 表示所有衍生钟自动跟其主时钟一组,从而与其它 组的时钟之间为异步关系。不加这个选项则仅仅将时钟关系的约束应用在主时钟层面。 重叠(单点多个)时钟 重叠时钟是指多个时钟共享完全相同的时钟传输网络,例如两个时钟经过一个 选择后输出的时钟,在有多种运行模式的设计中很常见。 如下图所示, 和 是 的两个输入时钟,不约束时钟关系的情 况下 会对图示路径做跨时钟域(重叠时钟之间)分析。这样的时序报告即便没有 违例,也是不可信的,因为 和 不可能同时驱动这条路径上的时序元件。这 么做也会增加运行时间,并影响最终的实现效果。 Page 7 clk infra i d inst CLROUTD DADOR 60] CLKOUT FD_ pod LUre oa CLKOUT pt5:。] CLKOVT2B CLKOUT3 已GC|HL Ps↑ CLKOUT4 LUTE pot15]下 LOCKED CME2 ADV Delay type incr(ns patr (ns) Netlist Resource(s) (clock(c1l125 rise)edge) C000 0.000 r 0.000 7s clk BUEGCIRL(Pyop bufyct..)C093 3.307 lk infra i/clkoore buf net (fo=4 1.109 Different clocks r gila i/FD paa FDCE (Prop fdic c C.249 1.949 r gola i/FD pda/ IDC (Getup face C D? C 003 -1.092 gola i/FD ag /D Same cleek-tree (clock(clr250_ rise)edge)4.000 4.000y C.0U0 4.000 r sys C⊥k BUEGCTRL (Prop bufgct..) C 083 416r clk infra i/clkcore buf/0 net (fo=4900, unplaced) 1.109 2.525 gola i/clk r gola i/ clock pessinisIL C.733 1.792 clock uncertainty C.191 1.601 aY⊥va1t1me slack 2.693 如果 和 除了通过 后一模一样的扇出外没有驱动其它时序元 件,我们要做的仅仅是补齐时钟关系的约束 sct clock groups -physically exclusive group [get clocks clk125]\ group [get clocks clk250] Page 8 在很多情况下,除了共同的扇出,其中一个时钟或两个都还驱动其它的时序元件, 此时建议的做法是在 的输出端上创建两个重叠的衍生钟,并将其时钟关系约束 为 表示不可能同时通过。这样做可以最大化约束覆盖率,也是和 中无法做到的 create generated clock -name clk125 bufgctrl ivide Y ns bufgctrl 1/0]\ source [cet ports bufgctrl i/IO] create generated clock -name clk250 bufactrl divide by 1 [get pins bufgctrl i/0] source [cet ports bufgctrl i/Il]\ -add -master clock clk250 CLK125 set clock groups -physically exclusive CLK250 group clk-25 bufgctrl V -group clk250 bufgctrl 其它高级约束 时钟的约束是的基础,熟练掌握时钟约朿,也是约束技巧的基础。其它 高级约束技巧,包括复杂的 )约束和接口时序 系统同步接凵和源同步接凵)约束等方面还有很多值得注意的地方。 这一系列《约束技巧》文章还会继续就上述所列方向分篇详述,敬请关注作者 的后续更新,以及官方网站和中文论坛上的更多技术文章。 上海 age 《XDC约束技巧之时钟篇》版本更新 日期版本作者 备注 2014092511 Ally Zhou初始版本,发布于xx中文论坛va专区 201411271.2 Ally Zhou修订笔误 XDC的基本语法一时钟约束:增加差分时钟约束; 增加衍生时钟语法举例 Page 10
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 输入关键字,在本站1000多万海量源码库中尽情搜索: