Spyglass 的 Clock Domain Crossing (CDC) 检查
Spyglass 的 Clock Domain Crossing (CDC) 检查是用于验证数字设计中跨时钟域信号传输的一组功能。在多时钟域的设计中,数据从一个时钟域传输到另一个时钟域时可能会出现时序问题,例如亚稳态(metastability)和数据丢失。Spyglass 的 CDC 检查旨在发现这些问题并提供建议的解决方案。
Goal:表示一系列相互关联的规则集合,它们共同作用以实现RTL分析中的特定目标。
Rule:表示SpyGlass在进行RTL分析时最小的执行单元。
cdc/cdc_setup和cdc/cdc_setup_check:主要任务是验证约束文件的完整性,确保所有输入输出端口都得到了100%的约束覆盖。
cdc/cdc_verify_struct:重点在于确认信号是否经过了适当的同步处理。
cdc/cdc_verify:主要的工作是检测数据丢失问题、信号聚合问题,并对检测到的握手信号、FIFO模块等问题进行报告。
Goals | Rules |
cdc/cdc_setup | Clock_info01 Reset_info01 SetupClock01 |
cdc/cdc_setup_check | Clock_info03a Clock_info05/a/b Clock_info18 |
cdc/cdc_verify_struct | Ac_unsync01/02 Ac_sync01/02 Ar_async* Clock_sync05/06 Ac_conv01/02/03 Setup_quasi_static Ac_glitch03 |
cdc/cdc_verify | Ac_cdc01a Ac_datahold01a Ac_conv02/04/05 Ac_fifo01 Ac_handshake01/02 |
Clock_info01:检查时钟的基本信息,如时钟定义、时钟频率和时钟域的识别。
Reset_info01:检查复位信号的基本信息,包括复位的极性、类型和确保所有寄存器都被正确复位。
SetupClock01:检查时钟设置,包括时钟属性、时钟约束和时钟关系的定义。
Clock_info03:验证时钟信号的详细信息,如时钟属性、时钟域交叉和时钟同步机制。
Clock_info05/a/b:检查特定的时钟信息,如时钟网络的完整性、时钟质量的评估等。
Clock_info18:检查时钟域特定的属性,如时钟域的隔离、时钟域间的交互等。
Ac_unsync01/02:检查未同步信号的处理,确保在跨时钟域传输中未同步信号的安全性。
Ac_sync01/02:检查同步信号的处理,包括同步机制的正确性和时序要求。
Ar_async:检查异步信号的处理,确保异步信号在跨时钟域传输中的正确性。
Clock_sync05/06:检查时钟同步机制的正确性,包括同步器的使用和配置。
Ac_conv01/02/03:检查信号转换的处理,确保信号在跨时钟域传输中的转换是安全的。
Setup_quasi_static:检查准静态信号的处理,确保这些信号在跨时钟域传输中的稳定性。
Ac_glitch03:检查潜在的时钟毛刺问题,确保时钟信号的质量。
Ac_cdc01a:检查跨时钟域信号传输的基本要求,如信号同步和时序分析。
Ac_datahold01a:检查数据保持时间的要求,确保数据在跨时钟域传输中的稳定性。
Ac_conv02/04/05:检查信号转换的特定方面,如信号编码和格式的转换。
Ac_fifo01:检查异步FIFO的实现和配置,确保FIFO在跨时钟域传输中的正确性。
Ac_handshake01/02:检查握手信号的处理,确保在跨时钟域传输中握手信号的可靠性。
✦
✧
END
✦