получить зависимости объекта vhdl в modelsim

Я успешно скомпилировал большой проект VHDL в ModelSim. Дизайн здесь не важен, мой вопрос касается команд ModelSim для любого дизайна VHDL.

Теперь предположим, что у меня есть сущность E1, и я хочу знать все пакеты и сущности, которые используются/создаются E1. Я хочу использовать эту команду в процедуре Tcl, подобной этой

proc get_dependency_list_of_entity { E1 } {
 ...
}

Другими словами: как я могу извлечь все зависимости модуля vhdl с помощью команды ModelSim.

Мой подход таков: команда write report -tcl возвращает достаточно информации для извлечения библиотеки E1, скажем, L1.

Теперь команда vdir -lib L1 возвращает все сущности и пакеты, скомпилированные в L1. Но это, конечно, слишком много. В нем также перечислены пакеты, никак не связанные с E1.

Итак, есть ли способ получить зависимые модули модуля vhdl с помощью команды ModelSim?


person Sadik    schedule 07.05.2014    source источник


Ответы (1)


Я наконец нашел решение.

команда vdir -lib $lib -prop dpnd $entity возвращает примерно следующее:

 data: ENTITY E1
#     Depends on: P ieee std_logic_unsigned RYmj:=TK`k=k>D@Cz`zoB3
#     Depends on: P ieee std_logic_arith 4`Y?g_lldn;7UL9IiJck01
#     Depends on: P std textio 5>J:;AW>W1[[dW0I6EN1Q0
#     Depends on: P ieee std_logic_1164 5=aWaoGZSMWIct0i^f`XF1
#   ARCHITECTURE BODY rtl
#     Depends on: E L2 E2 3B3>6RbjY07ohgTgj<M4r0
#     Depends on: E L3 E3 5?a[d8Ikz7>zWX`U97gNE2
#     Depends on: P ieee std_logic_unsigned RYMj;=TK`k=k>C@Cz`zoB3
#     Depends on: P ieee std_logic_arith 7`F?g_lkdn;7UL9IiJck01
#     Depends on: P std textio 5>J:;AW>w0[[dW0I6EN1Q0
#     Depends on: P ieee std_logic_1164 5=aWboGZSMlIcH0i^f`XF1
#     Depends on: E work E1 ;4e7E?eQ@DHPeB>5WUDQK3 

P означает пакет, а E — сущность. Таким образом, вы можете использовать регулярные выражения (как я в функции извлечения) для извлечения нужных данных.

    proc get_dependency_list_of_entity { lib entity } {

        set vdir_data [ vdir -lib $lib -prop dpnd $entity ]

            set match [extracting $vdir_data "^ *Depends on: (.+)"]
            ...
        }
        ...
     }

Как я уже упоминал в вопросе: есть способы получить библиотеку объекта с vdir, а также с write report -tcl

person Sadik    schedule 07.05.2014