天天看点

SDC设计约束(2)——信号相关约束SDC设计约束(2)——信号相关约束

SDC设计约束(2)——信号相关约束

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

文章目录

  • SDC设计约束(2)——信号相关约束
    • 一. 端口延迟(外部延迟)
      • 1.1 set_input_delay
      • 1.2 set_output_delay
    • 二. 完整的端口约束
      • 2.1 set_drive(驱动电阻)
      • 2.2 set_driving_cell(驱动单元)
      • 2.3 set_input_transition(输入过渡)
      • 2.4 set_port_fanout_number(扇出数)
      • 2.5 set_fanout_load(扇出负载)
      • 2.6 set_load(负载)

一. 端口延迟(外部延迟)

1.1 set_input_delay

set_input_delay

	[-clock clock_name]	#指定参考时钟,如-clock CLK
	[-clock_fall]		#参考时钟是下降沿触发时打开
	[-level_sensitive]	#启动元器件为锁存器时使用,一般不用
	
	#当模块输入端口信号上升沿和下降沿的输入到达时间不同
	#使用-rise与-fall分别限定,但一般路径延迟相似,不会经常使用
	[-rise]				
	[-fall]

	[-max]			#限定延迟值最大值,实现建立检查
	[-min]			#限定延迟值最小值,实现保持检查
	[-add_delay]	#同一个端口额外的延迟约束,则需使用,否则会被覆盖
	[-network_latency_included]	#额外指定时钟network延迟,不常使用
	[-source_latency_included]	#额外指定时钟source延迟,不常使用
	delay_value port_pin_list	#延迟的数值,单位ns;定义输入的端口
           

1.2 set_output_delay

set_output_delay

	[-clock clock_name]	#指定参考时钟,如-clock CLK
	[-clock_fall]		#参考时钟是下降沿触发时打开
	[-level_sensitive]	#启动元器件为锁存器时使用,一般不用

	#当模块输入端口信号上升沿和下降沿的输入到达时间不同
	#使用-rise与-fall分别限定,但一般路径延迟相似,不会经常使用
	[-rise]
	[-fall]
	
	[-max]			#限定延迟值最大值,实现建立检查		
	[-min]			#限定延迟值最小值,实现保持检查
	[-add_delay]	#同一个端口额外的延迟约束,则需使用,否则会被覆盖
	[-network_latency_included]	#额外指定时钟network延迟,不常使用
	[-source_latency_included]	#额外指定时钟source延迟,不常使用
	delay_value port_pin_list	#延迟的数值,单位ns;定义输出的端口
           

二. 完整的端口约束

2.1 set_drive(驱动电阻)

set_drive	
	[-rise][-fall]		#指定驱动信号的上升或下降沿
	[-min][-max]		#指定驱动电阻的最小或最大值,小电阻驱动能力大,过渡快
	resistance_value	#指定驱动电阻的数值
	port_list			#指定驱动目标的输入端口
           

2.2 set_driving_cell(驱动单元)

set_driving_cell	
	[-lib_cell lib_cell_name]		#指定模块的驱动单元,如-lib_cell FA
	[-rise][-fall]		#指定驱动信号的上升或下降沿
	[-min][-max]		#指定最强或最弱驱动单元合集
	[-library lib_name]		 #指定驱动单元所在的库
	[-pin pin_name]			 #指定驱动单元用于驱动的输出引脚
	[-from_pin from_pin_name]#指定驱动单元输入引脚,不同输入,输出过渡时间不同
	[-multiply_by factor]			#过渡时间的倍乘因子,多驱动目标时驱动下降
	[-dout_scale]					#电气特性扩展与降额,不使用时需使能此开关
	[-no_design_rule]				#防止驱动引脚设计规则转移到目标输入端口
	[-clock clock_name]				#指定驱动单元目标端口的时钟
	[-clock_fall]					#表示时钟下降沿驱动
	[-input_transition_rise rise_time]	#输入上升过渡时间
	[-input_transition_fall fall_time]	#输入下降过渡时间
	port_list						#被驱动的输入端口
           

常用选项是指定驱动单元的名称和驱动单元的端口,其他不常用。通过

set_drive

set_driving_cell

可以计算出过渡时间,但也可以通过下面

set_input_transition

指定过渡时间。

2.3 set_input_transition(输入过渡)

set_input_transition
	[-rise][-fall]			#指定驱动信号的上升或下降沿
	[-min][-max]			#指定最小或最大过渡时间
	[-clock clock_name]		#指定时钟
	[-clock_fall]			#表示时钟下降沿驱动
	transition port_list	#指定约束的端口
           

2.4 set_port_fanout_number(扇出数)

set_port_fanout_number
	value 			#指定扇出数
	port_list		#指定约束的端口
           

2.5 set_fanout_load(扇出负载)

set_fanout_load
	value 			#指定扇出负载值
	port_list		#指定约束的端口
           

2.6 set_load(负载)

set_load
	[-min][-max]			#指定最小或最大负载
	[-subtract_pin_load]	#标注净电容负载时,需要打开避免与后端输入负载重复
	[-pin_load]				#指定引脚负载
	[-wire_load]			#指定线路负载
	value 					#指定负载值
	objects					#指定约束的端口
           

set_load

set_fanout_load

不同,

set_load

指定负载的实际电容负载,而

set_fanout_load

是根据标准负载指定负载值。电容负载=标准负载×单个标准负载的电容负载。

继续阅读