问题标签 [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.
vhdl - 如何在波形窗口中查看 Active-HDL 的仿真结果?
我用 Active-HDL 支持扩展了我的测试台脚本。Active-HDL 的行为主要类似于 QuestaSim 或 ModelSim,甚至命令行参数也相似。
我安装了 Lattice Diamond 3.7 的 Active-HDL Student Edition 和 Active-HDL Lattice Edition。我目前使用的是后者,因为这个版本附带了一个完整的 vsimsa(vsim 独立)环境。
我的脚本分 3 个步骤处理选定的测试平台:
vlib.exe
它使用(alib)创建所有必要的 VHDL 库vcom.exe
它用(acom)编译所有 VHDL 源文件- 它
vsimsa.exe
使用 TCL 命令启动:
asim -lib test arith_prng_tb; run -all; bye
模拟运行并显示良好的输出:
可以看到,asim 创建了一个wave.asdb
文件,可以从 GUI 加载该文件,但它是空的(没有信号)。
所以我的问题是:
- 如何将信号跟踪到该波形数据库文件中?
- 如何从 GUI 中的命令行打开此文件?
verilog - 测试台代码在流水线处理器的 verilog 中不起作用
我正在用verilog设计一个简单的管道处理器。我认为我的代码很好,但是当我运行我的测试台时没有任何反应。我实例化了所有变量,但我的 always 块似乎被忽略了。我在下面有我的处理器代码和测试台的副本。
处理器:
试验台:
端模块
verilog - 如何为从模块编写测试平台,在其中从主模块分配输入值?
我编写了两个 Verilog 模块,称为 master.v 和 slave.v,其中 master.v 模块提供输出值,从模块将使用这些主模块的输出值。您能否告诉我如何编写测试台以将 Slave 的输入分配为 master 的输出值?
connection - 测试原理图中两点之间的连通性
我在一家半导体制造商工作。我们经常尝试测试我们的设计,以确保我们在零件上运行的序列正确连接原理图上的两个点,例如 signal_a 和 signal_b。这两个信号通常具有多个必须打开才能连接两个信号的传输门。为了检查这是否正确发生,我们通常通过原理图和仿真来检查所有通门是否正确打开。似乎 Verilog 已经有一个内置命令来检查这个。例如类似于:
如果它们已连接,connected 将设置为 1,如果未连接,则设置为 0。如果存在这样的事情,如果有人能指出我正确的方向,我将不胜感激。注意我想在代码中放置一个强制信号来切换 signal_a 并使用计数器查看它是否显示在 signal_b 上,但这不适用于我需要的所有情况,因为 signal_a 处于除 1 之外的任何其他状态关闭模具。
system-verilog - 在 systemverilog 中 bit over reg 的优势是什么?
测试台中的变量大多被实例化为bit
而不是reg
. 但bit
只是 2 个状态变量(0 和 1),reg
是 4 个状态变量(0,1,x 和 z)。为什么人们将bit
其用作测试台变量?我接手了一个旧项目,所有的测试台变量都是bit
. 所以当检查器执行检查时
if (data_rtl === data_expected) // reg[63:0] data_rtl, bit[63:0] data_expected
我无法在 data_expected 端执行 X 检查。当然它很常见bit
,为什么人们这样做?systemverilog中的bit
over有什么好处?reg
syntax-error - verilog 程序计数器语法错误
所以我的程序计数器测试台出现语法错误,我无法弄清楚为什么我不断收到以下 verilog 源有语法错误:“pc_tb.v”,20:令牌是“初始”初始 ^
我使用初始错误吗?制作流水线数据路径,这是迄今为止我得到的唯一不适合我的部分
memory - 在 Verilog 中,我正在尝试使用 $readmemb 来读取 .txt 文件,但它只在内存中加载 xxxxx (不关心)
我需要用一些二进制数据加载内存。我读到 $readmemb 可以用于此,甚至还有一种方法可以合成。
因此,我创建了另一个名为 RAM_IN 的模块(它不是测试平台模块)并“连接”到顶部模块。
在了解 $readmemb 之前,我使用的是以下代码:
但是像这样写100个数字对我来说太累了,所以像这样实现$readmemb:
读取此文件的目的是最初将 100 个二进制值(模拟 10x10 图像的像素强度)一一加载到顶部模块(稍后将处理并吐出结果......)
我创建了一个 .txt 文件,它的内容看起来完全像这样
当我模拟时,modelsim 向我显示充满 xxxxxxxxxxxxxxxxx 的内存(不在乎),看起来好像没有将任何内容加载到内存中。
我不知道我做错了什么。可能不是 .txt 文件中的数字的处置。也许是因为我打算在另一个不是测试台的模块中加载带有 $readmemb 的文件?
PD:我做这个填充内存的过程的模拟只是为了实际目的,最终的目的是把Top模块设计成一个完整的SoC,我想我会用QSYS来做。但我在这方面很新,所以我还在学习。任何帮助都感激不尽!!!
vhdl - VHDL写入文件什么都不做
我写了一段 VHDL 代码的图像处理。为了测试,我用 Matlab 和一个相对简单的测试台创建了一个像素值文件(它只是将值从文件填充到输入)。我想将结果写入一个新文件,以便我可以处理它们并查看生成的图像。
代码编译并运行测试台,我看到我输入的所有报告以检查它是否在任何地方停止,但带有结果的文件仍然是空的。print 和 writeline 似乎都没有做任何事情。该文件存在并添加到 Vivado 中的项目中,因此我不必编写整个路径。模拟器输出中没有警告或错误。
我从这里和这里获得了写入文件的代码,并将其扩展了一点,以便每个时钟写入文件并在顶部添加一个标题。
color_out(0) 是一段输出。color_out_v 输出有效。
有任何想法吗?我错过了什么?
vhdl - 测试台不工作
以下测试台无法为 QAU 和 QBU 提供预期的信号:
循环过程似乎对CLOCK_50
信号和我给出的Reset
工作指令都很好。只是QAU
andQBU
信号不起作用,因此,我的Q
信号就是我的输出。
有什么理由吗?