system-verilog相关内容

了解函数返回值

我正在尝试理解语言资源手册(第10.3.1节)中的SystemVerilogfunction返回值,但我在理解以下部分时遇到了困难。有人能帮我翻译一下吗?我试着在不同的网站上寻找,但信息并不那么深入。 在SystemVerilog中,函数返回可以是结构或联合。在这种情况下,在函数中使用且以函数名开头的分层名称被解释为返回值的成员。如果函数名在函数外部使用,则该名称指示整个函数的作用域。如果函 ..
发布时间:2022-08-17 19:13:18 其他开发

在SystemVerilog测试平台中包含VHDL包

我有这个SystemVerilog测试台,我想在其中使用一个用VHDL语言编写的包。 当我这样做时:'include "desired_pkg.vhd",它显然是一个Verilog包,如ModelSim报告的: Error: (vlog-13069) ** while parsing file included at C:/Users/VHDL/CO_code/CO_18_03/simula ..
发布时间:2022-08-07 16:43:31 其他开发

UVM中驱动程序的用途是什么?

既然生成器为DUT(被测设计)生成测试激励,为什么不直接给他们提供呢?有什么需要司机的?如果可能的话,请给我举个例子。 推荐答案 基于事务级建模(TLm)。这意味着您可以使用事务对象在较高抽象级别对内存读写等内容进行建模。例如,内存事务可以表示为: 数据值 地址 方向(读或写) 在UVM中,我们通常创建由定序器、驱动程序和监视器组成的uvm_agent。定序器扮演事务生 ..
发布时间:2022-06-12 10:47:52 其他开发

如何改变变量赋值的下限索引?

我想对索引较低的变量进行赋值。这就是我想要做的: int i; logic [63:0] data; i = someCalculatedNumber; data[63:(i*8)] = 'h0; 我知道这不会编译。完成此作业的最佳方法是什么? 推荐答案 如果您希望清零LSB,则这将为您完成此操作 data &= '1 ..
发布时间:2022-06-12 10:35:52 其他开发

在verilog中,判断一辆公交车是否包含单个x的最佳方法是什么?

我有一个监控公交车的测试台。总线内的一些信号可以是1‘BX。由于各种原因,我需要知道母线内是否有任何信号是1‘BX。如果一条总线包含任何x,那么测试(不是为了合成--仅用于模拟)最好的方法是什么?我曾希望我可以使用缩写或,然后使用=,但这似乎不起作用。谢谢, D 推荐答案 (^bus === 1'bX) 对总线进行逐位异或,然后检查结果是否为X。如果任何位为X或Z,则结果将 ..
发布时间:2022-06-12 10:31:08 其他开发

在模拟过程中,为什么触发器在转换之前取值,而条件(IF)语句在转换之后取值?

正如您在下面的光标中看到的那样,if语句关注的是转换之后(它看到的是rst=0,因此将等于设置为in),而不是看到rst=1。 但也可以看到c在转换前取a的值。 我想知道为什么会这样。假设您想要通过在时钟周期延迟的使能来选通寄存器,则不能使用IF(ENABLE_DELAYED),因为(理想情况下)下降转换将发生在时钟的上升沿,因此在模拟中检测不到。 我没有成功地在网上找到我的问题 ..
发布时间:2022-03-26 17:08:12 其他开发

警告:(vsim-3015)[PCDPC]-端口大小(8)与连接大小(7)不匹配

以下是我收到的警告: 警告:(vsim-3015)[PCDPC]-端口大小(8)与端口‘wrdata’的连接大小(7)不匹配。端口定义位于:sign.sv(2)。 时间:0 ns迭代:0实例:/TB/DUT文件:TestBench.sv行:15 警告:(vsim-3015)[PCDPC]-端口大小(8)与端口‘rddata’的连接大小(7)不匹配。端口定义位于:sign.sv(2)。 ..
发布时间:2022-03-26 16:43:16 其他开发

在 verilog 或系统 verilog 中在 case 语句中生成块

Verilog 或 SystemVerilog 有没有办法在 case 语句中插入 generate 语句来生成所有可能的输入组合.例如,一个典型的用例是 N:1 多路复用器. case(sel)产生for(i = 0; i 我试过这个,但该工具出错.可以使用另一种语法,即 out 但是,我的工具不理解这一点(多路复用器已完全解码)并生成组合循环.我可以使用 if 语句来获得预期的多路 ..
发布时间:2021-09-17 19:28:17 其他开发

获取“无效模块实例化"在我的 FIR Verilog 代码中

我的代码是一个顺序结构,8 个恒定抽头,8 位 FIR.我使用内存来保存所有输入*分接头,但在尝试保存这些乘法时我不断出错. 我在 Modelsim 上编译它并得到“语法错误".之后,我尝试了 iverilog 并得到了“语法错误"和“错误:模块实例化无效".我觉得我遗漏了一些非常明显但无法解决的问题. 代码如下: /* Código de um filtro FIR 8 taps, ..
发布时间:2021-09-04 18:50:37 其他开发

系统 verilog 中的空对象访问错误

我正在尝试使用 OOP 概念在 System Verilog 中执行二叉树插入和顺序遍历.在创建对象之前,我收到了正在使用该对象的错误消息.请看一下代码,如果有人发现任何错误,请帮助我 类节点;字节数据;左节点;节点权;函数 new();this.data = 数据;this.left = null;this.right = null;端功能结束类类 bin_search 扩展节点;节点新节点; ..
发布时间:2021-09-04 18:50:34 其他开发

如何在verilog中获得粗略的随机信号不好?

现在,我试图使粗略的随机信号不好.所以我在 verilog 中使用了 $urandom 命令.但我仍然无法获得粗略的随机信号. 以下是我的随机 verilog 代码,但我不知道如何获得不好的粗随机信号. 总是@(clk) 开始温度 = $urandom;结尾 编辑 粗随机信号意味着我可以用加法器信号告诉你. reg [29:0] temp;always@(posedge clk ..
发布时间:2021-09-04 18:50:31 其他开发

这是强制使用'new'在systemverilog类中起作用吗?

现在我正在研究 systemverilog 的类. 从许多示例中,我发现了 2 种类型的“新". 班级中存在“新"的情况. “新"的大小写在初始存在. 这些构造函数的实现有什么区别吗? 再补充一点,new() 函数里有什么?我不确定 new() 函数的目的是什么 更新 例如 1 是.xxx班...函数 new();...结束函数 终结类 示例 2 ..
发布时间:2021-09-04 18:50:28 其他开发

如何自动缩放 $display 列宽?

我想在一个列中$display 字符串,就像在一个固定宽度的表格中一样.但是,我不知道我的字符串的最大列宽是多少提前. 假设我有一个 SystemVerilog 字符串数组(names).当我 $display 它们时,我猜测列的宽度 (10),但我的猜测太小了: 模块 tb;字符串名称 [5];最初的开始姓名 = '{“ALU",“COMPARATOR_3",“记忆",“翻牌",“ram ..
发布时间:2021-09-04 18:50:25 其他开发

我可以在 SystemVerilog 中的 initial 中使用 generate-endgenerate 块吗?

例如 初始开始产生for(genvar i; i 我在使用 QuestaSim 时遇到错误.“接近生成:语法错误,意外生成" 解决方案 No. generate 块在精化时间期间进行评估.而initial、always和其他程序块从零仿真时间开始,即运行时间.参考 Systemverilog IEEE 1800-2012: 生成的方案在详细设计过程中进行评估.尽管生成方案使用类 ..
发布时间:2021-09-04 18:50:22 其他开发

系统 Verilog always_latch 与 always_ff

刚开始学习 System Verilog.我对语句 always_ff 和 always_latch 的使用感到困惑.前者将用作: always_ff @ (posedge clk)开始a 而后者: always_latch开始a 第一个仅由时钟的上升沿激活,并与非阻塞分配相结合产生 FF. always_latch 显然被认为代表了一个锁存器,但是为什么要使用非阻塞赋值呢?使用 ..
发布时间:2021-09-04 18:50:19 其他开发

SystemVerilog 动态访问子阵列

我在编译代码第 9 行时遇到错误,所以我不确定如何动态访问数组.我必须从接收到的 bytes 构建 logic [255:0].(看起来我必须查看 SystemVerilog 的数据类型 :().提前致谢. 模块测试;任务 test_array(逻辑 [7:0] B);静态逻辑 [255:0] l_ar_B;l_ar_B[7:0] = B;for(int i=0; i ..
发布时间:2021-09-04 18:50:17 其他开发

始终在零时间阻止执行

我想在零时间执行总是阻塞.例如下面的代码不会在零时间执行. 总是@*开始//功能代码结尾 我在最后移动了敏感列表,以便代码在零时间执行, 总是开始//功能代码@*;结尾 此代码在零时间执行,但在零时间后根本不执行,即使块内使用的输入发生变化.例如,请参阅下面的代码及其输出: module AlwaysTimeZeroTest_v();reg reg_A;最初的开始$display("我在 ..
发布时间:2021-09-04 18:50:14 其他开发