天天看點

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

是根據标準負載指定負載值。電容負載=标準負載×單個标準負載的電容負載。

繼續閱讀