spyglass CDC方法学

来源:互联网 发布:致远协创软件 编辑:程序博客网 时间:2024/06/06 00:18

  • CDC issues
    • 亚稳态
  • spyglass CDC方法学流程
    • sdc2sgdc
    • 黑盒子的clock用assume_path约束
    • 该goal会产生clockreset的约束文件
    • 利用cdc_top_down也可以从soc顶层生成block-level的约束
  • 错误报告太多怎么看
    • 优先解决
      • Ac_Sync_group属于结构性的错误
      • Convergence
      • Glitches
      • DataHold
      • Data Correlation and Race Conditions
      • Reset同步复位异步释放
      • fifo的识别和验证
  • spyglass CDC方法学推荐原则
    • RTL阶段执行所有检查
    • 先IP验证后SOC整体系统验证
    • 基础工作
  • 技巧
    • 如何屏蔽某些报告信息
    • 帮助命令
    • rule检查顺序

参考文档来源spyglass工具文档(2015.12)。spydocviewer
clock-domain crossing(CDC).

CDC issues

亚稳态

跨时钟域的异步设计,存在setup和hold-time问题。会导致亚稳态产生。原文档有图有例子。
移除亚稳态,可以用以下方法:
1. 控制信号的同步
利用multi-flop同步。多级触发器,会把亚稳态值转变为干净的0或者1,之后才会传到下游逻辑。
2. 数据信号的同步
数据信号的同步,一般使用enable技术。跨时钟域的数据稳定之后,利用使能使得目的触发器捕获稳定的数据(所以不会产生建立保持时间的时序违反)。fifo,就是依赖格雷码指针的full/empty控制信号作为使能,解决数据的亚稳态问题。
数据同步的关键概念,就是如何保证数据不会在变化的情况下被捕获到。一般的数据跨时钟域,有图。qualifier(英文翻译:有资格的。在这里,一般就是多级触发器同步的控制信号,有责任保证跨时钟域的数据已经稳定可以被目的触发器正常捕获。)

spyglass CDC方法学流程

基于goal目标的流程。
1. cdc_setup
2. cdc_setup_check
建立必需的
- constraits(约束,时钟复位之类的。约束文件扩展名.sgdc)
- parameters(命令参数及options)

sdc2sgdc

sdc文件,可以转换为sgdc文件

黑盒子的clock,用assume_path约束

该goal会产生clock/reset的约束文件

默认可以不加任何约束,利用cdc_setup这个goal可以产生很多约束文件,比如
autoclocks.sgdc
autoresets.sgdc
generated_clocks.sgdc
cdc_setup_generated_clocks.sgdc
waive/set_case_analysis等。
但是需要检查修改确认后,然后放入spyglass执行脚本里。

利用cdc_top_down也可以从soc顶层生成block-level的约束

  1. clock_reset_integrity
    clock/reset的完整性检查
  2. cdc_verify
    block-level CDC验证
  3. cdc_verify_struct
    SOC-level CDC验证
  4. Signing-Off
    查看报告

错误报告,太多。怎么看?

优先解决

Ac_Sync_group属于结构性的错误

Ac_unsync01 rule
Ac_unsync02 rule
debug方法,可以参考另外一个博客笔记。

Convergence

Glitches

DataHold

Data Correlation and Race Conditions

Reset同步复位异步释放

fifo的识别和验证

spyglass CDC方法学推荐原则

RTL阶段,执行所有检查

fifo或复杂的同步机制,在综合后或布局布线后的netlist是不会检测到的。

先IP验证,后SOC整体系统验证

SOC的特点,是大量IP集成,关注点一般都集中在block boundaries,即子模块接口上的情况。
推荐使用CDC hierarchical Verification Flow。

基础工作

  1. clocks和sets定义,设计中的端口、内部clocks和reset,要定义完整正确;
  2. 黑盒子设置
  3. 设置boundary assumptions。即I/O引脚的设置
  4. 可以指定设计中定义的合理同步practices。减少不必要的检查工作。
  5. 图形界面的setup goal是有setup status可以查看质量情况的。

技巧

如何屏蔽某些报告信息

  1. 屏蔽单个路径的报告
    使用cdc_false_path
  2. 屏蔽某个rule的报告
    使用waive
  3. 屏蔽某个模块的报告
    使用黑盒子

帮助命令

spydocviewer是分类pdf,可以查询并打开相关pdf文档。
sg_shell下,执行下述命令,看看就知道了。

helphelp helphelp -rules

rule检查顺序

按照上述流程顺序,依次排查warning和error。
基于goal目标的流程。
1. cdc_setup
2. cdc_setup_check
3. clock_reset_integrity
4. cdc_verify
5. cdc_verify_struct

0 0
原创粉丝点击