Protel 99SE Error: Net already exist问题分析和解决方案

2019-07-14 12:46发布

  提前声明一下:Protel 99SE存在bug,接下来详细解释: 大家在使用Protel 99SE导入网表(Load Nets)时,是不是经常出现Error: Net already exist的错误 Protel层次原理图在生成报表(Create Netlist)时,Net identifier Scope一般选用Sheet Symbol / Port Connections  当出现Error: Net alreay exist时,我们要看错误提示对应的左边Action是什么 我们根据左边Action的提示分情况讨论:   一、如果是Power port 例如是:Add new net +5(或者是:Add new net GND)  这时候我们不要急于去想是不是原理图画错了,难道Protel 99SE有bug也要怪我们吗?! 把生成的网表(.NET)打开,按ctrl+f,查找+5 我们会发现有下面的情况出现: ( +5 D505-A ) ( +5 C602-1 C603-1 J101-1 J101-4 J103-13 ) +5有两套连接,难怪在Load Nets时Protel会报错呢 大家如果细心的话,会知道Power port的作用域(scope)是整个项目(project)。 Protel在生成报表时,却把Power port根据Sheet而分开了!这不是自己跟自己过不去吗?! 这就是bug的所在! 解决方法便是,手工修改.NET文件,将这些分开的电路整合在一起,修改后应该是: ( +5 D505-A C602-1 C603-1 J101-1 J101-4 J103-13 )   二、如果是自定义的Netlabel 例如是:Add net net Key1 我们依然打开网表,会发现: ( KEY1 J101-17 U101-33 ) ( KEY1 J701-17 S700-2 ) 可以看出,Protel依然是按sheet将KEY1分成了两块电路。 我认为这也是Protel的一个bug,因为采用Sheet Symbol / Port Connections生成网表时,自定义的Netlabel的作用范围应该是local的,只在本sheet内有效,所以即使再执行一次 Add new label KEY1也不应该发生Error: Net already exist的错误。 解决方法:1、如果你本身就不想让这两块电路相连(例如有些人想在一块PCB板中生成两块互不关联的电路板,这两块电路板将来采用排线相连),唯一的方法就是:修改Netlabel,在同一个项目中,自定义的Netlabel在一个sheet中出现,就不能在别的sheet中再次出现。可以在Netlabel前加上sheet的编号,例如修改后变成: ( KEY1 J101-17 U101-33 ) ( 7_KEY1 J701-17 S700-2 ) 2、如果你想让这两块电路相连,即自定义的Netlabel的作用域是全局的,解决方法就简单多了 那就是在生成网表时,Net identifier scope选择Net labels and Ports global,这样所有问题都OK了 采用这种方法的缺点是:削弱了层次原理图设计的层次性   上面费了那么半天话,实际上就是一句话: Net identifier scope选择Net labels and Ports global,自成一体的独立电路中的所有Net identifier(包括Power port,Netlabel等等)采用不同的命名即可