我是靠谱客的博主 诚心墨镜,最近开发中收集的这篇文章主要介绍SDC设计约束(1)——时钟相关约束SDC设计约束(1)——时钟相关约束,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

SDC设计约束(1)——时钟相关约束

作者:夏风喃喃
参考:综合与时序分析的设计约束 —— Synopsys设计约束(SDC)实用指南

文章目录

  • SDC设计约束(1)——时钟相关约束
    • 一. 时钟
      • 1.1 creat_clock(创建时钟)
      • 1.2 虚拟时钟
    • 二. 生成时钟
      • 2.1 creat_generated_clock(时钟分频或倍频)
    • 三. 时钟组
      • 3.1 set_clock_group(异步时钟域)
    • 四. 其他时钟特性
      • 4.1 set_clock_transition(时钟过渡:transition)
      • 4.2 set_clock_uncertainty(时钟不确定性:skew+jitter)
      • 4.3 set_clock_latency(时钟延迟:source latency+network latency)
      • 4.4 set_clock_sense(时钟敏感性:非单边)

一. 时钟

1.1 creat_clock(创建时钟)

creat_clock	-period	period_value		#定义时钟周期,如-period 10
			[source_objects]			#标识时钟源,如[get_ports A]
			[-name clock_name]			#命名时钟,如-name CLK
			[-waveform edge_list]		#指定占空比,如-waveform {0 5}
			[-add]						#多源时钟,加此开关且各源时钟不同名
			[-comment comment_string]	#注释时钟,字符串纪录时钟信号文档信息

1.2 虚拟时钟

虚拟时钟是指物理上在特定电路单元中不存在的时钟,但它表示影响该电路单元时序的外部触发器。虚拟时钟没有指定的时钟源,用creat_clock模拟虚拟时钟时,只有periodwaveformname选项,没有源对象。如

creat_clock -period 10 -name v_clk -waveform {0 5}

二. 生成时钟

2.1 creat_generated_clock(时钟分频或倍频)

creat_generated_clock	
		
	#定义生成时钟的源对象,即生成时钟的引脚,如[get_pins FF1/Q]
	[source_objects]		
	
	#定义生成时钟的源时钟的引脚,如-source [get_ports CLK]
	-source clock_source_pin		
	
	#多源时钟复用于一个源时钟的引脚CLK,需指明当前源时钟	
	#如源时钟C1与C2复用得到生成时钟GC1与GC2,需分别定义GC1与GC2
	#其中定义GC1加入开关-master_clock C1,定义GC2加入开关-master_clock C2
	[-master_clock master_clock_name]	
	
	#生成时钟命名,如-name GCLK1
	[-name generated_clock_name]		
	
	#生成时钟特性,生成时钟的上升-下降-上升沿对应的源时钟边沿序号,为奇数个整数
	#如-edges {1 3 5},表示二分频的时钟特性
	#即生成时钟在源时钟第1个边沿处上升,第3个边沿处下降,第5个边沿处上升
	[-edges edge_list]			
	
	#生成时钟特性,时钟分频因子,如二分频-divide_by 2	
	[-divide_by factor]				
	
	#生成时钟特性,时钟倍频因子,如二倍频-multiply_by 2	
	[-multiply_by factor]			
	
	#使用分频或倍频时,生成时钟相位取反,用于定义D触发器的反向输出端时钟
	[-invert]	
	
	#时钟沿位移,与-edges有相同数量的浮点数
	#表明-edges中每个边沿的超前或滞后情况
	#如-edge_shift {0 2 0},其中的单位为ns
	#表示生成时钟的第1个与第2个上升沿无位移,第1个下降沿滞后2ns				
	[-edge_shift shift_list]
	
	#配合倍频使用,确定占空比,50表示占空比50%,如-duty_cycle 50
	[duty_cycle percent]		
			
	#使能组合电路路径,源时钟引脚到生成时钟引脚的路径是纯组合电路时使用
	#可以阻隔路径中的时序电路,组合电路始终有效
	[-combinational]
	
	#多源时钟,除第一个源时钟外,其他源时钟需加此开关,否则会被最后一个源时钟覆盖
	#各源时钟-name不同名
	[-add]

	#注释时钟,字符串纪录时钟信号文档信息
	[-comment comment_string]

三. 时钟组

3.1 set_clock_group(异步时钟域)

creat_clock_groups	

	#定义时钟组的名称
	[-name group_name]

	#将不同的时钟分组,如将异步时钟C1与C2分入不同组为-group C1 -group C2
	[-group clock_list]

	#各组之间的关系有以下三种:
	#(1)逻辑独立,时钟组中各组互斥但具有耦合关系时,即各组时钟同时存在时使用
	#与物理独立,异步互斥
	[-logically_exclusive]

	#(2)物理独立,时钟组中各组时钟以多路复用实现,并不同时共存于电路网络中时使用
	#与逻辑独立,异步互斥
	[-physically_exclusive]

	#(3)异步,时钟不共享相位关系时使用
	#与逻辑独立,物理独立互斥
	[-asynchronous]

	#异步且希望执行串扰分析而不禁用时钟之间的时序电路路径时使用
	#仅可与-asynchronous一起使用,用于信号完整性检查
	[-allow_paths]

	#注释时钟组,字符串纪录时钟组信号文档信息
	[-comments comment_string]

时钟分组建议:

  1. 如果设计中共存多个时钟,却没有相位关系,则应在set_clock_group中设定-asynchronous
  2. 如果设计中共存多个时钟,并且电路仅选择其中一个,则应在set_clock_group中设定-logically_exclusive
  3. 如果设计中不能共存多个时钟,则应在set_clock_group中设定-physically_exclusive

四. 其他时钟特性

4.1 set_clock_transition(时钟过渡:transition)

set_clock_transition
	[-rise]				#上升沿过渡时间
	[-fall]				#下降沿过渡时间
	[-max]				#最大过渡时间
	[-min]				#最小过渡时间
	clock_list			#应用的时钟,如[get_clocks CLK]
	transition_time		#过渡时间的数值,单位为ns

4.2 set_clock_uncertainty(时钟不确定性:skew+jitter)

set_clock_uncertainty

	#两个异步时钟之间的不确定度
	[-from|-rise_from|-fall_from from_clock]#交互时钟的起始边沿,如-from C1
	[-to|-rise_to|-fall_to to_clock]		#交互时钟的结束边沿,如-to C2

	#单个时钟内部时钟的不确定度
	[-setup]	#建立时间不确定度
	[-hold]		#保持时间不确定度
	[-rise]		#上升沿时间不确定度
	[-fall]		#下降沿时间不确定度

	[object_list]		#时钟的源对象,如[get_clocks CLK]
	Uncertainty_value	#不确定度的数值,单位ns

4.3 set_clock_latency(时钟延迟:source latency+network latency)

set_clock_latency
	[-rise]		#上升沿的延迟
	[-fall]		#下降沿的延迟
	[-min]		#最小延迟
	[-max]		#最大延迟
	[-source]	#片外时钟源至模块时钟端口间的延迟,如-source 0.5
				#若关闭此开关,则表示模块时钟端口至触发器件之间的延时
	[-late]		#片内时钟源至模块时钟端口的最长路径延迟,如-source -late 1.0
	[-early]	#片内时钟源至模块时钟端口的最短路径延迟,如-source -early 0.5
	[-clock clock_list]	#多个时钟通过一个模块端口的延迟,如-clock {C1 C2}
	delay		#延迟的数值,单位为ns
	object_list	#对引脚设定延迟,如[get_ports A]

4.4 set_clock_sense(时钟敏感性:非单边)

set_clock_sense

	#三个开关互斥
	#-positive指示正单边
	#-negative指示负单边
	#-stop_propagation指示禁用部分时钟的传递
	[-positive|-negative|-stop_propagation]
	
	#创建时钟脉冲,可选项为
	#rise_triggered_high_pulse
	#rise_triggered_low_pulse
	#fall_triggered_high_pulse
	#high_triggered_low_pulse
	#如-pulse rise_triggered_high_pulse,表示时钟上升沿产生一个高电平的脉冲
	#脉冲的宽度为|rise_latency - fall_latency|
	[-pulse pulse]		
	
	[-clock clock_list]	#定义影响指定敏感性引脚的时钟源
	pin_list			#需要指定敏感性的引脚,如[get_pins XOR/Z]

最后

以上就是诚心墨镜为你收集整理的SDC设计约束(1)——时钟相关约束SDC设计约束(1)——时钟相关约束的全部内容,希望文章能够帮你解决SDC设计约束(1)——时钟相关约束SDC设计约束(1)——时钟相关约束所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部