[ 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
posted @ 2022-08-13 20:00  YEUNGCHIE  阅读(2043)  评论(1编辑  收藏  举报