0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何对SoC进行手动FPGA分区

jf_5P3RKFtu 来源:芯播客 2023-04-27 15:17 次阅读

对SoC芯片要进行FPGA原型验证,假如设计较大,要将SoC中不同功能模块或者逻辑模块分别分配到特定的FPGA,那么对SoC的分割策略尤为重要。这一点和大规模的多片FPGA设计有所不同,在设计一个大规模的FPGA产品之前,你可能在一开始就会考虑到如何将不同的功能模块以及连接方式分别合理的放到不同的FPGA中,各个FPGA之间的连接在设计之初就有考虑。

但是,对于大规模SoC设计要分割到多片的FPGA中,对于出database的逻辑原型工程师而言,显得有点“措手不及”,因为整体的RTL架构代码并未考虑在多片FPGA上的实现架构,前端SoC架构以及前端的RTL设计工程师更多考虑的是SoC的实现流程。所以,这一点给原型验证工程师带来挑战,但是我们可以顺着以下思路运用相关软件进行手动分割。

分配高度连接的模块

我们期望分割工具可以显示模块级互连信息,比如我们在工具中可以选择设计的层次结构的模块列表(层次结构之所以非常重要,就是因为在SoC的设计过程中,本身就会遵循以功能为大方向去写RTL级别的代码,然后“高内聚,低耦”的思路划分模块与层次关系的),然后列表会展示相应的模块与模块之间的连接关系。例如以下工具展示的模块之间的互连:

fdc8ab4e-e4ca-11ed-ab56-dac502259ad0.png      

这里,我们可以立即看到块b2v_inst1和b2v_inst2共享82个相互连接,但b2v_ints3与块的顶级IO的连接最多(106)。当用大量相互连接的信号划分多个块时,重要的任务是确保这些块放置在同一FPGA中。如果高度连接的块被放置在不同的FPGA中,那么我们将需要大量的FPGAIO引脚来重新连接它们。

例如,当使用64位和更大的总线时,分配到不同FPGA中的两个块很可能需要数百个额外的FPGA IO。因此,在上面的示例中,我们可能会尝试先将b2v_inst3分配到一个FPGA中,而b2v_inst1和b2v_ins2可以一起分配到不同的FPGA中,因为它们是相互连接的,但与b2v_ins3几乎没有连接。

其次,我们期望工具能够展示大致的FPGA分区信息,当我们手动选择相关模块到各FPGA块的时候,分割软件可以及时的反馈相关分区FPGA的资源使用情况,以便我们做出最优的手动分割选择。

fdd48676-e4ca-11ed-ab56-dac502259ad0.png        

如果不可能将高度互连的块放在一起,因为它们溢出了一个FPGA的资源,那么我们将需要降低层次结构级别,并在下一级查找连接较少的块,并提取要分配到不同FPGA中的块。通过这种方式,我们仍然可以增加所需的FPGA的IO的数量,但比将更高级别的块分配到其他地方的情况要少。

如果在此较低级别上没有这样的分区,则我们可能会走得更低,但在越来越细的逻辑粒度上指定分区会使分区更可能受到设计迭代的影响,因为这些更细的粒度被不同地优化或重命名。如果我们发现自己必须深入层次结构以找到解决方案,那么最好返回并使用不同的粗略分区在顶层重新启动。

分配各种设计功能模块

使用我们对每个块的面积的估计,我们可以将剩余的设计块分配给FPGA资源,从最大的块开始。我们从较大的块开始,因为这自然会将较小的块留给稍后的分区过程。然后,随着FPGA资源可能变得过满(请记住,50%到70%的利用率是一个很好的目标),我们可以更自由地放置粒度更细、输入和输出数量更少的较小块。

当我们进行分区时,我们希望平衡FPGA的资源使用,同时将利用率保持在可容忍的范围内,即低于70%的建议值。这将有助于避免长时间的运行时间,并使其更容易达到所需的时间。

选择了分区的候选块后,我们可能会进行尝试分配,直到找到最佳解决方案,然而,在具有许多FPGA的原型中,这是低效的。我们已经看到,对我们的任务决定进行即时反馈是多么有用。事实上,在分配任务之前获得反馈更为有用。这使我们能够提前了解如果将选定块放置在这样或那样的FPGA中,对IO和资源的影响。这种预警称为影响分析。

fdda2d4c-e4ca-11ed-ab56-dac502259ad0.png

这里我们可以看到,我们选择的块具有672个逻辑元素的区域,从先前的资源估计中提取。如果我们选择将块分配给mb.uB,我们将使FPGA的面积增加672个逻辑元件(总共478080个),并将IO计数增加137个,使其总数达到150个。

我们还可以看到,如果我们将块分配给mb.uA,那么面积仍将增加相同的数量,但IO需求将减少83个引脚,这可能是因为我们的块连接到已经分配给mb.uA的一些逻辑。我们可以根据此快速分析选择mb.uA然后单击分配。与所有由交互式用户界面驱动的工具一样,一旦我们熟悉该方法,就可以使用脚本和命令行。

在放置了主要的分层块之后,我们可以使用相同的方法用较小的块来填补空白。对于较小的块,顺序并不那么重要,我们可以通过连接和资源使用等信息来指导。一些工具还提供屏幕上的指导,如基于所需连接的各种权重的“老鼠窝”线,这些线似乎将所选块拉向最佳FPGA选择。

在手动完成关键任务后,一些团队将在这个阶段改用自动分区。如果这可以在与手动分区器相同的环境中运行,则效率更高。我们只是到达了一个让我们感到满意的地步,我们已经控制了我们的关键任务,并按下按钮完成剩下的任务。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1629

    文章

    21729

    浏览量

    602977
  • SoC芯片
    +关注

    关注

    1

    文章

    610

    浏览量

    34905
  • RTL
    RTL
    +关注

    关注

    1

    文章

    385

    浏览量

    59759

原文标题:对SoC进行手动FPGA分区

文章出处:【微信号:于博士Jacky,微信公众号:于博士Jacky】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    SoC FPGA有哪些作用?

     Altera公司意欲通过更先进的制程工艺和更紧密的产业合作,正逐步强化FPGA协同处理器,大幅提升SoC FPGA的整体性能,为抢攻嵌入式系统市场版图创造更大的差异化优势。随着SoC
    发表于 08-26 07:15

    SoC内存映射分区表分享

    SoC中各个计算模块内存分区映射
    发表于 09-19 07:16

    基于FPGASOC系统中的串口设计

    基于FPGASOC 系统中的串口设计 作者:葛锐 欧钢摘要:本文在XILINX FPGA 中采用嵌入式处理器Picoblaze 进行SOC
    发表于 02-08 09:48 21次下载

    PCB如何进行分区布线?

    PCB如何进行分区布线?    设计分区可以分解为物理分区和电气分区。物理
    发表于 03-25 11:54 2430次阅读

    Altera公司SoC FPGA 简介

    本文是关于Altera公司SoC FPGA 的用户手册(英文版) 。文中主要介绍了什么是SoC FPGASoC
    发表于 09-05 14:03 153次下载
    Altera公司<b class='flag-5'>SoC</b> <b class='flag-5'>FPGA</b> 简介

    SoC设计中嵌入FPGA(eFPGA)内核实用评估方法

    虽然系统级芯片( SoC )的架构师们已了解嵌入式FPGA( eFPGA )内核能如何为他们的ASIC/ SoC 设计增加价值,甚至是在规划出一个具体应用之前就了解,但可能还不清楚如何
    的头像 发表于 09-20 09:51 4155次阅读

    新硬盘进行重新分区的简单技巧

    大家都知道,对于全新的电脑来说,它的硬盘也都是全新的,用户要使用的话,首先要给新的硬盘进行分区,那么该怎么对新硬盘进行分区呢?很多用户都是茫然的,就让小编来告诉大家如何为新硬盘
    的头像 发表于 09-23 10:30 1.4w次阅读

    FPGA_soc学习教程:Intel Cyclone V SoC FPGA介绍

    小梅哥最新款FPGA_SOC
    的头像 发表于 05-28 06:09 4354次阅读

    FPGA_soc学习教程:SOC FPGA开发流程简介

    小梅哥最新款FPGA_SOC
    的头像 发表于 08-30 06:10 3933次阅读
    <b class='flag-5'>FPGA_soc</b>学习教程:<b class='flag-5'>SOC</b> <b class='flag-5'>FPGA</b>开发流程简介

    FPGA_soc学习教程:AC501 SOC FPGA开发板黄金参考设计说明

    小梅哥最新款FPGA_SOC
    的头像 发表于 08-30 06:08 2131次阅读
    <b class='flag-5'>FPGA_soc</b>学习教程:AC501 <b class='flag-5'>SOC</b> <b class='flag-5'>FPGA</b>开发板黄金参考设计说明

    对于eFPGAFPGA SoC之间的对比分析和异同

    如果说eFPGA是往SoC里面加入FPGA的话,那么FPGA SoC的概念就是在FPGA里面加上
    的头像 发表于 09-04 16:12 4048次阅读
    对于e<b class='flag-5'>FPGA</b>与<b class='flag-5'>FPGA</b> <b class='flag-5'>SoC</b>之间的对比分析和异同

    什么是SoC、SOPC、SoC FPGA?用在什么场景?

    开始SoC FPGA的学习路程还是蛮难的,不仅要熟悉整个的设计流程,而且还要掌握FPGA以及软件方面的知识,尤其大概看了一下后面的整体设计部分,操作起来还是较为繁琐的,以至于让人晕头转向。尽管如此
    的头像 发表于 03-30 10:13 9977次阅读

    基于FPGASoC创建方案

    LiteX 框架为创建 FPGA 内核/SoC、探索各种数字设计架构和创建完整的基于 FPGA 的系统提供了方便高效的基础架构。
    发表于 06-28 09:08 769次阅读
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>SoC</b>创建方案

    linux系统如何进行磁盘分区

    linux系统如何进行磁盘分区? 磁盘分区是在Linux系统中进行硬盘划分的一种方法,它可以将一个物理硬盘划分为多个逻辑分区,每个
    的头像 发表于 12-19 11:35 1034次阅读

    fpga芯片和soc芯片的区别

    FPGA芯片和SoC芯片在多个方面存在显著的区别。
    的头像 发表于 03-14 17:28 3018次阅读