2011年10月9日 星期日

Digital Circuit Functional Verification(九)

检错工具 ( LlNTING TOOLS )

•  检错(lint)一词源于一个专门用来检测C语言程序错误的UNIX设
备。当Dennis Ritchie最开始发明C语言的时候,它并不象现在的
ANSI-C和C++这么安全可靠,也比不上Pascal和ADA。检错程序
允许编程者尽可能快的发现常规错误,而不是在测试的过程中发
现了致命错误以后才知道。

—Linting tools find common programmer mistakes.
• 检错程序能够找到错误,使编程者能在执行程序或发生重大错误
之前改正它们。运行时检错将需要一个运行时的调试程序,并且
要花好几分钟,而检错程序则只需要几秒钟,后者效率更高。

检错程序的优点:
不需要激发,也不要说明期望的输出结果。它们的检错完全是静
态进行的,本身就自带了期望的输出结果。

在IC設計上, 我們一般使用Linting tools 來找出設計上對映到合成器上的錯誤,
就是在未使用合成器時,就可以很簡單的找出設計上的不可合成點。
以減少後面作合成後再回來修正設計的時間。

检错程序的局限性
•    检错程序并不能找出源代码中的所有错误,它只是通过分析源代
码的结构来判断何处出错,而算法错误和数据流错误则发现不
了。
•    检错程序在检错时有时表现得很固执。为了避免犯II型错误—即肯
定为错,常常犯检查出并不存在的错误,结果导致I型错误—否定
为错。

解决方法
•  细心过滤错误信息 :分析输出结果,把那些事实上不存在的错
误排除掉,就不必为查找根本没有的错误而浪费时间。更重要
的是,它可以避免一个真正的错误随着众多的假错误被忽略。
•  正确的命名习惯有助于判断一个警告是否值得注意
•  对于检查潜在的真实错误来说,逐行检查仍具有不可替代的作
用。
•  编写源代码时就应该检错。判断一个错误的真假的最好时间是
在刚写完代码的时候。
•  保证代码的可读性和可维护性
此處包含了coding Style的必要性與實用性。在許多的小型設計公司,
扔會忽略了此處的重要性,以至於發生了許多奇怪的錯誤現象。 

代码检查 (Code Reviews)  • 代码检查是由人工完成的
• 作用:在测试和模拟之前找出功能错误和编码格式错误。
• 为了找出自动检错工具发现不了的错误,源代码将由多人过目。
• 可通过代码检查来评估一个源文件的可维护性以及其代码的正确
性,还能发现编码格式方面的问题。
• 能完全读懂代码,很容易找到功能错误及疏忽遗漏之处。
此處由Designer互相檢查,或由manager來實行