一周的阴雨天气刚过,接着就迎来了持续的高温。小P的心里燥热的跟外面火辣辣的太阳一样。虽然办公室内开着空调,还有桌上的小风扇加持,仍然无济于事。
小P作为layout工程师,从业已有5年了。虽然算不上叱咤风云,但也算是身经百战了。可就在刚才,硬件工程师告诉小P,她负责的板子,1.8V的电路不能正常工作。这让小P倍感焦虑。难道是噪声太大,PI没处理好?还是电容的放置问题,亦或是回流太长?小P一边琢磨,一边快速打开文件查看。
这一看,让小P惊出了一身冷汗。1.8V电源是3.3V通过LDO产生的,可文件中LDO的输入管脚并没有跟旁边紫色的3.3V铜皮连接。这一瞬间,小P觉得整个人都不好了!
打开原理图,乍看貌似没有问题。
放大细看,竟然是这样…3.3V没有连上…OMG!
由于格点设置太小(10mil),导致这样细小却致命的问题没有被及时发现。通常的合作模式是,硬件工程师设计并绘制原理图,小P会进行编译并产生网表,然后进行PCB设计。
编译…对了,有做过编译啊,为什么这样的问题没有被发现呢?
小P赶快又跑了一遍,结果,AD给出的Message里,竟然没有任何Error,只是一些司空见惯且看似没有实际影响的Warning。
Update PCB,结果也是很正常的:
No Differences Detected。
小P还是不甘心,打开Warning逐条查看。
果然,这个开路Warning,就隐藏在众多毫不起眼的Warning之中。
总算是找到了问题所在,小P长出了一口气。
可是,对于这样致命的错误,不应该仅仅只是Warning才对啊,它应该定义为Error,甚至定义为Fatal Error也不为过啊,小P这样想着,然后就开始琢磨解决办法。
各种系统设置的查找与尝试,甚至百度了好几个论坛,也没有找到切实可行的解决方案。小P一筹莫展,正好V姐从她身旁经过。对呀,V姐可是我们的大牛,没有她搞不定的问题。小P急忙站起身,跟V姐大概描述了一下问题,只见V姐微微一笑,示意小P别慌,先坐下,然后放下手中的文件夹,接过小P的鼠标,轻轻点了几下,示意小P再次编译。惊讶于V姐的神速,小P半信半疑。看着V姐坚定的眼神,小P再次Compile。
神了,Fatal Error如期出现了…
往常让小P深恶痛绝的这个深红的Fatal Error,今天却是无比亲切。
看见
小P又惊又喜,V姐娓娓道来:
在绘制原理图时,将格点设置过小,就极有可能出现小P这样的失误。而在编译时,因为在AD中,对于Floating power objects,系统默认设置确实是Warning。所以很可能导致检查者放过此类Warning,从而直接产生网表,导致设计出错。
为避免此类问题的发生,V姐建议:
第一、绘制原理图时格点的选择需要注意。通常器件选择100mil的格点放置,其余选择50mil即可,不建议选用10mil的格点。
第二、强烈建议更改Floating power objects的报错模式为Fatal Error。
操作如下: Project->ProjectOptions->ErrorReporting->Floating power objects 选择Report Mode为 Fatal Error 第三、强烈建议更改器件管脚开路的报错模式。 AD中原理图编译时,对于器件管脚的四种属性:Input Pin, IO Pin, Output Pin以及Passive Pin,系统只默认Input Pin开路时为Error,其余三种均为No Report。这样的设置会导致编译时放过很多原本要查验的错误,使得设计者忽略,从而直接产生网表,导致设计出错。 为避免此类问题发生,需要在做如下设置: Project->Project Options->ConnectionMatrix 点选IO Pin,Output Pin为 Error, Passive Pin为FatalError。 如下图所示: 看到小P惊异的眼神,V姐特意将U12芯片的pin2,3,9以及C176的管脚断开进行演示: 默认设置编译结果如下: 更改设置后,编译结果如下: 通过对比可以明显看到,默认设置中,仅对Input pin的开路做了Error处理。可让小P疑惑的是,在电路设计中,通常芯片的管脚有一些的确是不需要连接的。如果像V姐说的这样更改系统设置的话,错误是避免了,可是不是也会增加不必要的报错呢? V姐看出了小P的疑虑,接着对小P说,对于闲置的管脚,绘制原理图时,一定要打上No ERC的标识,就像U12的pin3一样,这样不仅便于读图,更重要的是告诉系统这是正常的电路设计,不需要跑ERC给出报错处理。 小P听着V姐的建议,突然感觉今天一点都不热了。外面高悬的太阳,也似乎变得可爱起来…