问题标签 [test-bench]

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 回答
841 浏览

c++ - 在 SystemC 中管理测试平台模块中的信号

我正在尝试在 SystemC 中模拟一个带有 CABA(循环精确/位精确)模型的模块,该模型添加了两个数字。它有以下信号:

模块addition_CABA

  • a: 输入加号。
  • b: 输入加号。
  • clk:时钟输入。
  • valida: 输入信号,当输入和b可用时变为 1 。
  • result: 包含a+的结果的输出信号b
  • ready: 准备就绪时变为 1 的输出信号result

为了测试这个模块的结果是否正确,我创建了一个testbench具有以下信号的模块:

模块testbench

  • result_tbaddition_CABA:从模块接收结果信号的输入信号。
  • ready_tb: 接收addition_CABA模块就绪信号的输入信号。
  • clk_tb:时钟输入信号。两个模块都是一样的。
  • rst_tb:复位输入信号。两个模块都是一样的。
  • a_tb: 将数字 a 发送到addition_CABA模块的输出信号。
  • b_tb: 将数字 b 发送到addition_CABA模块的输出信号。
  • valid_tbaddition_CABA:向模块发送有效信号的输出信号。

我正在做的测试如下:

  • 在该模块testbench中,会生成一对随机数来为a和赋值b
  • 模块在一些时钟周期后计算结果。
  • 测试台直接进行加法运算,并将其与模块产生的结果进行比较。
  • 这些动作在一个重复五次的循环中。

我遇到的问题是,当我运行模拟时testbench给出了正确的结果,并addition_CABA显示了结果,但在一些时钟周期之后,所以比较是在两个不同的数字之间。此外,当程序结束时,我有一条Segmentation fault (core dumped)消息。我想弄清楚的是如何指示testbench等待结果准备好(使用信号ready_tb),以便它可以与正确的数字进行比较。我while(!ready_tb.read()) wait();在开始测试之前尝试了一个条件,但是这样做时程序结束并且模拟永远不会开始。

main.cpp文件中,我只是在模块之间进行连接,生成时钟并将rst信号设置为0. 下面是我的代码:

加法_CABA.h

加法_CABA.cpp

测试台.h

测试台.cpp

0 投票
1 回答
3976 浏览

verilog - System-Verilog 测试台生成 2 个时钟,频率相同,相位相差 90 度

对于系统 verilog 测试平台,我需要使用参数创建 2 个时钟

Clock1 = 250MHz,起始相位0度

时钟 2 = 250MHz,起始相位与时钟 1 成 90 度

我尝试了以下方法,但它对时钟生成没有影响,并且两者仍处于同相状态。我如何实现这种相移?

0 投票
0 回答
1032 浏览

vhdl - VHDL 编译器退出

我只想运行测试台,但我得到了这个。有谁知道为什么?这是一个简单的代码。

测试台总是有什么:

给 "periodo" 20ns 的值:

并给一些变量一个起始值:

重置过程:

时钟过程:

给“x”一些值:

错误信息:

0 投票
1 回答
131 浏览

verilog - 后合成模拟波形不可见

我正在对具有测试台和verilog代码和综合脚本的设计进行后期合成仿真..这给了我verilog网表文件。我能够在终端上看到预合成仿真 - 波形和 $monitor 值转储。这个相同的 $monitor 值转储也告诉我后期合成模拟工作正常。

但是我看不到合成后的波形

我正在通过我的测试平台转储一个 .vcd 文件,以便通过 $monitor 查看仿真波形。

工具:用于合成的设计愿景 NCVerilog 用于编译

$monitor 终端值转储

0 投票
1 回答
303 浏览

java - 使用测试台在 Vaadin 上进行测试

我尝试使用 vaadin testbench 测试我的应用程序,但是当我尝试使用

mvn clean 验证他没有启动我的服务器来执行测试,我使用这个示例:https ://vaadin.com/docs/-/part/testbench/testBench-tutorial.html 这是我的 pom.xml

但是我注意到在运行测试之前启动我的服务器时,我的测试通过了,但是在运行测试之后他试图启动我的服务器

我把原来的开始/停止码头

但不工作。

0 投票
1 回答
155 浏览

java - 如何将 Mozilla Firefox 设置为不使用 .iso 文件打开管理器下载?

我在使用框架 Vaadin 测试台和 Selenium 库时遇到问题。对于我的测试,我需要告诉 Mozilla Firefox 浏览器 31.0 版本,当我尝试下载 .iso 文件时不要打开下载管理器对话框。我希望下载在我设置的路径中自行启动。我的 JAVA 代码示例,我在 apache tomcat 1.8 上使用 jdk 1.8,我的操作系统是 Windows 8:

那是firefox配置文件的设置。我认为问题出在 mime 类型,但在每个论坛中我都读到 .iso 文件的 mime 类型是 application/iso-image 或 application/octet-stream 但它不起作用。

感谢大家的回答。

0 投票
1 回答
562 浏览

verilog - Vivado 2016.2 Simulator 不支持 System Verilog $cast 或 $sformatf

使用 Vivado 2016.2 模拟器,我需要将 int 转换为 System Verilog 中的字符串,但不支持 $cast 和 $sformatf。为了成功地将 int 类型转换为字符串,我还可以使用哪些其他函数或方法?

0 投票
3 回答
3496 浏览

verilog - 为什么 $urandom_range 返回相同的值?

我正在使用 UVM 运行测试台。在组件的run_phase()一项任务中,我执行fork...join_none以下循环,该循环贯穿整个模拟:

问题是信号ace被强制为相同的值。bde相同。

如果稍后有新的触发器构成,新值确实会被随机化和强制,但我再次得到a == c == eand b == d == e

似乎$urandom_range每个参数的选择(0 到 FF,0 到 F)只被调用一次,并且返回值被重新用于三个force命令。


编辑:我能够在最小的 TB 上重现该问题:http ://www.edaplayground.com/x/4_ph

我正在使用的供应商似乎存在问题,选择其他工具问题就消失了。


编辑 2:我还没有弄清楚为什么会发生这种情况,但这似乎与force语句就像一个连续赋值的事实有关(即,如果 RHS 信号在未来发生变化,强制 LHS 将跟随它直到forcerelease d,它不像 '=' 赋值)。

所以我的猜测是问题在于将函数的返回值用作RHS。(我不知道这个返回值有哪个生命周期)

在我的情况下,解决方案是将 $urandom 值保存到具有静态生命周期的变量中,然后将该变量强制到 RTL(如 J Reid 建议的那样)

0 投票
1 回答
665 浏览

combobox - 如何使用 Vaadin Testbench 从 ComboBox 菜单中选择一个元素?

我正在使用 vaadin 版本 7.6.4 和 Testbench (4.0.3) 进行一些集成测试。

我有几个组合框的视图。其中一个具有此属性comboBox.setTextInputAllowed(false);出于测试目的,我想更改组合框上的默认值,并且我需要选择一个不同的元素,然后选择默认元素。

要选择一个元素,我尝试了以下代码:

但这仅适用于comboBox.setTextInputAllowed(true);

我也尝试过使用sendkeys()来更改选定的值:

此代码正确打开组合框弹出窗口,但未选择任何项目。如果我将焦点设置为setFocus();

谁能告诉我如何更改具有属性的组合框的值setTextInputAllowed(false)

0 投票
0 回答
1107 浏览

vhdl - vhdl 在包文件中共享变量

我目前正在为帧生成器编写代码,我和其他人需要通过仿真中的一些 VHDL 逻辑生成数据。

为此,我在包文件中创建了一个生成器过程和一个监视器过程。

由于我喜欢受保护类型的想法,并且出于明显的原因,我不能将信号发生器和监视器放入受保护类型中,所以我刚刚在包文件中创建了它们,如上所述,我还创建了额外的过程和函数来初始化并帮助设置生成器和监视器的不同方面。

为此,在受保护类型中,您可以拥有在整个保护类型中可见的变量,我使用的是共享变量。现在这是一个问题,一些模拟器会给你一个警告。

现在为了使这些变量有点安全并删除这些警告,我已经制作了受保护的变量。

让我们取一个在我的代码中最常见的布尔值。

包裹

包体

我使用了其他语言的 getter 和 setter 的想法,从这个受保护的类型中设置和获取值

这个主意好吗?它会做我认为它做的事情吗 IE 防止在不同进程中对同一变量进行多次更新,或者我只是掩盖了模拟器警告我的问题。

问候安德斯