FPGA优化之高扇出
Fanout即扇出,模块直接调用的下级模块的个数,如果这个数值过大的话,在FPGA直接表现为net delay较大,不利于时序收敛。因此,在写代码时应尽量避免高扇出的情况。但是,在某些特殊情况下,受到整体结构设计的需要或者无法修改代码的限制,则需要通过其它优化手段解决高扇出带来的问题。以下就介绍 三个这样的方法:
首先来看下面这个实例,如图1所示为转置型FIR滤波器中的关键路径时序报告,在DSP in FPGA的FIR专题中有介绍转置型结构FIR滤波器输入数据的扇出较大,在图1中所示为11,因此net delay高达1.231ns。如图2所示,输入数据驱动了11个DSP48E1。
图1
图2
在没有优化情况下,该设计的fmax:206.016MHz
1、寄存器复制
寄存器复制是解决高扇出问题最常用的方法之一,通过复制几个相同的寄存器来分担由原先一个寄存器驱动所有模块的任务,继而达到减小扇出的目的。通过简单修改代码,如图3所示,复制了4个寄存器:din_d0、din_d1、din_d2、din_d3,din_d、din_d0、din_d1、din_d2分别驱动2个DSP48E1,din_d3驱动3个DSP48E1。其中在代码中为防止综合器优化相同寄存器,在对应信号上加入了(* EQUIVALENT_REGISTER_REMOVAL="NO" *)属性避免被优化。
寄存器复制是一种方法,此方法,尽量采用手工自己写代码实现,明确告知综合工具复制哪个寄存器。此时需要注意
综合选项中Equivalent Register Removal不用选中(XST综合)。另外,可以在代码里添加这一属性
Verilog:
(* equivalent_register_removal="{yes|no}" *) reg a;
VHDL:
attribute equivalent_register_removal: string;
attribute equivalent_register_removal of {entity_name|signal_name} : {signal|entity} is "{yes |no}";
图3
综合实现后得到时序报告如图4所示,该数据路径上输入数据fanout减为2,对应net delay也减小到了0.57ns。得到设计如图5所示,与期望的相同,复制了4个寄存器来分担fanout。经过寄存器优化后得到fmax:252.143MHz
图4
图5
2、max_fanout属性
在代码中可以设置信号属性,将对应信号的max_fanout属性设置成一个合理的值,当实际的设计中该信号的fanout超过了这个值,综合器就会自动对该信号采用优化手段,常用的手段其实就是寄存器复制。属性设置如下代码所示:
(* max_fanout = "3" *)reg signed [15:0] din_d;
将din_d信号的max_fanout属性设置成3,经过综合实现后,得到时序报告如图6所示,其中fanout只有2,相应的net delay也只有0.61ns,自动优化效果还不错。结构如图7所示,其中din_d_12_1、din_d_12_2、din_d_12_3是综合器优化后自动添加,即实现了寄存器复制功能。经过设置max_fanout属性优化后得到fmax:257.135MHz
图6
图7
3、BUFG
通常BUFG是用于全局时钟的资源,可以解决信号因为高扇出产生的问题。但是其一般用于时钟或者复位之类扇出超级大的信号,此类信号涉及的逻辑遍布整个芯片,而BUFG可以从全局的角度优化布线。而且一块FPGA芯片中BUFG资源也有限,在7k325tffg900上也仅有32个,如果用于普通信号的高扇出优化也不大现实。因此,在时钟上使用BUFG是必须的,但是如果设计中遇到某些复位信号因高扇出产生的时序问题时,可以在此信号上使用BUFG来优化。
综上,在遇到信号高扇出时,对于普通信号可采用寄存器复制或者设置max_fanout属性优化;而对于复位信号,可加入BUFG优化。
FPGA优化之高扇出相关推荐
- (147)FPGA高扇出信号优化方法(二)
(147)FPGA高扇出信号优化方法(二) 1 文章目录 1)文章目录 2)时序约束引言 3)FPGA时序约束课程介绍 4)FPGA高扇出信号优化方法(二) 5)技术交流 6)参考资料 2 时序约束引 ...
- (146)FPGA高扇出信号优化方法(一)
(146)FPGA高扇出信号优化方法(一) 1 文章目录 1)文章目录 2)时序约束引言 3)FPGA时序约束课程介绍 4)FPGA高扇出信号优化方法(一) 5)技术交流 6)参考资料 2 时序约束引 ...
- (148)FPGA高扇出信号优化方法(三)
(148)FPGA高扇出信号优化方法(三) 1 文章目录 1)文章目录 2)时序约束引言 3)FPGA时序约束课程介绍 4)FPGA高扇出信号优化方法(三) 5)技术交流 6)参考资料 2 时序约束引 ...
- 如何解决FPGA 高扇出( high fanout)问题
支持原著,转自:https://blog.csdn.net/shshine/article/details/52451997 Fanout,即扇出,指模块直接调用的下级模块的个数,如果这个数值过大的话 ...
- 关于 FPGA 内部信号扇入扇出
转自https://www.cnblogs.com/dxs959229640/p/3870189.html 关于 FPGA 内部信号扇入扇出 扇入.扇出系数 扇入系数是指门电路允许的输入端数目.一般门 ...
- (92)如何解决信号高扇出问题,例如复位信号
1.1 如何解决信号高扇出问题,例如复位信号 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)如何解决信号高扇出问题,例如复位信号: 5)结束语. 1.1.2 本节引言 ...
- IC前后端001:高扇出的危害
1.什么是高扇出? 高扇出指的是一个逻辑单元驱动的逻辑单元过多.常见于寄存器驱动过多的组合逻辑单元.至于驱动多少逻辑单元算过多,需要根据工艺,后端实现情况以及芯片本身类型来决定. 一般来说如果驱动逻辑 ...
- linux7内核优化,centos7 系统内核、网络等优化(适用高并发)
centos7 系统内核.网络等优化(适用高并发) 发布时间:2020-9-22 9:57:13 浏览量:1707 [字体:大 中 小] 一.ssh连接优化 # 禁用dns解析 Port 5211 ...
- 一种基于FPGA 的1080p 高清多摄像头全景视频拼接的泊车(机)
< > 一种基于FPGA 的1080p 高清多摄像头全景视频拼接的泊车(机)实时影像系统 一.本发明要解决的实际问题 1. 汽车左右反光镜及后视镜的视角有限,导致车身周围存在盲区,在特殊驾 ...
最新文章
- 在CNN上增加一层CAM告诉你CNN到底关注什么
- 计算机专业的书普遍都这么贵,Github上的计算机电子书很多~~~
- idea 升级到2020后 无法启动_i.MXRT软复位后无法从32MB Flash启动?
- mysql1033错误存储引擎_MySQL Innodb存储引擎因为缓存配置出现的错误
- 进程的控制——获取系统进程信息
- 谁天生就是干程序员的料?
- 物联网将如何影响你的钱包?
- 蓝凌ekp开发_蓝凌 EKP 集成插件
- scala 与 spark 并行化
- Virtual Member Functions(虚拟成员函数)
- 中国主要水系、河流、湖泊数据矢量数据(shp格式)下载地址
- 【黑苹果镜像】macOS Monterey 12.3正式版 (21E230) With OpenCore 0.7.9 and Clover 5144 and winPE原版镜像
- ubutnu下panel消失
- 计算机视觉与人的视觉
- Java程序员的职业规划是什么?叩丁狼的建议
- 机器学习系列(一), 监督学习和无监督学习
- 尤菲·如月 与你有约 ぐりぐりキュートユフィ汉化补丁
- mysql minus 语句用法_mysql如何用minus运算符?
- 美发明家脑洞大开 预测十几年后电脑会产生感情
- c语言VK_SPACE什么意思,C语言,回车键: VK_RETURN (13) 后面的英文跟数字是什么含义,如何使用求解。。。...
热门文章
- 2021年春季学期-信号与系统-第十一次作业参考答案-第八小题
- 基于SP4062电路IO接口八通道保护板
- 42HS48步进电机实验
- APPLE:疑问驱动下的学习与实践
- mysql 物理备份工具_mysql物理备份工具Xtrabackup安装配置
- php 元素添加子元素,css,html_怎么在添加的子元素上继承父元素上已存在的子元素的属性?,css,html,javascript - phpStudy...
- java %= %,JavaWeb
- php 外部调用内部变量,PHP 如何在方法体外部获取内部变量?
- 关于对锐捷光交换机的使用
- Linux系统备份树莓派,全平台备份树莓派的方法