赞
踩
之前准备了一段时间的秋招,好久没有学SDC,现在准备SDC和秋招同时准备,更新。
如上图所示,通过buffer和inv完成对源时钟的延时,再将延时后的时钟和源时钟一同输入XOR,便可以完成倍频的功能,但是buffer和inv需要仔细计算过delay time。
在SDC中,用于设定生成时钟的命令是create_generated_clock,而它的设计对象可能是pin、port或net.
edge通过指定波形边沿的变化来描述generate clock。
divide_by和multiply_by通过直接对源时钟的分频,倍频来描述generate clock
对上述电路,分别用edge、divide_by、multiply_by对其约束
create_clock -period 10 -name CLK [get_ports CLK]
create_generate_clock -name LSB -source [get_port CLK]
-divide_by 2 [get_pins FF1/Q]
create_generate_clock -name MSB -source [get_pins FF1/Q]
-divide_by 2 [get+pins FF2/Q]
create_generated_clock -name LSB -source [get_ports CLK]
-edges [1 3 5][get_pins FF1/Q]
create_generated_clock -name MSB -source [get_pins FF1/Q]
-edges [1 3 5][get_pins FF2/Q]
不同的分频时钟约束与上述约束类似。
create_generated_clock -name CLKOUT -source [get_ports CLK]
-edges[1 1 3] -edge_shift[0 2 0][get_pins X]
上面的指令表示:
下图是一个基于三分频电路的时钟切换电路。
电路输入的mux会决定最后分频的divide clk对应的是clk1还是clk2,这就导致generate clock的source clock不同,所以写约束时要注意一些。
create_clock -name C1 -period 10 [get_ports CLK]
create_clock -name C2 -period 15 [get_ports CLK] -add
#C1
create_generated_clock -name GC1 -divide_by 3 -source [get_port CLK]
-master_clock C1 [get_pins FF2/Q]
#C2
create_generated_clock -name GC2 -divide_by 3 -source [get_port CLK]
-master_clock C2 [get_pins FF2/Q] -add
如果用户要得到两个生成时钟的STA,需要添加-add,否则后一个会覆盖前一个。
而master_clock用于定义哪些时钟与用于派生generate clock的特定源对象关联。
create_generated_clock -name CLKOUT -combinational
-source [get_pins FF1/Q] [get_ports CLKOUT]
搜索关注我的微信公众号【IC墨鱼仔】,获取我的更多IC干货分享!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。