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) 组合循环 的相关文章

  • 计算数组中的个数

    我试图在 Verilog 中计算 4 位二进制数中 1 的数量 但我的输出是意外的 我尝试了几种方法 这是我认为应该有效的方法 但事实并非如此 module ones one in input 3 0 in output 1 0 one a
  • 如何在 Verilog 中定义带参数的模块?

    我想定义一个add有一个参数的模块 但我对新实例的声明进展不顺利 我想定义这个模块的一个实例 module add parameter wd 1 input wire wd 1 0 a b output wire wd 1 0 o assi
  • 使用数据流模型的T触发器

    我正在尝试模拟 t flipflop 的工作 timescale 1ns 1ps module t flipflop input t input clk input clear output q output qbar wire sbar
  • EDAplayground 中不显示时钟波形

    当尝试在 EDA Playground 中显示时钟波形时 出现错误 执行中断或达到最大运行时间 如何显示波形 EDA Playground 上的代码 module test reg clk initial begin dumpfile du
  • 「Verilog学习笔记」游戏机计费程序

    专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点 刷题网站用的是牛客网 timescale 1ns 1ns module game count input rst n 异位复位信号 低电平有效 input clk 时
  • 为什么这个 verilog 关系语句返回 true?

    我有一条名为 sin hall2 的 9 位签名线 该语句返回 true sin hall2 8 0 gt 9 d1 当我查看模拟时 sin hall2 169 我假设这是 verilog 处理比较负数的方式 但我做错了什么 当我执行 si
  • 用于 Verilog 或 SystemVerilog 的 TAP(测试任何协议)模块

    是否有 TAP 测试任何协议 http testanything org Verilog 的实现 那就太好了 因为这样我就可以使用证明来自动检查我的结果 更新 10 9 09 有人问为什么不使用断言 部分 TAP 为我提供了一些很好的报告
  • 使用 Verilator 和 VPI 读取寄存器数组

    所以我在我的verilog中定义了以下寄存器 reg 31 0 register mem 0 15 verilator public 我的目标是从我的 verilator c 代码中读取存储在其中的 16 个值中的每一个 我发现有关 VPI
  • 在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
  • 将库添加到 Vivado 2014.4

    我对 Vivado 和 VHDL 还很陌生 我想要一些关于基本问题的指导 我猜我可以创建自己的库并在我的项目中使用它们 就像使用默认库和基本库一样 eg library IEEE use IEEE std logic 1164 ALL us
  • 如何使用 don't cares 参数化 case 语句?

    我有一条称为输入的电线 我想检测前导的数量 我正在尝试创建一个模块 该模块使用下面的 case 语句根据前导零的数量更改输出数据 然而 输入的大小是可参数化的 如果 X 是固定值 4 我将创建一个 case 语句 case input 4
  • 始终块中的 Veriloggenerate/genvar

    我试图让一个模块通过 ISE 12 4 中的语法检查 但它给了我一个我不明白的错误 首先是代码片段 parameter ROWBITS 4 reg ROWBITS 1 0 temp genvar c generate always pose
  • 向左旋转 verilog 大小写

    我的任务是用verilog编写一个16位ALU 当我做需要旋转操作数和进行2的补码加法和减法的部分时 我发现了困难 我知道如何用纸和铅笔解决这个问题 但我无法弄清楚如何在 Verilog 中做到这一点 例如 A表示为a15 a14 a13
  • 如何在Verilog中将二维数组中的所有位设置为0?

    我构建了一个 8 2bits 数组来表示 Verilog 中的一块内存 reg 1 0 m 0 7 该存储器有一个复位信号 如果复位为1 则该存储器中的所有位都应重置为0 但是我不知道如何以简洁的方式设置m的所有位 因为如果有数百个内存中有
  • Verilog 中的大括号是什么意思?

    我很难理解 Verilog 中的以下语法 input 15 0 a 16 bit input output 31 0 result 32 bit output assign result 16 a 15 a 15 0 我知道assign语句
  • 我怎样才能让我的verilog移位器更通用?

    这里我有一个移位器 但现在它最多只能工作 3 位 我一直在寻找 但不知道如何让它工作最多 8 位 module shifter a b out input 7 0 a b output 7 0 out wire 7 0 out1 out2
  • 使用正则表达式进行 Verilog 端口映射

    我有一个很长的端口映射 我想在其中替换一堆 SignalName i with SignalName SignalName i 我想我可以用正则表达式轻松地做到这一点 但我无法弄清楚如何做到这一点 有任何想法吗 假设 SignalData
  • 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 双向握手示例

    我正在完成一个项目 要求是处理器内部功能单元之间的双向握手 我知道它是什么 但是有没有任何 标准 或一个简单的例子 我唯一能想到的就是两个单元之间 当它们之间有一条数据线并且当 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