2008年12月22日星期一

复杂clock的综合约束总结

1.多clock的关系有三种,同步关系,异步关系和逻辑互斥关系。前两种很容易理解,关键是逻辑互斥关系(logic-exclusive)。这种时钟关系表示时钟之间没有逻辑上的timing path,最常见的例子就是mux结构的时钟。如下图:


对这种结构进行逻辑综合的时候,如何进行设置时钟?method :首先创建四个时钟,分别是ck1,ck2,ck3,ck4,由于时钟会穿过逻辑门进行分析,因此mux结构的输出并不需要定义时钟,老版本DC可能只会分析最近定义的一个时钟,DC2007则没有这个问题。如果想查看一下mux的输出管脚的时钟,可以用get_attribute [get_pins mux/Y] clocks来查看。然后就是设置false path的问题,除了ck1和ck3,ck2和ck4有逻辑上时钟路径需要分析外,其余均为逻辑互斥时钟,因此可以定义
set_clock_groups -logically_exclusive -group [get_clocks "clk1 clk3"] -group [get_clocks "clk2 clk4"]
来代替众多的set_false_path。

2.create_generated_clock中combinational选项的使用

该选项的意义有两个,一个是告诉DC,分频比为1,一个是告诉DC,在分析network latency的时候,只追溯组合逻辑。

3.时钟截断命令。

对于下面的电路:

clkin要求考虑到两个时钟,一个慢时钟,一个快时钟,在输入快时钟时,上半部分有效,在输入为慢时钟时,下半部分有效工作,对于这种电路,如何约束呢?(method:首先在clkin这个port上定义两个时钟,注意使用create_clock的add选项,然后针对每一个时钟设置input_delay。然后最重要的就是将某些时钟剔除,比如lsdin_reg只有在慢时钟才有效工作。那么就在在该寄存器的时钟输入端剔除快时钟,剔除的命令就是

set_clock_sense -stop_propagation -clock hclk [get_pins lsd*_reg/CP]set_clock_sense -stop_propagation -clock lclk [get_pins hsd*_reg/CP]

1 条评论:

sea_otter 说...

你写的帖子真不错,赞一个。 咱们同行, 以后多交流交流。