首页 文章
  • 18 votes
     answers
     views

    SystemVerilog数据类型的区别(reg,逻辑,位)

    systemverilog中有不同的数据类型,可以像下面这样使用: reg [31:0] data; logic [31:0] data; bit [31:0] data; 他们三个如何不同?
  • 1 votes
     answers
     views

    Value 未及时分配

    我做了非常简单的模块,我在时钟的posedge上分配了新的值: module block_entry( input logic clk, input entry entry_write, output entry entry_this ); always_ff @(posedge clk) begin entry_this <= entry_write; ...
  • 3 votes
     answers
     views

    系统Verilog仿真与执行

    关于SystemVerilog(SV)用于编程芯片和模拟SV代码的问题很多 . 语言结构的这种经济性给我带来了一些困惑:SV参考文献的第9.2.2节说明 “总有四种形式的程序:always,always_comb,always_latch和always_ff . 所有形式的always程序在整个模拟过程中不断重复 . ” 当然,这些结构当然也指定了组合逻辑和锁存逻辑的创建 . 因此,SV标准主要针...
  • 2 votes
     answers
     views

    SystemVerilog的问题是否具有非阻塞分配的循环?

    当我在基于SystemVerilog的FPGA设计工作时,我遇到了一种情况,我必须在时钟边缘计算4个元素的数组之和 . 我能够使用带有非阻塞赋值语句的for循环来做到这一点 . 该设计在Quartus 15.0上成功合成,但当我尝试在Modelsim Altera上使用相同的RTL运行模拟时,结果出乎意料 . 我已经编写了一个示例代码来说明相同的内容 . module schedule; log...
  • 19 votes
     answers
     views

    RAM DEPTH的地址宽度

    我正在实现一个可配置的DPRAM,其中RAM DEPTH是参数 . 如何从RAM DEPTH确定ADDRESS WIDTH? 我知道关系RAM DEPTH = 2 ^(ADDRESS WIDTH) 即ADDRESS WIDTH = log(base 2)RAM DEPTH . 如何在Verilog中实现log(base 2)函数?
  • 3 votes
     answers
     views

    Verilog:添加寄存器的各个位(组合逻辑,寄存器宽度可参数化)

    我试图找到一种方法来添加寄存器的各个位 . 例如, if regA = 111000 then regB = 3 ( regA 的位总和) . 1)在Verilog或SystemVerilog中是否有可合成的函数/运算符可以直接用于执行此操作? 如果没有,那么问题可能有点有趣,特别是因为操作必须在一个时钟周期内进行(纯组合逻辑)并且寄存器宽度是可参数化的 . 2)如果没有内置的Verilog或S...
  • 2 votes
     answers
     views

    如何在硬件中实现系统verilog结构?被宣布为电线的成员?

    我已经看到很多系统verilog程序示例将数据包表示为打包结构 . 这些数据是否像包一样串行传输?如何在硬件中实现系统verilog结构?
  • 2 votes
     answers
     views

    SystemVerilog / Verilog:有没有办法找到打包结构的字段的整数位偏移量?

    我想知道在verilog或systemverilog中是否存在标准函数,它将返回打包结构中某个字段的位偏移量 . 例如,请参阅下面使用假设函数$ find_field_offset: typedef struct packed { logic [31:0] field_1, logic [15:0] field_2, logic [63:0] field_3 } struc...
  • -2 votes
     answers
     views

    在systemverilog中创建4Kb数据结构

    在system-verilog中创建一个4千字节的数据结构 如何将这4千字节空间分成每个位置128位
  • 3 votes
     answers
     views

    如何在verilog中随机化一组位数组?

    我是Verilog的新手 . 我如何随机化以下内容: bit [7:0] data []; *不使用systemVerilog的randomize() .
  • 0 votes
     answers
     views

    在Verilog和Systemverilog中$ realtime返回多少位?

    在Verilog和Systemverilog中$ realtime返回多少位?
  • 0 votes
     answers
     views

    Verilog:读取1位输入并将其写入288位reg

    在verilog中,我有 module name(input data,..., output...);数据只是一位输入,我需要将它显示到 reg [288:0] data_tmp; 以比较这些位 . 如何将数据(输入)传输到reg? 我尝试使用for循环像C中的数组一样处理它,如下所示: for(i=0; i<288; i=i+1) begin data_tmp[i]=data; ...
  • 2 votes
     answers
     views

    将Verilog中的二进制文件数据读入2D数组

    我有一个数组,我想从二进制文件加载: parameter c_ROWS = 8; parameter c_COLS = 16; reg [15:0] r_Image_Raw[0:c_ROWS-1][0:c_COLS-1]; 我的输入文件是二进制数据,长256个字节(与r_Image_Raw相同的总空间) . 我尝试使用 $fread 来完成此任务,但它只适用于最后一行的第4列: n_File_...
  • 0 votes
     answers
     views

    什么's the proper way to use verilog “ref reg” to modify a design' s reg数组

    当我尝试使用任务在小型测试平台上修改reg数组时,我发现它运行良好 . 但是在一个大的设计(和基于OVM的env)上,它似乎不会修改数组 . 小测试台代码: class test; rand int rd_data; function new(); rd_data = rd_data | 'b10000; $display($psprintf("\nrd_data:0x%x\n&quo...
  • -1 votes
     answers
     views

    将一种类型的数组转换为另一种类型 - 系统verilog

    我期待将一种类型的数组转换为另一种类型 . 举个例子,假设我们有一个 byte 类型的数组,并且想要一个类型为 logic [5:0] 的新数组 . 我没有尝试丢失数据时遇到困难 . 谢谢, 乔治
  • 0 votes
     answers
     views

    来自8位处理器的verilog代码的状态转换图

    我正在尝试从下面的verilog代码制作状态转换图,但有一些困难 . //Execution Unit Control Logic 模块eucl(时钟,op1,op2,op3,数据,操作码,数据输出,p_c,output_pc,en_ram,wram,str,load_ram); 输入[7:0] p_c; // PC的输入值 输入[2:0] op1,op2,op3; //操作数 输入[3:0]操...
  • 0 votes
     answers
     views

    隐式重新定义参数

    #token有时会出现在verilog模块的参数列表之前 . 据说这表明隐含的参数重新定义 . 在this示例中,"(2)"在#标记后面,没有给出任何解释: //implicit parameter redefine dff#(2)u4(q 3 ,, d 3,clock); 解释here更有意义,重新定义的值遵循#令牌: Implicit in-line parameter ...
  • -3 votes
     answers
     views

    Packed vs unpacked array

    我试图了解以下两个代码段的不同之处: 例1: logic [4:0] [2:0] a; 例2: typedef logic[4:0] mytype; logic mytype [2:0] a; 例如1,a是打包结构,如果我没错,索引将按如下方式工作: a[0] , a[1] ... a[4] 将给出3位值(由于[2:0]) . 但是例如2, a[i] ,其中i的最大索引是2,每个 a[i]...
  • 0 votes
     answers
     views

    SystemVerilog通用多路复用器

    我试图想出一种方法来定义可以与电线一起使用的可合成通用多路复用器(作为函数或模块),以及SystemVerilog中的typedef(枚举,结构) 这有可能吗?如果没有,那么编写这样一个多路复用器最简洁的方法是什么? 目前,我正在使用多路复用器,它将二维线阵列作为输入,并根据选择信号选择其中一个元素 . 这使得它非常痛苦,因为每次我需要将它们连接到多路复用器模块时,我都会来回拼接我的类型变量 . ...
  • 1 votes
     answers
     views

    如何在SystemVerilog中为动态多维数组分配连续内存?

    SystemVerilog中是否有一种方法可以创建一个连续分配其内存的动态数组?我正在尝试将数据从文件读入动态数组 . 问题似乎是动态数组不在连续的内存位置,因此文件无法正确读入数组 . 当我声明变量读取文件为非动态数组时它工作正常,所以我认为问题是连续的内存 . 这是代码: This works fine, but does not use a dynamic array: // Reads f...
  • 2 votes
     answers
     views

    如何创建具有随机大小的不同随机值的动态数组?

    面试问题:我有一个基于systemverilog的课程如下: class A; rand n; constraint c:{n>=10 &&n<=15}; bit [31:0] arr[]; randc [31:0] data; endclass 在这种情况下,'n'是动态数组arr的大小 . 问题是如何编写一个方法来创建数组,以便该数组中的所有元素彼此不同 . 所以...
  • 0 votes
     answers
     views

    您是否需要在Systemverilog中调用类对象的构造函数?

    我有一个类,类中的元素是另一个类 . 我是否需要在类本身的构造函数中调用元素的构造函数?例如: class my_class; element_class A; function new (); A = new(123); endfunction endclass class element_class; int B; function new(int init...
  • 0 votes
     answers
     views

    系统verilog中级联数组的位宽

    我有多个函数生成1位变量/定义/枚举的连接数组 . 每次发生连接时,我都要确保最终大小为32位宽 . 如果小于或大于32位,则标记错误 . 我已经尝试了$ bits,$ size,但他们似乎想要一个变量并提供变量宽度而不是连接的宽度 . 这打败了目的 . 任何帮助表示赞赏 . 谢谢! 这就是我的想法: - 例如 . logic [31:0] var_out; function f1(bunch...
  • 1 votes
     answers
     views

    如何生成具有不同连接的接口数组?

    我已经声明了以下界面: interface data_x #(parameter g_DataWidth = 8) (input ckrs_t ClkRs_ix); logic [g_DataWidth-1:0] data; bit enable; ckrs_t ClkRs; always_comb begin ClkRs = ClkRs...
  • 0 votes
     answers
     views

    SystemVerilog Multi Dimensional枚举数组

    以下是如何定义枚举类型{S0,S1,S2,S3}的2 * N数组的示例: typedef enum logic [N-1:0][1:0]{S0,S1,S2,S3} state_t; (*) 因此,上述2 * N阵列的每个元素可以是S0或S1或S2或S3 . 假设我将{S0,S1,S2,S3}定义为单独的枚举类型: typedef enum {S0,S1,S2,S3} st_t; 那么现在我怎么...
  • 0 votes
     answers
     views

    系统verilog - 流操作符多维数组到比特流

    我无法弄清楚如何采取多维数组,如: bit unsigned [10:0] img [3:0][3:0]; 并将此数组作为一个位流 . 把它想象成一个4X4图像,每个像素在我想要读取的内存中是11位,我有1个输入引脚可以将我的图像作为比特流,我更喜欢如果你知道如何做到这一点,获取11位流中的数据(假设我有一个typedef) . 我想在testbench中声明一个这样的数组,并将这个数组作为一...
  • 0 votes
     answers
     views

    类对象在系统verilog中打印

    在SystemVerilog中,是否可以使用属性打印整个对象? (这里我不知道在我的父类中声明了多少变量 . )
  • 1 votes
     answers
     views

    system verilog:重写成员系统verilog类

    class my_a; int member1 = 1; endclass class my_ea extends my_a; int member1 = 2; endclass 现在当我这样做 my_a A; my_ea EA; EA =new(); A=EA; EA = new(); 已将类型为 my_ea 的对象的句柄赋予类变量 EA . A=EA; 将相同的句柄(指向 my_ea...
  • -1 votes
     answers
     views

    这个要求使用'new'在systemverilog类中起作用吗?

    现在我正在尝试研究systemverilog的clss . 从许多类的例子中,我发现了2种类型的“新” . 'new'的情况在课堂上存在 . 'new'的情况初始存在 . 这些构造函数的实现有什么区别吗? 还有,函数new()中有什么?我不确定函数new()的用途是什么 更新 例如1是 . 类xxx ...函数new(); ......功能 Endclass 例2是 program ...
  • 1 votes
     answers
     views

    在真实的系统verilog中建模z

    我正在制作一个输出驱动器的非常简单的模型,它可以有3个输出电平 . 它也可以关闭 . 我想要做的是将其建模为真实,这样我就可以为三个级别分配不同的数字 . 我不确定要建模'off'状态 . 我发现了一些关于使用 inf 或 NaN 在实数中建模 z 的讨论,但似乎这不是一个固定的参数 . 所以这是一个2部分的问题: 1)是 NaN 在系统verilog的 real 上建模 z 的正确方法吗? 2)...

热门问题