system-verilog

    1热度

    1回答

    我有一个“而”循环为OVM测试,看起来像这样的部分: while (signal_val == 0) begin signal_val = sla_vpi_get_value_by_name ("blah"); end 我想限制此循环120微秒,然后退出。如果(signal_val == 0)在120μs结束时仍不满足,我想退出测试。我如何实现这一目标? 我想我必须调用'globa

    0热度

    1回答

    我有一个矢量数据[255:0]。另一个向量len [3:0](根据定义,len只能取最大值8)。我需要这样做(伪码): bits= len*32; data_mod[255:0] = {data[255:(255-(bits-1))], (256-bits)'0} ex : if len = 6, then data_mod[255:0] = {data[255:64], 64'b0}

    0热度

    1回答

    我与某人合作开发SystemVerilog项目。但是,我习惯使用Synopsys VCS SystemVerilog模拟器,他习惯于使用Cadence INCISIVE irun。 一个测试台模块使用随机数生成顶层设计模块的测试输入模式。因此,我设计一类用于产生随机数: class RandData; rand logic [3:0] randIn; function new(

    1热度

    1回答

    我有一个类型为以太网数据包的邮箱。我已经随机将数据放入邮箱。现在我想打印邮箱的每个元素而不删除元素。 我试过try_peek但它总是指向第一个元素,所以它总是打印第一个元素。 get()方法删除元素,因此在for循环结束时邮箱为空。 有没有一种方法可以在不删除元素的情况下遍历SystemVerilog中的邮箱? for (int i=0; i<=9; i++) begin

    -2热度

    1回答

    我的代码是一个顺序结构,8个常量抽头,8位FIR。我使用了一个内存来保存所有的输入*水龙头,但是我一直在尝试保存这些乘法运算时遇到错误。 我在Modelsim上编译它,得到了“语法错误”。之后,我尝试了iverilog,并得到了“语法错误”和“错误:无效的模块实例化”。我觉得我错过了一些非常明显但却无法解决的问题。 代码去如下: /* Código de um filtro FIR 8 taps,

    0热度

    1回答

    我假设在串联的最左侧放置一个未基础的未定义字面量时,将只填写给定值的任何缺失位。我没有在LRM中看到任何明确的说明。 logic [63:0] rd_data; logic [31:0] mem_dout; logic [15:0] op_data; .... assign rd_data = {'0, op_data, mem_dout}; 显然,下面将非法: 编辑:@ dave_5

    0热度

    2回答

    格雷码计数器中的1位变为亚稳态时会发生什么?为什么它在异步FIFO中不成问题?

    2热度

    3回答

    我有一种情况,我有2个C函数。这些C函数有很多错误检查场景,我使用exit(1)来清除。系统verilog代码中的一百万个位置通过DPI调用来调用这2个C函数。 我在我的C例程中使用了execinfo.h和backtrace()函数,但栈跟踪 info显示了C函数,但上面只是显示了一些随机vcs_exe.sim.1234_1.so作为主调用函数。 我甚至试图在发布的区域中寻找这个vcs_exe.s

    1热度

    1回答

    实现1: logic [2:0][3:0] reg0; // Packed [email protected](clk_a) reg0[1:0] <= in0[1:0]; [email protected]_b) reg0[3:2] <= in1[1:0]; 实现2: logic [2:0] reg0 [3:0]; // unpacked [email protect

    -1热度

    1回答

    我们正在编写一个迷你处理器,它根据写入其内存的指令解析信息。 我们的测试台中的第一条指令(内存中的地址0)是,而作为分支写入的循环等于:if (delimeter == 0) jump 0。 为了区分等待分界线的情况和分支相等(或分支不等于)的一般情况,我们添加了一个特定的waiting_for_delimeter信号,但取指指令需要一个时钟周期,并且由于管线插入了NOP (没有操作指令),在下一