spyglass-lint关闭(disable/stop/waiver)规则
其中xxx就是被disable的某一项规则。在disable_block和enable_block之间的verilog code就是作用区域。如果没有enable_block语句,则disable_block的默认作用范围到endmodule。而且会报一个un-paired block waiver pragma defined for rule 'xxx'
1.在verilog中disable检查
spyglass-lint可以在verilog代码中通过注释的方式disable掉某些检查,规则如下:
// spyglass disable_block xxx
// ...
verilog code
// spyglass enable_block xxx
其中xxx就是被disable的某一项规则。在disable_block和enable_block之间的verilog code就是作用区域。
如果没有enable_block语句,则disable_block的默认作用范围到endmodule。而且会报一个un-paired block waiver pragma defined for rule 'xxx'
2.在Spyglass 命令行参数disable
spyglass -disable_rule xxx
这个命令会把当前工程PRJ的xxx rule全部disable掉,lint就不会分析这个rule
3.在配置文件中设置(*.prj文件)
可以通过 Spyglass 的命令行界面启动 Spyglass Lint,并加载配置文件。启动命令可能类似于 spyglass -project your_project.prj -gui
,这将打开 GUI 并加载指定的 .prj
配置文件
在prj文件中可以设置做哪些lint的检查,文件读取、设置顶层模块、选择综合模式等操作。
这些语句如下:
使用set_option top <module_name>命令来指定设计中的顶层模块
在Goal Setup选项卡中选择要检查的规则类型,并通过命令如current_goal lint/lint_rtl –top <top_module>和run_goal来设定检查目标并运行检查
set_goal_option addrules {'W120'}
set_goal_option ignorerules {'W446'}
save_project -force project_name.prj
close_project -force
set_option stop {module_name} 关闭module_name对应module的检查
set_option stopfile {file_name} 关闭file_name文件指定的所有module的内部lint检查
3.1 stop命令
这里单独提一下 set_option stop {module_name},这个命令只能写到prj的配置文件中,waiver.tcl中是不起作用的。
设了这个命令,那么lint就不会分析module_name模块内部的lint问题,但是接口的lint问题还是会分析的。【而waiver是问题报出来了,我们忽略这些问题】
stopfile的区别是将一堆module_name写到了一个file_name的文件中,而不是对叫file_name的verilog文件stop检查。stopfile同样会检查接口lint问题。
4.在waiver.tcl中waiver掉不重要的检查
在waiver.tcl中的waiver语句和前面讲的几种方法最大的区别是,前面的告诉工具不去检查某些module/代码段的规则,而waiver是报出了问题,经过确认可以例外的违例item。
4.1waiver某个module/规则
使用waive -ip命令:此命令用于豁免特定模块的所有规则检查。
waive -ip {module_name}
使用waive -du命令:-du选项代表设计单元(Design Unit),可以用来豁免特定模块的特定规则。
waive -du {module_name} -rule {rule_name} -comment {add comment}
waive -du {module_name} -rule ALL #waiver对应module_name模块的所有规则检查
使用waive -file命令:如果您有一个包含豁免信息的文件,可以使用此命令来导入豁免。
waive -file {file_name}
使用waive -msg命令:此命令可以针对特定的消息或警告进行豁免。
waive -msg {message} -rule {rule_name} -comment {add comment}
使用waive -severity命令:此命令可以根据严重性级别来豁免一系列的警告或错误。
waive -severity {severity_level}
waive -ip {module_name}也只会waive掉IP内部的lint分析,接口会继续分析的
4.2 waive_violation和waive_lint以及waive命令的区别
在Spyglass Lint中,waive_violation
和waive_lint
以及waiver
命令都用于处理违反规则的情况,但它们各自有不同的用途和特点:
-
waive_violation:此命令用于豁免特定的违规(violation)。当你认为某个特定的警告或错误不需要修复时,可以使用此命令。使用
waive_violation
可以针对单个违规进行豁免 。 -
waive_lint:此命令用于豁免与特定Lint规则相关的所有违规。如果你想要忽略由某个Lint规则检查出的所有问题,可以使用
waive_lint
命令。这适用于那些你认为对当前设计阶段不重要或不适用的规则 。 -
waiver:
waiver
是一个更通用的概念,它指的是Spyglass中用于过滤和豁免某些检查结果的机制。waiver
可以是waive_violation
或waive_lint
命令的集合,也可以是保存在文件中的豁免规则。使用waiver
可以按严重性、规则或其他标准来豁免问题 。
使用这些命令时,你可以通过指定违规的ID、规则名称、模块名等信息来精确地控制哪些问题被豁免。例如,使用waive_violation -id <violation_id>
来豁免特定ID的违规,或者使用waive_lint -rule <rule_name>
来豁免由特定规则检查出的所有违规
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)