)
相关阅读VC Spyglasshttps://blog.csdn.net/weixin_45791458/category_12828932.html?spm1001.2014.3001.5482本文是对VC Spyglass CDC Hands-on Training中第三个实验的翻译有删改Lab文件可以从以下链接获取。VC Spyglass CDC Hands-on Traininghttps://download.csdn.net/download/weixin_45791458/91214254?spm1001.2014.3001.5503实验三、CDC结构分析本实验旨在帮助用户掌握完整的CDC分析流程特别是如何排查重汇聚(Convergence)问题和毛刺(Glitch)违规问题实验将指导用户使用定位器和利用反标信息进行深入分析。运行VC Spyglass1、进入实验三的目录。% cd VC_SpyGlass_Structural_CDC_Lab/Lab3_struct/2、打开vc_cdc.tcl文件注意在实验三中使用了check_cdc -type struct命令进行结构性同步检查这与实验二不同。check_cdc -type struct3、使用批处理方式运行VC Spyglass并通过report_cdc查看违规信息可以注意到此时出现了名为CONV和GLITCH的阶段。% vc_static_shell -f vc_cdc.tcl vc_static_shell report_cdc----------------------------------------------------------------------------- Management Summary ----------------------------------------------------------------------------- Stage Family Fatals Errors Warnings Infos ----- ---------- -------- -------- -------- -------- SETUP CLKPROP 0 0 1 56 SETUP RESET 0 23 6 9 SYNC CTRLPATH 0 12 0 19 SYNC DATAPATH 0 129 0 9 SYNC UNSYNC 0 37 0 0 CONV COMBCONV 0 5 0 0 CONV NOCONV 0 2 2 0 CONV SEQCONV 0 1 0 0 GLITCH GLITCH 0 5 0 0 ----- ---------- -------- -------- -------- -------- Total 0 214 9 93 ----------------------------------------------------------------------------- Tree Summary ----------------------------------------------------------------------------- Severity Stage Tag Count -------- ----- ----------------------------------- ----- error CONV CDC_COHERENCY_MULTI_SYNC 2 error CONV CDC_COHERENCY_RECONV_COMB 5 error CONV CDC_COHERENCY_RECONV_SEQ 1 error GLITCH CDC_GLITCH_CTRL 5 error SETUP SETUP_RESET_ASSERT_MISSING 23 error SYNC CDC_UNSYNC_ASYNCRESET 20 error SYNC CDC_UNSYNC_CTRL 12 error SYNC CDC_UNSYNC_DATA 129 error SYNC CDC_UNSYNC_NOSCHEME 17 warning CONV CDC_COHERENCY_BUS_NOCONV 2 warning SETUP SETUP_MULTIPLE_CONSTRAINTS 1 warning SETUP SETUP_RESET_DRIVING_NON_ASYNC_PIN 6 info SETUP SETUP_BBOXPIN_CONSTRAINED 1 info SETUP SETUP_CLOCK_PROPAGATED 12 info SETUP SETUP_DATA_CONSTANT 17 info SETUP SETUP_PORT_CONSTRAINED 23 info SETUP SETUP_PORT_IGNORED 3 info SETUP SETUP_RESET_PROPAGATED 9 info SYNC CDC_SYNC_ASYNCRESET 8 info SYNC CDC_SYNC_CTRL 19 info SYNC CDC_SYNC_DATA 1 -------- ----- ----------------------------------- ----- Total 3164、调试一个重汇聚违规问题使用start_gui命令启动GUIvc_static_shell start_gui选择CDC_COHERENCY_MULTI_SYNC标签下的inputA违规项然后点击窗口中的New Violation Schematic或者右键单击违规并在菜单中选择New Violation Schematic或者使用CtrlN快捷键如图1所示即可打开原理界面查看该违规的相关情况如图2所示。图1 打开违规的原理图图2 违规的原理图5、注意到名为CTRL_PATH_SRC和SAME:CTRL_PATH_SRC的定位器指向输入端口inputA名为CTRL_PATH_SYNC和MULTIPLE:CTRL_PATH_SYNC的定位器指向同步后的信号这表示一个信号使用两个同步器分别进行了同步。6、为了启用更多调试信息点击菜单中的Schematic并选择Annotate Debug Data或者使用CtrlShiftN快捷键如图3所示然后勾选希望在原理图中标注显示的信息添选Data path Info并点击OK如图4所示。图3 打开反标注窗口图4 反标注窗口7、在启用调试反标后用户将会在原理图中看到额外的数据路径、时钟域等信息如图5所示。图5 反标注窗口屏蔽违规1、Waiver用于屏蔽那些已知问题或已分析过的问题所对应的违规项标签。通过引入waiver可以帮助用户区分哪些违规项还未分析下面将屏蔽一个GLITCH阶段的违规。首先使用以下命令获取GLITCH阶段违规的详细报告。vc_static_shell report_cdc -stage GLITCH -verbose----------------------------------------------------------------------------- Management Summary ----------------------------------------------------------------------------- Stage Family Fatals Errors Warnings Infos ----- -------- -------- -------- -------- -------- GLITCH GLITCH 0 5 0 0 ----- -------- -------- -------- -------- -------- Total 0 5 0 0 ----------------------------------------------------------------------------- Tree Summary ----------------------------------------------------------------------------- Severity Stage Tag Count -------- ----- ----------------- ----- error GLITCH CDC_GLITCH_CTRL 5 -------- ----- ----------------- ----- Total 5 ----------------------------------------------------------------------------- CDC_GLITCH_CTRL (5 errors/0 waived) ----------------------------------------------------------------------------- Tag : CDC_GLITCH_CTRL Description : CDC path contains structure resulting in potential glitch propagation to destination [GlitchDestInfo] Violation : CDC:284 ReasonInfoList ReasonInfo ReasonCode : GLITCH_SOURCES_FROM_DIFF_DOMAIN ReasonCodeMsg : [ERROR] Glitch caused due to sources from different domain merging GlitchDestInfo DestObject : u_ACUS/u_merge_sources/meta/Q DestObjectType : flop DestClockInfoList DestClockInfo ClockName : clkC ClockObject : clkC ClockDomainId : 4 GlitchSourceCount : 2 GlitchSrcInfoList GlitchSrcInfo SrcObject : u_ACUS/regD/Q ReasonCodeList ReasonCode : GLITCH_SOURCES_FROM_DIFF_DOMAIN SrcClockInfoList SrcClockInfo ClockName : clkB ClockObject : clkB ClockDomainId : 3 GlitchSrcInfo SrcObject : u_ACUS/regS/Q ReasonCodeList ReasonCode : GLITCH_SOURCES_FROM_DIFF_DOMAIN SrcClockInfoList SrcClockInfo ClockName : clkA ClockObject : clkA ClockDomainId : 2 ContainerInstance : u_ACUS Module : rule_Ac_unsync01 ----------------------------------------------------------------------------- Tag : CDC_GLITCH_CTRL Description : CDC path contains structure resulting in potential glitch propagation to destination [GlitchDestInfo] Violation : CDC:285 ReasonInfoList ReasonInfo ReasonCode : GLITCH_SOURCES_FROM_DIFF_DOMAIN ReasonCodeMsg : [ERROR] Glitch caused due to sources from different domain merging GlitchDestInfo DestObject : u_ACS01/u_sync2s/meta/Q DestObjectType : flop DestClockInfoList DestClockInfo ClockName : clkB ClockObject : clkB ClockDomainId : 3 GlitchSourceCount : 2 GlitchSrcInfoList GlitchSrcInfo SrcObject : u_ACS01/src/Q ReasonCodeList ReasonCode : GLITCH_SOURCES_FROM_DIFF_DOMAIN SrcClockInfoList SrcClockInfo ClockName : clkA ClockObject : clkA ClockDomainId : 2 GlitchSrcInfo SrcObject : reset_n ReasonCodeList ReasonCode : GLITCH_SOURCES_FROM_DIFF_DOMAIN SrcClockInfoList SrcClockInfo ClockName : Clock_info03a_clk ClockObject : Clock_info03a_clk ClockDomainId : 1 ContainerInstance : training Module : training ----------------------------------------------------------------------------- Tag : CDC_GLITCH_CTRL Description : CDC path contains structure resulting in potential glitch propagation to destination [GlitchDestInfo] Violation : CDC:286 ReasonInfoList ReasonInfo ReasonCode : GLITCH_SOURCE_RECONVERGES ReasonCodeMsg : [ERROR] Glitch is caused due to source re-convergence ReasonInfo ReasonCode : GLITCH_SOURCES_FROM_DIFF_DOMAIN ReasonCodeMsg : [ERROR] Glitch caused due to sources from different domain merging GlitchDestInfo DestObject : u_ACUS/u_sync2s/meta/Q DestObjectType : flop DestClockInfoList DestClockInfo ClockName : clkB ClockObject : clkB ClockDomainId : 3 GlitchSourceCount : 3 GlitchSrcInfoList GlitchSrcInfo SrcObject : u_ACUS/bin_count/Q[0] ReasonCodeList ReasonCode : GLITCH_SOURCES_FROM_DIFF_DOMAIN SrcClockInfoList SrcClockInfo ClockName : clkA ClockObject : clkA ClockDomainId : 2 GlitchSrcInfo SrcObject : u_ACUS/bin_count/Q[1] ReasonCodeList ReasonCode : GLITCH_SOURCE_RECONVERGES ReasonCode : GLITCH_SOURCES_FROM_DIFF_DOMAIN SrcClockInfoList SrcClockInfo ClockName : clkA ClockObject : clkA ClockDomainId : 2 GlitchSrcInfo SrcObject : reset_n ReasonCodeList ReasonCode : GLITCH_SOURCES_FROM_DIFF_DOMAIN SrcClockInfoList SrcClockInfo ClockName : Clock_info03a_clk ClockObject : Clock_info03a_clk ClockDomainId : 1 ContainerInstance : training Module : training ----------------------------------------------------------------------------- Tag : CDC_GLITCH_CTRL Description : CDC path contains structure resulting in potential glitch propagation to destination [GlitchDestInfo] Violation : CDC:287 ReasonInfoList ReasonInfo ReasonCode : GLITCH_SOURCE_RECONVERGES ReasonCodeMsg : [ERROR] Glitch is caused due to source re-convergence GlitchDestInfo DestObject : uACCONV04/in1/Q{ [2] ,[0] } DestObjectType : flop DestClockInfoList DestClockInfo ClockName : clkA ClockObject : clkA ClockDomainId : 2 GlitchSourceCount : 1 GlitchSrcInfoList GlitchSrcInfo SrcObject : reset_n ReasonCodeList ReasonCode : GLITCH_SOURCE_RECONVERGES SrcClockInfoList SrcClockInfo ClockName : Clock_info03a_clk ClockObject : Clock_info03a_clk ClockDomainId : 1 ContainerInstance : training Module : training ----------------------------------------------------------------------------- Tag : CDC_GLITCH_CTRL Description : CDC path contains structure resulting in potential glitch propagation to destination [GlitchDestInfo] Violation : CDC:288 ReasonInfoList ReasonInfo ReasonCode : GLITCH_SOURCE_RECONVERGES ReasonCodeMsg : [ERROR] Glitch is caused due to source re-convergence GlitchDestInfo DestObject : uACCONV04/in2/Q[2:0] DestObjectType : flop DestClockInfoList DestClockInfo ClockName : clkA ClockObject : clkA ClockDomainId : 2 GlitchSourceCount : 1 GlitchSrcInfoList GlitchSrcInfo SrcObject : reset_n ReasonCodeList ReasonCode : GLITCH_SOURCE_RECONVERGES SrcClockInfoList SrcClockInfo ClockName : Clock_info03a_clk ClockObject : Clock_info03a_clk ClockDomainId : 1 ContainerInstance : training Module : training2、使用以下命令屏蔽DestObject为u_ACS01/u_sync2s/meta/Q的违规项并再次使用report_cdc命令进行报告可以看出其中多了一个条屏蔽项。vc_static_shell waive_cdc -add waive_glitch_dest -tag CDC_GLITCH_CTRL -filter { GlitchDestInfo:DestObject u_ACUS/u_sync2s/meta/Q } vc_static_shell report_cdc----------------------------------------------------------------------------- Management Summary ----------------------------------------------------------------------------- Stage Family Fatals Errors Warnings Infos Waived ----- ---------- -------- -------- -------- -------- -------- SETUP CLKPROP 0 0 1 56 0 SETUP RESET 0 23 6 9 0 SYNC CTRLPATH 0 12 0 19 0 SYNC DATAPATH 0 129 0 9 0 SYNC UNSYNC 0 37 0 0 0 CONV COMBCONV 0 5 0 0 0 CONV NOCONV 0 2 2 0 0 CONV SEQCONV 0 1 0 0 0 GLITCH GLITCH 0 4 0 0 1 ----- ---------- -------- -------- -------- -------- -------- Total 0 213 9 93 1 ----------------------------------------------------------------------------- Tree Summary ----------------------------------------------------------------------------- Severity Stage Tag Count Waived -------- ----- ----------------------------------- ----- ---------- error CONV CDC_COHERENCY_MULTI_SYNC 2 0 error CONV CDC_COHERENCY_RECONV_COMB 5 0 error CONV CDC_COHERENCY_RECONV_SEQ 1 0 error GLITCH CDC_GLITCH_CTRL 4 1 error SETUP SETUP_RESET_ASSERT_MISSING 23 0 error SYNC CDC_UNSYNC_ASYNCRESET 20 0 error SYNC CDC_UNSYNC_CTRL 12 0 error SYNC CDC_UNSYNC_DATA 129 0 error SYNC CDC_UNSYNC_NOSCHEME 17 0 warning CONV CDC_COHERENCY_BUS_NOCONV 2 0 warning SETUP SETUP_MULTIPLE_CONSTRAINTS 1 0 warning SETUP SETUP_RESET_DRIVING_NON_ASYNC_PIN 6 0 info SETUP SETUP_BBOXPIN_CONSTRAINED 1 0 info SETUP SETUP_CLOCK_PROPAGATED 12 0 info SETUP SETUP_DATA_CONSTANT 17 0 info SETUP SETUP_PORT_CONSTRAINED 23 0 info SETUP SETUP_PORT_IGNORED 3 0 info SETUP SETUP_RESET_PROPAGATED 9 0 info SYNC CDC_SYNC_ASYNCRESET 8 0 info SYNC CDC_SYNC_CTRL 19 0 info SYNC CDC_SYNC_DATA 1 0 -------- ----- ----------------------------------- ----- ---------- Total 315 13、使用GUI界面也可以完成上述操作使用start_gui命令打开GUI右键单击想要屏蔽的违规项选择Create a Waiver并选择Set Violation Status as Waived最后在弹出的waiver窗口中点击ADD ItemWaive文件将创建并写入屏蔽命令。使用检查点1、检查点功能允许用户在设计执行过程中某个阶段保存一个基于进程/快照的检查点并在后续运行中从该检查点继续执行以避免从头开始重复分析使用以下命令可以创建检查点。vc_static_shell checkpoint_session -session cdc_checkpoint [Info] CHECKPOINTING_SESSION: Checkpointing session (vcst_rtdb (as cdc_checkpoint_cpdb)). Checkpointing Checkpoint Done2、现在如果想在另一次运行中恢复该会话只需使用以下命令即可之后可以使用report_cdc命令查看之前运行的CDC分析报告。vc_static_shell restart_session -session cdc_checkpoint [Info] RESTARTING_SESSION: Restart session (cdc_checkpoint). Restarting Restart Done vc_static_shell report_cdc ----------------------------------------------------------------------------- Management Summary ----------------------------------------------------------------------------- Stage Family Fatals Errors Warnings Infos Waived ----- ---------- -------- -------- -------- -------- -------- SETUP CLKPROP 0 0 1 56 0 SETUP RESET 0 23 6 9 0 SYNC CTRLPATH 0 12 0 19 0 SYNC DATAPATH 0 129 0 9 0 SYNC UNSYNC 0 37 0 0 0 CONV COMBCONV 0 5 0 0 0 CONV NOCONV 0 2 2 0 0 CONV SEQCONV 0 1 0 0 0 GLITCH GLITCH 0 4 0 0 1 ----- ---------- -------- -------- -------- -------- -------- Total 0 213 9 93 1 ----------------------------------------------------------------------------- Tree Summary ----------------------------------------------------------------------------- Severity Stage Tag Count Waived -------- ----- ----------------------------------- ----- ---------- error CONV CDC_COHERENCY_MULTI_SYNC 2 0 error CONV CDC_COHERENCY_RECONV_COMB 5 0 error CONV CDC_COHERENCY_RECONV_SEQ 1 0 error GLITCH CDC_GLITCH_CTRL 4 1 error SETUP SETUP_RESET_ASSERT_MISSING 23 0 error SYNC CDC_UNSYNC_ASYNCRESET 20 0 error SYNC CDC_UNSYNC_CTRL 12 0 error SYNC CDC_UNSYNC_DATA 129 0 error SYNC CDC_UNSYNC_NOSCHEME 17 0 warning CONV CDC_COHERENCY_BUS_NOCONV 2 0 warning SETUP SETUP_MULTIPLE_CONSTRAINTS 1 0 warning SETUP SETUP_RESET_DRIVING_NON_ASYNC_PIN 6 0 info SETUP SETUP_BBOXPIN_CONSTRAINED 1 0 info SETUP SETUP_CLOCK_PROPAGATED 12 0 info SETUP SETUP_DATA_CONSTANT 17 0 info SETUP SETUP_PORT_CONSTRAINED 23 0 info SETUP SETUP_PORT_IGNORED 3 0 info SETUP SETUP_RESET_PROPAGATED 9 0 info SYNC CDC_SYNC_ASYNCRESET 8 0 info SYNC CDC_SYNC_CTRL 19 0 info SYNC CDC_SYNC_DATA 1 0 -------- ----- ----------------------------------- ----- ---------- Total 315 1