普莱斯队长

04 IO约束

0
阅读(2359)

         时序约束的目的在于满足setup/hold timeSetup的效果是数据不能太慢,hold是不能太快。dc中的路经以及start point end point。 所谓start point 就是: 1. input port(顶层设计的输入端口) 2.clock pin of sequential cell(触发器的clock pin) 所谓的end point 就是: 1 output port(顶层设计的输出端口) 2.data pin of sequential cell(触发器的data pin)。因此一般时序约束的四个路径为从输入到寄存器,从寄存器到寄存器,从寄存器到输出,从输入到输出。

 

 

端口延时:

定义了时钟也就定义了两个触发器之间的时间约束,因为在DC中默认两个触发器之间的时间路径是一个周期,通过设置时钟周期可以约束设计内部触发器之间的路径X,但是还有路径NS没有约束。


输入延时:

set_input_delay用来对寄存器路径的输入进行约束,该命令设置了信号到达当前设计输入端口所用的时间,也就是信号从由DFF0触发到输入端口所用的时间,

set_input_delay 10 -clock Clk_fc4 [get_ports A]

那么,从输入端口经过路径N到触发器DFF1的输入端所用的时间=时钟周期-输入延时

输出延时:

set_output_delay用来设置信号到达外部寄存器所用的时间。该命令设置了信号从输出端口到达外部寄存器DFF3所用的时间

set_output_delay 10 –clock Clk_fc4 [get_ports B]

那么,数据从触发器DFF2D端到输出端口所用的时间=时钟周期-输出延时

这样,整个设计的路径就全部被约束了。

 

report_port –verbose 这条命令将返回所有加在输入和输出端口的约束。

report_clock 返回当前设计中所有时钟对象的周期、时钟源和占空比。

reset_design 从当前设计中删除所加的属性和约束。

list_libs 返回内存中可获得的库。