Spyglass的CDC检查

发布时间 2023-06-05 23:33:15作者: Galois_V

  接着前面Lint检查之后需要对RTL进行CDC检查,以下是简单的步骤。

  1.在完成lint检查后,也就是确保没有语法错误之后,点击Goal Setup,然后勾选主窗口下cdc_setup_check,然后点击Run Goal(s) ,当运行完成,会自动弹出Analyze Result窗口。

  2.得到分析结果后, cdc/cdc_setup_check文件夹消息。错误信息以红色显示,警告以橙色显示,信息以绿色显示。这时没有错误及警告,如下所示:

  3.接着下一项cdc_reset_integrity的检查:

  没有报错,继续下一项检查。

  4.接着下一项cdc_verify_struct的检查:

  分析结果出现了报错与警告,依次对报错与警告进行分析,参考Help viewer。Ac_clockperiod01是因为sclk信号没补充边沿列表,更改后的sgdc文件:

  由于SPI总线的sclk信号是断续的,这里没法对发送信号进行跨时钟域处理,只能保证发送数据在spi总线工作之前就保持稳。同理异步复位信号rst_n也是因为sclk不是连续的,而且要保证全局复位能够对信号进行复位,所以只能对rst_n不做跨时钟域处理。
  这里可以通过以下方式把这些没法优化的报错及警告Waiver,选中报错项右键鼠标,选中弹出框的Waiver all…选项

  然后点击Apply,最后点击OK即可

  这时选中Waiver的报错及警告就被忽略了

  5.进行Waiver之后,接着下一项cdc_verify的检查:

  没有报错及警告。
  6.接着下一项cdc_abstract的检查:

  检查未发现报错及警告。
  结论:CDC检查会对模块里头的时钟,复位信号进行检查,所以要对这些信号添加约束。另外CDC还会对跨时钟域作相应的检查,如果存在违规,也会出现报错。根据实验结果看,需要对顶层文件的所有端口进行约束,不然会出现顶层文件没有全部约束的报错。对于报错与警告要根据提示进行相应的约束才行,否则错误与警告不会消除。Spyglass的目的在于检查,因此只能尽可能的把有问题的地方更正,无法优化的只能根据实际情况不做优化。可以对这些没办法优化的信号进行Waiver操作。