Vivado 比特流消息:违反规​​则 (LUTLP-1) 组合循环

2023-12-12

我在串流时遇到问题。该项目旨在创建一个占空比为 1:2 的时钟。综合和实现过程中没有任何问题。我尝试了几种方法来解决它。但他们的表现并不好。

module clock_div(clk, clk_out);
input clk;
output reg clk_out;

integer count1, count2;
reg clk_div;

always@(posedge clk)
begin
    count1 <= count1 + 1;
    if(count1 == 16666667)
    begin
        count1 <= 0;
        clk_div <= ~clk_div;
    end
end

always@(clk_div)
begin
    count2 <= count2 + 1;
    if(count2 == 1)
    begin
        clk_out <= ~clk_out;
    end
    else if(count2 == 3)
    begin
        count2 <= 0;
        clk_out <= ~clk_out;
    end
end
endmodule

Vivado给出的信息如下:

    [DRC 23-20] Rule violation (LUTLP-1) Combinatorial Loop - 231 LUT 
    cells form a combinatorial loop. 
    This can create a race condition. 
    Timing analysis may not be accurate. 
    The preferred resolution is to modify the design to remove 
    combinatorial logic loops. 
    To allow bitstream creation for designs with combinatorial logic loops 
    (not recommended), use this command: set_property SEVERITY {Warning} 
    [get_drc_checks LUTLP-1]. 
    NOTE: When using the Vivado Runs infrastructure (e.g. launch_runs Tcl 
    command), add this command to a .tcl file and add that file as a pre- 
    hook for write_bitstream step for the implementation run. 
    clk_out_reg_i_3, clk_out_reg_i_4, clk_out_reg_i_5, clk_out_reg_i_7, 
    clk_out_reg_i_8, clk_out_reg_i_10, clk_out_reg_i_11, clk_out_reg_i_12, 
    clk_out_reg_i_13, clk_out_reg_i_14, clk_out_reg_i_15, 
    clk_out_reg_i_16, clk_out_reg_i_17, clk_out_reg_i_20, clk_out_reg_i_21 
    (the first 15 of 231 listed).

如果有人能帮助我,我将不胜感激。


这是错误的:

always@(clk_div) // <<== WRONG!!!! 
begin
    count2 <= count2 + 1;
    if(count2 == 1)
    begin
        clk_out <= ~clk_out;
    end
    else if(count2 == 3)
    begin
        count2 <= 0;
        clk_out <= ~clk_out;
    end
end

您使用的敏感度列表不完整。这导致仿真和综合之间不匹配。对于您想要合成的所有代码,请使用完整的敏感度列表或更容易使用:always@( * )

如果您在上面的部分中使用它,您会发现您的模拟不再有效。它将陷入无限循环。这正是该工具所抱怨的组合循环。

要解决这个问题,您应该将所有代码放入顶部部分:

always@(posedge clk)
begin
    count1 <= count1 + 1;
    if(count1 == 16666667)
    begin
        count1 <= 0;
        // Here you should make your 2:1 clock(s!) 
        // I leave that as an exercise to you
    end
end

Problem:
除以 16666667 时,您不会得到 2:1 时钟,而是得到 33333334:1 时钟。 除非你想要 clk_div 和 clk_out 之间有一个 2:1 的时钟,但 clk_div 没有出来。在这种情况下,在上面标记的部分中同时创建 clk_div 和 clk_out

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

Vivado 比特流消息:违反规​​则 (LUTLP-1) 组合循环 的相关文章

  • [从零开始学习FPGA编程-38]:进阶篇 -语法-函数与任务

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 目录 前言 第1章 什么是函数Function 1 1 什么是函数 1 2 函
  • 错误:“(vlog-2110) 非法引用网络”

    我在 SystemVerilog 中有一个简单的 FIFO 代码 我得到几个vlog 2110 illegal reference to net错误消息 我的错误消息后面是我的代码 错误信息 vlog work 工作 sv stats no
  • VHDL:正式端口“portName”没有实际值或默认值

    我在实例化 VHDL 模块 PWM 的 VHDL 测试平台上收到编译错误 正式端口 Duty Cycle 没有实际或默认值 当站在 dev to test PWM 代码行时会看到该错误 在实例化的 PWM 模块中 Duty Cycle st
  • 带有always_comb结构的Systemverilog问题

    我对这个 SystemVerilog 代码有疑问 这是代码 module mult multiplicand multiplier Product clk clear Startm endm input 31 0 multiplicand
  • 使用多路复用器进行双向移位

    编辑 仅通过屏幕截图 http prntscr com lv3uqw http prntscr com lv3yhf 和我下面的代码 您仍然可以在这里理解我的目标 以防万一您不想阅读文本 我正在尝试为通用移位寄存器编写 Verilog 代码
  • Verilog 奇怪的仿真结果综合后

    我面临一个奇怪的问题 该代码适用于简单的 ALU 仅将感兴趣的代码粘贴到此处 always posedge clk or posedge rst begin if rst 1 begin mul valid shr 3 b000 end e
  • 「Verilog学习笔记」游戏机计费程序

    专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点 刷题网站用的是牛客网 timescale 1ns 1ns module game count input rst n 异位复位信号 低电平有效 input clk 时
  • 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 我以前总是见过 但没见过井号 我试图在文档中找到它 但我所能找到的只是一些对 实值端口 的引用 没有进一步的阐述 这是一个延迟操作 它本质上只是读取
  • 使用forever和always语句

    以下两个代码都会生成一个时钟 我需要知道除了时钟生成之外 永远循环是否还有其他用途 我只在时钟一代中遇到过永远 如果只是为了这个目的 那岂不是毫无用处 initial begin clk 0 forever begin 5 clk clk
  • 将库添加到 Vivado 2014.4

    我对 Vivado 和 VHDL 还很陌生 我想要一些关于基本问题的指导 我猜我可以创建自己的库并在我的项目中使用它们 就像使用默认库和基本库一样 eg library IEEE use IEEE std logic 1164 ALL us
  • 如何将时钟门映射到技术库单元

    我的设计中有以下时钟门 module my clkgate clko clki ena Clock gating latch triggered on the rising clki edge input clki input ena ou
  • Verilog 中的“net”代表什么?

    我刚刚开始学习Verilog 据我了解 Verilog有net数据类型 什么是net代表 网络就是这样一种数据类型 您不使用它来存储值 它们代表物理连接 您可以将线路视为一种网络数据类型 你可以去网上看看更多here http www ee
  • verilog $readmemh 对于 50x50 像素 RGB 图像花费太多时间

    我正在尝试编译用于 FPGA 编程的 verilog 代码 我将在其中实现 VGA 应用程序 我使用 QuartusII 和 Altera 我正在尝试正确使用 readmemh 来逐像素获取图片 现在 我已经使用 matlab 将图片转换为
  • 始终块中的 Veriloggenerate/genvar

    我试图让一个模块通过 ISE 12 4 中的语法检查 但它给了我一个我不明白的错误 首先是代码片段 parameter ROWBITS 4 reg ROWBITS 1 0 temp genvar c generate always pose
  • VIM 高亮匹配开始/结束

    我正在尝试找到一个插件 它将突出显示与 Verilog 匹配的开始 结束语句 VIM 可以使用花括号 方括号 但不能使用它的开始 结束 我希望 VIM 突出显示正确的开始到正确的结束 在我看来 最好的选择是使用 matchit 该脚本是 v
  • reg 声明中的位顺序

    如果我需要使用 4 个 8 位数字 我会声明以下 reg reg 7 0 numbers 3 0 我对第一个和第二个声明 7 0 和 3 0 之间的区别感到很困惑 他们应该按什么顺序来 第一个是保留数字的大小 而第二个是保留数字的数量 还是
  • Verilog 按位或 ("|") 单子

    我见过 Verilog 代码 其中使用了按位或运算符 目的是什么 例如 address 15 14 0 or address 15 14 io din ramrd 不能省略 吗在这些情况下 在这种情况下 它充当归约运算符 例如 4 b100
  • 具有内部赋值延迟的阻塞和非阻塞语句之间的区别

    以下 2 个 verilog 代码片段有什么区别 1 always in out 5 in AND 2 always in out lt 5 in 考虑到always块中不存在其他行 输出会有什么不同吗 问题参考幻灯片 16 参见 o5 和
  • Verilog 双向握手示例

    我正在完成一个项目 要求是处理器内部功能单元之间的双向握手 我知道它是什么 但是有没有任何 标准 或一个简单的例子 我唯一能想到的就是两个单元之间 当它们之间有一条数据线并且当 X 发送到 Y 时 会给出一个单独的 发送 信号 当 Y 接收

随机推荐

  • 使用 Node.js 从 Azure WebJob 轮询 Azure 服务总线队列

    尝试使用用 Node js 编写的 WebJob 轮询 Azure 服务总线队列 我创建了 2 个 WebJobs 第一个是按需的 并向队列发送 10 条唯一的消息 第二个作业是连续的 并轮询队列中的消息 遇到以下问题 轮询速度很慢 平均需
  • 无法添加窗口——token null 无效;您的活动正在运行吗?

    我想在用户单击浮动图标时显示自定义弹出菜单 浮动图标是通过服务创建的 但我没有任何活动 这是我的浮动图标代码 public class copy actions service extends Service ImageView copy
  • 如何构建 less 的特定于 Rhino 的版本?

    我想运行最新版本less来自Java 为此 我相信 我需要Rhino特定版本的less 来自更少的网站 每个 less js 版本还包含 rhino 兼容版本 但这似乎已经是not案子自 v1 7 5 起 所以我安装了 NPM 安装了 Gr
  • 我可以使用eclipse编写j2me代码吗?

    请问各位 在我下载eclipse之前 是否可以使用它来编译j2me代码 或者它仅用于android应用程序 我发现 netbeans 很难使用 我想知道 eclipse 是否更容易 我是新人 我需要帮助来开始编写 j2me 以及使用 net
  • 如何将自定义CSS文件添加到Sphinx?

    如何添加自定义 css 文件 以下配置不起作用 conf py html static path static html theme default html theme options cssfiles static style css
  • Android studio 3不搜索库依赖项

    My Android studio stopped searching for library dependencies I know that it s better and faster to add dependencies thro
  • Log4j Logger和Appender之间发生死锁

    我正在使用 LogAppender 类 它扩展了 Console Appender 并在日志级别为 ERROR 时在内部使用 Sendmail 函数发送邮件 我知道我可以使用 SMPT 附加程序进行邮件发送 但这就是基础设施的样子 所以请避
  • .NET Core Identity Server 4 身份验证 VS 身份验证

    我试图了解在 ASP NET Core 中进行身份验证的正确方法 我查看了一些资源 其中大部分已经过时 Microsoft 身份的简单实现 ASP Core 身份验证简介 MSDN 身份简介 有些人提供替代解决方案 声称使用基于云的解决方案
  • BroadcastReceiver (TIME_TICK) 每晚都会死掉?

    我想为体育网络服务编写某种后台实时报价应用程序 我希望我的应用程序能够始终调用 TIME TICK 顺便说一句 我也尝试使用 AlarmManager 但问题是一样的 但现在我的问题 我使用带有服务的接收器作为执行部分 注册后每分钟都会正确
  • 从 Classic ASP 将数据导出到 Excel 文件失败

    我正在尝试将记录集导出到 Excel 但它在生产服务器上似乎一直失败 然而 它似乎在我的开发工作站上运行得很好 我想知道我适合与服务器相关的问题 但我有其他应用程序可以使用相同的确切代码 相似的代码相同的设置很好地导出
  • 将 C 程序迁移到 Android NDK

    我是 C C 和 Android NDK 的初学者 在尝试创建本机库时遇到问题 我的代码在 CDT 上使用 MinGW 进行编译 但是当我在 JNI 文件上编写相同的代码时 出现错误 我的代码是 int n 7 int positions
  • EF Core 中的 IsNumeric

    EF Core 中是否有相当于 IsNumeric 的功能 或者使用 linq 或 Dynamic Sql 或类似功能 我试图从 nvarchar 列中仅获取具有数值的行 现在它已添加到 EF Core 中 看起来它是 EF Core 6
  • C# 中 UTC 日期/时间字符串的转换

    我需要转换字符串 Fri Sep 11 00 00 00 GMT 04 00 2020 into a DateTime object 11 09 2011 当我使用 DateTime result DateTime TryParseExac
  • 字符常量对于其类型来说太长

    我想尝试制作一个基于文本的游戏 但对于 item2 item6 它说 多字符字符常量 字符常量对其类型来说太长 从 int 到 char 的隐式转换会将值从 175174007 更改为 103 include
  • 如何自动保持 2 个 git 存储库同步

    有 2 台服务器 应始终保持同步 当有人将某些内容推送到服务器 A 的存储库时 服务器 B 上的存储库应该自动更新 具体取决于哪个服务器是主 从服务器 两台服务器不在同一台机器上 是否可以在每次更新时无需运行额外的手动命令 git fetc
  • 将字符串转换为 NSDate 的正确方法?(iphone)

    在我的应用程序中 我将日期存储为字符串 MM dd YYYY 格式 在数据库中 稍后 当我检索字符串时 我必须比较两个日期 如何实现这一目标 如果我使用 YYYY MM dd 格式 我可以直接将其作为字符串进行比较 现在我必须使用 nsda
  • Roslyn 检查属性的类型

    我试图找出比较 Roslyn 中属性数据的正确方法 static bool ResolveAttributes IMethodSymbol methodSymbol var attributes methodSymbol GetAttrib
  • 淘汰赛在自身上绑定一对多关系(淘汰赛中的递归)

    因此 在我的数据库中 我有一个与其自身具有一对多关系的模型 Reddit 上的评论系统就是一个很好的例子 我目前正在做这样的事情 div class body span span span span div 这显然只支持一个级别的孩子 当
  • 您可以将流量管理器与 blob 存储或 Azure 功能结合使用吗

    我有一个来自 Azure 流量管理器请求的简单 JSON 因此理想情况下它将存储在一个 Blob 存储帐户中 该帐户标有用于读取 Blob 的公共访问策略 当我尝试执行此操作 在 ATM 中使用外部端点 时 我收到 400 HTTP 响应
  • Vivado 比特流消息:违反规​​则 (LUTLP-1) 组合循环

    我在串流时遇到问题 该项目旨在创建一个占空比为 1 2 的时钟 综合和实现过程中没有任何问题 我尝试了几种方法来解决它 但他们的表现并不好 module clock div clk clk out input clk output reg