首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >映射库modelsim

映射库modelsim
EN

Stack Overflow用户
提问于 2018-03-10 04:32:27
回答 1查看 882关注 0票数 0

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

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

代码语言:javascript
复制
# 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

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

代码语言:javascript
复制
# 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文件查找和重新编译库,然后将它们映射到单元测试之外的开发中?有没有一种方法可以定义一个静态库,或者当我更改目录时不会消失的东西?

EN

回答 1

Stack Overflow用户

发布于 2018-03-10 14:21:57

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

代码语言:javascript
复制
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
    }
}

当然,这假设您只能单独处理每个文件;不能保证列出的顺序(很可能取决于文件系统中底层目录节点的顺序等)。如果需要做更复杂的事情,比如匹配具有不同扩展名的文件,则需要编写更多代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49201705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档