问题标签 [questasim]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
vhdl - 系统 verilog 测试平台中的 VHDL 无约束记录
要测试的设计是用 VHDL 编写的,并在其端口中使用如下不受约束的记录:
这些端口现在应该由 systemverilog 测试平台驱动。有什么方法可以将 vhdl 记录类型用于测试台信号?如果是这样,我如何限制 systemverilog 中的记录?
或者我是否必须创建一个 VHDL 包来约束记录并将其作为要在测试台中使用的类型提供?
由于工具之间的 HDL 支持差异很大,我特别问的是 questasim(modelsim 的老大哥,同一供应商,所以据说有点向下兼容)。
更新
我从 10.4 的 Questa SIM 用户手册中收集了以下内容:
- 记录映射到结构/打包结构(表 9-5)
- 表 9-5 中未提及亚型
我试过了:
- 使用系统 verilog 中的子类型连接到无约束类型的端口
- 使用系统verilog中的子类型连接到具有约束的无约束类型的端口
- 使用系统 verilog 中的子类型连接到子类型的端口
- 使用系统verilog中的无约束类型(无约束)连接到具有约束的无约束类型的端口。
示例代码:
高密度脂蛋白:
系统 Verilog
错误总是Fatal: (vsim-3362) The type of VHDL port 'a' is invalid for Verilog connection (1st connection).
foreach - How can I rewrite all signal names to a shorter name?
I'm using QuestaSim/ModelSim and I would like to automatically rewrite the signal names displayed in the waveform. When my testbench starts, a default command loads all top-level signals into the waveform viewer:
When I rename the added signals, the following commands are created in a waveform save file (*.wdo):
So a label with a shorter name can be applied to each signal.
I would like to iterate all top-level signals or signals in a given hierarchy and add them to the waveform, while shortening their names (removing the path prefix).
How can I do such iteration and name shortening?
generics - 如何将数组类型作为泛型类型参数传递给 VHDL 包?
我正在研究 VHDL-2008 中的通用包(列表)。此包具有元素类型的泛型类型。如果我在包中声明了这个元素类型的数组类型,它就是一个新类型。因此,例如整数,我的新 integer_array 将与库 ieee 中的 integer_vector 不兼容。
所以我还需要传入数组类型(例如integer_vector)。当该数组类型的数组实例与'range
属性一起使用时,它会在 QuestaSim 中给我一个警告:
属性“范围”的前缀必须适用于数组对象或必须表示数组子类型。
如何表示泛型类型参数是一个数组?
通用包:
实例化:
vhdl - 如何将 SV 接口信号绑定到 VHDL 类型?
我正在尝试将接口绑定到我的 VHDL 模块。我要绑定的信号在模块中定义如下:
我对接口模块和绑定语句的实例化如下所示:
我不知道我的输入信号 fsm_state 应该是多长,所以我将其设置为 32 位。
当我尝试在 questasim 10.4 中编译时,我收到以下消息:
(vopt-2245) VHDL 分层引用的类型 ('dut_fsm_type'),用作绑定语句中的实际表达式,必须在包中定义。
知道如何处理吗?
system-verilog - uvm_reg peek 函数需要很长时间才能返回
我认为peek
函数uvm_reg
在 0 模拟时间内返回值。因为我需要这个功能,所以我实现了我所有的 HDL 后门访问路径。这是我在记分牌中使用的代码
我的意图是:在每个时钟周期,在零仿真时间,断言my_reg
0 当state==DISABLE
.
在模拟运行中,我注意到这很好,直到时间my_reg
发生变化。此时,Start peek -> End peek 大约需要 10 个时钟周期。在这个时候,我的状态不再是 DISABLE 并且当然 val != 'h0. 为什么 peek 需要这么长时间才能返回?
我正在使用 Questasim 10.4a
system-verilog - $past 带有输入信号
我想验证如果事件发生,那么在过去的“num_ticks”处,应该已经断言了一些信号。
例如,我写的属性是:
这里的问题在于num_ticks
. 如果num_ticks
是写入属性的模块的输入信号,则断言失败。如果我声明num_ticks
为 int,并将其分配给常量,则它通过。
$past 仅适用于常量值吗?LRM 中没有提到这一点。
我正在使用 Questasim 10.3
vhdl - 为什么这个并发语句的代码覆盖率低于 100%?
为什么以下时钟生成语句在 ModelSim/QuestaSim 中没有 100% 的代码覆盖率?
这是完整的例子:
如果我添加这个 else branch: else unaffected
,那么我将获得 100% 的覆盖率。
并发信号分配被转换为具有顺序信号分配的进程 (LRM 11.6)。未受影响的分支被转换为空语句(LRM 11.6,注 2;LRM 10.5.2.1)。
我不确定为什么 ModelSim/QuestaSim 要求我编写一个明确的 else 分支,其中不包含任何波形。
vhdl - 为什么这个 FSM 没有达到 100% 的代码覆盖率?
我在 VHDL 中有以下简单的 FSM 描述:
而这个测试台:
FSM 在 ModelSim/QuestaSim 中没有达到 100% 的代码覆盖率。我发现了两个问题:
由于枚举被所有选择完全覆盖,因此不需要覆盖其他情况。但是这个分支是不可访问的......为什么 QuestaSim 期望覆盖这个分支?
QuestaSim 显示了我的示例 FSM 的错误状态图。该图包含状态的自边:
RUNNING
和FINISH
。这些边缘不存在,也不能被覆盖。
如果我删除默认分配fsm_ns <= fsm_cs;
并在 IDLE 状态下添加一个 else 分支,我将获得完全覆盖。为什么状态图显示假边,为什么我不能使用默认分配?
我可以接受第 1 项,但第 2 项是个问题。如果我以这种风格编写我的 FSM,我会复制很多不需要的代码,并且大多数合成器将无法识别 FSM 模式!所以我将失去 FSM 优化和综合检查。
bind - 在 SystemVerilog 中绑定检查器
我想将检查器构造绑定到 VHDL 模块(在 QuestaSim 中)以确保某些验证属性,而无需声明和绑定更(复杂)的模块/接口/代理结构。事不宜迟,我将向您展示我正在使用的示例代码:
选择错误是:
** Error: src/tb_vtop.sv(210): Failed to instantiate checker 'test_checker' inside bind's target 'dut_wrapper'.
Optimization failed
绑定模块和接口与相同的测试台、语法和工具一起工作得很好。
据我了解,1800-2012 LRM 23.11 指定检查器可以绑定在模块内。我想询问集体知识:这是与工具相关的限制(不支持的构造)还是对跳棋有特殊要求才能被绑定。我查阅了 MG 的 QuestaSim 用户手册和命令参考手册,但通常没有提到检查器和绑定结构。
我知道我有几个解决方法选项,问题涉及检查器构造本身,因为我以前从未使用过它。
system-verilog - 属性中的案例陈述不适用于 QuestaSim 10.4B
我正在尝试直接从 SystemVerilog 2012 LRM 中编写一个带有 case 语句的属性。
使用 QuestaSim 10.4B,我收到以下错误:
** 错误:(vlog-13069) checker.sv(196):“case”附近:语法错误,意外情况,预期禁用。
这个版本的 Questasim 不支持 case 语句吗?