AltiumDesigner多人协同PCB设计-1-AltiumDesigner多人协同PCB设计 AltiumDesigner多人协同PCB设计-2-一应用背景 随着PCB设计的规模越来越大,以及各模块分工越来越细致,为了提高设计的效率和可靠性,多人协同设计作为一个有效的解决方案受到众多电子工程师的关注。 一个复杂的电子系统往往会由电源模块,RF模块,高速数字电路模块,模拟电路模块等等不同领域,具有不同特点的部分组成。传统的设计流程是由一个工程师负责整块PCB设计,各模块的设计是采用串行的工作流程,这样做首先设计周期较长,其次一个工程师难以达到对各个领域的电路设计都有丰富经验,往往会忽略一些问题,为设计带来隐患。如果能够将各模块分别交给该领域的专家进行并行设计,既可以大大提高效率,又能够充分发挥每个人的专长,为设计的可靠性带来保障。 ALTIUM DESIGNER作为一个主流的EDA工具,从R10版本开始全面支持多人协同PCB设计,为广大用户带来便利。 二基本原理 ALTIUM DESIGNER的多人协同PCB设计功能是一个低成本解决方案,无需用户为此付出额外代价。其基本原理是利用版本控制和差异比较的功能,将不同用户的设计放在一起进行差异比较,对差异部分进行选择性的合并,删除,修改,最终达到合成一体的目标。 图1 如上图,两个不同的用户分别从版本控制的数据库中检出原始设计REV1.0(初始模块划分,布局等等)。 图2 用户分别在自己的工作环境中进行各自的设计。 AltiumDesigner多人协同PCB设计-3- 图3 用户A完成自己分担的部分工作后,将设计检入回数据库,生成新的版本REV1.1. 图4 图5 用户B完成自己分担的部分工作后,检测到数据库中已有新的版本,通过比较和合并,将用户A完成的版本REV1.1合并到自己当前的设计中。 图6 用户B得到合并后的最终设计,检入数据库,更新版本,得到最终版本REV2.0 AltiumDesigner多人协同PCB设计-4-三操作步骤 1.设置version control 如前所述,AD的多人协作PCB设计是基于版本控制以及差异比较功能来实现的,所以首先要做的就是进行版本控制功能的相关设置。 AD已经内嵌了一个SVN模块,选择built‐in Subversion即可使用。当然,用户还可以根据自己的需要选择自己的SVN软件或者CVS软件,AD也提供了相关的接口。(图8) 选择了version control的功能模块以后,还需要指定一个数据库空间,用来存放那些under version control的设计数据。(图9) 用户可以点击create new新建数据库(图10),也可以点击connect to连接已有的数据库,目标路径可以是本机,也可以通过网络连接到其他目标(图11)。需要注意的是,在选择connect to的时候一定要设置有效的SVN控制下的数据库目录,才能有效连接,此时可以点击test进行测试。 图7 图8 AltiumDesigner多人协同PCB设计-5- 图9 图10 AltiumDesigner多人协同PCB设计-6- 图11 以上步骤设置完成后,version control功能即可正常使用。 将一个新的project加入under version control的数据库(图12),也可以将数据库中已有的数据移出,不再进行版本控制: 图12 添加和移除可以对整个project folder操作,也可以单独对project下面每一个文件单独操作。加入数据库的设计数据可以通过check out的方式检出到本地(图13),进行修改,修改完AltiumDesigner多人协同PCB设计-7-成后通过commit的操作检入回数据库,得到新的版本号(图14)。 图13 图14 有关版本控制的更多详细操作可参阅ALTIUM其他资料。 2.PCB Collaboration数据库设置 AD的PCB collaboration是基于版本控制和差异比较来实现,所以这里需要设置一个under version control的数据库作为差异比较的数据源头。(图15) AltiumDesigner多人协同PCB设计-8- 图15 3.分工 作为演示,本例仅针对图16所示的部分PCB进行示意性分工协作。初始状态为U1,U2,U3三个器件尚未连线。计划分工让用户A进行U1和U2之间的连线,用户B进行U1和U3之间的连线: 图16 首先将初始状态的设计数据add to version control,建立初始版本。 用户A和用户B分别对初始版本进行check out,将初始设计数据检出到自己的目录下(图17)。 AltiumDesigner多人协同PCB设计-9- 图17 用户各自在自己的检出目录下打开文件,看到初始状态的设计,此时点击AD主窗口右下角的PCB按钮进入collaborate设置(图18): 图18 每个用户可以为自己手工划定一块工作区,这个工作区的划定信息会实时更新到图15所述的under version control的数据库中,因此用户在联机状态下可以实时的看到其他用户划定的工作区,避免区域冲突。如图19和图20所示,绿色区域为当前用户自己的工作区(mine),而黄色区域为另一个用户Donny (Donny所在的计算机名为DHOU)所划定的工作区。 用户各自在自己的工作区进行工作,此时用户并不能实时的看到其他用户的工作情况,所以工作区的划分是避免冲突的有效方式,应当得到保证。 AltiumDesigner多人协同PCB设计-10- 图19 图20 AltiumDesigner多人协同PCB设计-11-当用户A完成自己的设计确认无误后,向设计数据库检入,生成新的版本。 图21 4.协作 此时用户B在工作区暂时看不到变化(图22)。 但是如果用户B处于联机状态(即与图15所述的under version control的数据库保持连接),首先会发现自己的设计文件后面version control的状态标记发生变化,显示与当前数据库中最新版本有冲突(图23)。 其次在collaborate窗口(图24)中可以看到当前的version control status发生了变化,显示merger required, head version已经由原先的版本2变成了版本3,并且可以看到是被用户donny 图22 所更新。 此时用户B可以点击click to show merge resolution view,观察当前设计与数据库中最新版本有何区别,此时工作区将被划分成若干个CELL,AD会以CELL为单位进行处理。CELL的大小可以自行设置(图24中标记1处)。用户B可以单独选择某一个CELL点击右键选择如何处理(图25),也可以在图24中标记4 图23 处选择自动合并。 AltiumDesigner多人协同PCB设计-12- 图24 图25 AltiumDesigner多人协同PCB设计-13-完成collaboration以后,用户B就得到了合并后的设计(图26),此时可以选择只保存在本地,也可以通过commit操作检入到数据库中,得到最终版本。 图26 四实际案例效果评估 图27 如图27所示四层PCB,设计规模为2000Pin,最初由一人设计需3‐5个工作日,而且普通工程师高速数字电路设计经验不足,对DDR内存部分的PCB设计处理没有信心,担心带来信号完整性和EMC的问题。后来使用AD的多人协同设计功能,将图示绿色区域的数字电路部分划分给专门从事高速数字电路设计的工程师进行并行设计,两名工程师各工作1天,最后合并设计并检查输出,使用1天,一共只需2天就完成设计。提高效率超过50%,并且保证了高速数字电路的性能,消除整个设计中的隐患。