Design Compiler多时钟约束
这里的资料来源于《Synopsys® Timing Constraints and Optimization User Guide, Version P-2019.03-SP4, September 2019》
下面图中这几种情况都是我在实际项目中碰到过的,因此有必要单独做个说明。
第一个是同步派生时钟,即CK2是通过CK1的分频来产生的,我们之前的一个实际项目里的情况是射频接口给进来一个高速时钟,需要分频之后再给内部的数字模块使用,就碰到了这个约束场景,这里可以看到例子是CK1通过一个D触发器做二分频。一般来说我们会通过counter或者触发器链来进行分频操作,这里的关键命令是create_generated_clock
,并且要把CK2通过get_pins
约束到D触发器的Q端输出上。实际操作中,由于我们在RTL级写得代码可能并不知道具体的要约束的触发器是哪个,可以在不加CK2约束的情况下先对设计进行一次综合,看网表中连接到CK2上的触发器是哪个,然后再去重写约束。
第二个是异步时钟,这种情况是既有外部时钟,又有片上PLL给的时钟,并且两个输入都要作用到设计上,我们在项目里的实际情况是SoC的CPU部分使用内部PLL的时钟,同时还有外部的JTAG调试逻辑单独使用一个时钟,两个时钟异步,这种情况下直接单独创建两个时钟即可,另外注意时钟相互之间要set_false_path
,或者使用这里的set_clock_groups -asynchronous
。
最后一种是互斥时钟,这种情况下有两个不同的时钟经过一个MUX选通到片内去。我们在项目里碰到的实际情况是除了射频接口提供的时钟外,我们希望能够再加入一个测试时钟,这样可以在不需要射频接口工作的情况下仍然可以提供时钟从而测试内部逻辑,那么这里提供的set_clock_groups -logically_exclusive
是一个比较好的方案(我们当时的简单粗暴做法是只约束了一路时钟,因为两路时钟我们认为会是同频的)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2019-10-12 RoboMaster电控入门(3)RM系列电机控制