添加抽象类的波形(已解决)

时间:2019-05-27 15:01:52

标签: system-verilog modelsim

我有一个抽象类,其中有四个子类。在Modelsim(SE 10.5b)中,我想添加一些当前处于活动状态的子波形。在仿真过程中这可能会改变。 在实验中,我发现使用add wave命令在首次调用时会拍摄快照,并记住当时哪个孩子在活动。即使该子对象已更改,所有将来的添加wave调用都将引用该子对象。

我尝试通过TCL代码和类实例查看器进行添加。通过类实例查看器,我在构造路径时遇到错误;请参见下面的第一个代码示例,包括相应的错误。这是使用类实例窗口时自动生成的命令。

当我删除super.部分时,它确实添加了一个wave,但此wave始终引用“快照”子级。

错误行:

add wave sim:/@spi_test@1.super.m_spi_env.current_driver.super.name

Error: Child not found while constructing path expression: super

“正确”行(总是指“快照子”):

add wave sim:/@spi_test@1.super.m_spi_env.current_driver.name

每当代码中的那个子项发生变化时,我都希望波形改变其内部引用的子项。当前,只要当前子代不等于“快照子代”,它就会发出空白通知。

我可以使用的解决方法是在TCL脚本中添加一行以告知modelim重新评估这些子级。 (我尝试在命令参考手册中寻找它,但是找不到这样的东西。)


好的,我找到了解决方案。看起来,为了使modelsim在子类之间切换时正确更新波形,它需要已经有一个指向那些子类的指针,或类似的东西。我在代码中对其进行修复的方式是,在我需要的实际add-wave命令之前包括下一节add-wave命令:

add wave -group {Scope_finders} sim:/@spi_basic_test@1...child_class1
add wave -group {Scope_finders} sim:/@spi_basic_test@1...child_class2
add wave -group {Scope_finders} sim:/@spi_basic_test@1...child_class3
add wave -group {Scope_finders} sim:/@spi_basic_test@1...child_class4

delete wave -group {Scope_finders}

这显然允许modelsim构造到正确的类和类成员的路径,而不会阻塞wave窗口。

0 个答案:

没有答案