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所示。

图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中可以看出,两个时钟信号通过一个选择器汇聚了,下面将此选择器约束为仅选择一个时钟。右键单击线网在菜单中选择Clock_info05_sel,如图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所示。

图15 端口约束情况

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

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

图16 端口约束文件

        请注意以下几点:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

日晨难再

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值