Xilinx FPGA——ISE时序约束“建立时间不满足”问题解决记录

  一、现象

最近使用赛灵思的FPGA设计项目时,出现时序约束失效问题。

点进去发现如下:

        一个始终约束没有生效,有多处报错。 

二、原因

        出现这个问题的原因是,建立时间不满足。

        时序违例的主要原因是建立时间和保持时间不满足要求,那么什么情况下会出现建立时间和保持时间不满足要求呢?

  • 建立时间不满足要求通常是因为组合逻辑处理时间太长!
  • 保持时间不满足要求通常是因为组合逻辑处理时间太短!

        建立时间和保持时间都不满足往往出现在异步时钟域中!

三、解决办法

  • 加强约束,重新进行综合,对违规的路径进行进一步的优化,但是一般效果可能不是很明显
  • 降低时钟的频率,但是这个一般是在项目最初的时候决定的,这个时候很难再改变
  • 拆分组合逻辑,插入寄存器,增加流水线,这个是常用的方法
  • 优化布局布线,减小传输的延时
  • 更改Place and Route Effort Level,overall,把Standard模式(通过最少的布局布线努力,给出最快的运行时间,适用于不太复杂的设计)更改为High模式(有最好的布局布线结果,运行实际也长,适用于复杂设计(默认设置))

四、实际项目更改

        更改前:

  reg  [31:0]suma;wire [16:0]sumb;wire [15:0]sumc;
//将以太网报文数据部分长度参数寄存
always @(posedge clk or negedge rst_n) beginif(!rst_n)  suma <= 32'd0;else if(cal_en)suma <= {IP_ver,IP_hdr_len,IP_tos}+IP_total_len+IP_id+{IP_rsv,IP_df,IP_mf,IP_frag_offset}+{IP_ttl,IP_protocol}+src_ip[31:16]+src_ip[15:0]+dst_ip[31:16]+dst_ip[15:0];elsesuma <= suma;
endassign sumb = suma[31:16]+suma[15:0];assign sumc = sumb[16]+sumb[15:0];assign checksum = ~sumc;

更改后:

reg  [31:0]suma;
reg  [31:0]suma_1;
wire [16:0]sumb;
wire [15:0]sumc;//将以太网报文数据部分长度参数寄存
always @(posedge clk or negedge rst_n) beginif(!rst_n)  suma <= 32'd0;else if(cal_en)beginsuma_1<={IP_ver,IP_hdr_len,IP_tos}+IP_total_len+IP_id+{IP_rsv,IP_df,IP_mf,IP_frag_offset}+{IP_ttl,IP_protocol};suma <= /*{IP_ver,IP_hdr_len,IP_tos} 16'h4500+*//*IP_total_len+*//*IP_id 16'h0000+*//*{IP_rsv,IP_df,IP_mf,IP_frag_offset} 16'h0000+*//*{IP_ttl,IP_protocol} 16'h4011+*/suma_1+src_ip[31:16]+src_ip[15:0]+dst_ip[31:16]+dst_ip[15:0];endelsesuma <= suma;
endassign	sumb = suma[31:16]+suma[15:0];
assign	sumc = sumb[16]+sumb[15:0];
assign checksum = ~sumc;

分析:根据报错的路径,找到对于的代码,拆分组合逻辑,插入寄存器,增加流水线,这个是常用的方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/205698.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器ipv6地址显示“scope global dadfailed tentative noprefixroute”无法连通的问题处理一例

服务器规模启用ipv6地址后&#xff0c;遇到一起案例 &#xff0c;配置的服务ipv6地址显示“scope global dadfailed tentative noprefixroute”&#xff0c;无法连通&#xff0c;现将解决过程记录如下。 一、问题情况 1、ipv6信息检查 某台服务器配置ipv6地址后&#xff0c…

性能优化一条龙

性能优化 根据实际情况做性能优化的流程和分析。 性能优化的话&#xff0c;可以从很多方面&#xff0c;ui优化&#xff0c;组件优化&#xff0c;打包体积优化&#xff0c;页面优化等&#xff0c;但我们要监控这个页面哪些指标需要优化&#xff0c;比如FP&#xff0c;FCP&#x…

vue实现页面之间的el-select同步数据选项

demo案例&#xff1a; 父组件的el-select发生改变&#xff0c;子组件的el-select也可以发生改变 子组件的el-select发生改变&#xff0c;父组件的el-select也可以发生改变 核心就是给el-select组件的v-modle值互传 Index父组件页面 <template lang""><d…

Spark RDD惰性计算的自主优化

原创/朱季谦 RDD&#xff08;弹性分布式数据集&#xff09;中的数据就如final定义一般&#xff0c;只可读而无法修改&#xff0c;若要对RDD进行转换或操作&#xff0c;那就需要创建一个新的RDD来保存结果。故而就需要用到转换和行动的算子。 Spark运行是惰性的&#xff0c;在…

【Python】Python仓储管理系统(源码)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

uni-app 微信小程序之好看的ui登录页面(二)

文章目录 1. 页面效果2. 页面样式代码 更多登录ui页面 uni-app 微信小程序之好看的ui登录页面&#xff08;一&#xff09; uni-app 微信小程序之好看的ui登录页面&#xff08;二&#xff09; uni-app 微信小程序之好看的ui登录页面&#xff08;三&#xff09; uni-app 微信小程…

vivado时序方法检查6

TIMING-19 &#xff1a; ODDR 上的生成时钟波形反相 生成时钟 <clock_name> 的波形与传入时钟 <clock_name> 的波形相比呈反相。 描述 前向时钟端口上的生成时钟应定义为与传入时钟相关。 DRC 警告报告称 &#xff0c; 通过对比传入源时钟发现 &#xff0…

【Android Audio Focus 音频焦点】

介绍 Android 中的音频焦点&#xff08;Audio Focus&#xff09;是一种机制&#xff0c;用于管理应用程序之间的音频资源竞争。当多个应用程序同时请求使用音频设备时&#xff0c;通过音频焦点机制可以确保最终用户的体验不受影响。 两个或两个以上的 Android 应用可同时向同…

go的两大测试方法- 官网推荐

go的两大测试方法- 官网推荐 go的两大测试方法- 官网推荐常见的不正规测试方法main方法个例测试验证 - 不正规1. 提供一个函数&#xff1a;Reverse(input string)进行测试2. 直接在函数下创建main函数下进行个例测试3. 测试发现&#xff0c;Reverse方法不支持某些汉字&#xff…

【SQL开发实战技巧】系列(四十九):Oracle12C常用新特性☞表分区部分索引(Partial Indexes)

系列文章目录 【SQL开发实战技巧】系列&#xff08;一&#xff09;:关于SQL不得不说的那些事 【SQL开发实战技巧】系列&#xff08;二&#xff09;&#xff1a;简单单表查询 【SQL开发实战技巧】系列&#xff08;三&#xff09;&#xff1a;SQL排序的那些事 【SQL开发实战技巧…

树莓派学习:socket获取客户端IP地址

定义 int s_fd;//服务器套接字描述符int c_fd;//客户端套接字描述符int clensizeof(struct sockaddr_in);//地址结构体的大小struct sockaddr_in s_addr;//服务端socket地址结构体memset(&s_addr,0,clen);struct sockaddr_in c_addr;//客户端socket地址结构体memset(&c…

数据分析基础之《matplotlib(4)—柱状图》

一、柱状图绘制 1、柱状图要素 有类别 2、需求&#xff1a;对比每部电影的票房收入 电影数据如下图所示&#xff1a; 3、matplotlib.pyplot.bar(x, height, width0.8, bottomNone, *, aligncenter, dataNone, **kwargs) 说明&#xff1a; x&#xff1a;有几个类别 height&am…

玩转Sass:掌握数据类型!

当我们在进行前端开发的时候&#xff0c;有时候需要使用一些不同的数据类型来处理样式&#xff0c;Sass 提供的这些数据类型可以帮助我们更高效地进行样式开发&#xff0c;本篇文章将为您详细介绍 Sass 中的数据类型。 布尔类型 在 Sass 中&#xff0c;布尔数据类型可以表示逻…

十一.图像处理与光学之图像缩放方式

十一.图像处理与光学之图像缩放方式(sensor binning模式/ skipping 模式/SOC resize) 文章目录 十一.图像处理与光学之图像缩放方式(sensor binning模式/ skipping 模式/SOC resize)11.1 sensor binning模式11.1.1 2:2 Binning模式11.1.2 Binning用途---**在环境光照低的情况下…

生信数据分析高效Python代码

1. Pandas glob获取指定目录下的文件列表 import pandas as pd import globdata_dir "/public/data/" # 获取文件后缀为.txt的文件列表 df_all pd.concat([pd.read_csv(f, sep\t) for f in glob.glob(data_dir *.txt)]) print(df_all)2. 使用 enumerate 函数获取…

基于Spring Boot和微信小程序开发的点餐系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于Spring Boot和微信小程序开发的点餐…

每日一练:插入排序

1. 概念及原理 插入排序是一种简单直观的排序算法&#xff0c;其基本思想是将一个元素插入到已经排序好的部分&#xff0c;然后不断地重复这个过程&#xff0c;直到整个数组有序。下面是插入排序的算法原理&#xff1a; 初始状态&#xff1a; 数组被分为已排序和未排序两个部分…

GORM 自定义数据类型json-切片(数组)

文章目录 自定义数据类型自定义json结构体定义Scaner和Valuer接口的实现插入数据&查询数据 自定义切片存储切片json形式存储字符串存储 创建&查询数据 gorm官方文档&#xff1a;自定义数据类型 自定义数据类型 数据空中很多情况下数据是多变的&#xff0c;我们这篇文章…

Qt::UniqueConnection和lambda一块用无效

如果槽函数是lambda。 那么用了Qt::UniqueConnection也会出现槽函数被多次调用的问题。 原因&#xff1a; 参考官方文档&#xff1a; QObject Class | Qt Core 5.15.16https://doc.qt.io/qt-5/qobject.html#connect

在Go中导入软件包

引言 对于任何广泛使用的编程语言,乃至整个开源社区来说,在不同项目之间借用和共享代码的能力都是基础。借用代码使程序员能够将大部分时间花在针对自己的需求编写代码上,而且通常他们的一些新代码最终会对其他人有用。然后他们可能决定将这些可重用的部分组织成一个单元,…