news 2026/10/26 9:48:43

Spyglass:CDC官方Hands-on Training(二)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Spyglass:CDC官方Hands-on Training(二)

相关阅读

Spyglasshttps://blog.csdn.net/weixin_45791458/category_12828934.html?spm=1001.2014.3001.5482


本文是对Spyglass CDC Hands-on Training中第二个实验的翻译(有删改),Lab文件可以从以下链接获取。

Spyglass CDC Hands-on Traininghttps://download.csdn.net/download/weixin_45791458/90875640


实验二、CDC设置检查

本实验旨在验证CDC设置是否正确。通过本实验,用户将学习如何检查设置中的问题,并展示如何即时创建约束(如set_case_analysis命令)。

通过本实验,用户将学习以下内容:

  • 如何进行交互式时钟设置
  • 如何从潜在的候选时钟中识别出真实的时钟
  • 如何验证时钟设置信息的正确性
  • 如何完成复位信号的设置

添加主时钟约束

1、选择Goal Setup阶段,勾选cdc/cdc_setup_check并点击Run Goal(s),如图1所示。

图1 选择目标

2、一旦运行完成,工具将自动跳转至Analyze Results阶段,在GUI左上角确保选中cdc/cdc_setup_check目标,这样才能分析该目标的运行结果,如图2所示。

图2 选择目标

3、在Violations窗口选择Group By Goal by Rule,这表示将结果按照目标->规则的方式分组,如图3所示。

图3 选择分组方式

4、点击cdc/cdc_setup_check目标前的加号以展开分组,结果如图4所示。

图4 cdc/cdc_setup_check目标

5、注意到有许多来自Clock_info03a规则和Reset_info09a规则的错误,这是由于即使实验一中的cdc/cdc_setup目标生成了约束文件,但并未进行读取。将autoclocks.sgdc文件和autoresets.sgdc文件的内容复制到SGDC/training.sgdc文件(该文件最初为空,已在项目文件中读取)中并重新运行cdc/cdc_setup_check目标。

% cat ../sg_results/training/training/cdc/cdc_setup/spyglass_reports/clock-reset/autoclocks.sgdc >> ../SGDC/training.sgdc % cat ../sg_results/training/training/cdc/cdc_setup/spyglass_reports/clock-reset/autoresets.sgdc >> ../SGDC/training.sgdc

添加生成时钟约束

1、查看结果发现大部分错误都解决,选中Clock_info03a错误,右键单击在菜单中选择Open Spreadsheet,如图5所示。

图5 打开表格

2、点击表格中第一条消息,使用快捷键I或者点击窗口上的符号查看原理图,如图6所示。

图6 生成时钟

3、使用Schematic Debug Data窗口,单击选择线网,可以清晰地观察到该线网上并没有时钟信号,只有数据/控制信号,如图7所示,其实默认情况下,时钟信号可以跨越触发器传播,但由于该项目将disable_seq_clock_prop参数和enable_generated_clocks参数设置为yes,时钟信号不能传播。

图7 观察线网信息

4、下面将在原理图界面添加这个缺失的时钟约束,右键单击线网在菜单中选择Set SpyGlass Constraints...,如图8所示。

图8 设置约束

5、在窗口顶部的菜单中选择clock作为约束命令,指定时钟域名字为MyDomain,添加注释,点击Generates生成,最后点击Append将约束添加到约束文件中,如图9所示。

图9 添加约束

6、在左侧的Constraints窗口点击第一个约束文件,查看约束是否添加成功,如10所示。

图10 查看约束文件

7、重新运行cdc/cdc_setup_check目标,查看结果发现Clock_info03a错误已解决。

添加时钟条件约束

1、双击选中Clock_info05错误,错误信息指出时钟信号在选择器上出现汇聚,使用快捷键I或者点击窗口上的符号查看原理图,如图11所示。

图11 时钟汇聚

2、从图1中可以看出,两个时钟信号通过一个选择器汇聚了,下面将此选择器约束为仅选择一个时钟。右键单击输入端口在菜单中选择Set SpyGlass Constraints...,如图12所示。

图12 设置约束

3、在窗口顶部的菜单中选择clock作为约束命令,指定值为0,添加注释,点击Generates生成,最后点击Append将约束添加到约束文件中,如图13所示。

图13 添加约束

4、重新运行cdc/cdc_setup_check目标,查看结果发现Clock_info05错误已解决。

查看端口约束

1、查看来自Setup_port01规则的信息,如图14所示,该规则提供了端口的约束报告并生成了端口约束文件。

sg_results/training/training/cdc/cdc_setup_check/spyglass_reports/clock-reset/training_input_abstract.sgdc

图14 端口约束

2、双击第二条消息将打开一个表格,显示每个端口的约束信息,如图15所示(注意:由于在2017.12版本后,use_inferred_abstract_port参数的默认值为yes,因此该处结果与原文结果不同)。

图15 端口约束情况

可以看出,有些端口定义了clock约束,有些端口则由自动推导的abstract_port约束(该约束与clock约束不一样,无需用户显示读取,因为use_inferred_abstract_port参数的默认值为yes,而use_inferred_clocks的默认值为no),还有一个端口由上一节中的set_case_analysis约束。

3、双击第一条消息将打开Setup_port01规则生成的端口约束文件,如图16所示。

图16 端口约束文件

请注意以下几点:

  • abstract_port -ignore约束会在输入端口的扇出为空时生成(即端口为空或被阻塞)。
  • 如果输入端口通过组合逻辑连接到未约束的输出端口不会生成abstract_port约束。
  • 如果输入端口连接到受时钟约束的时序单元的数据端口或使能端口,该时序单元的时钟域会被添加到生成的abstract_port约束中。
  • 输入端口由用户定义(如clock约束、quasi_static约束或set_case_analysis约束)约束时,不会生成abstract_port约束。

实验三

Spyglass:CDC官方Hands-on Training(三)https://blog.csdn.net/weixin_45791458/article/details/148170047?spm=1001.2014.3001.5501

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/26 9:47:49

AI驱动的CTF自动化解题流水线:多模型协同+确定性工具链

1. 这不是科幻片,是我在CTF靶场里真实跑通的AI全自动解题流水线“已经没有人类了”——这行字不是标题党,是我把最后一段人工干预代码注释掉、按下回车后,终端里自动滚动出的第37条flag提交成功的日志。它安静地躺在那里,像一具刚…

作者头像 李华
网站建设 2026/10/26 9:43:58

Kindle Url

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/26 9:43:55

blender+Three.js 三维数据可视化:FUI

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/26 9:43:55

blender+Three.js 三维数据可视化:数字孪生

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/26 9:43:44

Trading-as-Git:量化交易防暴仓的OpenAlice风控闭环

如果你也被“回测曲线漂亮得像教科书,实盘账户却在一个月内把半年利润全还回去”这件事折磨过,那这篇文章应该能帮到你。我把自己踩了无数坑之后沉淀下来的量化框架 OpenAlice 完整拆开,讲清楚 Trading-as-Git 这个核心设计怎么落地到本地量化…

作者头像 李华
网站建设 2026/10/26 9:43:16

PLC实战经验90条:从编程到通讯、仿真、接线的避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华