[ Skill ] 如何获取库中的 top cell
https://www.cnblogs.com/yeungchie/
top cell 的一个特点就是没有被其他的单元所调用,下面举例获取某个库中的 top cell。
1. 获取库中所有单元的 cvId
结果赋值给 cvlist
变量
libName = "YOURLIB"
cvlist = nil
foreach(c ddGetObj(libName)~>cells
foreach(v c~>views
cvlist = cons(dbOpenCellViewByType(libName c~>name v~>name "" "r") cvlist)
)
)
2. 记录有被调用的 cvId
用一个 cvtable 来记录被例化的单元,key 为 cvId,被调用过的 value 值为 t
。
cvtable = makeTable("" nil)
foreach(cv cvlist
foreach(i cv~>instances
cvtable[i~>master] = t
)
)
3. 查看 top cell
在 cvtable 中遍历 cvlist, value 值为 nil 的就是 topcell 的 cvId
setof(cv cvlist !cvtable[cv])~>cellName