数字逻辑综合工具实践-DC-10——CDC约束
【分频时钟input delay】
(找短的间隔)
【多时钟output delay】
记得要用add_delay
也是找短的
【时钟之间的uncertainty】
模仿两个时钟之间的偏移量
要用-from -to指定两个clock(注意是get_clocks而不是ports)
(千万不要在模块内部写分频时钟!
在SOC系统里面,会有一个模块叫CRM(clock reset manager)(或者CRC clock reset controller)时钟复位管理电路,所有的时钟、复位都由它产生。PLL经过分频之后给这个模块,外部复位电路接进来给这个模块之后,由它统一产生时钟和复位。)
指定创建一个分频时钟:create_generated_clock
-source:分频时钟的源是什么
注意这里要用到get_pins。问题:
这里的get_pins是如何知道名字的?
在我们的unmapped目录下保存的.ddc文件里面有!
对于Designware网表格式里面器件的命名方式是有一些规则的。
生成的寄存器往往是RTL代码里写的加上后缀”_reg”,寄存器的输出为Q
【逻辑互斥时钟】
DC不知道这两条交叉的路径从逻辑上是不存在的,这时候就要人为地设置伪路径:
set_false_path -from [get_clocks ####] -to [get_clocks ####]
或者使用逻辑互斥时钟命令:
set_clock_groups -logically_exclusive -group #### -grpi[ ####
如果不同时钟的信号在design内部有交互,就不能再用set_false_path命令了
希望DC:前面的优化还是要做的,后面的优化不必要做。
——约束得更紧一些,限定一个范围,-though。
【多时钟可选的寄存器】
对DC来说,有两个clock,默认情况下,DC会假设几种情况:
1、 CLK1发,CLK1采
2、 CLK1发,CLK2采
3、 CLK2发,CLK1采
4、 CLK2发,CLK2采
但实际只有1、4两种情况
还是通过上面那条命令:set_clock_groups -logically_exclusive -group #### -group ####
这里有个细节:set_app_var timing_enable_multiple_clocks_per_reg true——允许多个时钟。
DC默认寄存器只有是一个时钟。
【异步时钟】
两个时钟没有什么相位关系。
异步时钟如何去约束?
如果不做任何约束,DC会对跨时钟域的组合逻辑做优化(DC会做最悲观的预计),但是这样的优化是没有什么意义的。
通过异步设置:set_clock_groups -asynchronous -group #### -group ####(DC你别做,我自己来搞)
set_false_path 也可以
在设置-from -to的时候,如果异步时钟比较多,就不要去一个个地敲了,用foreach_in_collection函数。
【多周期路径】
通过设置一个多周期路径set_multicycle_path -setup 6 -from … -to …
(过六个周期再做setup time的检查)
一条语句是不够的,默认会在50的时候做hold time violation的检查,也就是说,组合逻辑的延迟必须在50到60之间,如果不够的话,会插入很多的Buffer(有可能是一个很复杂的逻辑),这其实是不必要的。
-hold 5表示从后往前数5个
仅仅通过约束来做holdtime violation是不够的。原因:
一定要在代码中用相应的控制信号。不然Y会采到很多的没用的信号。
需要一个使能信号,经过一个移位寄存器。
下面的移位寄存器的作用是产生这个使能信号。
另一个例子:
【一个很重要的命令:report_timing_requirements -ignored】
设置了逻辑伪路径、multicycle_path等等,都属于异常路径,要通过这个命令查看异常的路径(timing exception)是不是你想要的,否则的话有可能约束会加错。
【【实践演示】】
false path
multicyclepath
report_timing_requirements
数字逻辑综合工具实践-DC-10——CDC约束相关推荐
- 数字逻辑综合工具-DC-04 ——怎样增加时序约束(Timing Constraints)
数字逻辑综合工具-DC-04 --怎样增加时序约束(Timing Constraints) 逻辑综合的过程为:转化 优化 映射 另外还有环境约束和面积约束 时序有三个大的方面 input logic ...
- 数字逻辑综合工具实践-DC-07 ——综合优化(二)和RTL coding 和DFT
数字逻辑综合工具实践-DC-07 --综合优化(二)和RTL coding 和DFT 主要内容: 1. Pipeline优化 2. RTL设计时的一些注意事项 3. DFT简介 (DFT是后端里很重要 ...
- 数字逻辑综合工具实践-DC-08——静态时序分析(STA)
数字逻辑综合工具-DC-08 时序分析 综合结束之后,如何确定这个网表能不能用. [Timing Reports] report_timing Incremental 信息包含了Net 和 Cell一 ...
- 数字逻辑综合工具-DC-06——综合优化过程
数字逻辑综合工具-DC-06 --综合优化过程 编译的策略:Top-down (做设计有两种策略:top-down 和 bottom-up) 设计一定是一种层次化的结构,一层一层地去例化 Top-do ...
- DC课程笔记-数字逻辑综合工具-DC Synthesis Optimization Techniques
文章目录 课程内容笔记00:00开始至 本节视频来源于DC视频教程,本节主要约束环境 课程内容笔记00:00开始至 芯片的输出端口要驱动一个负载,如何在DC综合时候就模仿在流片回来后的输出管脚的负载, ...
- DC课程笔记-数字逻辑综合工具-DC Environment Attributes
文章目录 课程内容笔记46:57开始至末尾 本节来源网络视频笔记 主要介绍DC的时序timing约束 课程内容笔记46:57开始至末尾 移除设计 remove_design -hierarchy 查看 ...
- 数字逻辑综合工具-DC-11——一些其它命令和综合之后的文件
对于reset 和clock这种大扇出的信号来说,必须要人为设置为ideal network,不要让DC动它,因为线负载模型对于这些大扇出的情况估算不准. 如果不添加don't touch属性的话,D ...
- 逻辑综合工具DesignCompiler使用教程
逻辑综合工具Design Compiler使用教程 图形界面design vision操作示例 逻辑综合主要是将HDL语言描述的电路转换为工艺库器件构成的网表的过程.综合工具目前比较主流的是synop ...
- 数字IC设计入门(10)初识数字芯片设计后端
什么是数字IC后端设计? 完整的后端设计由后端半定制和后端全定制两个设计部分组成: 后端全定制设计是指在设计初期最先按照设计需求设计出的物理库单元,物理单元库由标准单元库.IP库及满足特殊需求的定制部 ...
最新文章
- redis sentinel哨兵模式集群搭建教程
- 赚票子、调身子、养孩子,陌陌的中年人生活有序展开
- 如何制定客户留存策略_企业如何制定数字化转型策略?
- mui 组件:“div下拉导航”【scroll固定位置】- 案例篇
- 如何化身BAT面试收割机?都是精髓!
- 【收藏】10个重要问题概览Transformer全部内容
- dbf转成excel_DBF文件转换成excel工具(DbfToExcel)
- fileupload的回调方法_fileupload指令实现
- C#中使用ribbon界面
- albrooks图表解读_【正版全新】日本蜡烛图交易技术分析:详细解读价格行为模式 [美] 艾尔·布鲁克(Al Brooks)...
- 身体就是控制器,微软Kinect是怎样做到的?
- 一些实用网址 ubuntu截图+屏蔽一些网址+windows7+ubuntu双系统+泰语打字练习
- 计算机键盘上的2个定位键,电脑键盘上Tab 键的神奇之处!(用途详解)
- Unknown host 'dl.google.com'. You may need to adjust the proxy settings in Gradle.
- python后台开发性能问题_《Python高性能编程》——2.14 确保性能分析成功的策略-阿里云开发者社区...
- Android 10 拨打电话流程
- 3dAPI的一些介绍
- OTG 线与普通 USB 数据线的区别
- 中兴微方案ONU之 DNS Service (dnsmasq)功能测试指导
- 【数据压缩作业9】H.264码流分析仪