Как получить список контактов экземпляра, подключенных к сети, в схеме Cadence Virtuoso с помощью SKILL

У меня есть схема с несколькими экземплярами, подключенными к одной из сетей. Мне нужна функция SKILL, которая будет печатать для всех экземпляров список выводов, подключенных к этой сети.


person Alex    schedule 21.06.2017    source источник
comment
просто для будущих вопросов, лучше задать их на форуме каденции. просто погуглите на форуме SKILL cadence :)   -  person Paddy    schedule 07.07.2017


Ответы (1)


Или короче:

procedure( ABC_findInstsAndPinsByNet(cvId netName)
    let( (netId returnTable)
        returnTable = makeTable("ABC_findInstsAndPinsByNet" nil)
        netId = dbFindNetByName(cvId netName)
        foreach( termId netId~>instTerms
            returnTable[termId~>inst] = cons(termId~>name returnTable[termId~>inst])
        )

        returnTable ;;return
    )
)

И затем, чтобы прочитать это:

rezTbl = ABC_findInstsAndPinsByNet(cv() "net2")
printstruct(rezTbl)

и вы получите что-то вроде:

printstruct(rezTbl)
Structure of type association table (table:ABC_findInstsAndPinsByNet):
  db:0x3f04079b: ("d")
  db:0x3f04079c: ("d" "g")
  db:0x3f04079a: ("s")
t

или если вы хотите разобрать все:

foreach( elem rezTbl
    printf("%L => %L\n" elem rezTbl[elem])
)
person Adi Nistor    schedule 29.07.2019
comment
В моей версии кода я захожу внутрь иерархий и печатаю иерархический путь. Ваша версия будет печатать только текущий уровень. - person Alex; 31.07.2019
comment
хм... не могли бы вы помочь мне с более подробной информацией: я только что попробовал код (спасибо за редактирование также недостающих частей) для сети, подключенной к блоку. И я получил в результате только inst/pin верхнего символа, а не внутри иерархии. Где именно (в коде) вы идете внутри иерархии? Спасибо - person Adi Nistor; 01.08.2019
comment
На самом деле я взял это с сайта Cadence и почти не использую. Вроде порты устройств не печатаются. Только экземпляры. - person Alex; 04.08.2019