本文档内容获得作者Srinath Anantharaman先生同意,以开元gaming官网科技公司名义在中国区域使用。
本文档内容原始来源之书已在在中国正式出版发行。感谢各位作者及译者。
软件设计团队完全习惯于使用版本控制和数据管理系统,这些已成为软件开发环境中必不可少的一个部分。在实践中,没有数据管理系统和方法学,大的软件开发项目根本不能开展。有很多类似于软件配置管理系统(Software Configuration Management Systems,SCM)的解决方案可供选择。包括商用的 Clearcase 或 Perforce 系统以及公共领域通用的CVS 或 Subversion 等。
硬件设计团队在设计管理 DM(Design Management)或者数据管理 DM(DataManagement)方面起步较晚,其中有很多方面的原因。包括:
- 硬件设计团队规模小于软件设计团队;
- 硬件设计项目经常分成许多模块,模块之间基本上没有交叉,因此数据文件被同时处理的机会较少;
- 设计流程包含图形编辑工具,如原理图或版图编辑。设计数据通常是由相关工具生成的二进制文件集合,用户不能简单地确认设计对象和数据文件的对应关系。
- 设计流程很复杂,可能包括不同厂商的多个工具,版本控制通常不是这种异构流程的一部分。
- 硬件工程师通常不如软件工程师熟悉命令行工具的使用,尤其是考虑各种各样神秘的可选项。
数字前端设计工程师,因为他们的大多数设计数据是 Verilog 或 VHDL 文本文件,所以大体上可以适应软件技术所采用的数据管理。但是,其他的设计流程,例如模拟/混合信号设计,全定制版图以及印刷电路板设计,往往很难采用 SCM 系统和技术来进行设计数据管理。一个硬件设计数据管理系统在满足数字前端工程师、固件或软件开发工程师对文本为主的数据管理要求的同时,也要考虑其他工程师使用图形编辑器并生成大量二进制文件的要求。
由于设计复杂度成指数的增长以及市场窗口越来越窄等几方面的因素,硬件设计团队的规模不断增大,另外,由全球化所带来的日益激烈的竞争带来的对最好的工程师的需求,而不论他们身在何处。。设计流程分成很多阶段并且涉及各种工具,如用文本处理器制定设计规范,设计和功能验证、逻辑综合、时序和功耗分析,版图实现等等。不断生成的形式多样的数据被要求跨地区,跨平台的共享,包括各种操作系统如 Unix、Linux 和Windows。随着设计日趋复杂,设计团队日益增大,以及全球化所要求的紧密合作,采用版本控制和数据管理的解决方案变得日益重要。
图1 设计数据的宽广范畴
团队设计数据管理包括分享已经完成的设计数据以及保持正在开发数据的独立性。为了达到这个目标,通常采用预先定义好的流程来把趋于完成的设计数据从隔离的开发区拷贝到共享的主设计库。一个典型的管理和分享设计数据流程如图2 所示。
图2 传统的团队设计技术
每个设计者经常保持设计数据备份,版本控制只能依靠随意的命名习惯。很快,设计数据库中就会出现各种凌乱的单元,分别被命名为 “Layout-4”或“Schematic-Jan-14-2209”。各种改变往往由项目经理或主管进行手工记录,交流通常是通过开会或发邮件进行。因为每个人都要共享设计数据,访问授权很难控制,经常是依靠个人诚信。最终,随着各个项目关键结点的来临,整个项目的数据备份成为各个项目关键结点备份的汇总备份。
当设计开发是分散在不同地点时,因为距离、时区、语言的差异,设计数据的管理和交流就变得更加复杂。一种典型的解决方法就是把设计按地域分块,每一个子块在同一个地点完成。不同地点之间的数据分享依靠周期性的数据同步实现,一个流行的应用工具“rsync”可以在两个地点之间同步设计数据的变化。
采用这种传统的合作方案,项目的开发周期和质量严重地依赖于人的素质。这种方案可能适用于一个老练的工程师所组成的小的设计团队,但当设计团队规模变大后,就不可避免地会产生意外事故。用户可能会在拷贝他们自己修改完成的数据到主数据库时,不小心覆盖了别人的设计数据。层次化的拷贝,尽管很方便,但更容易带来灾难性的后果。因为没有版本控制,设计修改可能会永久性地丢失,或者需要耗费大量时间从备份中恢复。当设计数据的覆盖没有被检测出来而项目数据又拿去代工制造则可能会带来更大的问题。这种错误会迫使设计团队进行代价昂贵重新流片。
设计师不得不十分小心他们所做的修改和删除,这将浪费他们宝贵的设计时间。每个人的设计库因为保存了多个备份版本变得杂乱且主设计库也容易积累一些无用的单元而需要定期清理。仿真和验证的结果也会因为中间阶段某些共享数据的改变而受到牵连。再加上不同地域和时区的影响会使得解决问题的效率更加底下。
最后,数据管理系统和方法学的缺失会给管理团队带来无法追查设计责任和修改查重的恶果。管理者将背负类似于守门员或记账员的沉重负担,而这些往往采用软件自动管理会效果更好。为了减少错误和改进职责,往往要增加额外的签收步骤,这使得开发速度降低,浪费项目经理和主管更多宝贵的时间。
合作进行混合信号设计开发与合作进行软件开发有很多类似之处,但也存在一些截然不同之处。
- 设计师面对的是设计库、设计单元、原理图和版图等抽象级别,而且往往是通过设计工具才会访问到用以存储设计数据的物理文件。
- 设计工具在产生设计数据的同时会生成不需要进行管理的很多临时文件,而最终用户往往不知道哪些文件需要管理,哪些文件不需要。
- 一个设计流程包含多个复杂的工具,甚至有时来源于不同的厂商。每个工具会以不同的方式管理数据。
- 象原理图或版图编辑器所生成的设计目标常常是以一组文件的格式保存,而且通常是由设计工具自动进行命名。
- 设计数据主要是二进制文件而非文本,数据文件往往非常庞大。
- 设计师通常是以层次化的方法进行设计,而这些在文件系统的存储上却无法反映出来。
- 文本文件可以同时修改并合并,但对原理图或版图的二进制数据文件则不适用。因此,对模拟或全定制设计往往不鼓励并行设计。
- 设计师常常与 EDA工具流程打交道,不习惯像软件开发者那样采用命令行操作。
类似于软件管理 SCM 系统,硬件设计数据管理系统必须提供以下支持:
- 针对处于同地域或跨地域设计团队成员提供有效的合作方法
- 版本控制
- 设计发布管理
- 变体系统开发
- 安全和访问授权控制
- 历史和正在发生的修改的审查跟踪
- 问题跟踪的集成化
同时,它还必须满足一些额外的要求
- 与设计流程紧密集成,使得用户能像操作设计目标一样运行数据管理命令。
- 能让正在操作的设计进入锁定模式,防止其他人并行进行编辑。
- 最小化占用磁盘空间,减轻数据备份的负担。
- 管理好由多个文件集合所代表的的设计数据组成成分。
- 支持共享的工作空间,可以使多个(通常是版图)设计师都能修改和验证设计。
- 能确定显示例如原理图和版图所产生的图形化设计目标的变化 支持层次化设计
- 支持跨区域的多个设计项目以及 Process Design Kits(PDK)的重用。
综上所述,一个有效的设计数据管理系统必须同时方便项目管理者和设计师使用。设计师已经在使用很多工具和复杂的设计流程。如果设计数据管理系统要增加额外的障碍和开销,就不太容易被设计师接受。
当一个团队准备开始一个新的项目时,常常会选定一个项目管理员。这个项目管理员会开始准备用一个 DM 系统来进行项目管理。在系统管理员的帮助,他们会为新项目选择合适的系统硬件和磁盘存储空间。这些确定之后,项目管理员会启动必要的设计管理软件,配置并设立好一个项目数据库。项目数据库是一个中央的存储区域。在这里,保存着与该项目各种数据属性有关的各个修订版本。通常,项目数据库由 DM 服务器的“精灵”(daemon)过程来管理,该进程则由项目管理员来启动和维护。因此可以避免意外损坏或非法访问。设计者是用数据管理(DM)的客户端,通过 DM 服务器的 “精灵”来连接到项目数据库的(见图3)。
图3 项目数据储存库
如果项目设计团队由分散在不同地方的设计者构成,将需要使用远程设计管理软件来连接到中央项目数据库,这样,所有的项目设计者都能够访问到项目数据。项目管理员,可以通过远程项目管理员的帮助,来设置对中央项目数据库的访问权限。
项目管理员的其他任务还包括:为不同的设计者分配不同的用户角色,为他们分组,设置自动提醒的触发机制,添加共享的 IP 和 PDK 库的指引,将已经完成的项目数据导入项目数据库。导入数据既可以使用批处理命令也可以利用数据管理软件进行手工操作。
在每个用户开始他们的工作之前,他们需要有一个正确配置的工具环境。项目管理员可以生成供设计团队设置工作环境的设置批处理命令和工具配置文件。然后将这些配置文件放入到项目的根目录中,采用数据管理系统来存储和发布这些文件是一种非常优秀的方式。它可以确保每个设计团队的成员,无论是本地的还是远程的,均采用统一的环境设置,因为它们本身就是项目数据设计的组成部分。将这些配置文件作为项目的一个组成部分来管理,使得这些配置文件也包括在最终的项目发布数据中,,还可以在整个设计过程中提供对这些文件所做修改的全面追踪。
当项目管理员完成了这些任务之后,项目团队的成员就可以开始工作了。这些用户需要一个环境和磁盘空间来生成、存储和开发他们的设计数据。这个空间往往被称为砂箱或工作空间。这个工作空间一般放在本地磁盘上,例如是用户的登录目录或者是项目管理员专门为该项目所设置的一个磁盘。为了能访问到项目数据,用户必须先把他们的工作空间与项目数据库连接起来。这个工作通常是通过数据管理设置命令来完成的(见图4)。
图4 用户空间
连接到项目数据库之后,用户就可以申请有关的项目数据,包括,必要的环境设置和
工具配置文件以及已经存在的一些项目数据。然后,他们就可以开始配置环境,启动工具,生成设计数据来开展他们的设计工作。在他们使用与设计工具集成在一起的数据管理系统来生成和保存他们的设计数据之后,他们可以把设计文件导入项目数据库,让其他的设计团队成员来共享。当这项文件存储于项目数据库中,其他用户可以参考,导出它们,并进行修改和增加。所有数据导入项目数据库会生成一个新的数据版本,分配到一个新的版本号、作者名称、日期、注释,以及其它的便于数据状态跟踪的各种关键属性。这大大方便了全体成员去跟踪每一个用户的进度,将他们的设计文件合并,或者退回到某个不完善修改的前一个版本。对每一个步骤的完整的审核轨迹使得项目管理员可以方便地跟踪整个项目的进度。
尽管他们只是工作于设计的某一个模块,但每个设计者的工作空间常常保存了一个项目最新版本的所有数据,因为他们需要所有相关联的配置文件等等来完成仿真分析或验证。当设计团队的规模增大时,工作空间就会占用过多的网络存储空间。由于经常多次备份完全相同的数据,系统备份工作也要浪费更长的时间。数据管理系统可以允许用户在工作空间中采用符号链接到一个镜像或缓存区域来解决这一问题。一个用户的工作空间只保存他们所导出的要修改的数据文件的物理拷贝,而其它所有的文件只是符号链接。这样可以极大地减少网络存储资源浪费,提高备份工作效率,同时也加速了工作空间的生成和更新。因为只需要产生符号链接,而不必拷贝文件进入用户的工作空间。
在没有数据管理系统时,全球化的设计团队尝试了用各种变通的方法来管理和共享他们的数据,包括采用远程文件装载,文件传输协议(FTP),镜像软件,电子邮件的附件,甚至邮寄一个磁盘等方式来相互共享数据。采用这些方法会形成一个迟缓且易于出错的特别繁琐的流程。采用远程文件装载,仅仅用工具打开一个数据文件也会花费几分钟的时间,其他的问题还有在每一个地点都有相同数据文件的多个拷贝,很容易让人混淆哪一个是所谓的“黄金拷贝”,而且经常导致人们意外地覆盖掉别人的数据。
图5 专门合作
在这种专门的系统中(见图5),定期看到其他用户的改动是困难的。用户只有等到数据的拷贝送过来,才可以在自己的地点看到它们。这种贫乏的数据管理系统必然导致时间的浪费,工作的重复,事实上无合作可言,可能推迟整个项目的完成。
引入一个良好的数据管理系统,上述问题就迎刃而解。数据将在本地存储,而不是用远程文件装载系统,这使得数据访问的响应变快。所有的团队成员保存并导入他们自己的数据进入中央项目数据库,并作为一个新的版本。而项目数据库允许团队中的所有用户,无论是本地的或是远程的,均可访问到统一的“黄金拷贝”数据,从而消除混乱(见图6)。
图6 数据管理系统的流畅合作
为了让所有用户获得新的数据版本,数据管理系统负责发布正确的版本给本地和所有远程的工作点。用户感受不到别人所做的改动,因为他们有自己的砂箱/工作空间。每一个用户既可以利用数据管理系统,在他们认为需要的时候,将上次更新之后,别的用户所做的改动导入(‘pull’)他们的工作空间,也可以选择利用数据管理系统自动地将别人的改动实时或定期地推入(‘pushed’)他们的工作空间。这两种更新方式的选择取决于用户是希望有一个稳定的工作空间还是希望与别的开发者保持同步。数据管理系统常常允许数据管理员在远程的工作点设立一个缓存或代理的服务器来提高性能。在远程工作点的用户可以连接到缓存服务器来获得文件的新版本,不需要返回主服务器来获取数据。缓存服务器提供相同的访问效果,就像用户在主服务器本地所看到的一样。另外,新的文件版本只需要从主服务器向远程的缓存服务器传送一次,它就可以服务于该远程工作点的所有用户,因此优化了各个工作点之间带宽的使用。缓存服务器也可以采用定期的导入(‘pull’)或实时性地推入(’push’)方式来自动更新。当远程工作点的用户有需要时,最新的数据文件版本随时可用。
数据管理系统可以提供一些附加的功能来增强合作性。设置通知功能,当数据准备好的时候提醒用户。这些提醒对那些想知道别的用户导入了新数据的远程用户而言十分有价值。尽管电子邮件通知也很诱人,但它们却不是很有效。因为大量的电子邮件常常将用户淹没。通常,数据管理系统将提醒图标放在用户的图形设计界面之中,这将更加有效而且可以实时进行更新。因此,用户总是可以获得最新的项目状况。用户或设计经理们也可以生成各种各样的报告来监控项目的进度。即时信息是数据管理系统所提供的另一种有效的手段,可以让全球化的用户之间实时地对最近的设计修改进行良好地交流。
数据管理系统克服了传统方法的缺点,可以让设计师团队更好地工作和合作。数据管理系统让设计师独立开发设计并在需要时有效地共享设计修改而不会相互影响。另外,所有的修改均可跟踪且可以容易回退一个版本。如图7 所示是一个典型的数据管理系统流程。
图7 数据管理的团队设计
每一个设计师都有一个由数据管理系统生成的独立的工作空间,其中包含了项目最新版本的所有文件的拷贝。为了节省磁盘空间,工作空间中可以采用符号链接到缓存服务器。当用户想要修改一个设计目标时,他们可以用数据管理系统导出该目标,使得它在用户工作空间中可写,同时在项目数据库中将该目标锁住。这样可以防止别的用户意外地修改同一目标。设计师可以在自己独立的工作空间修改和验证设计。因此,不会影响到别人的设计,也不会被别人的修改所影响,一旦修改完成,而且经过验证成为设计师认可的最好结果,该目标可以导入项目数据库。这样就生成了该目标的一个新的版本,同时释放该目标的锁定状态。其他的设计师现在可以根据需要获得刚刚导入的修改。项目负责人可以查询数据管理系统获得对整个项目所做修改的全部列表,也可以根据需要恢复某些修改到前一版本。采用数据管理系统的流程为设计师提供了一个可控且稳定的开发环境,可以防止数据丢失,明确责任,在需要时也容易实现数据恢复。
数字设计师往往直接与 RTL 源文件打交道而且知道什么文件需要管理。采用数据管理系统后,设计师在日常工作流程中所要做的唯一变化就是在他们完成文件编辑后,要做一次文件导入,同时再做一次更新以便同步别的设计师所做的修改。
管理模拟和定制设计的数据则要复杂得多。因为设计师常用的图形化工具,例如原理图或是版图编辑器,它们产生的文件被存储在设计库中。设计师工作的对象是高度抽象的设计库,设计单元和设计视图(Views),他们不必知道这些工具所生成的物理文件是什么。
项目规划师根据芯片要完成的功能开始定义设计指标。这些设计指标一般采用 PC 机或苹果机标准的办公文件格式存储,会随着项目开发的进展而调整和共享。这些文件最好采用数据管理系统来管理,以便共享并让每一个设计师获得最新的版本。一旦规划阶段完成,设计师就可以为该项目开展实际的电路设计。
模拟电路设计师一般是用原理图输入工具来生成电路的。在生成原理图过程中,他们可以保存原理图,并在对原理图的质量满意时,将它们导入项目数据库。数据管理的命令应该在设计流程中直接调用,从而保持流程的顺畅并提高规范性(见图8)。
图8 集成在设计游览窗里的数据管理指令
设计师会连续不断地修改原理图并生成新的版本。如果它们所做的新修改不成功,他们总是有机会退回到前一个版本。数据管理系统让设计团队的每一个成员都能看到别人所完成的设计,在保持高度一致的前提下实现全面合作。
设计进程中一部分工作是对原理图进行仿真,以确保它们满足设计指标。电路设计师会采用各种仿真平台和激励文件对电路进行测试。所有这些文件可以用数据管理系统做版本维护。在测试和仿真过程中,设计师可以采用不同版本的文件对原理图在不同情况下的仿真进行切换。这可以大大简化测试的进程,因为设计师可以采用统一的测试方法。采用批处理命令或某些专门的数据管理命令来选择仿真平台和激励文件,设计师可以成功地让各种边界条件电路同时仿真,避免了设计师一个一个地启动新的仿真分析。
当电路仿真完成后,设计师要检查仿真的结果。仿真结果的输出文件一般都相当大,是否将这些文件放入数据管理系统控制则需要设计师的慎重判断。通常,大多数的设计师不会将这些仿真结果文件放入数据管理系统,因为它们太大而且容易重新生成。他们一般会在设计工具中看这些结果,然后做一些数据波形的截图,添加一些注释,存储出一个图像文件,再把它们导入数据管理系统供设计团队分享。
当电路设计师认为他们的原理图满足设计要求时,他们会将原理图传递给物理版图设计团队。采用数据管理系统,电路设计师会标记相应版本的原理图给物理设计师们使用。物理设计师会收到原理图已经准备好的通知。那些标记好的原理图就会传到他们的设计环境中,从而实现又一次的无缝连接(见图9)。
图9 用标签(tag)与设计状态进行通讯
现在,版图设计进程就可以开始。像电路设计师一样,物理设计师也会采用数据管理系统对他们的版图开发工作进行版本管理。由于使用了数据管理工具,电路设计师可以观察和跟踪版图的进展。因为允许团队内部全面的合作而使得工作进程更加有效。物理设计师会运行设计规则检查(DRC)和版图/原理图对照(LVS)检查,当这些检查成功后,版图可以标记为 DRC/LVS 通过。当版图完成后,版图设计师可以对它进行标记,例如‘layout-done’,并通知电路设计师来检查版图是否还有缺陷。采用数据管理系统,在整个设计流程中,设计的状态,检查以及一些关键的修改均可以容易地实现。
如果电路设计师提出要求,物理设计师也可以对设计做寄生参数提取。寄生参数提取使得电路设计师能够考虑物理版图的特性对电路重新仿真,以确保最终的结果满足设计指标。同样,通过数据管理系统,寄生参数提取的输出可以被管理、标记,并通知到电路设计师,表明电路已经可以重新仿真和检查了。根据检查结果,对原理图会做新的修改,一个原理图的新的版本又会生成。整个设计进程将重复它自身的标记、通知等,直到设计工程师认定该部分全部完成。
当所有的设计单元均完成并做出标记后,设计团队可以利用数据管理系统的审核信息对项目进行检查。当检查通过后,项目数据就可以交付掩膜生产。所有用于掩膜生产的设计输出文件也将会采用数据管理系统统一管理。
在项目的设计和测试阶段,设计的问题和改进的要求会不断提出,需要对设计进行相应的修改并把该修改通知给设计团队的其他成员。这个过程通常被称作工程更改指令或称为 ECO。
一个 ECO 过程包含很多特别的信息,比如由谁做了什么样的修改,要描述是哪方面的问题或改进,涉及到哪些文件,修改发生的日期和时间,会涉及到哪些人。采用 ECO,可以使得涉及修改的发生、实现、测试和检查,从开始到结束,给团队提供一个良好的跟踪方法。
采用数据管理系统软件,设计团队可以产生并跟踪他们的 ECO。数据管理系统可以提供以下一些基本功能:
- 文件版本来存储实际的修改
- 历史记录,包括作者、日期、修改注释以及重要提示
- 文件记号来标注修改过的文件
- 通知团队成员进行更新
另外,第三方的缺陷跟踪软件也可以集成到数据管理系统,使得设计师在做 ECO 时可以使用传票功能。这些传票功能可以从开始到结束,完整跟踪工程更改。
一个 ECO 通常从电路设计师更改原理图或模型文件开始发起。采用数据管理系统,设计师导入他们的修改,添加上有关修改的注释,并标记他们已经可用了。一个 ECO 的传票就产生了,通知功能将发送给物理设计师,让他们注意新的 ECO。
数据管理系统提供几个功能来帮助物理设计师审核这个 ECO 并决定如何相应修改。设计师根据包含关于修改的重要标注的版本管理历史来开始更新。然而,依赖电路设计师标注的方法一般效率不高且容易出错。所有的数据管理系统提供快速和准确的高亮显示来比较两个版本的文本文件的不同,这对于基于文本格式的 ECO 工作是极为有用的。
对原理图或版图的修改用手工来确定就更难了,有些关于属性的修改甚至不可见。在生产制造之前对所有的 ECO 进行检查是必不可少的。但设计周期的紧迫又使之很难做到。有些数据管理系统可以提供包括原理图或版图在内的图形设计目标各个不同版本之间的比较。层次化比较还可以找出在所有设计层次上所做的修改。这个功能使得设计师可以确保项目中的所有 ECO 都在版图上实现并得到确认。对于版图所做的修改可以快速地检查,而不必通过费时的流程去生成 GDSII 文件再做版图异或比较(见图10)。
图10 ECO改变用电路比较特点作高亮显示
采用这些数据管理功能,设计师可以容易地发现,解决和实现修改。使用数据管理系统和 ECO,项目整体的状态可以得到始终一致的修改和跟踪。当项目趋于结束时,所有ECO 必须完成。要做一次专门的检查确保所有的 ECO 传票已经完成并结束。项目此时就可以准备生产制造了。
当一个项目完成时,设计团队应该捕捉下用于最终产品制造的所有设计数据文件的版本。采用数据管理系统,他们可以把所有文件的当前版本做一个有意思的命名标记,例如“tapeout_1.0”,并为当前配置记录下一个快照(snapshot)。这个快照可以捕捉到项目在关键时刻下的情形,并把这种情形记录到项目数据库中而不必拷贝所有的项目文件。
利用快照,产品制造数据可以在任何时候由数据管理系统重新生成。这使得设计团队成员可以清空他们的工作空间,释放磁盘给新的项目使用。最后,通过利用数据管理系统和快照,设计数据可以更加方便地存档。
在新产品的测试过程,可能会发现问题,版本的更改和变异就会发生。数据管理系统可以方便地跟踪这些更改。设计团队可以继续在原来的项目数据库中工作。为新的变异做相应修改,当完成时,再生成一个新的快照。
在新产品的测试过程,可能会发现问题,版本的更改和变异就回发生。数据管理系统可以方便地跟踪这些更改。设计团队可以继续在原来的项目数据库中工作,为新的变异做相应修改,当完成时,再生成一个新的快照。
设计公司总是尝试在维护原有产品的基础上推出新一代的产品。如何在相同的数据基础上,既能对已有产品做一些小的维护,同时又不影响开发新一代的产品,将是一个挑战。数据管理系统有两种方法可以应对:拷贝或分支。
拷贝方式是让项目管理员生成一个新的项目数据库,就像一个全新的项目。项目管理员把当前产品的快照数据拷贝导入到新的数据库中。一旦数据导入新的项目数据库,设计团队就生成新的工作空间开始新的产品设计。采用这种方法,任何对已有产品的维护修改只发生在原有项目数据库中,而新开发的项目是与之隔离的。尽管这可以保持两者之间的独立性,但也有它不足的地方。第一,数据在两个项目数据库中重复保存,浪费磁盘空间。第二,过去开发过程的历史记录不会带入新的项目数据库。第三,对新的和维护项目数据库共同部分的修改需要做两次,可能会忘记其中的一次。
分支方式与拷贝方式不同,将继续使用同一个项目数据库。采用这种方式,新一代的产品开发将在给现有产品保存一个快照之后的所谓“树干”或“主”分支的基础上继续展开。何对现有产品的维护将在源于快照的分支上进行。另外,任何所做的修改如果需要成为新开发产品的一部分时,可以合并入主开发树干。这种方法提供了几个方面的优点:第一,它只采用一个项目数据库,不需要额外的设置;第二,任何新、旧产品共有的数据始终保持相同和共享,避免重复。采用分支方法,要求设计团队的所有成员对如何在分支上生成和合并数据非常熟悉。通过培训,用户可以掌握和利用好分支方法,并获得一个有效的开发手段。
数据管理系统给项目经理提供版本跟踪和变异的控制手段。采用数据管理系统的审核功能,他们可以在项目完成后,方便地发布版本,并一直跟踪各种问题修改变更的要求。
采用自由、放任的发开方法,对于一组在一起工作的有经验的工程师小的设计团队或许是可行的。但当设计团队更大,水平高低不一,跨越不同时区的情况下,出现意外和错误就会增加。一个项目管理员要制定规则,谁能做什么的,并通过数据管理系统自动保证规则执行。这些规则应该既能够防止意外又不会过于麻烦。
一些典型的例子如:
- 不允许版图工程师修改原理图但可以有读访问权限,反之亦然。
- 只允许合同工阅读和修改与他们所做工作有关部分的设计数据。
- 根据设计师的经验和在项目中的角色,用数据管理系统控制他们能做的事情。
一个用户能访问哪些资源通常取决于以下两方面的因素
- 该用户是做什么的?例如:模拟设计、数字设计、版图、功能验证或版图验证等等。
- 用户的角色,经验和职责是什么?项目管理员、经理、项目小组长、专家、新手、合同工等。
在数据管理系统中,对于读/写权限的解释与一般的操作系统是有一些微小不同的。在数据管理系统中的只读权限表示用户可以把设计目标拷贝到自己的工作空间,打开并浏览,但不能导入新的版本回项目数据库。这并不防碍他们在自己的工作空间改变文件的读/写权限并对该设计目标进行修改。没有写权限,该用户不能将修改导入项目数据库,从而防止该用户影响整个设计。
在 Unix/Linux 系统概念下的用户、组、读写权限对数据管理系统也是适用的。黄组(YGroups)概念可以定义组权限,防止一组成员修改另一组所生成的设计数据。但该概念过于简单化,表现在以下两个方面:
- 依赖于每个用户分配权限。如果用户不小心设错文件的权限,别的任何人都可能对之读或写。
- 对文件的修改有很多不同的含义。你可以修改它的内容,改变它的授权属性,甚至删除整个文件。采用数据管理系统,你可以有更多的操作,比如,标记、分支、解锁、版本回退等等。因此,你要更细化地定义所谓的读/写权限。
采用数据管理系统,项目管理员可以产生更种角色,例如:管理员、经理、工程师、新手等。并对每个用户定义他们能运行什么命令。另外,项目管理员要确保在每一个新的设计目标生成时要自动设定正确的权限,而不能依赖于让每一个创建该目标的用户去做设定。
访问的规则和角色必须得到全体成员的同意和认可。他们会给每一个成员提供正确的访问权限。因为数据系统能够提供版本控制和错误回退,所以最好能提供多一点的灵活性而不要因为控制太多给开发带来束缚。项目管理员可以以此为标准去设置数据管理系统自动控制授权。
当做新的产品开发时,利用以前开发好的大量资源或经过测试的知识产权(IP)来缩短开发周期是十分有意义的。IP 既可以是内部开发的,也可以从外部获得。IP 重用的一部分挑战是团队是否有能力对它们进行正确的宣传,打包和分类,而使得公司内其他团队都能容易地找到和使用它们。
数据管理系统的 IP 管理和重用功能可以使得 IP 共享更加成功和有效。IP 数据库管理员功能为 IP 开发者更新、打包、归档,发布和分配 IP 给最终用户提供有力的工具(见图11)。
图11 管理与重用IP
IP 开发者和数据库管理员,采用数据管理软件,开发,归档和测试 IP 数据,从而制作并管理描述 IP 指标的数据参数手册。使用 IP 管理软件,对 IP 进行打包和发布,供内部或者外部客户使用。
客户在 IP 管理的界面,通常是一个网页,能搜索、浏览和查看可用的 IP。当发现满足要求的 IP 后,最终用户可以订购 IP 并把它导入他们的设计环境中。数据管理系统保证IP 数据无缝地导入项目并能被立即使用。IP 管理软件让 IP 发布者能跟踪哪些用户使用这个 IP,并在 IP 做了改进的缺陷修复后能方便地向最终用户发出提醒。当需要时,新版本的 IP 可以被导入(见图12)。
图12 搜索适当可用的IP
除 IP 数据库之外,项目设计还要访问包含有产品开发所需要的标准单元和 PDK 等工艺元件。与 IP 类似,这些库也需要在项目团队中发布、分配和共享。这些库可以用 IP 管理软件来管理或者也可以存储在数据管理库中让 CAD 团队来管理,采用数据管理索引,这些元件库可以被所有需要的项目使用。这给 CAD 团队和项目设计团队保持同步,并随时跟踪更新正确的元件库版本提供了一个好的方法。
软件设计团队早就认识到没有 SCM 系统他们什么也干不了。当混合信号设计团队变大和广泛分布后,采用设计数据管理系统的需求也增加了。
设计团队发现在有效地利用数据管理系统之后,团队的生产力和管理效率都提高了。昂贵的重新投片的可能性显著减小。数据管理系统的投资回报率通过以下几个方面得到实现:
- 在同一个地点或世界各地的工程师之间实时交流和合作,减少昂贵和费时的会议和容易出错的电子邮件通讯。
- 防止数据丢失,易于从错误中恢复。 自动的放错记录和质量管理功能,把经理和工程师从繁杂的任务中解脱出来。
- 快速、直观的修改检查。
- 全公司内的有效的 IP和 PDK重用和分配。
- 减少 EDA支持服务的要求,因为整个流程顺畅,数据自动共享。
参考文献
- Evaluating a Design Data Management System, Scott Woods, IC Journal, http://eejournal.com/archives/articles/20090224_ddm/
- Ravi Poddar and Srinath Anantharamon, Multisite, collaborative hardware design calls for HCM, EE Times Design, http://eetimes.com/design/industrial-control/4006392/Multisite-collaborative-hardware-design-calls-for-HCM
- Grego Sanguinetti, Design Data Management Improves Productivity – Even for Small Design Teams, http://chipdesignmag.com/display.php?articleId=2275
- Tom Dewey, Implementing a Team Design Environment, http://chipdesignmag.com/display.php?articleId=2353