Chinaunix首页 | 论坛 | 博客
  • 博客访问: 293746
  • 博文数量: 59
  • 博客积分: 2021
  • 博客等级: 大尉
  • 技术积分: 491
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-29 09:49
文章分类

全部博文(59)

文章存档

2011年(6)

2010年(11)

2009年(42)

我的朋友

分类:

2009-06-05 17:17:48

提前声明一下: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 99SEbug也要怪我们吗?!

把生成的网表(.NET)打开,按ctrl+f,查找+5

我们会发现有下面的情况出现:

(

+5

D505-A

)

(

+5

C602-1

C603-1

J101-1

J101-4

J103-13

)

+5有两套连接,难怪在Load NetsProtel会报错呢

大家如果细心的话,会知道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依然是按sheetKEY1分成了两块电路。

我认为这也是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 portNetlabel等等)采用不同的命名即可

阅读(1585) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~