【发布时间】:2018-11-11 10:11:40
【问题描述】:
我正在用 VHDL 开发 CPU。我正在使用 ModelSim 进行模拟和测试。在模拟脚本中,我将程序从二进制文件加载到指令存储器。现在我想自动检查程序是否适合内存,如果不适合则中止模拟。由于内存基本上是一个 std_logic_vectors 数组,我所要做的就是读取相应的信号属性以用于比较。我的问题是:如何在 ModelSim 的 TCL 中访问 VHDL 信号属性?
到目前为止,我得到的最接近的是使用 describe 命令:
describe sim/:tb:uut:imem:mem_array
打印类似的东西
# Array(0 to 255) [length 256] of
# Array(31 downto 0) [length 32] of
# VHDL standard subtype STD_LOGIC
现在,我当然可以通过字符串操作解析出那里的长度。但这不是一个非常通用的解决方案。理想情况下,我想要这样的东西:
set mem_size [get_attribute sim/:tb:uut:imem:mem_array'length]
我已经搜索了stackoverflow,上下搜索并搜索了命令参考手册中的命令,但我找不到解决方案。我相信一定有一个相当简单的解决方案,我只是缺乏正确的措辞来成功搜索它。对我来说,这看起来并不过分具体,我相信这在自动化设计测试时会在很多场合出现。我使用的是 10.6 版。
如果有经验的 ModelSim 用户能帮助我,我将不胜感激。
【问题讨论】: