synopsys-SDC第六章——生成时钟


之前准备了一段时间的秋招,好久没有学SDC,现在准备SDC和秋招同时准备,更新。

  • 一个复杂的设计都需要多个时钟信号来共同完成功能,设计中异步时钟不能共享确定相位关系的时钟信号,也不必过于关心其时钟源,但是同步信号往往产生于同一个时钟源(如时钟分频器、时钟乘法器、时钟门控)
  • 不同模块运行在不同时钟下,如果不考虑各自关系,将会带来异步性的设计问题。

时钟派生方式

  • 时钟分频器就不过多说了,无非是用DFF做counter完成N分频。
  • 时钟乘法器在此介绍一下,我们在设计中常用PLL完成倍频的需求,但是同样可以通过缓冲器和反相器引入delay,再结合XOR完成倍频。
    在这里插入图片描述

如上图所示,通过buffer和inv完成对源时钟的延时,再将延时后的时钟和源时钟一同输入XOR,便可以完成倍频的功能,但是buffer和inv需要仔细计算过delay time。

  • 时钟门控,这种方式主要通过使能信号来控制时钟是否对后级起作用,虽然时钟信号一样,但是对电路来说时钟源并不一样。(时钟门控常用于低功耗设计中)

create_generated_clock

在SDC中,用于设定生成时钟的命令是create_generated_clock,而它的设计对象可能是pin、port或net.

  • 设定生成时钟的源引脚可用 -source选项。(此处需要注意源对象和生成时钟源之间的区别,源对象是指生成时钟设定在哪个位置,而生成时钟源指哪个是参考信号
  • 只要定义了generate clock,则开发工具将基于source clock派生时钟特性(周期、波形等)
  • 和create_clock一样,用-name表征每个clock的名字,每个generate clock同样要有唯一的name
  • 设定生成时钟的特性如:-edges、-divide_by、-multiply_by

edge divide multiply

edge通过指定波形边沿的变化来描述generate clock。
divide_bymultiply_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]

不同的分频时钟约束与上述约束类似。

edge_shift

  • 除此之外,还可以用**-edge_shift**描述每个边沿的相位偏移,例如
create_generated_clock -name CLKOUT -source [get_ports CLK]
-edges[1 1 3] -edge_shift[0 2 0][get_pins X]

上面的指令表示:

  • 在source clock的第一个边沿产生上升沿
  • 在source clock的第一个边沿后2ns产生下降沿
  • 在source clock的第三个边沿产生上升沿

多同源时钟

下图是一个基于三分频电路的时钟切换电路。
在这里插入图片描述
电路输入的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的特定源对象关联。

使能组合路径

  • 在设计中会出现时钟随着数据作为输出,这种结构的优点时时钟和数据按同样的路径来传送,如下图:
    在这里插入图片描述
  • 如果有些路径在本质上时时序电路,即他们通过时序电路单元,则generate clock通常无损,但是如果时组合逻辑和时序逻辑的混合,那么会出现时钟失效的情况,这时候需要**-combinational**约束来阻隔时序电路。
create_generated_clock -name CLKOUT -combinational
-source [get_pins FF1/Q] [get_ports CLKOUT] 

其他注意事项

  • 一个遗漏的generate clock将会产生无约束寄存器
  • 需要保证generate clock 设置了source clock
  • 如果时钟收敛于多种路径,则特别注意禁用时序电路路径



搜索关注我的微信公众号【IC墨鱼仔】,获取我的更多IC干货分享!
在这里插入图片描述

  • 5
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
synopsys-实验系列是一款非常受欢迎的豆丁制作工具。它是一个综合性的实验平台,允许用户通过模拟和试验来探索豆丁的成长和变化。 synopsys-实验系列提供了多种实验模块,包括种子发芽、植物生长、环境变化、光照和水分等因素对豆丁的影响等。用户可以根据自己的需求设定实验条件,并通过不同的控制参数对豆丁进行观察和记录。 synopsys-实验系列的操作界面简洁直观,用户只需通过点击和拖拽等简单操作即可完成实验设置。同时,该软件还提供了详细的实验指导和说明,帮助用户理解实验原理和思路。 通过使用synopsys-实验系列,用户可以轻松进行豆丁实验,并深入了解豆丁的生长过程和环境适应性。用户可以通过观察和记录豆丁的生长状态,了解光照、水分以及其他环境因素对豆丁的影响,并通过多次实验和对比分析,得出结论和实验结果。 这款实验系列在教育领域有着广泛的应用。它提供了一个互动的实验平台,可以帮助学生更好地理解生物学和植物科学的知识。同时,它也为教师提供了一种创新的教学方法和资源,帮助他们更好地组织和展示实验内容。 总的来说,synopsys-实验系列是一款优秀的豆丁制作工具,它不仅能够满足用户的实验需求,还能提供丰富的实验模块和教育资源。无论是学生还是教师,都可以通过它来展开有趣而深入的豆丁实验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值