dependencies - 获取modelsim中vhdl实体的依赖关系

标签 dependencies tcl vhdl modelsim

我在 ModelSim 中成功编译了一个大型 VHDL 设计。设计在这里并不重要,我的问题是关于任何 VHDL 设计的 ModelSim 命令。

现在假设我有一个实体 E1,我想知道 E1 正在使用/实例化的所有包和实体。 我想在像这样的 Tcl 程序中使用这个命令

proc get_dependency_list_of_entity { E1 } {
 ...
}

换句话说:如何使用 ModelSim 命令提取 vhdl 模块的所有依赖项。

我的方法是这样的: 命令write report -tcl返回足够的信息来提取E1的库,比如L1。

现在命令vdir -lib L1返回在L1中编译的所有实体和包。但当然这些太多了。它还列出了与 E1 没有任何关系的软件包。

有没有办法用ModelSim命令获取vhdl模块的依赖模块?

最佳答案

我终于找到了解决办法。

命令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 获取实体的库

关于dependencies - 获取modelsim中vhdl实体的依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23515727/

相关文章:

variables - 信号与变量

javascript - 可使用(或不带)_references.ts 自动解析和排序 TypeScript 依赖项的工具?

java - 如何使 Maven 插件仅包含必要的依赖项?

c - 如何更改 NS-2 中数据包 tcp header 中的标志?

Linux:如何找出我的库的哪个(子)依赖项需要特定的库?

vhdl - vivado 生成的函数 clogb2() 无法合成,出现循环限制错误

vhdl - 数组作为缓冲区 VHDL

Angular:如何将字符串发送到注入(inject)服务?

validation - Podspec 无法通过验证,但没有记录错误

namespaces - TCL 命名空间和来源