04 IO约束
0赞时序约束的目的在于满足setup/hold time。Setup的效果是数据不能太慢,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,但是还有路径N和S没有约束。
输入延时:
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]
那么,数据从触发器DFF2的D端到输出端口所用的时间=时钟周期-输出延时
这样,整个设计的路径就全部被约束了。
report_port –verbose 这条命令将返回所有加在输入和输出端口的约束。
report_clock 返回当前设计中所有时钟对象的周期、时钟源和占空比。
reset_design 从当前设计中删除所加的属性和约束。
list_libs 返回内存中可获得的库。