SDC 是一种行业标准格式,用于指定 ASIC 和 FPGA 设计的时序和操作约束。它对综合、静态时序分析(STA)和 place 和 routing 等各种 EDA 工具至关重要。
关键概念:
- 时钟定义:指定时钟波形和时序特性。
- 输入/输出延迟:定义信号到达和输出时间的约束。
- 时序异常:包括需要特殊处理的路径(例如,假路径、多周期路径)。
- 设计规则:设置最大扇出、transition 时间和其他物理规则。
在后端实现中 SDC 文件的使用帮助工具优化布局和逻辑以满足时序要求。准确的 SDC 约束确保设计符合性能规范而且可制造。
1.Multi-Mode Multi-Corner(MMMC)约束
在现实世界的设计中,芯片在各种模式(例如功能模式、测试模式、高性能模式和低功耗模式等)和不同的条件下(制程、电压、温度)运行。SDC 必须同时考虑这些变量,这些变量通过 MMMC 约束进行管理。我们必须确保设计在所有此类模式下都符合时序。
Synopsys PrimeTime 等工具允许加载多个场景,有助于分析不同模式和角落的时序。
命令指(适用于 Synopsys 工具):- set_operating_conditions 和 set_mode 命令可用于在这些模式之间切换。
2.clock group 和复杂的时钟关系
许多设计都有多个时钟以不同的频率或相位运行,这使得时序分析变得复杂。现在,假设一组数据从 1 个触发器(由 1 个时钟触发)传输,并由另一个触发器(由其他时钟触发)捕获,那么你将如何在它们之间进行时序分析。
同样,当时钟是非同步的时,可以将它们指定为“logically exclusive”,这意味着它们之间不会分析。
SDC 提供像set_clock_groups这样的命令来定义时钟之间的关系。在 SoC 等多时钟系统中,set_false_path命令可用于不需要时序分析的时钟之间的路径。使用 create_clock 定义适当的时钟域并将其分组有助于避免不必要的时序违例。
命令:- set_clock_groups,set_false_path
3.处理高级时序异常
当一些路径可能需要多个时钟周期才能完成时,设计通常会应用多周期路径或最小/最大延迟约束。这些异常路径有助于优化时序并减少分析中的过度优化。根据您的电路要求,两个低速组件之间的路径可能会放松时序,因为不需要每个时钟周期传输数据。在这种情况下,使用set_multicycle_path,我们指定路径可以需要多少个周期,_set_min_delay 或者_set__max_delay_有助于控制启动和捕获寄存器之间的特定延迟。
命令:- set_multicycle_path,set_min_delay,set_max_delay
4.用于低功耗的 Power-Aware SDC
设计 在能源效率优先的设计中,低功耗约束至关重要。您可以通过 SDC 定义电源门控、多电压域效果,以定义不同电源域之间如何相互作用的信号。
Synopsys PrimeTime PX 等工具使用这些约束来执行电源感知时序分析。
命令:- set_isolation,set_level_shifter,_set_power_domain
5.自动化 SDC 生成和验证
管理复杂设计的 SDC 需要自动化来减少错误。自定义脚本可以帮助自动为不同的模块或模式生成 SDC 文件。自动化脚本可以从 RTL 或 netlist 中提取时序要求,并生成适当的 SDC 约束,从而节省设计迭代时间。
END
作者:learn vlsi
来源:数字芯片实验室
推荐阅读
更多数字 IC 设计技术干货等请关注数字芯片实验室专栏。添加极术小姐姐(微信:aijishu20)微信可申请加入IC设计交流群。