做cts时,对generated clock的处理方法?
比如,master clock 是clk1,在寄存器ff1/Q处创建了分频时钟div_clk1,在做tree的时候工具(icc)会自动把这个ff1看成non_stop吗?感觉工具会把ff1作为sink pin来做tree,所以是应该单独做generated clock,再做master clock吗?还是用别的方法做clock tree?请大家说说你们方法,谢谢啦。
"比如,master clock 是clk1,在寄存器ff1/Q处创建了分频时钟div_clk1,在做tree的时候工具(icc)会自动把这个ff1看成non_stop吗?感觉工具会把ff1作为sink pin来做tree,所以是应该单独做generated clock,再做master clock吗?还是用别的方法做clock tree?请大家说说你们方法,谢谢啦。"
==>master clock 是clk1,在寄存器ff1/Q处创建了分频时钟div_clk1,在做tree的时候工具(icc)会自动把这个ff1看成non_stop.
不会作为sink pin。
如果clock root 还有另外的分支且和分频后的ff有timing关系,则不能分开做cts,交给工具自己blance。
如果clock root 还有另外的分支且和分频后的ff有timing没有关系,需要分开做cts,在ff1/Q设另外一个create clock。不要generate。
如果分频前面没有分支,直接在分频ff1/Q端create clock。
你好,如你所说的,分开做clock时,在ff1/Q用create_clock,那ff1会自动设置为clock root的SINK还是要手动设置stop或者float?谢谢。
你好,当分支与分频的generate clock有timing关系时,不分开做,你的意思是要删除ff1/Q处的generated clock。只做master clock吗?
"你好,如你所说的,分开做clock时,在ff1/Q用create_clock,那ff1会自动设置为clock root的SINK还是要手动设置stop或者float?谢谢。"
==>当然会自动认为sink,FF的CK只有在其后又generate clock分频时ICC才会自动认为non stop pin,否则都为sink。
“你好,当分支与分频的generate clock有timing关系时,不分开做,你的意思是要删除ff1/Q处的generated clock。只做master clock吗?”
==〉不是,root设create clock,ff1/Q设generate clock即可
哦。我明白了,谢谢,我现在做的tree,碰到个icc bug感觉,他不认上面所说的ff1为non stop (ff1后有generated clock),看来我只能手动设置了。还有,我现在gen_clk 和 master clock有timing 关系,但是master clock后只有gen_clk,没有别的分支,是不是应该不分开做tree,让工具自己balance?
我上述说的也是同常情况下是那样的。根据不同dessign,可能会存在bug。
之前我遇到过:
在做CTS时,发现有一个register的clock pin既是ignore pin又是non-stop pin
其中的register被用做二分频,输出端Q通过一个inverter连接到了自己的输入端上;Q端上定义了一个Generated Clock(GCLK)。
因此工具推导出这个register的CLK pin是一个non-stop pin。
同时,这个GCLK通过一个PAD输出到芯片外部,没有再与其他register相连。因些,工具推导出这是一个implicit ignore pin。
你现在这种情况
你在master设create clock ,ff1/Q设generate clock即可。