注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
白丁的个人空间 https://home.eeworld.com.cn/space-uid-346593.html [收藏] [复制] [分享] [RSS]
日志

SDC约束命令(转)

已有 8768 次阅读2014-7-20 21:09 |个人分类:ALTERA| register, command, create

一些常用的SDC约束命令:

1.Clock specification
  • create_clock: Use the create_clock command to create a clock at any register, port,or pin.

命令格式:

create_clock
-period <period value>
[-name <clock name>]
[-waveform <edge list>]
[-add]
<targets>

例子:create_clock –period 10 –waveform { 0 5 } clk

注意:使用这个命令创建的时钟默认条件下的source latency为0.

  • create_generated_clock: TimeQuest将clock dividers,ripple clocks或其它更改输入或主时钟特性的电路分析为衍生时钟.

命令格式:

create_generated_clock
[-name <clock name>]
-source <master pin>
[-edges <edge list>]
[-edge_shift <shift list>]
[-divide_by <factor>]
[-multiply_by <factor>]
[-duty_cycle <percent>]
[-add]
[-invert]
[-master_clock <clock>]
[-phase <phase>]
[-offset <offset>]
<targets>

例子:create_generated_clock -source [get_ports clk] -edges {1 3 5 } [get_registers clkdivA|clkreg]

  • Virtual Clocks: 虚拟时钟是在设计中没有实际的源时钟或与设计没有联系的时钟。例如,如果一个时钟激励外部器件的时钟端口,而设计中没有时钟端口,这样就可以虚拟一个时钟激励外部器件。使用create_clock创建虚拟时钟,只要不指定<targets>参数就可以。

命令格式:

create_generated_clock
[-name <clock name>]
-source <master pin>
[-edges <edge list>]
[-edge_shift <shift list>]
[-divide_by <factor>]
[-multiply_by <factor>]
[-duty_cycle <percent>]
[-add]
[-invert]
[-master_clock <clock>]
[-phase <phase>]
[-offset <offset>]

例子:create_clock -period 10 -name virt_clk -waveform { 0 5 }

注意:可以对虚拟时钟使用set_input_delayset_output_delay命令.

  • Multi-Frequency Clocks: 特定的设计,一个端口对应不止一个时钟,这时可以使用create_clock命令的-add参数添加额外的时钟.

例子:

create_clock –period 10 –name clock_primary –waveform { 0 5 } [get_ports clk]
create_clock –period 15 –name clock_secondary –waveform { 0 7.5 } [get_ports clk] -add

  • derive_clocks: 使用此命令自动地为设计中的每个时钟节点创建一个时钟.

命令格式:

derive_clocks
[-period <period value>]
[-waveform <edge list>]

注意:此命令不为PLLs的输出创建时钟;最终的时序分析不推荐使用此命令.

  • derive_pll_clocks: 因为所有的时钟节点都需要创建一个时钟,故PLL的输出也需要一个时钟。可以通过create_generated_clock命令手动为每个PLL输出创建一个时钟,也可以使用derive_pll_clocks命令自动地搜索timing netlist,为每个PLL的输出创建时钟约束。

命令格式:

derive_pll_clocks
[-use_tan_name]

注意:derive_pll_clocks是调用create_generated_clock命令为PLL创建时钟的,发布这个命令之前或之后必须为PLL输入创建一个基础时钟,如果没有这个时钟,会有如下警报。

Warning: The master clock for this clock assignment could not be derived.
Clock: <name of PLL output clock pin name> was not created.

  • Default Clock Constraints:为了完成时序分析,如果设计中没有基础时钟约束,TimeQuest自动地为每个检测到的时钟节点创建一个时钟。Analyzer creates a base clock with a 1 GHz requirement to unconstrained clock nodes, using the following command(不是太理解这段,到底是约束还是未约束啊?看下面的命令是约束):

derive_clocks -period 1

只有当所有的同步单元都没有时钟约束是,这个默认的命令才会起作用。

  • set_clock_groups:这个命令以后再研究。
  • set_clock_latencycreate_clock and create_generated_clock命令创建的是理想的时钟,没有考虑到实际情况的影响。时钟延时包含两个方面的延迟:从源时钟到器件时钟输入端的源延迟,和从时钟输入端到寄存器时钟端的网络延迟。set_clock_latency命令只是支持前者,使用此命令时,-source必须被指定。

命令格式:

set_clock_latency
-source
[-clock <clock_list>]
[-rise | -fall]
[-late | -early]
<delay>
<targets>

  • set_clock_uncertainty:此命令指定时钟的不确定性或时钟之间的摇摆,可以单独制定setup或hold的不确定。

命令格式:

set_clock_uncertainty
[-rise_from <rise from clock> | -fall_from <fall from clock> |
-from <from clock>]
[-rise_to <rise to clock> | -fall_to <fall to clock> | -to <to clock>]
[-setup | -hold]
<value>

  • derive_clock_uncertainty:这个命令以后再研究。
评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章