求助:如何在另一版图中保存带标签/引脚/名称的标记网络
解决leSaveMarkNet丢失网络名、引脚名的问题
默认的leSaveMarkNet()函数仅会保存版图的几何图形信息,不会自动携带网络名、引脚名这类附加属性。要保留这些信息,需要手动提取源网络的属性,再在保存后的目标版图中恢复。
具体实现步骤及代码:
提取源版图中标记网络的属性
先获取当前标记的网络对象,提取所需的属性(网络名、引脚名、标签文本等)并暂存:; 获取所有标记的网络对象 setq markedNets (leGetMarkedObjects) setq netPropertyList nil ; 遍历标记网络,提取属性和对象路径 foreach net markedNets setq currNetName (geGetObjProp net "netName") setq currPinName (geGetObjProp net "pinName") setq currLabel (geGetObjProp net "labelText") setq objPath (geGetObjPath net) lappend netPropertyList (list currNetName currPinName currLabel objPath) )保存标记网络到目标库视图
执行原有的保存命令:leSaveMarkNet("nand2_1x_hv" ?libName "TestLib2" ?viewName "layout_MN")在目标版图中恢复属性
打开目标版图,根据之前记录的对象路径找到对应图形,重新赋值属性:; 打开目标版图视图 leOpenView("TestLib2" "layout_MN" "layout") ; 遍历属性列表,为目标网络恢复属性 foreach prop netPropertyList setq targetNet (geGetObjByPath (nth 3 prop)) if targetNet then geSetObjProp targetNet "netName" (nth 0 prop) geSetObjProp targetNet "pinName" (nth 1 prop) geSetObjProp targetNet "labelText" (nth 2 prop) endif ) ; 保存修改后的目标版图 leSaveView()
注意事项:
- 不同项目的属性键名可能有差异,若上述属性名不生效,可使用
geGetAllObjProps(net)查看目标网络的所有属性键,替换成实际使用的名称。 - 执行代码时需确保:第一步在源版图中运行,第三步切换到目标版图后运行。
内容的提问来源于stack exchange,提问作者Parthapratim Baishya
相关产品推荐
相关产品推荐

