Modelsim 中的参数问题

2024-06-26

最近我遇到了以下问题:在 Quartus 软件中,我定义了 Verilog 模块,如下所示:

module module_name(
  input     [w1-1:0]    in1,
  input     [w2-1:0]    in2,
  output    [w1-1:0]    out1
);

  parameter w1 = 16;
  parameter w2 = 8;

  ...

endmodule

该模块编译没有任何问题。但是,当我尝试在 Modelsim(-Altera) 10.3d 中模拟该代码时,出现以下错误:

(vlog-2730) 未定义的变量:“w1”。
(vlog-2388) 'in1' 已在此范围内声明 (module_name)
(vlog-2730) 未定义的变量:“w2”。
...
标识符必须使用端口模式声明:in1
标识符必须使用端口模式声明:in2

我找到了使用以下代码绕过此问题的方法:

module module_name(
  in1,
  in2,
  out1
);

  parameter w1 = 16;
  parameter w2 = 8;

  input     [w1-1:0]    in1;
  input     [w2-1:0]    in2;
  output    [w1-1:0]    out1;

  ...

endmodule

另一种方法也是使用以下构造:

module module_name #(parameter w1 = 16, parameter w2 = 8)(
  input     [w1-1:0]    in1,
  input     [w2-1:0]    in2,
  output    [w1-1:0]    out1
);

...

endmodule

但是:在使用该参数的输入/输出信号之后定义参数是否非法(Quartus 建议不非法)?


IEEE 标准 1800-2012 https://standards.ieee.org/findstds/standard/1800-2012.html§23.2.1模块头定义声明两种标头类型:

模块头定义有两种样式,non-ANSI header和美国国家标准协会header.

The non-ANSI header样式将模块头的定义与模块端口和内部数据的声明分开。非 ANSI 风格模块头的非正式语法如下:

module_name ( port_list ) ;
  parameter_declaration_list
  port_direction_and_size_declarations
  port_type_declarations

模块头定义在语法上由端口列表右括号后面的分号完成。定义端口特征的声明(方向、大小、数据类型、符号等) 是模块内的本地定义。

美国国家标准协会headerstyle 使端口特性的声明成为模块头的一部分(仍以分号结尾)。 ANSI 风格模块头的非正式通用语法如下:

module_name #( parameter_port_list )
             ( port_direction_and_type_list ) ;

没有提及标头语法匹配:

 module_name ( port_direction_and_type_list ) ;
    parameter_declaration_list

基于LRM https://standards.ieee.org/findstds/standard/1800-2012.html,您的示例标头没有投诉。任何支持该语法的内容都来自标准之外。

定义是合法的parameters and localparams 在带有 ANSI 样式标头的标头之后,只要标头不引用它们即可。示例中IEEE 标准 1800-2012 https://standards.ieee.org/findstds/standard/1800-2012.html第23.10节覆盖模块参数

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

Modelsim 中的参数问题 的相关文章

  • 「Verilog学习笔记」游戏机计费程序

    专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点 刷题网站用的是牛客网 timescale 1ns 1ns module game count input rst n 异位复位信号 低电平有效 input clk 时
  • Modelsim 对 SV 的支持

    我目前正在使用 modelsim SE 5 8e 它不支持SystemVerilog 我需要使用 SystemVerilog 来设计和验证我的项目 您知道哪个版本的 Modelsim 能够很好地支持 sytemverilog 的设计和验证子
  • 使用forever和always语句

    以下两个代码都会生成一个时钟 我需要知道除了时钟生成之外 永远循环是否还有其他用途 我只在时钟一代中遇到过永远 如果只是为了这个目的 那岂不是毫无用处 initial begin clk 0 forever begin 5 clk clk
  • 如何在verilog中逐行读取文本文件?

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

    所以我在我的verilog中定义了以下寄存器 reg 31 0 register mem 0 15 verilator public 我的目标是从我的 verilator c 代码中读取存储在其中的 16 个值中的每一个 我发现有关 VPI
  • 修改后的 baugh-wooley 算法乘法 verilog 代码不能正确乘法

    以下 verilog 源代码和 或测试平台可以很好地工作商业模拟器 iverilog https www edaplayground com x 3TuQ也形式化验证工具 yosys smtbmc https gist github com
  • verilog 中的“<<”运算符

    我有一个verilog代码 其中有一行如下 parameter ADDR WIDTH 8 parameter RAM DEPTH 1 lt lt ADDR WIDTH 这里将存储什么RAM DEPTH以及什么是 lt lt 操作员在这里做
  • Verilog 错误:必须连接到结构网络表达式

    我收到错误 output or inout port Qout must be connected to a structural net expression 我评论了下面代码中发生错误的行 代码被修剪 压缩 我搜索了答案 似乎我无法将输
  • 如何将数组类型作为泛型类型参数传递给 VHDL 包?

    我正在 VHDL 2008 中开发通用包 列表 该包具有元素类型的泛型类型 如果我在包中声明此元素类型的数组类型 那么它就是一个新类型 所以对于例如整数 我的新整数数组将与 ieee 库中的整数向量不兼容 所以我还需要传入数组类型 例如in
  • 如何将时钟门映射到技术库单元

    我的设计中有以下时钟门 module my clkgate clko clki ena Clock gating latch triggered on the rising clki edge input clki input ena ou
  • FPGA大输入数据

    我正在尝试向 FPGA 发送 4 KB 字符串 最简单的方法是什么 是我正在使用的fpga的链接 我正在使用 Verilog 和 Quartus 您的问题的答案在很大程度上取决于将数据输入 FPGA 的内容 即使没有您需要遵守的特定协议 S
  • 在 Verilog 设计中产生时钟故障

    我正在使用 Verilog 设计芯片 我有一个 3 位计数器 我希望当计数器处于第 8 次循环时 应该有一个时钟故障 之后就可以正常工作了 在 Verilog 设计中产生时钟故障的可能方法是什么 在时钟信号上注入毛刺的一种方法是使用forc
  • Verilog 中的 If 语句和分配连线

    我试图弄清楚基于组合逻辑分配电线的基础知识 I have wire val wire x wire a wire b always begin if val 00 I want to assign x a if val 01 I want
  • Verilog 数组语法

    我是 Verilog 新手 并且遇到了很多麻烦 例如 我想要一个包含八个单元的数组 每个单元都是 8 位宽 以下不起作用 reg 7 0 transitionTable 0 7 assign transitionTable 0 10 仅仅做
  • 为什么我们在FGPA / VHDL / VIVADO中使用REG?

    我正在使用 Xilinx 的 vivado 在 verilog 中进行编程 我想知道为什么我们使用某些输出reg 例如reg 3 0 encoder output我们使用它是因为我们的 16 到 4 编码器有 4 个输出 对吧 我假设我们使
  • 仿真输出全为零

    我的设计模块和测试平台代码已编译 但是 当我模拟时 我没有得到正确的输出 谁能告诉我我的代码哪里出了问题 这是测试平台的代码 module testbench reg 511 0 FROM LS reg CLK reg 63 0 TO IF
  • 修改verilog模式缩进

    我试图让 verilog 模式使用 2 个空格缩进除 decls 和always 之外的所有内容 这是我添加到 emacs 中的内容 define are not indented setq veril
  • 带计数器的无符号加法不起作用

    我正在构建一个计数器 用于计算输入通道的上升沿 我简化了我的设计以包含两种状态 one and two 其中进行计数 由于某种原因 每当我尝试将 1 添加到counter reg 或者尝试为其分配任何数字 信号在 ModelSim 中变为红
  • 警告:(vsim-7)无法在读取模式下打开自述文件“mem_content_01.dat”

    我正在尝试在 ModelSim 中运行测试模拟 但收到标题中的错误 我已经仔细检查过 该文件与我的项目位于同一位置 并且名称匹配得很好 有谁知道问题可能是什么 如果您需要查看代码的某些部分或类似内容 请告诉我 啊明白了 好吧 ModelSi
  • 如何编写正则表达式来匹配 Verilog 文件中的模块实例化?

    我正在开发一个项目 通过使用 perl 脚本语言来促进 verilog 编程 现在我想编写一个脚本来扫描顶级verilog文件 然后生成模块的层次结构列表 这表明我需要提取模块实例化 从verilog文件中的语句来看 问题是这样的 如何编写

随机推荐

  • 带有透明边框的响应式箭头进度条

    我正在尝试构建一个进度条 如结帐中常见的那样 问题是 箭头之间的边界是透明的 整个事情应该是反应灵敏 到目前为止我已经明白了 http codepen io MrBamblele pen rVBeoz http codepen io MrB
  • Pandas 中的 Vlookup 具有近似匹配

    我需要对两个 pandas 数据框进行 vlookup 样式操作 Excel 中的 Vlookup 函数有一个额外的参数 是否应查找近似匹配或精确匹配 为了精确匹配 我知道我可以使用 join 函数 但是我该如何进行近似匹配以找到下一个更大
  • 从文件中抓取随机行

    我不知道该怎么做 我应该从哪里开始 我用谷歌搜索了这个 但没有找到关于如何从文本文件中提取随机行的结果 我唯一发现的是https github com chrisinajar node rand line https github com
  • 使用 Flask 测试客户端请求传递 cookie 标头

    我在让 Flask 测试客户端传递 cookie 时遇到问题 这段代码曾经有效 我认为我的环境中的某些内容发生了变化 这打破了这一点 我最近创建了一个新的 Python 3 7 virtualenv 并安装了 Flask 1 0 2 fro
  • ionic 2 使用 ion-grid 垂直对齐

    我在 Ionic 2 的屏幕上有 2 个按钮 我想将它们在屏幕中间对齐 一个在另一个之上 但在一起 水平和垂直对齐 我想使用离子网格 没有填充 边距 浮动或百分比 所以我有这个
  • 如何将一个组件放在其他组件之上?

    我有一个JScrollPanel其中包括一个大面板 其本身包括 3 个内面板 我想将一个面板 例如 放在一个特殊的位置 以便始终可以看到 我的意思是用户可以滚动到想要的任何地方 但该面板始终位于其他组件的顶部并且不会移动 我试图通过这样做J
  • Android Edittext Onclick Datepickerdialog 棒棒糖中出现错误

    我正在使用日期选择器对话框 它在 kitkat 上运行正常 但是当我在棒棒糖上运行应用程序时 当我单击编辑文本时 它会打开一个日期选择器对话框 但当我选择日期时 它会不幸地给出停止错误 以下是 edittext 上日期选择器的代码 priv
  • 是否可以反转伪随机数生成器?

    是否可以反转伪随机数生成器 例如 获取生成数字的数组并获取原始种子 如果是这样 这将如何实施 这绝对是可能的 您只需创建一个适合您目的的 PRNG 即可 这完全取决于您需要完成的任务 如果您更详细地描述您的情况 我很乐意提供更多建议 对于一
  • 值类型数组如何存储在 .NET 对象堆中?

    在 NET中 诸如int之类的值类型对象存储在内存中 引用类型对象需要为引用和对象单独分配内存 并且对象存储在 NET对象堆中 而Array是在堆中创建的 那么int 等值类型的数组如何存储在堆中呢 这是否意味着值类型对象可以存储在堆中而无
  • Glassfish 4 服务器意外停止

    我是 GlassFish 和一般应用程序服务器的新手 我有一个运行 Ubuntu 的 Amazon EC2 实例 并安装了 GlassFish 4 它启动时没有问题 但过了一会儿 GlassFish 服务器就自行关闭了 我查看了 serve
  • 如何更改控制台中的光标位置?

    我想用Console ReadLine 在上一行中并使其显示如下 HeresomeText gt input Not like HeresomeText gt input 可以做吗 使用 Write 方法而不是 WriteLine 方法 C
  • 在 React 中使用 document.querySelector?我应该使用 refs 代替吗?如何?

    我现在正在 React 中构建一个轮播 滚动到我正在使用的各个幻灯片document querySelector像这样 useEffect gt document querySelector slide activeSlide scroll
  • 这种日期时间格式有简单的转换吗?

    我正在使用 jQuery 从 JSON feed 中检索数据 并且作为 feed 的一部分 我获得了 datetime 属性 例如 2009 07 01 07 30 09 我想将此信息放入 javascript Date 对象中以方便使用
  • 使用 rhino 模拟进行 lambda 单元测试失败

    如果我有这个测试 Expect Call session Single
  • 插入点 (^.) 是什么意思?

    下面的帕斯卡代码是什么意思 p rlink q q llink p 帕斯卡运算符 与运算符类似 gt 在 C 和 C 中 它取消引用指针 在您的情况下 p应定义为var p type 并访问记录中的变量 在本例中 rlink and lli
  • 单个文件中的 Ansible 事实

    我正在尝试使用以下命令使用 ansible 收集服务器清单 ansible all m setup a tree facts 但这会在facts文件夹下为每个主机生成很多单个文件 我希望所有服务器输出在一个唯一的文件中 我注意到内容类似于
  • 在 Entity-Framework Core 中批量插入到 MySQL [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个由约 10 000 个对象组成的列表 比方说类Person 我需要将其插入到 MySQL 表中
  • 浏览器关闭后从数据库中删除

    我正在开发一个电子商务应用程序 但问题是 当用户将产品添加到购物车并在订购前关闭浏览器时 购物车会带走所有产品 所有购物车项目都保存在表中 如果用户关闭浏览器而不订购 我只想刷新购物车 您可以使用 Javascript 事件捕获浏览器关闭并
  • 检测 AVPlayerViewController 是否正在播放视频或正在缓冲并向播放器添加覆盖

    我必须检测视频是否处于播放模式或缓冲模式 我正在从 URL 加载视频 我已经尝试了下面的代码 我可以在视频开始播放后进行跟踪 但不能在视频处于缓冲状态时进行跟踪 另外 我想在我的播放器中添加覆盖视图 我尝试在 AVPlayer 中添加叠加层
  • Modelsim 中的参数问题

    最近我遇到了以下问题 在 Quartus 软件中 我定义了 Verilog 模块 如下所示 module module name input w1 1 0 in1 input w2 1 0 in2 output w1 1 0 out1 pa