问题标签 [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.

0 投票
1 回答
835 浏览

vhdl - 系统 verilog 测试平台中的 VHDL 无约束记录

要测试的设计是用 VHDL 编写的,并在其端口中使用如下不受约束的记录:

这些端口现在应该由 systemverilog 测试平台驱动。有什么方法可以将 vhdl 记录类型用于测试台信号?如果是这样,我如何限制 systemverilog 中的记录?

或者我是否必须创建一个 VHDL 包来约束记录并将其作为要在测试台中使用的类型提供?

由于工具之间的 HDL 支持差异很大,我特别问的是 questasim(modelsim 的老大哥,同一供应商,所以据说有点向下兼容)。

更新

我从 10.4 的 Questa SIM 用户手册中收集了以下内容:

  • 记录映射到结构/打包结构(表 9-5)
  • 表 9-5 中未提及亚型

我试过了:

  1. 使用系统 verilog 中的子类型连接到无约束类型的端口
  2. 使用系统verilog中的子类型连接到具有约束的无约束类型的端口
  3. 使用系统 verilog 中的子类型连接到子类型的端口
  4. 使用系统verilog中的无约束类型(无约束)连接到具有约束的无约束类型的端口。

示例代码:

高密度脂蛋白:

系统 Verilog

错误总是Fatal: (vsim-3362) The type of VHDL port 'a' is invalid for Verilog connection (1st connection).

0 投票
1 回答
540 浏览

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?

0 投票
1 回答
1438 浏览

generics - 如何将数组类型作为泛型类型参数传递给 VHDL 包?

我正在研究 VHDL-2008 中的通用包(列表)。此包具有元素类型的泛型类型。如果我在包中声明了这个元素类型的数组类型,它就是一个新类型。因此,例如整数,我的新 integer_array 将与库 ieee 中的 integer_vector 不兼容。

所以我还需要传入数组类型(例如integer_vector)。当该数组类型的数组实例与'range属性一起使用时,它会在 QuestaSim 中给我一个警告:

属性“范围”的前缀必须适用于数组对象或必须表示数组子类型。

如何表示泛型类型参数是一个数组?

通用包:

实例化:

0 投票
3 回答
3023 浏览

vhdl - 如何将 SV 接口信号绑定到 VHDL 类型?

我正在尝试将接口绑定到我的 VHDL 模块。我要绑定的信号在模块中定义如下:

我对接口模块和绑定语句的实例化如下所示:

我不知道我的输入信号 fsm_state 应该是多长,所以我将其设置为 32 位。

当我尝试在 questasim 10.4 中编译时,我收到以下消息:

(vopt-2245) VHDL 分层引用的类型 ('dut_fsm_type'),用作绑定语句中的实际表达式,必须在包中定义。

知道如何处理吗?

0 投票
1 回答
926 浏览

system-verilog - uvm_reg peek 函数需要很长时间才能返回

我认为peek函数uvm_reg在 0 模拟时间内返回值。因为我需要这个功能,所以我实现了我所有的 HDL 后门访问路径。这是我在记分牌中使用的代码

我的意图是:在每个时钟周期,在零仿真时间,断言my_reg0 当state==DISABLE.

在模拟运行中,我注意到这很好,直到时间my_reg发生变化。此时,Start peek -> End peek 大约需要 10 个时钟周期。在这个时候,我的状态不再是 DISABLE 并且当然 val != 'h0. 为什么 peek 需要这么长时间才能返回?

我正在使用 Questasim 10.4a

0 投票
1 回答
852 浏览

system-verilog - $past 带有输入信号

我想验证如果事件发生,那么在过去的“num_ticks”处,应该已经断言了一些信号。

例如,我写的属性是:

这里的问题在于num_ticks. 如果num_ticks是写入属性的模块的输入信号,则断言失败。如果我声明num_ticks为 int,并将其分配给常量,则它通过。

$past 仅适用于常量值吗?LRM 中没有提到这一点。

我正在使用 Questasim 10.3

0 投票
2 回答
463 浏览

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 分支,其中不包含任何波形。

0 投票
2 回答
1830 浏览

vhdl - 为什么这个 FSM 没有达到 100% 的代码覆盖率?

我在 VHDL 中有以下简单的 FSM 描述:

而这个测试台:

FSM 在 ModelSim/QuestaSim 中没有达到 100% 的代码覆盖率。我发现了两个问题:

  1. 由于枚举被所有选择完全覆盖,因此不需要覆盖其他情况。但是这个分支是不可访问的......为什么 QuestaSim 期望覆盖这个分支?

  2. QuestaSim 显示了我的示例 FSM 的错误状态图。该图包含状态的自边:RUNNINGFINISH。这些边缘不存在,也不能被覆盖。
    如果我删除默认分配fsm_ns <= fsm_cs;并在 IDLE 状态下添加一个 else 分支,我将获得完全覆盖。

    为什么状态图显示假边,为什么我不能使用默认分配?

我可以接受第 1 项,但第 2 项是个问题。如果我以这种风格编写我的 FSM,我会复制很多不需要的代码,并且大多数合成器将无法识别 FSM 模式!所以我将失去 FSM 优化和综合检查。

0 投票
1 回答
1778 浏览

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 用户手册和命令参考手册,但通常没有提到检查器和绑定结构。

我知道我有几个解决方法选项,问题涉及检查器构造本身,因为我以前从未使用过它。

0 投票
1 回答
974 浏览

system-verilog - 属性中的案例陈述不适用于 QuestaSim 10.4B

我正在尝试直接从 SystemVerilog 2012 LRM 中编写一个带有 case 语句的属性。

使用 QuestaSim 10.4B,我收到以下错误:

** 错误:(vlog-13069) checker.sv(196):“case”附近:语法错误,意外情况,预期禁用。

这个版本的 Questasim 不支持 case 语句吗?