FPGA知识汇集-ASIC移植中的FPGA芯片划分

news2025/1/16 19:02:23

       通常,FPGA单芯片难以容纳下整个ASIC设计,因此需要将整个系统划分到多颗FPGA芯片中运行(见图1),工程师往往需要借助原型验证平台来实现这样的目标。多芯片的划分绝不是简单的将不同的模板放置到不同的FPGA中那么简单,整个过程需要考虑到系统的成本、性能、规模,甚至划分的难易程度。这是一项需要反复优化的复杂过程(见图2)。为了更好的规划多芯片策划方案,工程师可以采用业界成熟的开发工具,工具内置的专用算法往往可以把整个设计更好的划分到不同的FPGA芯片中。

       多芯片划分的过程大致包括以下的步骤:需求定义,可行性分析,芯片边界划分,FPGA芯片选型、定义芯片间的通信接口,定义时钟结构和复位机制,选择合适的芯片划分工具,定义芯片划分的详细流程。做完芯片划分之后,可以在不同芯片上使用不同的优化策略。 

需求定义

       需求分为刚性需求和弹性需求两种。诸如系统成本、平台容量、板上存储空间、最小引脚数目及一些特殊的外设(USB,PCle,Ethernet)都是刚性需求,在考虑过程中必须要满足。而像模拟器的运行速度或者FPGA的资源利用率这些都是弹性需求,只要不对平台的功能产生巨大的影响,都可以做一些折中的改变。

可行性分析

       可行性分析的目的就是要确定整个设计是否需要划分到多颗FPGA芯片中。如果确实需要,那么是否能够合理地划分到基于FPGA的原型验证平台上。即便对于逻辑资源足够放在单片FPGA内的小型设计,也有可能遇到内部存储单元、信号处理单元、用户可用引脚、时钟资源不够这样的情况,因此仍然需要划分到多颗FPGA芯片中才能够实现。通过可行性分析,能够得到FPGA芯片数目、总体容量和芯片互连结构。多芯片划分过程中需要考虑到逻辑综合和物理实现的问题。复杂的芯片划分方案、芯片中占用过高的资源、不同芯片引脚之间的多路时分复用、可能出现的布线堵塞等,都会带来额外隐藏的问题。

芯片边界划分

       由于大部分的ASIC芯片都是采用模块化的设计方式,因此使得多芯片的边界划分更直观和容易。SOC芯片就是很好的例子,芯片内部的功能模块多为多核CPU、高速缓存、内存控制器、外设等,它们通过系统总线进行互连,因此划分的边界也相对清晰。而GPU芯片的复杂的网状互连结构,则没有明显地划分边界,因此常常需要专业的软件工具来辅助。

FPGA芯片选型

       FPGA芯片选型的经验法则是尽量选择最大容量、最高速度的芯片,这样能够减少芯之间的互连复杂度和芯片划分本身的难度。在方案的选型中,可以使用不同的芯片和非对称的片间互连结构,芯片可以有不同的容量、不同的系列,甚至来自不同的供应商。

       图3展示了Dini Group公司的一个原型验证平台,上面的2颗FPGA芯片采用了非对称的片间互连结构。

定义芯片间的通信接口

       当整个设计被划分到多颗FPGA芯片时,设计的引脚数目会大大增加,大致可以用Rent法则(模型)进行描述; 

       T=t·gp

       T是芯片划分后的引脚数目,g是模块的大小,p是Rent幂指数因子(取值在0.5~0. 8), t是常数。

       从上述的经验公式可以看出,将整个设计划分到多颗FPGA芯片后将会大大增加其引脚数目。即便降低划分以后的模块数目,其引脚数目并不会降低同样之多。

       通常,FPGA芯片之间的可用引脚越多,越利于信号之间的互连,并且减少信号之间的时分复用,从而提高整个系统的运行速度。关于该问题的详细讨论,感兴趣的读者可以持续关注公众号,后续持续更新!

时钟结构

       多芯片系统的时钟分配方案非常复杂,因为需要调节不同芯片时钟之间的偏移。时钟偏移的产生来自于PCB走线和FPGA芯片。当一颗FPGA所产生的时钟作为到其他所有芯片的时钟源时,那么由于PCB布线带来的时钟偏移就必须要考虑在内,否则会带来保持时间的问题。有不同的时钟分配方案可以解决这类问题,其中之一就是采用时钟反馈环结构:时钟源从PCB 环回到产生该时钟的FPGA内部,从而平衡每颗FPGA 之间的时钟偏移。另外一种方案则是采用时钟网络复制的方法,从而消除PCB布线带来的时钟偏移。

       图4说明了时钟反馈环方案的结构:外部时钟进入FPGA 1的PLL时钟管理器,PLL把生成的时钟同时发送给FPGA 2和FPGA 3、并反馈给FPGA1,这样就能够保证时钟的延迟一致性。

       大规模、多时钟域的ASIC设计,可能会存在各种不同的时钟分配方案。完全使用手动的方式对这种大规模设计做多芯片划分、时钟分配方案、时钟域转换,将变得难以实现。因此需要采用自动化的多芯片划分工具来辅助整个工作。 

复位机制

       一个稳定的复位机制就是要在同一时间让所有FPGA芯片的逻辑达到同一个状态。因此复位延迟必须有一些限制,也会影响到同步或者异步复位机制的选择。

选择芯片划分工具

       芯片划分工具可以分成3类:手动划分,自动划分,半自动划分。

       对于较小的设计而言,支持手动划分的工具是比较合适的方式,它所带来的灵活性是自动划分工具无法达到的,另外也不需要支付购买工具的昂贵费用。但是手动划分需要编写和维护各种脚本,并且需要对划分后的设计重新验证,这方面的费用有时候甚至超过购买工具本身。

       现在的芯片划分工具支持RTL源代码或者EDIF网表这两种方式。使用EDIF网表的优势是具有更加准确的资源评估。另外对于芯片划分工具来说,单一的 EDIF网表也更加容易找到划分的边界。而对于使用脚本而言,则更多的是支持RTL源代码的芯片划分方案。

       自动化的芯片划分工具通常具有以下的功能:

  • 针对特定原型验证平台的资源估计。

  • 对原型验证平台做前期的可行性分析(不需要引脚分配或者FPGA芯片的互连结构)。

  • 通过对引脚资源和逻辑资源的需求分析,得到优化的芯片划分方案。

  • 同时支持RTL源代码和EDIF 网表作为输入。

  • 支持多种第三方或者自定义的原型验证平台。

       有些情况下,即便使用专业的工具也很难满足全自动化的芯片划分过程,因为某些ASIC设计的特殊需求必须要手动处理,工具对一些特殊的优化措施也很难处理、通常的做法是先对脚本做一些修改和优化,然后再使用自动化工具进行处理。 

芯片划分流程

       芯片划分支持‘自顶而下’和‘自底向上’两种不同的设计流程。

       在“自顶而下”的划分流程中,整个设计先被综合成打平的EDIF网表,然后自动划分工具针对该EDIF网表进行处理。该流程的优势体现在可以为不同的模块提供边界优化能力,可以使用不同的约束得到不同的优化结果,因此往往可以得到时序和性能都更加优化的芯片划分方案。

       在“自底而上”的划分过程中,整个设计先被划分成不同的模块,然后每个模块单独被综合并下载到不同的FPGA芯片。该划分流程更加适合于基于脚本的手动划分,并且由于每个模块对应的EDIF网表规模较小,因此能够显著的降低大型设计的编译时间。

芯片划分算法

       几乎每个芯片划分工具所使用到的算法都申请了专利保护,或者是商业公司的核心资产。一个高效的芯片划分算法能够提供更快的编译时间、更高的性能、更低的资源利用率。因此是整个工具的核心。

       大部分的算法使用了一个叫做”模拟退火“的方式来寻找优化的划分策略,这种算法用“图”的方式来表达打平的EDIF网表,在速度、容量、引脚数目和其他指标的约束下,工具在搜索空间中寻找最佳的方案。“图”的最佳割集就代表了最终的划分方案。

逻辑优化

       完成芯片划分以后,工程师可以对不同芯片的逻辑做不同的优化,进而提高时钟速度,通过重新平衡逻辑资源而降低每颗FPGA芯片的资源利用率,或者降低FPGA的逻辑综合、物理实现时间。在优化的过程中常常会使用到逻辑复制的技术,它可以得到更高的布线成功率和时钟速度。

       在所有需要优化的对象中,编译时间显得更加重要。减小编译时间可以更快的验证不同的版本,从而能够更快的发现问题。

更多有趣的话题请看链接:

FPGA知识汇集-FPGA项目开发包含那些任务?

FPGA知识汇集--FPGA结构(1)

FPGA的应用

FPGA知识汇集-在命令行模式下使用Xilinx工具

FPGA知识汇集-ISE的这些有用的工具您知道吗?

FPGA知识汇集-FPGA设计开发需要熟悉哪些EDA工具呢?

FPGA知识汇集-值得收藏的FPGA代码命名规范?

FPGA 知识汇集--Linux下ISE的环境变量设置

FPGA知识汇集-值得收藏的Verilog代码风格1

FPGA知识汇集-值得收藏的Verilog代码风格2

FPGA知识汇集-编写可综合代码(RTL)需要注意的规则总结

FPGA知识汇集-Verilog和VHDL的混合使用

FPGA知识汇集-关于Xilinx 工具报告

FPGA知识汇集-例化与推译

硬件仿真加速器与原型验证平台

       FPGA知识汇集-ASIC向FPGA的移植

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

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

相关文章

算法训练营 day16 二叉树 二叉树的最大深度 二叉树的最小深度 完全二叉树的节点个数

算法训练营 day16 二叉树 二叉树的最大深度 二叉树的最小深度 完全二叉树的节点个数 二叉树的最大深度 104. 二叉树的最大深度 - 力扣(LeetCode) 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点…

(JVM) 沙箱安全机制

沙箱安全机制 沙箱安全机制 保证程序安全 保护Java原生的JDK代码 Java安全模型的核心就是Java沙箱(sandbox)。什么是沙箱?沙箱是一个限制程序运行的环境。 沙箱机制就是将Java代码限定在虚拟机(JVM)特定的运行范围…

Javaweb+Vue开发中常见的问题-1

1.Vue乱码问题 Vue2 修改打包文件的编码格式(webpack-encoding-plugin)_一碗单炒饭的博客-CSDN博客_vue如何设置打包文件的编码格式 怎么把命令行改成utf_8 - 沿途百知 设置命令行的编码格式:chcp 65001 https://bbs.csdn.net/topics/3935426…

基于微信小程序云开发的职业学校招生报名小程序源码,职业学校招生报名微信小程序源码 ,职业学校招生报名小程序源码

功能介绍 这是一个以报名为核心的职业学校招生小程序,目的是方便想要系统学习技能,入门某项技能或者领域的初高中毕业生,了解该学校的基本情况及各个专业,并提供报名路径,致力于技能型人才培养。本程序前后端代码完整…

ikun运球新姿势-- 反弹shell

目录 反弹Shell 反弹shell的概述 正向连接 反向连接 为什么需要反弹shell 利用netcat反弹shell 利用Bash反弹shell curl配合Bash反弹shell 将反弹shell的命令写入定时任务 将反弹shell的命令写入/etc/profile文件 python脚本反弹shell 反弹Shell 反弹shell的概述 …

免费的移动硬盘数据恢复软件EasyRcovery15

在日常工作中,移动硬盘可以帮助用户存储重要的文件资料,作为可移动的存储设备,在外出工作时携带起来也比较的方便,而且它的存储空间大,不会出现数据文件过大而无法储存的情况。今天小编就来和大家分享一下,…

算能杯|全国大学生集成电路创新创业大赛开启报名!

第七届全国大学生集成电路创新创业大赛正式开幕,“算能杯”主题是基于TPU芯片的边缘计算系统设计,算能为参赛选手提供了超强算力的开发板、无人机、人工智能小车等硬件资源,欢迎各大高校的开发者报名参与! 近几年,边缘…

4-选择题练手

1.在Java中,以下关于方法重载和方法重写描述正确的是A. 方法重载和方法的重写实现的功能相同 B. 方法重载出现在父子关系中,方法重写是在同一类中 C. 方法重载的返回值类型必须一致,参数项必须不同D.方法重写的返回值类型必须相同或相容答&am…

05.rocketmq源码分析后的一些整理

经过近3年的打磨,我们自研的企业基础应用框架基本成型,并且在多家规模企业中全面落地,从最新的统计数据来看,经过一年的上线应用,某省港集团在平台中管理的运营流程接近600/审批事项接近73w,业务消息量就更…

SSM02 Spring 注解开发 AOP Spring整合-事务

19-注解开发定义bean3.2 注解开发定义bean在上述环境的基础上&#xff0c;我们来学一学Spring是如何通过注解实现bean的定义开发?步骤1:删除原XML配置将配置文件中的<bean id"bookDao" class"com.itheima.dao.impl.BookDaoImpl"/>标签删除掉步骤2:D…

麒麟操作系统iso文件中的img文件的解压与压缩

近日考虑到要制作适用PXE的引导麒麟系统&#xff0c;所以需要对iso中的img文件做适当调整。本文将介绍如何解压压缩麒麟系统的img文件。 一、了解vmlinuz和initrd.img文件 vmlinuz&#xff1a;系统内核文件&#xff0c;编译而成。initrd.img&#xff1a;是一个小的文件系统&a…

【redis6】第四章(配置文件)

自定义目录&#xff1a;/etc/redis.conf Units单位 配置大小单位,开头定义了一些基本的度量单位&#xff0c;只支持bytes&#xff0c;不支持bit&#xff0c;大小写不敏感。 # Redis configuration file example. # # Note that in order to read the configuration file, Re…

D3.js基础教程

D3: Data-Driven Documents D3 (或D3.js)是一个JavaScript库&#xff0c;用于使用Web标准可视化数据。 D3帮助您使用SVG&#xff0c;Canvas和HTML使数据栩栩如生。 D3将强大的可视化和交互技术与数据驱动的DOM操作方法相结合&#xff0c;为您提供现代浏览器的全部功能&#xf…

【owt-server】RtpTransportControllerSend的创建和使用

owt-server 5.0 【owt-server】librtcadapter: VideoSendAdapterImpl 视频发送侧及mia 调用分片发送H264帧只是简单的发送发送侧必须有一套传输控制机制这套机制还需要接收测联动。发送侧 NonPacedSender bool VideoSendAdapterImpl::init() 创建 需要首先创建m_transportCont…

如何判断一个数据库是不是出问题了?

我在前面文章中,和你介绍了主备切换流程。通过这些内容的讲解,你应该已经很清楚了:在一主一备的双 M 架构里,主备切换只需要把客户端流量切到备库;而在一主多从架构里,主备切换除了要把客户端流量切到备库外,还需要把从库接到新主库上。 主备切换有两种场景,一种是主动…

Linux系统编程——线程

守护进程 守护进程: daemon进程。通常运行与操作系统后台&#xff0c;脱离控制终端。 一般不与用户直接交互。 周期性的等待某个事件发生或周期性执行某一动作。 不受用户登录注销影响。 通常采用以a结尾的命名方式。守护进程创建步骤; fork子进程&#xff0c;让父进程终止。…

年轻人的颜值担当,当下正流行的开关面板设计,你pick哪一款?

在颜值即正义的时代 越来越多的年轻人选择产品时 除了关注产品的功能外 也愈加愿意为产品的颜值买单近年来&#xff0c;鸿雁从大自然和生活中汲取灵感 以年轻、新鲜、现代的设计风格 赋予开关面板更有格调的外形 引领了墙面上的家居美学 下面&#xff0c;小雁带大家一起从鸿雁热…

微服务调用组件Feign的原理及高级功能实战

目录 一、Fegin的原理 二、Spring Cloud 整合Feign 三、Spring Cloud整合Dubbo 微服务调用组件Feign的原理及高级功能是我们今天分享的主题&#xff0c;此组件可以说是微服务必用的&#xff0c;服务远程调用&#xff0c;属于RPC远程调用的一种&#xff0c;RPC 全称是 Remote …

如何划分子网(例题讲解)

44(12分)设某ISP拥有一个网络地址块201.123.16.0/21,现在该ISP要为A、B、C、D四个组织分配IP地址,其需要的地址数量分别为985、486、246以及211,而且要求将低地址段的 IP 地址分配给 IP 地址需求量大的组织。请给出一个合理的分配方案以满足该需求。要求将各组织所获得的子网地…

2023年,推荐10个让你事半功倍的CSS在线生产力工具

谈到 CSS&#xff0c;您总是必须编写许多代码行&#xff0c;才能使您的项目在样式方面看起来美观大方。当然&#xff0c;专注于为前端编写好的 CSS 很重要&#xff0c;但这个过程可能会花费很多时间。作为 Web 开发人员&#xff0c;CSS 是我们开展项目时必不可少的语言之一。我…