spyglass waive使用
waive
用于定义屏蔽条件,以从所有生成的消息集合中屏蔽一组消息。
用法:
waive [-du <设计单元列表> | <逻辑库名>]
[-ip <IP列表> | <逻辑库名>]
[-file <文件列表>]
[-file_line <文件> <行号>]
[-file_lineblock <文件> <起始行号> <结束行号>]
[-severity <严重性标签/类别列表>]
[-rules <规则/规则组/关键字列表>]
[-msg <消息>]
[-except <规则/规则组/关键字列表>]
[-weight <权重>]
[-weight_range <起始权重> <结束权重>]
[-regexp | -exact]
[-invert]
描述
waive
命令用于从生成的消息集合中屏蔽一组消息。
每个 waive
命令都会返回一个唯一的 ID,用于标识该屏蔽命令。SpyGlass 会对命令选项中指定的值进行合法性检查。
选项说明
-du <设计单元列表>
以空格分隔的设计单元名称列表:Verilog:模块名
<module-name>
VHDL:实体名
<entity-name>
(实体及其所有架构)或者
<entity-name>.<arch-name>
(指定实体和架构)包名
<pkg-name>
或配置名<config-name>
或者预编译 Verilog/VHDL 库的逻辑库名
<logical-lib-name>
用
-du
可以屏蔽指定设计单元或库中所有设计单元的消息。
例:waive -du "duName" waive -du "du1 du2" waive -du {du1 du2}
-ip <IP 列表>
以空格分隔的 IP 模块名称列表,语法与-du
类似。
用于屏蔽指定 IP 层级下的消息。
例:waive -ip "ipName" waive -ip {ip1 ip2}
-file <文件列表>
指定源文件列表,屏蔽这些文件中的所有消息。
例:waive -file fName waive -file {"file1.v" "file2.sv"}
-file_line <文件> <行号>
指定源文件和行号,屏蔽该行的消息。
例:waive -file_line my_module.sv 42
-file_lineblock <文件> <起始行号> <结束行号>
指定源文件和行号范围,屏蔽该范围内的所有消息。
例:waive -file_lineblock my_module.sv 100 120
-severity <严重性标签/类别列表>
根据严重性标签或类别屏蔽消息。
例:waive -severity Info
-rules <规则/规则组/关键字列表>
根据规则名、规则组名或策略关键字屏蔽消息。
关键字可用:ALL | ALL_INFO | ALL_WRN | ALL_ELAB | ALL_SYNTHERR | ALL_SYNTHWRN
例:waive -rules SGDCSTX_002 waive -rules {R1 R2}
-msg <消息>
根据实际消息文本屏蔽消息,必须用{}
包裹以防 Tcl 解析错误。
例:waive -msg {Unknown SGDC command 'create_clock'}
-except <规则/规则组/关键字列表>
排除指定规则/规则组/策略关键字,使其不被当前屏蔽命令屏蔽。
例:waive -rules ALL -except R1
-weight <权重>
按规则权重屏蔽消息。
例:waive -weight 2
-weight_range <起始权重> <结束权重>
按权重范围屏蔽消息(包含边界值)。
例:waive -weight_range 2 10
-regexp
开启正则表达式匹配,用于-du
、-ip
、-file
、-file_line
、-file_lineblock
、-msg
等字段。
例:waive -msg {"Unknown SGDC command.*"} -regexp
-comment <注释>
添加注释(用双引号括起来),会显示在 Waiver 报告中,便于后续阅读。
例:waive -du du_name -comment "屏蔽该模块内的所有消息"
-disable
禁用当前屏蔽命令,不生效。
例:waive -rules SGDCSTX_002 -disable
-ignore
让报告中只显示屏蔽数量,不显示具体被屏蔽的消息。-import <块名> <块级屏蔽文件>
允许在芯片级导入块级屏蔽文件,实现层次化屏蔽。-exact
禁用通配符,把*
当作普通字符处理。
例:waive -msg {message is this*} -exact
-invert
反转屏蔽集合,屏蔽所有未被匹配到的消息。
示例
sg_shell> waive -msg {Module clcell is a top level design unit} -regexp
sg_shell> waive -msg {"Module clcell is a top level.*"} -regexp
sg_shell> waive -du {cl.* sr.*} -regexp
sg_shell> waive -severity {warning info} -except {DetectTopDesignUnits checkSGDC_01}
sg_shell> waive -file_lineblock test.v 3 5 -file_lineblock test4.v 1 22 -file_lineblock abc.v 4 5
sg_shell> waive -file_line test4.v 22
sg_shell> waive -weight 2
sg_shell> waive -weight_range 2 10