当前位置: 代码迷 >> 综合 >> Protel 99SE Error: Net already exist问题分析和解决方案
  详细解决方案

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

热度:54   发布时间:2024-01-15 04:49:46.0

 

提前声明一下: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等等)采用不同的命名即可

  相关解决方案