VHDL - 为什么直接在函数上使用长度属性会产生警告?

2024-03-30

我有一个 VHDL 函数,它返回记录的 std_logic_vector 表示形式,并且我想要该 std_logic_vector 的长度。我可以直接在函数上使用长度属性。为什么这会在 ModelSim 中产生警告?我是否会引发一些微妙的问题?谷歌搜索警告文本没有发现任何我认为有帮助的内容。

my_function_returns_slv(my_record)'length;

** 警告:../src/my.vhd(line#): (vcom-1515) 预定义属性“length”的前缀是函数 调用“my_function_returns_slv”

我已经编写了通过连接记录元素的 std_logic_vector 表示来组装输出的函数。记录的长度在编译时是固定的,但我不想对长度进行硬编码。我需要长度来创建使用函数输出的信号。因此,我不能只在函数的输出上调用 'length (例如:在保存函数输出的信号上调用 'length),因为不可能声明不受约束的信号来保存输出。我可以编写一个类似的函数来计算 std_logic_vector 的长度,但这会添加一些重要的代码,特别是对于我拥有的记录数。我应该接受 ModelSim 警告并继续吗?我是否应该处理编写函数来组合记录位宽的额外代码?有更好的解决方案吗?

我正在使用的有用的记录打包/解包子程序:

http://www.eda-twiki.org/twiki/pub/P1076/RecordReflectionToSlv/standard_functions.vhd http://www.eda-twiki.org/twiki/pub/P1076/RecordReflectionToSlv/standard_functions.vhd

Thanks!


使用'length直接在函数上使用属性可以被视为只是获取函数结果的另一部分而不是主要输出,因此从概念的角度来看,这应该没有问题。

因此,我会接受 ModelSim 警告,但也会将其视为该工具担心构造的指示,因此我会检查我的其他工具,例如综合工具和代码检查器直接在函数调用上接受属性的使用。

看来您可以通过创建如下函数来避免 ModelSim 警告:

function len(slv : std_logic_vector) return natural is
begin
  return slv'length;
end function;

然后这不会导致 ModelSim 警告:

signal MY_LEN : natural := len(slv_not(CONST));

因此,能够使用这种封装来避免警告,这首先证实了该警告有点不稳定。

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

VHDL - 为什么直接在函数上使用长度属性会产生警告? 的相关文章

  • 在变量类型VHDL中添加2个std_logic_vector

    我正在参与这个学校项目 我有两个 std logic vector 31 downto 0 A 和 B 并且我有一个变量类型 std logic vector 32 downto 0 我想添加 A B 并将结果放入 32 位的 std lo
  • 调试 VHDL Modelsim 中的迭代限制错误

    我正在 Modelsim 上为 d 触发器编写 VHDL 代码 当我尝试模拟它时出现错误 错误 vsim 3601 在 400 ps 时达到迭代限制 我不确定这意味着什么 但我已经检查了大部分源代码以查找错误 但没有成功 谁能猜出问题可能是
  • ERROR:Xst:827 = 信号计数无法合成,同步描述错误

    我正在尝试模拟电梯 结果出现错误 ERROR Xst 827 Signal count cannot be synthesized bad synchronous description 我正在关注此来源的代码 https www yout
  • VHDL:按钮去抖动(或不去抖动,视情况而定)

    我已阅读其他帖子 但似乎无法修复我的 我是 VHDL 新手 所以我确信这是一个简单的修复 简而言之 按钮没有防抖 代码编译和比特流程序 在测试台中 按下按钮可以工作 但输出 LED 不会改变 在板上 按下按钮会使随机 LED 亮起 我猜是因
  • VHDL 中的行为模型程序和数据流模型程序之间的混淆

    我正在使用 Douglas L Perry 所著的教科书 VHDL 示例编程 第四版 他在第 4 页给出了 Dataflow 编程模型的示例 Code I ENTITY mux IS PORT a b c d IN BIT s0 s1 IN
  • Modelsim 对 SV 的支持

    我目前正在使用 modelsim SE 5 8e 它不支持SystemVerilog 我需要使用 SystemVerilog 来设计和验证我的项目 您知道哪个版本的 Modelsim 能够很好地支持 sytemverilog 的设计和验证子
  • Altera Quartus 谎称未安装 Modelsim

    在 Fedora 22 64 位中安装 Quartus 13 0 和 Modelsim 在 32 位中运行 Quartus 因为否则我会遇到很多很多问题 不过 我可以启动 Quartus 创建项目 综合它 启动仿真窗口并配置输入信号 然后
  • 使用“downto”进行 VHDL std_logic_vector 索引

    我想单独设置 std logic vector 的位 以便轻松设置单个位或位组的注释 这是我所拥有的 signal DataOut std logic vector 7 downto 0 DataOut lt 5 gt 1 Instruct
  • VHDL:进程块内的多个上升沿检测

    我对 VHDL 以及一般的数字电路 还很陌生 我正在尝试使用 BCD 样式块实现两位数的计数器 该电路的外部有一些按钮 按下这些按钮时 会将感兴趣的数字加一 很像闹钟 这是一个异步操作 会在某种形式的编辑模式下发生 外部强制 我编写的代码在
  • “警告 C0007:架构具有未绑定的实例”问题!

    我从 数字设计基础 一书随附的 CD 中获取了以下源代码 当我尝试运行该程序时 出现以下错误 Compiling Fig17 13 vhd C Users SPIDER Desktop EE460 The Final Project Fig
  • 使用双寄存器方法解决亚稳态问题

    为了解决Verilog中不同时钟域引起的亚稳态 采用双寄存器方法 但据我所知 亚稳态的最终输出尚未确定 输出独立于输入 那么 我的问题是如何保证使用双寄存器方法输出的正确性 Thanks 您不能完全确定您避免了亚稳态 正如您所提到的 亚稳态
  • 触发器在两个信号的边沿触发

    我需要一个对两个不同信号的边缘做出反应的触发器 像这样的东西 if rising edge sig1 then bit lt 0 elsif rising edge sig2 then bit lt 1 end if 这样的触发器是否存在或
  • 敏感列表中的哪个信号触发该过程

    在VHDL中 当模拟测试平台时 我有一个过程和一个敏感度列表 是否可以查看敏感列表中的哪个信号触发了该过程 我知道这可能取决于工具 我正在使用 Xilinx ISE 模拟器是否提供此信息 您可以使用 transaction属性结合 even
  • 将库添加到 Vivado 2014.4

    我对 Vivado 和 VHDL 还很陌生 我想要一些关于基本问题的指导 我猜我可以创建自己的库并在我的项目中使用它们 就像使用默认库和基本库一样 eg library IEEE use IEEE std logic 1164 ALL us
  • 将 *.vhdl 编译到库中时出现编译器错误 - Altera Quartus II

    我已经从以下位置下载了浮点包http www vhdl org fphdl http www vhdl org fphdl 并做了以下事情 我在项目中包含了 math utility pkg vhd fixed pkg c vhd 和 fl
  • VHDL 中的 NULL 语句

    其实际目的是什么nullVHDL 中的声明 考虑以下代码 1 CASE s IS BEGIN WHEN 0 gt y lt 0 WHEN 1 gt NULL END CASE 2 CASE s IS BEGIN WHEN 0 gt y lt
  • vhdl中process语句的顺序执行

    对于vhdl中的process语句 据说process语句内部的执行顺序是连续的 我的问题是 请先看下面的代码 a b和c信号在进程语句中的if语句中是同时还是顺序分配给它们的新值 process clk is begin if risin
  • vhdl代码(for循环)

    描述 我想编写 vhdl 代码来查找数组 A 中的最大整数 该数组是一个由 20 个整数组成的数组 问题 我的算法应该是什么样子 以输入顺序语句的位置 我的VHDL代码 highnum for i in 0 to 19 loop i 0 i
  • Simulink/HDL Coder 中的反馈循环

    我有一个 Simulink HDL 编码器系统 请参见下图 我有 3 个输出和 3 个输入 我希望我的系统运行 10 次 每次迭代后 它应该选择输出并将它们用作输入 我怎样才能做到这一点 使用存储器和每个信号的初始值块构建一个循环 内存块允
  • 用几个 1 位 ALU 制作一个 4 位 ALU

    我正在尝试将几个 1 位 ALU 组合成一个 4 位 ALU 我对如何在 VHDL 中实际执行此操作感到困惑 这是我正在使用的 1 位 ALU 的代码 component alu1 define the 1 bit alu componen

随机推荐

  • 猫鼬方法和静态有什么用?

    猫鼬方法和静态有什么用 它们与普通函数有何不同 谁能用例子解释一下区别 数据库逻辑应该封装在数据模型中 Mongoose 提供了两种方法来做到这一点 方法和静态 Methods向文档添加实例方法 而Statics向模型本身添加静态 类 方法
  • 如何在 NSUserDefaults 中设置 NSArray?

    我想知道为什么有 arrayForKey 方法 但没有 setArrayForKey 方法 我该如何设置该数组 只需使用setObject forKey 我想原因是有一个特殊的arrayForKey and dictionaryForKey
  • Oracle - 将多个计数作为一个查询返回

    我有几个疑问 详情如下 我希望能够运行一个返回两个计数的 SQL 查询 这可能吗 1 select nvl count rowid 0 from tablename where OPP FOO and date BAZ 2 select n
  • 如何比较 MongoDB 中的两个对象(忽略键的顺序)?

    查找 objA 与 objB 相同的所有文档的最佳方法是什么 键的顺序并不重要 灵感来自另一个问题 https stackoverflow com questions 74962485 how to use lookup on two co
  • 针对 .NET 框架的多个版本的最佳方法是什么?

    我正在构建一个类库 并将其部署为 NuGet 包 这使我可以根据所添加项目的 NET Framework 版本选择要添加为引用的不同程序集 这是一个非常好的功能 但我想知道是否可以拥有一个类库项目 并针对多个版本的 NET 框架构建它 我宁
  • Python 电子邮件正文为空

    我来这里是想请你帮忙 问题是 我的电子邮件主题没问题 但当我打开电子邮件时 它是空的 我真的不明白为什么 这是我的代码 from urllib2 import urlopen import smtplib s smtplib SMTP sm
  • 禁用 JavaScript 时 SSR 不起作用

    在这里参考这张票 https github com zeit next js issues 4210 https github com zeit next js issues 4210我目前想知道为什么当您禁用 javascript 时 使
  • 有 C++ 的样式检查器吗?

    我已经使用java有一段时间了 我发现格子风格 http checkstyle sourceforge net 非常有用 我开始使用 c 我想知道是否有具有类似功能的样式检查器 我主要寻找编写定制支票的能力 关于什么Vera http ww
  • cartopy中shapefile的匹配投影

    我正在尝试使用 matplotlib 和 cartopy 制作 Choropleth 地图 显然我需要首先绘制 shapefile 然而 尽管有人提出了类似的问题 但我没能做到这一点here https stackoverflow com
  • 反引号无法在 shell 脚本中运行 mysql 查询

    您好 我正在尝试从 shell 脚本运行 MySQL 查询 mysql u root p 1234 e CREATE TABLE DB aa vv cc id int 10 unsigned NOT NULL AUTO INCREMENT
  • Json压缩传输

    我想知道基于 javascript 的 json 压缩的当前状态是什么 当前是否有任何库允许通过用单个字符替换长名称或其他方法来压缩 json 有人有用 Javascript 实现 HPPack https github com WebRe
  • Files.newDirectoryStream 与 Files.list

    我知道文件 列表 路径 http docs oracle com javase 8 docs api java nio file Files html list java nio file Path uses 文件 newDirectory
  • 使用适用于 Android 的 XSL-FO 生成 PDF

    是否可以使用 XSL FO 在 Android 应用程序中生成 PDF 下载 Apache FOP 并查看 Android 运行时中是否包含所需的依赖项 可能会比较慢 您可以使用 iText 或 PDFBox 来呈现 PDF 或者使用服务器
  • Cloudwatch Insights 在多行日志中搜索

    日志示例 REQUEST ID 123 Video id 444 REQUEST ID 123 Request error REQUEST ID 534 Video id 555 REQUEST ID 534 Request ok 问题 如
  • tensorflow2.1 InvalidArgumentError:断言失败:[0] [Op:Assert]名称:EagerVariableNameReuse

    我训练了自定义模型并使用了 TensorFlow 2 1 当我运行代码时 我收到以下错误 InvalidArgumentError 断言失败 0 Op Assert 名称 EagerVariableNameReuse 这是显示错误的行 se
  • HammerJS 滑动与 Mat-Tabs 阻止垂直滚动

    所以我的 Angular 应用程序中有一个组件 其中包含数据类别的选项卡以及选项卡内容的值数组 我想使用 HammerJS 在选项卡之间滑动以获得更原生的体验 我还安装了这个虚拟滚动包 https github com rintoj ang
  • 网站管理员 API - 配额限制

    我们正在尝试通过调用使用 Webmasters API NET 客户端库下载网站的页面数据WebmastersService SearchAnalytics Query 为此 我们正在使用Batching https developers
  • 通过匹配其他数组来更改对象属性的位置

    我有一个对象 var data D 1 AA Changes xml This is a string D 2 Compare AA Changes xml This is a string 我需要将该属性与我拥有的另一个数组相匹配 如下所
  • Flutter Video Player On Click 传递 URL 动态并加载视频进行播放

    下面附有视频播放器的示例屏幕 https i stack imgur com PoeyX png如何使视频播放器动态播放 同时通过传递视频 URL 来单击列表播放视频 单击时我已经传递了 URL 并尝试重新初始化并开始播放它不起作用 状态没
  • VHDL - 为什么直接在函数上使用长度属性会产生警告?

    我有一个 VHDL 函数 它返回记录的 std logic vector 表示形式 并且我想要该 std logic vector 的长度 我可以直接在函数上使用长度属性 为什么这会在 ModelSim 中产生警告 我是否会引发一些微妙的问