1. 什么是Data to Data Checks?
在芯片设计领域,静态时序分析(STA)是确保电路时序正确性的关键步骤。大多数人可能听说过Setup和Hold检查,但通常认为这些检查只适用于时钟和数据信号之间。实际上,Setup和Hold检查同样适用于两个数据信号之间,这就是所谓的Data to Data Checks。
想象一下这样的场景:你正在设计一个I2C总线控制器,其中SDA(数据线)和SCL(时钟线)需要严格配合。但有时候,两个纯粹的数据信号之间也需要保持特定的时序关系。比如,一个控制信号(SCTRL)需要在数据信号(SDA)变化前足够早地稳定下来,这就是Data to Data Setup检查;同样,SCTRL也需要在SDA变化后保持足够长的时间,这就是Data to Data Hold检查。
与传统的时钟-数据检查不同,Data to Data Checks的特殊之处在于:
- 两个信号都是数据信号,没有时钟信号参与
- 检查的参考边沿通常是另一个数据信号的跳变沿
- 时序约束的设置方式与传统检查有所不同
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Data to Data Setup检查详解
2.1 基本概念与工作原理
Data to Data Setup检查确保一个数据信号(我们称之为"控制信号")在另一个数据信号("相关信号")变化前足够早地到达稳定状态。用生活中的例子来比喻,就像在十字路口,黄灯必须在红灯亮起前足够早地亮起,给司机反应时间。
在技术实现上,Setup检查验证的是:
code复制控制信号到达时间 ≤ 相关信号跳变时间 - Setup时间要求
举个例子,假设我们有以下约束:
code复制set_data_check -from SCTRL -to SDA -setup 2.1ns
这意味着SCTRL信号必须在SDA信号跳变前至少2.1ns到达。如果SCTRL只提前了1.8ns到达,就会报告Setup违规。
2.2 实际案例分析
让我们看一个真实的I2C接口设计案例。在这个设计中:
- SDA是数据线,会在SCL时钟的下降沿采样
- SCTRL是一个控制信号,决定是否忽略当前SDA的数据
我们需要确保:
- 当需要忽略数据时,SCTRL必须在SDA变化前足够早地置位
- 这个"足够早"的时间就是Setup时
