如何使用 Verilog 宏模拟 $display?

2023-12-09

我想创建一个具有多个参数的宏,就像 $display 一样。

我的代码看起来像这样,但它不起作用。

               `define format_macro(A) \
                      $write("%s", $sformatf(A)); \

这就是我调用 format_macro 的方式。

               `format_macro("variable = %d", variable)

我怎样才能做到这一点?


我想创建一个具有多个参数的宏,就像 $display 一样。

你不能。 Verilog 和 SystemVerilog 不支持可变参数宏.

如果您的目标是使用它来格式化字符串或输出,并且您希望避免键入,那么这里有一个解决方法$sformat到处都是。您可以定义宏以具有单一参数,并将该论证与$sformat。这样做需要注意的是,使用宏时必须将参数括在括号中。

请注意()'s for $sformatf不是宏的一部分:

`define format_macro(A) \
        $write("%s", $sformatf A ); \

然后你可以这样做:

  `format_macro(("a = %d", a))
  `format_macro(("a = %d, b = %d", a, b))

顺便说一句,有一个很棒的截屏视频here其中展示了如何在 UVM 中自定义消息传递。在其中,作者展示了这种宏观技术,以及一些其他不错的技巧(如果您使用 UVM)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Verilog 宏模拟 $display? 的相关文章

  • 在 SystemVerilog 中 fork join_none 后仅等待一些线程完成

    在 SystemVerilog 中 我需要等待在 fork join none 结构内执行的一些线程完成 但是在另一个 fork join none 结构中还有另一个永远不会结束的进程 我的代码如下所示 fork process that
  • x 和 z 值在 Verilog 中到底代表什么?

    Verilog 标准定义了四种类型的位值 0 1 x 和 z 其中 0 表示低 1 表示高 x 表示未知 z 表示未驱动网络 有几个问题 x 是否意味着我们不知道该值是 0 还是 1 0 或 1 或 z 或者该值是未知的并且可以是 0 1
  • Verilog 中总是后面跟着 #(...) pound 是什么意思?

    在一个简单的时钟生成器示例中 我看到以下代码 always cycle 2 clk clk 我以前总是见过 但没见过井号 我试图在文档中找到它 但我所能找到的只是一些对 实值端口 的引用 没有进一步的阐述 这是一个延迟操作 它本质上只是读取
  • 如何在verilog中逐行读取文本文件?

    我有一个 SREC 文件 它是一个简单的文本文件 我想在 verilog 中逐行读取它 我怎样才能做到这一点 以下读取文件 每个时钟周期 1 行 预期的数据格式是每行一个十进制数 integer data file file handler
  • 如何在RTL中使用时钟门控?

    我正在对一些时钟进行门控latch以及我设计中的逻辑 我在综合和布局布线方面没有太多经验 在 RTL 中实现时钟门控的正确方法是什么 示例1 always comb begin gated clk clk latch update en e
  • Verilog 最佳实践 - 递增变量

    我绝不是 Verilog 专家 我想知道是否有人知道这些增加值的方法中哪一种更好 抱歉 如果这个问题太简单了 Way A 在组合逻辑块中 可能在状态机中 some condition count next count 1 然后在一个连续块中
  • 将枚举转换为逻辑

    考虑以下模块声明 module DFF d q CLK RESET parameter W 2 input W 1 0 d input CLK input RESET output logic W 1 0 q endmodule 当 d 和
  • verilog 中的“<<”运算符

    我有一个verilog代码 其中有一行如下 parameter ADDR WIDTH 8 parameter RAM DEPTH 1 lt lt ADDR WIDTH 这里将存储什么RAM DEPTH以及什么是 lt lt 操作员在这里做
  • 在verilog中将wire值转换为整数

    我想将电线中的数据转换为整数 例如 wire 2 0 w 3 b101 我想要一个将其转换为 5 并将其存储在整数中的方法 我怎样才能以比这更好的方式做到这一点 j 1 for i 0 i lt 2 i i 1 begin a a w i
  • 如何使用 Verilog 和 FPGA 计算一系列组合电路的传播延迟?

    我是 FPGA 和 HDL 的新手 但我正在尝试学习 但无法弄清楚这一点 如何通过多个级别的组合逻辑来计算或估计传播延迟 我可以仅凭经验确定这一点 还是可以在设计时弄清楚 在这种情况下 我使用 FPGA 来实现奇偶校验设置和检查电路 该电路
  • 在 Mac OS X 10.6.8 上用什么来编译和模拟 Verilog 程序?

    作为教学大纲的一部分 我需要模拟 Verilog 程序 但是 我的大学使用 Xilinx ISE 但它不适用于 Mac 因此 请帮助我提供最好的软件以及有关如何安装和使用它们的一些详细步骤 你可以尝试伊卡洛斯 Verilog http iv
  • 向左旋转 verilog 大小写

    我的任务是用verilog编写一个16位ALU 当我做需要旋转操作数和进行2的补码加法和减法的部分时 我发现了困难 我知道如何用纸和铅笔解决这个问题 但我无法弄清楚如何在 Verilog 中做到这一点 例如 A表示为a15 a14 a13
  • 开始后跟冒号和变量是什么意思?

    什么是data mux意思是这里 它只是块的名称吗 if PORT CONFIG 32 P0 1 b1 begin data mux end 这些是块名称 它们特别适用于generate块 例如 您可以定义一个generate块如 genv
  • 在 Verilog 中判断总线是否包含单个 x 的最佳方法是什么?

    我有一个监控总线的测试台 总线内的一些信号 位 可以是 1 bx 由于多种原因 我需要知道总线内是否有任何信号是 1 bx 如果总线包含任何 x 测试 不用于综合 仅用于模拟目的 的最佳方法是什么 我曾希望我可以使用减少或然后使用 但这似乎
  • 自动任务和静态任务有什么区别,为什么我们不能通过引用传递静态任务

    静态任务和自动任务有什么区别 program class ref int index value class holding values int ass array task assign value int value int inde
  • verilog 中的案例陈述

    我遇到了优先级编码器设计 并找到了一种使用 case 语句来实现它的新方法 唯一令人困惑的是 case语句是否优先考虑case 例子 case 1 b1 A 3 Y lt 4 b1000 A 2 Y lt 4 b0100 A 1 Y lt
  • Verilog 按位或 ("|") 单子

    我见过 Verilog 代码 其中使用了按位或运算符 目的是什么 例如 address 15 14 0 or address 15 14 io din ramrd 不能省略 吗在这些情况下 在这种情况下 它充当归约运算符 例如 4 b100
  • 系统 verilog 中没有类型的输入

    我在一个系统 verilog 代码的输入和输出的示例中遇到过module没有说明它们的类型 例如logic wire module mat to stream input 2 0 2 0 2 0 a b input newdata inpu
  • 学习 Verilog 的资源 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我是 Verilog 新手 有人可以推荐学习资源 书籍 视频 博客或任何他们有良好个人经验并帮助他们更
  • Verilog 数组语法

    我是 Verilog 新手 并且遇到了很多麻烦 例如 我想要一个包含八个单元的数组 每个单元都是 8 位宽 以下不起作用 reg 7 0 transitionTable 0 7 assign transitionTable 0 10 仅仅做

随机推荐

  • Promise 是如何构建的?

    我想查看 JavaScript Promise 的源代码 我尝试过toSource 但它仍然只是显示 Promise native code 有什么办法可以看到本机代码吗 Promise 内置于 V8 Javascript 解释器中 并部分
  • 当用户不在该选项卡中时,隐藏闪亮应用程序中的选项卡。或者停用它

    我有下面闪亮的仪表板 我已经制作了列的单元格Species交互方式是 如果用户单击该列中的某个单词 例如 setosa 则会移动到选项卡Species 这是某人可以移动到此选项卡的唯一方法 问题是我不想要该选项卡Species当用户不在该选
  • 使用 JQuery 选中父列表项中的复选框?

    我对 Javascript 和 JQuery 是全新的 所以我一直在阅读它 并尝试在检查其中一个子项时检查 并设置为非活动状态 父列表项中的复选框 如果这没有任何意义 请查看列表结构 ul li li ul
  • 如何强制单向对多关系持续存在

    当一对多关系没有逆时 核心数据就会出现问题 对相关属性所做的更改不会保留 这是我们许多人都面临的问题 因为它可以通过谷歌搜索找到 这是想问 除了明显的答案或添加反向关系之外 你们中的一些人是否找到了实现持久性的技巧 解决方法 背景 即使文档
  • CMake 找不到 Visual C++ 编译器

    安装 Visual Studio 2015 并在以前的项目上运行 CMake 后 CMake 错误指出找不到 C 编译器 The C compiler identification is unknown The CXX compiler i
  • 如何修改Eclipse IDE中的键盘快捷键?

    Title more or less says it all Specifically I ve become increasingly annoyed that in order to run an ant script I have t
  • 在哪里可以找到 Python 类?

    我在哪里可以找到类似类的文档object or dict 我想知道他们有哪些方法以及哪些属性 我找到了大部分东西http docs python org 2但我找不到类的方法和属性object 如需详细文档 请访问在线文档 pydoc服务器
  • 在 C# 插件中调用 Dynamics Web API

    我在 Microsoft Dynamics 中有一个业务流程来处理新客户端的创建 当该过程完成时 我将附加一个工作流程 该工作流程会启动一个调用插件来执行一些自定义处理的操作 我正在关注this文章来设置这个过程 在我的插件中 我调用了 D
  • Sublime Text 3 html 自动补全无法正常工作

    我正在尝试使用 sublimetext3 来编辑 html If I do ul选项卡 然后它生成 ul ul 如果我做ul temp选项卡 然后它生成 ul class temp ul 然而 当我尝试时ul gt li temp选项卡 它
  • 寻找相近浮点数之间的“离散”差异

    假设我有两个浮点数 x and y 他们的价值观非常接近 计算机上可以表示离散数量的浮点数 因此我们可以按升序枚举它们 f 1 f 2 f 3 我希望找到距离x and y在此列表中 即它们是 1 2 3 还是n离散步骤分开 是否可以仅使用
  • 如何在android中的两个选项卡之间传递值

    我已经按照 android tab host 的教程进行操作 并且能够在模拟器上运行 现在我想做的只是在一个选项卡视图中实现一个文本框和按钮 一旦用户在文本框中输入并按下按钮 文本框中输入的值就应传递到第二个选项卡 我可以使用该值进行进一步
  • Xcode 8 二进制文件未在 itunesconnect 上显示以供审核

    我已经从 Xcode 8 制作了二进制文件并通过 Application Loader 3 6 上传到 App Store 也提交成功并弹出 但是二进制文件没有在 iTunesConnect 中显示 因为它超过了 19 小时 但它没有在 i
  • 斐波那契函数的问题。 C++

    应该返回n数组的位置 但我只得到 0 而不是值 int fibonacci int n int f 100 f 0 0 f 1 1 for int i 2 i
  • 拉取 microsoft/nanoserver 容器时出现错误“Failed to OpenForBackup failed in Win32”

    尝试提取 microsoft nanoserver 映像时遇到以下错误 下载成功 提取图像期间会出现此错误 482ab31872a2 下载完成 注册层失败 重新执行错误 退出状态 1 输出 无法 OpenForBackup 在 Win32
  • 现有对象的向量

    我有一些对象 在本例中它们是向量 我希望它们存储在向量中 但不知道如何正确声明它 我的代码是 vector
  • 控制 WinForms 中的嵌套限制

    我正在运行时创建表单的控件 出于某种原因 我需要深度超过 49 个嵌套控件 即控件包含在另一个控件中 但出现以下错误 如何添加更多相互嵌套的控件 这是一段可能会重现该错误的代码 public partial class Form1 Form
  • 在 Struts2 中实现

    我目前正在处理一个项目 我的应用程序中有多个选择框 每个值应根据第一个列表中选择的先前值进行更改 这是我的代码 我没有获得第二个选择列表 这是我的jsp
  • Django FilteredSelectMultiple 未在页面上呈现

    我目前使用的是 Django 版本 1 11 2 并且想在管理页面之外使用 FilteredSelectMultiple 小部件 这是我的 forms py class TBDAuthGroupManageForm forms Form p
  • UPDATE count=count+1 是否存在并发?

    我想知道 我会遇到并发问题吗 这不在交易中 这段代码是为了Sqlite prototype 但我计划将它与 MySql 或来自 MS 的 SQL 一起使用 command CommandText UPDATE tag name SET co
  • 如何使用 Verilog 宏模拟 $display?

    我想创建一个具有多个参数的宏 就像 display 一样 我的代码看起来像这样 但它不起作用 define format macro A write s sformatf A 这就是我调用 format macro 的方式 format m