2011年10月17日 星期一

Digital Circuit Functional Verification(十七)

版本控制REVISION  CONTROL

验证工作的一大难题就是要保证待验证和被验证的是同一个设计。当编译一个 Verilog 源
文件时,如何保证设计人员在综合时使用同一个文件呢?
当验证和综合由同一名设计人员完成时,只要他对文件进行了有效的管理,这个问题发生
的可能性就较小。但是,在实际工作中,在功能验证过程中由同一名设计者完成这两项工作是不可靠的。通常是由不同的设计者分别进行验证和综合。

文件必须集中管理
在小型设计队伍中,有可能所有设计者都在同一个目录下工作,也有可能将设计文件分布
在少数几个独立的目录下,每个人管理自己的目录同时了解其他人的文件位置。这种情况很普
遍也很危险   :你很难了解其他设计者是否修改了源文件?是否在你刚刚验证完后又产生了其
他的功能性错误?

在同一位置获取文件是很方便的
这种方法不具备可扩展性,一旦设计组增加到两三个人以上就难以实现了。而当设计人员
的工作环境不在同一地理位置时,这种方法就完全不适用了。验证工程师是这个问题的主要面
对者。一个被恰当划分的设计一般不需要涉及到其他人目录下的资源,设计者只需要独立地工
作在自己的目录下,而验证工程师的首要工作就是将这些零散的设计组合成一个整体。显而易
见,把分散在多个文件服务器上的不同工作环境下的零散文件组合起来是很困难的工作。
這個地方的寫法有個模糊點,通常integrator 會將design整合成一個Chip/platform的架構,然後驗證的人才會開始進入來驗證。


HDL 模型的管理实际上是软件管理的课题
软件工程师们用源码控制系统来管理文件,其中一些是免费的软件,工作于UNIX操作系
统下(RCS、CVS、SCCS),或由 GNU 项目发布(RCS、CVS),可以从以下网址找到相关的源代码:ftp://prep.ai.mit.edu/pub/gnu。也有相应的商用系统,但往往都非常复杂。

現在比較流行的tools為Subversion,簡稱SVN,是一個開放原始碼版本控制系統,相對於的RCSCVS,採用了分支管理系統,它的設計目標就是取代CVS。
而且有很多的圖形介面的配套軟體可以支援,方便使用者來使用

可參考維基百科http://zh.wikipedia.org/wiki/Subversion


发行版本的管理
当文件的新版本被输入到源码管理系统的数据库并改变了标记符时,以前的视图就过
期了。

发行版本是一种特定的配置
设计中某部分 RTL 代码的设计者一般总是使用该文件的最新版本,并不断地修改和更新
它们(通常是在代码开发过程中的某些关键点和每个工作日结束时)。一旦源码通过了语法正
确性测试并且功能达到了设计要求(通过一些特定的测试平台),那么该文件的相应版本就被
标记为“等待验证”。

用户必须将文件更新至合适的发行版本
作为一名验证工程师,你必须不断地观察并及时更新文件的版本。有可能花费好几天时间
来编写一个特别复杂的测试平台,以至于没有及时将待验证的设计文件更新到最新版本。这
样,可以对待测试的设计保持有连续的思路,并不断修改测试平台。但只要真正的验证和调试
工作一开始,在运行这个测试平台之前必须将文件更新至最新的“等待验证”发行版本。

随时更新
当多个设计者同时使用同一个文件进行设计时,应该经常检查文件并不断更新,以合并对
文件的并发修改。如果停滞时间过长,很可能会需要人工干预来解决更新冲突。这种对文件并
行修改后立即合并更新文件的方法看似冒险,但实际经验表明,不同的函数或错误修正极少位
于源代码的同一行内。只要这类修改被两三行未修改的代码分割开来,合并操作就没有任何问
题。并行开发是一种发展方向。

可以通知设计者新版本发布
一些源码管理系统的一个重要特性就是可以通过发电子邮件的方式告知设计者何时发生了
重要的事件。例如,当“等待验证”的标记符发生变化时,系统就给所有的验证工程师发电子
邮件,在电子邮件中还可以有选择地包含一些对于源文件变化描述的信息。由此用户就可以判
断是否要立即更新当前的文件版本。

沒有留言: