问题标签 [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.
system-verilog - Config 类中的虚拟接口
如何在不使用 uvm_config_db 的情况下使用虚拟接口从我的配置类中指出 TB_top 中的接口?
vhdl - 在程序启动 VHDL 的过程中初始化信号的问题
我有一个输入信号 (Data),它是 std_logic_vector (511 down to 0)。我将前 256 位分配给信号 ch1_sample_block,将后 256 位分配给信号 ch2_sample_block。我在我的架构主体中使用并发分配,因此无论 Data 在启动时具有什么值,这两个子信号也具有该值。在此之后我创建了一个进程vector_assignment,它将每个子信号中的所有数据(在16位std_logic_vector块中)分配给两个数组ch1_vector_block和ch2_vector_block,它们分别是std_logic_vector的0到15(15下降到0)。
问题:我希望将这些数组信号 ch1_vector_block 和 ch2_vector_block 初始化为 ch1_sample_block 和 ch2_sample_block 中包含的数据。问题在于,因为它们是在进程中分配的(在 clk 或 Data 发生变化之前不会“唤醒”),它们被初始化为“U”(未初始化)。我没有初始化 ch1_vector_block/ch2_vector_blocks 的原因是我不想初始化 32 个向量。这就是整个过程的重点
我在时间 t = 0 为 Data(输入信号)分配了一个值,并且因为 ch1_sample_block 和 ch2_sample_block 被同时分配了 Data,所以它们在 t = 0 时的值按照我想要的方式进行初始化。
但是为什么在时间 t = 0 时,即使 Data 的值发生了变化,进程也没有唤醒并为向量块赋值呢?我需要如何实现呢?我试图避免这样做:
ch1_vector_block(0) <= ch1_sample_block(15 downto 0) 。. . ch1_vector_block(15) <= ch1_sample_block(255 到 240)
谢谢!
system-verilog - 尝试构建 64 位 8:1 MUX 时出错
通过级联 MUX,我创建了一个 8:1 MUX,我需要它接收 8 个不同的 64 位值的输入,然后 MUX 可以从中选择以输出 64 位值。尝试在 ModelSIm 中运行我的测试平台时出现此错误:数组连接类型“wire[63:0]$[7:0]”与端口 (A) 的“wire[7:0]”不兼容:可以t 混合打包和解包类型。
system-verilog - UART串行接口
我想通过 UART 的 1 位串行接口串行传输 8 位(1 位/时钟周期)。我在事务类中创建了一个 8 位数据包,并通过接口的驱动程序 modport 驱动数据包。这是下面的代码片段。
RXSD_vif 是虚拟接口句柄。
DRV - 模组端口
cb_RXSD_DRV 是时钟块,我在其中采用正时钟边沿,RXD 被制成输出。
我收到一个编译错误,提示“进入 RXSD_pkt 的索引太多”。
我对此很陌生,如果能告诉我如何解决这个问题,我将不胜感激。提前致谢
verilog - 如何使用 generate inside testbench 来实例化不同的测试模块?
我正在尝试在我的测试台中运行不同的测试程序,并根据我设置的生成标志运行它们。请注意,下面的代码是我将 ModelSim 定义为顶层的代码。这是我正在尝试做的事情:
有了这个,我只想能够在这个测试台中设置参数的默认值并运行不同的案例。这在 ModelSim PE Student Edition 10.4a 中编译得很好,但是当我从生成的实例名称中添加信号时,Modelsim 无法识别该实例存在?
for-loop - Verilog在测试台中嵌套for循环不能正确迭代
晚上好,
我设计了MC14585B幅度比较器的结构设计:https ://www.onsemi.com/pub/Collateral/MC14585B-D.PDF
我想模拟所有 2^8 种可能性,所以我为此编写了一个测试平台。我正在使用modelsim学生版:
来源:
试验台:
出于某种原因,当我运行我的测试台时,外部 for 循环 (A) 根本不会迭代值。此外,我将此循环放入初始语句中,因此它只会一直迭代一次,但它会继续运行直到我结束模拟。
这是一些示例输出:
任何想法发生了什么?谢谢
verilog - verilog testbench的输出都是x或者z
我不太了解verilog,所以这可能是我设置事物方式的一些简单问题,但我似乎无法确定为什么我的模拟波形会为我的测试台输出产生x或z。这是我正在模拟的模块:
和我的测试台:
我的输出给出了 Sum = x 和 Ovflw = z。我用来组成我的 4 位加法器的单位全加器模块工作正常并经过测试。我很感激任何反馈。
time - (Verilog) 测试台等待
我在为我的加法器创建测试台时遇到问题。当我启动测试台时,它会将初始开始时间分配为t1
和输入a
,b
当cout
为 1 时,它将将最终时间设置为t2
. 最后延迟是 和 的t2
减法t1
。
问题主要是语法错误。
到目前为止,这是我的代码:
感谢您的帮助。
verilog - SystemVerilog : fork - 加入和编写并行测试平台
我正在关注此链接上的测试平台示例:
http://www.verificationguide.com/p/systemverilog-testbench-example-00.html
我有两个关于 fork-join 语句的问题。测试环境具有以下启动测试的任务:
我的第一个问题是为什么我们要等待在 post_test() 任务中触发生成器事件?为什么不做一个常规的fork-join,据我所知,它将等待两个线程完成后再继续。
我读了另一个 Stack Overflow 问题(System Verilog fork join - Not 实际上是并行的?)说这些线程实际上并不是在 CPU 意义上并行执行,而只是在模拟意义上。
我的第二个问题是,如果它们实际上没有并行执行,那么分叉连接的意义何在。不会有性能优势,所以为什么不遵循如下顺序算法:
对我来说,这似乎比测试台示例简单得多。
谢谢你的帮助!
module - 如何测试流水线模块
我是verilog的新手,为流水线模块编写测试台和为普通模块编写测试台有区别吗?我只需要一个简单的示例来说明测试流水线模块和非流水线模块的测试台代码的预期差异。请注意,我正在测试的模块是流水线的,而不是测试台。