一 SpyGlass手册
- explore_UserGuide.pdf 1144页
- SpyGlass_Console_UserGuide.pdf 568页
- SpyGlass_LibraryComiler_UserGuide.pdf 144页
- CDC.pdf 68页
- CDC_Rule.pdf 2318页
- Constraints.pdf 74页
- Constraints_Rules.pdf 1756页
- DesinRead.pdf 58页
- Lint_Rules.pdf 790页
- TclShell.pdf 1684页
二 vc_spyglass常用操作
1.添加waiver.tcl文件
在左侧vcstActivityTree的violation 面板右键鼠标,在Waiver菜单下找到二级菜单 Add New Waiver File,创建一个。
或者在tcl中 用命令
manage_waiver_file -add waiver.tcl
把waiver.tcl文件加载到工程中,在刚才的二级菜单下,选择Select Default Waiver File -> waiver.tcl
如果不切换就是默认的vcst_rtdb/reports/waiver.tcl。
然后选择违例的message,右键或者在GUI下方VC_Static_InfoView窗口里选择Waive_Selected_Violations,就能在waiver.tcl中找到刚才的waive约束。
重新启动用restore_vcst。
查看已有的waive,在vcstActivityTree的Waivers 面板。
三 常见的cdc error
1.SETUP_RESET_UNDECL
异步的set/reset 没有被约束。有如下reason code:
UNDECLAERD:复位没有被约束,解决办法,用create_reset 创建约束
UNCONNECTED:没有连接
BLOCKED_BB:因为路径上有block box
sch打不开,提示有cmd 正在运行,其中1个原因可能cdc检查的脚本里混入了lint的命令,从tcl里删除它。
2.SETUP_BBOXPIN_UNCONSTRAINED
block-box的管脚没有约束或者部分约束。确认连接关系,没问题waive了就行了。
3.CDC_UNSYNC_ASYNCRESET
复位信号没有经过目的时钟域的同步。可能是以下三种情况:
- 目的cell的复位管脚被异步的时钟驱动。
- 复位不是输入端口,也不是cell输出的复位,或者是开发者自定义的异步复位
- 工具没有自动推断出同步逻辑。
4.CDC_UNSYNC_NOSCHEME
数据没有经过同步处理,只有一拍直接采样。
5.CDC_COHERENCY_MULTI_SYNC
同一个信号,有多个同步路径。大多数分散在多个模块。一般来说是没有什么影响的。
6.CDC_COHERENCY_RECONV_SEQ
聚合。1个异步信号多点穿越后又聚合在一起,至少有一条同步路径上还有reg打拍。
7.CDC_COHERENCY_RECONV_COMB
聚合。1个信号多点穿越后又聚合在一起,并且同步后所有路径上都没有reg。
8.CDC_CONHRENCY_ASYNCSRCS_RECONV_SEQ
不同的信号 同步后聚合,至少有 一条同步路径上还有reg打拍。
9.CDC_COHERENCY_BUS_NOCONV
多bit数据跨越没有使用格雷码。
四 常见的rdc error
rdc就是reset domain crossing
1.SETUP_RESET_INFERRED_SOFT
内部产生的复位信号,要么create_reset处理,要么就waive。确保符合设计者意图。
2.RDC_CORRUPT_OBSERVED
2个顺序打拍的FF,有2个不同的异步复位信号。并且没有定义有效的blocking scheme。 如果前一个寄存器被复位,后一个FF没有被复位,后面这个寄存器就有可能采到1个亚稳态。要么改代码,要么加约束,先复位后面的reset,help view上有,
set_rdc_define_assertion_sequence -from rst1 -to rst2
3.RDC_CLOCK_CORRUPT_OBSERVED
如果异步复位造成了时钟不稳定,比如说异步复位的FF输出Q是ICG的en信号,那么异步复位的时机很可能导致en有毛刺,导致ICG输出是亚稳态,进而导致所有后级的时钟网络不稳定。
五 vc spyglass install
安装好后提示缺feature,需要添加以下:
VC-LINT-BASE
VC-CDC-BASE
VC-RDC-BASE
VC-Verdi-Plugin
rdc_adv_checker
cdc_adv_checker
VC-STATIC-VERDI-PLUGIN