【问题标题】:Mapping libraries modelsim映射库 modelsim
【发布时间】:2018-03-10 14:21:57
【问题描述】:

我正在尝试使用 ModelSim PE 10.4a 中的 do 文件映射库,但无法将它们设置为项目本地。例如。我不想硬编码用于更改目录的命令以将源编译到那里的工作目录中,但是我可以提供一个指向 .do/.tcl 文件的路径,该文件将定义一个静态库或其他东西。对于 Xilinx 核心库,编译后的源代码不会移动,我也不需要重新编译,因此我可以进行硬映射。但是,我正在为一个项目开发一些东西,并且想要一种映射库和编译它们的好方法。对于单元测试,我不介意使用这种硬编码的方法。但是,对于这些位置可能会更改或我的库之外的目录可能很远的项目,有什么更好的方法来做我在下面所做的事情?

以下是我如何编译我的库 (do_map_lfsr.do)

# 0) Create work directory for modelsim
vlib LFSR_lib

# 2) Compile files in use order
#vcom -93 -work work src/*.vhd
vcom -93 -work LFSR_lib GaloisLfsrBody.vhd
vcom -93 -work LFSR_lib LfsrPack.vhd

下面是我用来从我的测试台位置运行这个 do 文件的方法

# 1a) map/compile libs
# trying to find better way to do this
cd ../
do do_map_lfsr.do
cd unit_test/
vmap -modelsim_quiet LFSR_lib ../LFSR_lib

有没有一种奇特的方法可以使用 .do/.tcl 文件查找和重新编译我的库,然后将它们映射到我在单元测试之外的开发中?有没有办法定义静态库或更改目录时不会消失的东西?

【问题讨论】:

    标签: tcl vhdl modelsim


    【解决方案1】:

    对于查找文件,Tcllib find command(在 fileutil 包中)应该非常有用。

    package require fileutil
    
    proc needsRecompiling {name} {
        return [expr {[file extension $name] in {.do .tcl}}]
    }
    
    foreach filename [fileutil::find . needsRecompiling] {
        if {[file extension $filename] eq ".do"} {
            # Process the .do file here
        } else {
            # Process the .tcl file here
        }
    }
    

    当然,这假设您可以独立处理每个文件;不能保证列出的顺序(并且可能取决于文件系统中底层目录节点的顺序等)。如果您需要执行更复杂的操作,例如匹配具有不同扩展名的文件,则需要编写更多代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-26
      • 2012-06-26
      • 1970-01-01
      • 2014-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多