做Cadence OrCAD开发最抓狂的瞬间:明明改好了元件库,回到原理图一放,还是报错。最近在跟小马哥的课程画DragonFly四轴飞行器的PCB,主控是STM32F4,就被这个缓存机制坑惨了。今天把怎么彻底清理OrCAD缓存的野路子分享出来。
事情是这样的。我在OrCAD Capture里画四层板原理图。放置STM32F407ZGT6的时候,发现引脚定义错了。于是切到库编辑器(Library Explorer),把引脚2的VDD_2改成了VDD_3。保存,关掉编辑器,回到原理图页面。
问题来了。当我再次从库里调用这个芯片时,弹窗报错:“Part has different number of pins”。意思是引脚数量对不上。明明刚改完,怎么就不认了呢?
这还不是最气人的。有时候你删掉旧的元件,重新放一个新的,结果旧元件的封装属性还留在上面。比如原来定义的封装是LQFP144,改成了LQFP100,结果原理图里还是显示LQFP144。这种隐形错误,直到你导出网表(Netlist)准备导入Allegro时才会爆发。
为什么会这样?因为OrCAD很“懒”。为了提高加载速度,它不会每次都去读取原始库文件(.OLB)。
当你第一次把一个元件放到原理图上时,OrCAD会把这个元件的快照(Snapshot)存进工程的Cache(缓存)里。下次再调用,它就直接读缓存,哪怕你在外面把库文件改得面目全非,它也不管。
这就导致了“库文件与缓存不一致”。特别是做DragonFly这种复杂项目,库里可能有几百个元件,缓存机制如果不清理,冲突是必然的。
缓存文件在哪?
在你的工程目录下,有一个cache文件夹,或者直接在.dsn文件里嵌套着。你肉眼看不见,但软件记得清清楚楚。
网上有些教程让你去删注册表,太麻烦了。其实在OrCAD界面里就能搞定。
第一步:打开工程管理器
在Capture里,切到Project Manager视图。
第二步:定位到Cache
展开你的设计文件(Design),你会看到一个叫Cache的文件夹。点开它,里面躺着所有已经被你调用过的元件。
第三步:强制刷新
选中那个报错的原理图页(比如MCU.SchDoc)。 右键点击,选择Update Cache。 在做小马哥这个四轴飞行器项目时,我还遇到了另一个坑:Design Cache与Off-Page Connector的冲突。
当你修改了一个电源符号(比如把+5V改成+3V3),缓存没更新会导致电源网络不连通。这种错误最隐蔽,原理图上看着是连着的,实际上网表生成后,它们是两个不同的网络。

我的建议:
养成好习惯。 每次修改完库文件,立刻去Project Manager里刷新Cache。别等画完了再改,那时候牵一发而动全身。 备份库文件。 改库之前,把.olb文件复制一份。万一改崩了,还能回滚。 检查Annotate。 缓存混乱经常导致元件编号(Designator)乱跳。在Tools -> Annotate里,选择Reset part references to "?",把编号全重置一遍,再重新编号。 武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks 等。