AMD优化策略

        FPGA,英文全称是 Field Programmable Gate Array,中文意思是现场可编程门阵列。基本架构:可配置逻辑模块(CLB: Configurable Logic Block)、开关矩阵(Switch Matrix,也称为 Switch Box)、互连线(Interconnect Wires)和输入 / 输出引脚。

通常应遵循的原则包括:

(1)需要实例化的输入 / 输出单元如 IDDR、ODDR、ISERDES、OSERDES 等尽可能

靠近设计顶层,尽管 IBUF、OBUF、IOBUF 和 OBUFT 可由综合工具自动推断出来,但

要确保 IOBUF、OBUFT 的使能信号和输入 / 输出信号在同一层次,以确保工具正确推断;

(2)时钟生成模块(通常采用 Clocking Wizard IP 生成时钟,不建议使用 MMCM 或

PLL 原语)放在顶层,方便其他模块使用时钟;

(3)在层次边界添加寄存器,对关键模块确保是寄存器输出,这样可将关键路径隔离。在单一层次或模块之内,对于修复时序违例及设计调试大有裨益;

(4)确保需要手工布局的模块在同一层次之内。

一般情况下,建立时间违例原因包括:逻辑延迟太大布线延迟太大时钟偏移时钟抖动太大

  1. 逻辑延迟太大,解决办法有两种:插入流水寄存器采用重定时。前者需要修改代码,由于增加流水寄存器会导致从输入到输出所需的时钟周期个数发生改变,涉及多条路径的数据需要重新对齐,改动量可能会比较大;后者无须改动代码,但需要确定是在综合阶段设置重定时还是在布局布线阶段设置重定时,是全局设置(使用全局设置选项)还是局部设置(使用模块化综合技术)。

四大基本原则:

  1. 硬件原则

必须采用 HDL 可综合的部分进行电路设计,遵循可综合的代码规范。7 系列 FPGA 中的触发器复位信号只支持高有效,如果代码中的复位是低有效就会消耗额外的查找表(用于逻辑取反),而 UltraScale/UltraScale+ FPGA 中的触发器则既支持高有效又支持低有效;7系列 FPGA 中的 DSP48 不支持异步复位,因此,如果代码中描述的乘法器使用了异步复位,那么相应的触发器是无法被吸收到 DSP48 内部的。

综上所述,硬件原则要做到:

(1)使用可综合的 HDL 代码描述电路。

(2)先有电路,再写代码。

(3)RTL 代码风格与所选 FPGA 内部结构相匹配。

2、同步原则

广义同步时钟是指时钟组(一个时钟组至少有两个时钟)内的时钟之间有明确的相位关系。反之,若时钟组内的时钟之间没有明确的相位关系,则认为它们是异步时钟。

遵循“时钟个数尽可能少”的原则。

同步设计的优点:

  1. 同步设计可以有效地避免毛刺的影响,增强设计的稳定性。组合逻辑可能会产生毛刺,如果毛刺仅存在于同步时序的数据路径中,那么受时钟驱动的触发器就可以过滤掉毛刺,因为触发器仅在时钟有效沿才会有动作,从而消除其对电路的影响。但如果将该组合逻辑的输出也连接到触发器的控制端,如作为触发器的异步复位 / 置位信号,当毛刺足够宽时,就可能导致触发器误动作。即使毛刺的宽度不足以驱动异步置位 / 复位端,也会造成触发器不稳定,甚至激发其产生亚稳态。
  2. 同步设计可以减少外部环境对芯片的影响。芯片的实际工作环境可能要比我们的实验环境更为恶劣,这也是我们做高低温实验的一个主要原因:检测当前设计是否能在不同环境下正常工作。此外,长时间运行也会使芯片自身温度升高,电压变得不稳定,芯片内部延时可能会发生微小变化。如果采用异步设计,时序要求比较严苛的电路将无法正常工作,这是因为异步逻辑设计的时序正确与否完全依赖于每个逻辑元件的逻辑延时和布线延时。
  3. 同步设计更有利于静态时序分析( Static TimingAnalysis,STA)和验证设计的时序性能。这得益于同步设计的时序约束更为简单。即使对于同步跨时钟域路径,工具也可自动对其进行约束,当然有时会出现约束不合理的情形。

3、流水原则

流水线技术是有要求的:数据流是单向流动,不存在反馈支路。

流水线技术也体现了 FPGA 处理数据的特征:动态处理。增加流水寄存器会导致 Latency。

4、面积和速度的平衡与互换原则

度指的是设计在 FPGA 上稳定运行时所能达到的最高频率,也就是我们常说

的 F max ,可间接地通过时序报告中的 WNS(Worst Negative Slack:建立时间最小裕量。FPGA性能指标:设计可运行的最高频率(Fmax )、输入到输出的时钟周期(Latency)、吞吐率(Throughput)、资源利用率和功耗(Power)。

为什么latency小流水线级数低,fmax降低?

如果流水级数较高的话,将任务进行划为小任务,同一个时钟周期的延时较小,此时支持的fmax可以设置较高,如果一个周期做多个操作,延时就比较大,这时fmax如果较高,容易造成时序违例。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

kraken2 最新版安装,极简模式

kraken2 git clone https://github.com/DerrickWood/kraken2.gitcd kraken2./install_kraken2.sh /opt/krakenvim .bashrc ---------------- # Kraken export PATH"/opt/kraken:$PATH" ----------------source .bashrc Note: 不晓得是不是我设置了清华源&#xff0c…

【Django学习笔记(十)】Django的创建与运行

Django的创建与运行 前言正文1、安装Django2、创建项目2.1 基于终端创建项目2.2 基于Pycharm创建项目2.3 两种方式对比 3、默认项目文件介绍4、APP5、启动运行Django5.1 激活App5.2 编写URL和视图函数对应关系5.3 启动Django项目5.3.1 命令行启动5.3.2 Pycharm启动5.3.3 views.…

Web3智能物联网:科技连接的未来世界

在当今科技飞速发展的时代,Web3智能物联网正逐渐成为人们关注的焦点。随着区块链技术的不断成熟和普及,以及物联网的普及和应用,Web3智能物联网作为二者的结合,将为未来的数字世界带来革命性的变化。本文将深入探讨Web3智能物联网…

【JavaEE 初阶(三)】多线程代码案例

❣博主主页: 33的博客❣ ▶️文章专栏分类:JavaEE◀️ 🚚我的代码仓库: 33的代码仓库🚚 🫵🫵🫵关注我带你了解更多线程知识 目录 1.前言2.单例模式2.1饿汉方式2.2饿汉方式 3.阻塞队列3.1概念3.2实现 4.定时器4.1概念4.…

Linux常用名命令

Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改源代码,这是其他操作系统做不到的,Ubuntu,Centos。 linux中,一切皆文件。 一些重要的目录 / 根目录,所有文件都放…

2024-05-08 精神分析-对损失和挫败的强烈易感性-分析

摘要: 对损失的强烈的易感性,会在遭受损失或者挫败的时候,表现的极其敏感,这个过程主要是在创业的过程中更加强烈的表现并带来巨大的影响。必须要对其进行彻底的分析,并保持对此行为的长期的警惕。 所谓前事不忘后事之师&#x…

JAVA IO/NIO 知识点总结

一、常见 IO 模型简介 1. 阻塞IO模型 最传统的一种IO模型,即在读写数据过程中会发生阻塞现象。当用户线程发出IO请求之后,内核会去查看数据是否就绪,如果没有就绪就会等待数据就绪,而用户线程就会处于阻塞状态,用户线…

WIFI模块UDP电脑端调试

一,两端都是电脑端 1,电脑本机的IP地址 192.168.137.1 2,新建两个不同的连接,注意端口 二,WIFI 模块和电脑端连接 1,设置模块端目标IP和端口,电脑端只接收数据的话,IP、端口可随…

effective python学习笔记_pythonic思维

优缺点 书的好处是很多新特性提高了可读性代码性等各方面性能,缺点是新特性和py老版本不兼容,老版本可能没有这些新特性,如果用了py早期版本,需要考虑替代方案 查py版本 import sys sys.version sys.version_info 遵循PEP8 …

python turtle

名字动画 #SquareSpiral1.py import turtle t turtle.Pen() turtle.bgcolor("black")my_nameturtle.textinput("输入你的姓名","你的名字?") colors["red","yellow","purple","blue"] for…

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑热动态的综合能源系统碳排放流建模与分析》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

浅谈智能电气火灾监控系统的设计及应用

摘要:致电气火灾的原因是多方面的,主要成因包括漏电、绝缘层老化、短路、电火花密集、接地发生故障、电气设备自然、接触不良和电流超负荷等。文章分析电气火灾的成因,并探索电气火灾监控系统的设计方案与注意事项。 关键词:电气…

【数据结构】闲谈A股实时交易的数据结构-队列

今天有点忙,特意早起,要不先写点什么。看到个股的红红绿绿, 突然兴起,要不写篇文章分析下A股交易的简易版数据结构。 在A股实时股票交易系统中,按照个人理解,大致会用队列来完成整个交易。队列(…

WordPress原创插件:当日24小时发布文章标题变红

WordPress原创插件&#xff1a;当日24小时发布文章标题变红 <?php// 添加自定义样式 function title_red_plugin_styles() {$current_time time();$post_time get_the_time(U);$time_difference $current_time - $post_time;if ($time_difference < 86400) {echo&l…

SSH的魅力:为何它成为远程访问的首选

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Linux &#xff1a;从菜鸟到飞鸟的逆袭》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、SSH简介 2、SSH的历史与发展 3、SSH的主要用…

每日OJ题_贪心算法三③_力扣45. 跳跃游戏 II(dp解法+贪心解法)

目录 力扣45. 跳跃游戏 II 解析代码1_动态规划 解析代码2_贪心 力扣45. 跳跃游戏 II 45. 跳跃游戏 II 难度 中等 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 num…

课程作业管理系统,基于 SpringBoot+Vue+MySQL 开发的前后端分离的课程作业管理系统设计实现

目录 一. 前言 二. 功能模块 2.1. 管理员功能模块 2.2. 教师功能模块 2.3. 学生功能模块 三. 部分代码实现 四. 源码下载 一. 前言 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势…

Java并发编程: Synchronized锁升级

文章目录 一、jdk8 markword实现表二、使用工具来查看锁升级 一、jdk8 markword实现表 new -> 偏向锁 -> 轻量级锁&#xff08;自旋锁、自适应自旋锁&#xff09;-> 重量级锁&#xff1a; 偏向锁和轻量级锁都是用户空间完成的。重量级锁是需要向内核申请的。 synchr…

Jenkins +配置邮件 centos8.5 安装部署 运维系列一

1 jenkins的war包下载地址: Download and deploy 2 xftp 等方式上传到服务器 #安装jdk tar zxvf jdk-11.0.8_linux-x64_bin.tar.gz mv jdk-11.0.8/ /usr/local/jdk vim /etc/profile export JAVA_HOME/usr/local/jdk export PATH$JAVA_HOME/bin:$PATH CLASSPATH.:$JAVA_…

【Qt QML】ComboBox组件

ComboBox 是一个组合的按钮和弹出列表。它提供了一种以最小的屏幕空间呈现选项列表给用户的方式。ComboBox 使用数据模型填充。数据模型通常是一个 JavaScript 数组、一个 ListModel 或一个整数&#xff0c;但也支持其他类型的数据模型。 下面是一个简单的使用方式。 import …
最新文章