问题标签 [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.
package - 封装程序需要测试台激励
我有各种在带有微控制器的并行总线上使用 FPGA 的设计。对于每个设计,我都有一个测试平台,我使用模拟 MCU 时序的程序来模拟总线上的多个读/写操作。
我想知道一种将这些程序放在一个包中以便于重用的好方法。现在,程序已定义并作用于测试台实体范围内的信号。我宁愿有这样的东西。
mcu_sim 包将包含模拟 MCU 总线操作所需的一切,我可以使用过程调用轻松地定制我的刺激程序。我意识到它需要程序来控制 mcu1 内部发生的事情。是否有可能做到这一点?
如果不是,您将如何为测试刺激制定可重复使用的程序?
vhdl - 如何在 VHDL 97 和 ISim 中获取内部信号到测试平台?
我正在使用 VHDL 97 和 Xilinx ISim 的测试平台工作,我正在寻找一种方法来从代码而不是波形中了解 UUT 内部信号(如 Modelsim 中的间谍功能)的值。
我知道我可以使用 VHDL-2008 轻松完成,alias
但有人知道其他选择吗?
谢谢,
vhdl - 在vivado中显示一个定点值
假设我的 VHDL 中有一个定点值 - 代码定义为 std_logic_vector。我知道我的最后 4 位是小数。
当我使用模拟器时,它当然不会看到最后 4 位为小数,是否有可能在模拟中更改它,以便模拟知道第 3 位的值为 0.5 ,第 2 位的值为 0.25等等 ?
verilog - TestBench 不执行实例模块
我是 verilog 的新手,我正在尝试构建一个模拟直接映射缓存的 verilog 代码。在编译过程中一切正常,但 testbench 模块似乎没有执行“内存”模块(实例)。输出变量总是未知的,除了那些我在测试台本身中赋值的变量,甚至是我在主模块中填满数据的 RAM 寄存器。你认为这似乎是什么问题?提前致谢 这是实例模块代码:
这是一个模块,我在其中将要填充 RAM 的数据写入文件:
测试台模块:
verilog - 带有测试台问题的verilog中的咖啡自动售货机模拟
我为带有输入的简单咖啡自动售货机编写了一个verilog代码
25ps、50ps、75ps 和 1
作为
“00”、“01”、“10”和“11”
分别。咖啡成本是 1 卢比。如果插入超过1rs,余额将被退回。这种平衡将是
01、10、11
作为
25ps、50ps、1rs
分别。我在没有测试台的情况下对此进行了模拟。模拟输出双时钟脉冲。(当我输入 25 ps 8 次或需要 8 个时钟脉冲来获得输出。预期时钟脉冲为 4)。为什么会这样?而且我在使用测试台时也没有得到输出。请帮我纠正测试台和我的程序。在 fpga 板上执行程序以查看输出时是否需要时钟分频器?当我编程到 fpga 板时,它按预期工作。我使用 Xilinx vivado 2015.2 工具和 zynq 板。请帮我解决这些问题
case - 在verilog代码中的序列检测器中的预期时钟沿之前输出为高
先生,我为“1011”序列检测器写了一个verilog代码。但是在模拟中,当它收到“101”时输出很高。IE。它在实际时钟沿之前的一个时钟周期为高电平。请帮我解决这个问题 //verilog 代码
我的模拟结果也附在这个问题上在此处输入图像描述
vhdl - 在 VHDL 测试台中延迟信号
我想在我的测试台上延迟一个信号。问题是我需要数百个时钟周期,因此我不想使用数百个中间信号。
由于这只是为了模拟使用,有没有办法用不可合成的代码添加延迟(可能使用 WAIT 或 AFTER)?
verilog - 为什么 4 位多路复用器测试台代码给出 x?
我无法弄清楚为什么它不起作用。我在 上运行了一个模拟edaplayground
,每次选择更改为 0 时,我都会在输出中得到一个“x”。不过,当 sel 为“1”时,我正确地得到“1”。
编码:
和测试台:
vhdl - VHDL模拟什么是正确的delta?
我目前正在实现一个 MUX,为了测试它,我创建了一个生成器和一个监视器,以很好地生成数据作为输入并监视其输出。
MUX 采用 Avalon Streaming 接口作为输入和输出,因此也支持背压。
我的问题是。我的测试台在下降沿运行,而我的 DUT 和输入数据在上升沿生成。我的输入时钟和我的输入数据都是在 Delta 周期 0 生成的。但是,我从 DUT 返回并控制发生器的背压就绪信号设置为 Delta 3。现在这会产生一些采样问题,因为 DUT 只能在每个周期加载数据来自发生器的时间数据(在 delta 0 处)有效且 DUT 就绪有效(在 Delta 3 处的背压信号)。
现在,如果我将 DUT 输入时钟倾斜 1 ps,它可以解决问题。但感觉这是错误的方法。这里正确的设计原则是什么。?
将时钟倾斜 1 ps 或至少将其移动 4 个增量,以便我确保我的所有信号都已在上升沿之前设置?
或者
移动我生成的数据,使其与 DUT 输出就绪信号对齐?
或者
这只是从测试台到测试台做出的决定吗?
我还认为测试台中的时钟应该在 delta 0 处生成,其他一切都必须在之后。
我正在模拟 Riviera-pro
system-verilog - Systemverilog Testbench如何处理可配置数量的接口
我有一个设计要验证。该设计类似于网络路由器。它具有多个FIFO输入接口和多个FIFO输出接口。所以同一组接口会一遍又一遍地重复。被测设备示例:
所以我认为在我的测试平台中,驱动程序的数量也应该是可配置的,因为我想分别驱动每个 FIFO 接口。
所以第一个问题是如何将这个接口连接到 DUT。我正在看类似的东西
我还认为将顶级接口包装器传递给 env 可能更容易,因为 FIFO 接口的数量是参数化的。所以,
然后我需要做一些从连接接口到fifo接口的路由
但是当我将 top_intf 传递到测试台环境时会出现一些问题。
这适用于NUM_In and
NUM_OUT 大于 1。但是当 NUM 为 1 时会出现一些问题。错误是
我现在正在做的是设置一些定义来指示 NUM_IN 值是什么,例如
然后
在另一个包含文件中
我认为我们可以使用一些脚本来生成测试平台代码,但我正在尝试寻找一种无需编写脚本的方法。我愿意接受建议。您如何处理测试平台中的这种设计情况?
非常感谢!