高密原型验证系统解决方案(上篇)

0 引言

随着当今 SoC 设计规模的快速膨胀,仅仅靠几 颗当代最先进的 FPGA 已经无法满足原型验证的需求。简单的增加系统的容量,会遇到系统时钟复位同 步,设计分割以及高速接口和先进 Memory控制器 IP 验证等多重困难。此时,一个商用成熟的能解决 以上多重挑战的通用高密原型验证系统方案显得十 分有必要。 本文主要分析了用户在进行大规模 SoC 设计原 型验证过程中在全局时钟及复位同步,大规模设计 分割以及高速接口和先进 Memory 控制器 IP 验证等 方面遇到的困难,并提出了相应的解决方案来帮助 用户来克服这些困难。

 

1 大规模 SoC 设计原型验证中遇到的挑战

1.1 全局时钟及复位方案挑战

全局时钟和复位的解决方案是构建一个大规模复杂 SoC 原型验证系统首先要考虑的问题。 SoC 原型验证系统需要保证系统的全局时钟和复位能够 同步的送到原型验证系统的每一个 FPGA 节点,这 是大规模 SoC 原型验证系统能够正常工作的先决条 件。随着用户的 SoC 设计规模的增大,对原型验证系统的全局时钟和复位的同步方案的要求也会变得复 杂。

1. 如果用户的设计规模用单台FPGA 原型验证平台就可以容纳,那么原型验证系统的全局时钟和 复位同步的实现难度会比较简单,只需要实现单台 平台上的多颗 FPGA 的时钟复位同步即可。

2. 如果用户的设计规模再大一些,需要用多台 FPGA 原型验证平台组成一套验证系统,那么原型 验证系统的全局时钟和复位同步的实现难度就会高 一些,需要实现多台验证平台上的多颗 FPGA 的时 钟复位同步。

3. 如果用户的设计规模进一步扩大,需要用数十台甚至上百台 FPGA 原型验证平台才能组成一套 验证系统,那么原型验证系统的全局时钟和复位的 同步的实现会变得十分复杂,需要用时钟复位模块 级联的方式实现大量平台上的多颗 FPGA 的时钟复 位同步。

1.2 大规模设计分割挑战

由于大规模复杂 SoC 设计规模庞大,把设计映 射到多个 FPGA 组成的网络(也称设计分割)是大规 模原型系统实现过程中必不可少的重要环节。然而 大规模设计分割也给用户的原型验证带来了不少的难题:

1. 首先要解决的是设计综合时间长的问题。一个设计规模达到几亿门甚至数十亿门的大规模 SoC 设计,如果采用整个设计先综合,再分割的方式,设 计综合的时间会非常的漫长,一次综合流程就要花 费数天甚至数周的时间。遇见设计规模特别大的设 计,甚至会出现编译软件或服务器崩溃的情况。显 然,面对大规模 SoC 设计用户需要采用并行编译的 方式。

2. 其次,当设计原始的 SoC 设计分割到多颗 FPGA 中,原型设计的全局时钟树处理也是一个难 题。用户的 SoC 设计全局时钟树往往很复杂,需要怎 样处理来保证复杂的全局时钟树在每颗 FPGA 上同 步的实现?

3. 将一个大规模 SoC 设计分割到多颗 FPGA 时,FPGA 之间的互连信号往往有成千上万根,FPGA 的 IO 管脚数远远无法满足互连信号数的需求。 人工写互连接口 Wrapper 设计,进行 FPGA 之间互 连信号的管脚复用是吃力不讨好的工作。需要有自 动化的管脚复用的方案帮用户减轻负担,提高效率。

1.3 高速接口和先进 Memory 控制器 IP 验证挑战

大规模复杂 SoC 设计原型验证时一些高速接 口,如 PCIe Gen3/Gen4 接口,对应的 PCIe 控制器 IP 在 FPGA 里跑的速度都很低,无法对接外部实际 PCIe 主机或者设备。另外,一些先进的 Memory 控制 器 IP, 如 DDR5, LPDDR4/5, HBM2/3 缺少 FPGA 厂 商提供的 PHY 解决方案,无法在 FPGA 原型验证系 统中运行起来。遇到这些棘手的问题,有些用户甚至 选择放弃这些高速接口及 Memory IP 在原型验证系 统中的验证,但也因此会给用户的 SoC 设计原型验 证带来风险。

2 面向大规模复杂 SoC 设计的高密原型验证解决方案

为了满足大规模 SoC 设计在原型验证系统领域 的复杂需求,用户迫切需要有一系列面向大规模SoC 设计的高密原型验证系统的软硬件通用解决方 案来帮助用户在系统时钟复位同步,设计分割及高 速接口及先进 Memory 控制器 IP 验证等方面取得重 要突破,使得用户能够解决大规模 SoC 原型验证面 临的关键困难,降低项目风险。

2.1 大规模设计全局时钟及复位解决方案

一个通用的高密原型验证系统需要能做到根据 用户的 SoC 设计规模灵活的提供适合的全局时钟及 复位方案。

1. 如果用户的设计规模用单台 FPGA 原型验证 平台就可以容纳,用户的全局时钟复位方案则只需 要保证单个 FPGA 原型验证平台的全局时钟和复位 可以同步的送到单台平台的每颗 FPGA 上即可。在 这种需求背景下我们可以考虑用下面的方案来设计 全局时钟及复位的功能:

● 单台 FPGA 原型验证平台的全局时钟和复 位的设定和操作需要能够通过软件远程实现,以方 便用户使用。

● 在单台 FPGA 原型验证平台上可实现多个 可编程全局时钟,使得用户可以根据设计需求灵活 的设置所需的全局时钟频率。

● 可编程的全局时钟和全局复位通过 1 推多 的驱动芯片以及等长的板级走线来保证全局时钟和 全局复位同步的传送到每一颗用户 FPGA。 除了以上满足单个原型验证平台的全局时钟和 复位基本需求之外,我们还需要考虑到将来当用户 设计规模进一步扩大时,现有的全局时钟和复位方 案的可扩展性:

● 单台 FPGA 原型验证平台除了使用本平台 的本地时钟复位源之外,也可以接受来自外部的时 钟复位源,以支持全局时钟复位的输入级联扩展。本 地的时钟复位源和外部时钟复位源可以在软件的控 制下通过选择器来切换。

● 单台 FPGA 原型验证平台的每一个用户 FPGA 输出的时钟复位源以及外部输入的时钟复位源可以在软件的控制下通过多路选择器来输出到该 FPGA 原型验证平台的外部时钟复位输出口,以支 持全局时钟复位的输出级联扩展。 图 1 就是一个具有可扩展性的基于单台 FPGA 原型验证平台的全局时钟同步系统架构图(全局复 位系统也可采用类似的架构来实现)

图一: 单个原型验证平台的全局时钟同步系统

2.如果用户的设计规模需要用多台FPGA原型验证平台来组成一套验证系统,就需要一种能实现多个FPGA原型验证平台上的FPGA时钟复位同步的解决方案。

比较常用的一种支持多台FPGA原型验证平台的FPGA时钟复位同步的方案是采用一个外置的全局时钟复位模块(CLKM)将全局时钟和复位通过等长的时钟线缆同步的送到多个FPGA原型验证平台(FPP)。FPP通过外部时钟输入接口接收外部送来的全局时钟复位源再同步的传送到FPP上的每一颗FPGA。其全局时钟复位同步系统组网如下图所示:

图二: 基于全局时钟模块的多个FPP全局时钟同步系统

这个方案的优点是单套FPP的全局时钟复位方案的实现简单,直接采用图一中的全局时钟复位方案接入CLKM送来的外部时钟复位源即可完成多台FPP的全局时钟复位同步。

但是由于CLKM上的时钟驱动芯片的驱动能力有限,配套的高性能时钟线缆长度最长也只有1米左右,这样的全局时钟复位同步系统只适合支持设计规模小于十台FPP的系统。对于更大规模的原型验证系统,则需要更加复杂的解决方案。

3.当用户的设计规模进一步增大,需要用数十台甚至更多的FPP平台来组成一套验证系统,此时就需要用级联的方式来实现大量平台上的多颗FPGA的时钟复位同步。这种情况下,用户可以使用多个CLKM采用Master/Slave的方式级联以支持更大规模系统的时钟复位同步。设为Master的CLKM产生全局时钟和复位,通过等长的时钟线缆下发给多个下级Slave CLKM。再由下级Slave CLKM下发全局时钟和复位给多个下游FPP。其中Master CLKM的时钟复位源既可以来自于本身的可编程时钟芯片也可以来自于任意一个FPP输出的反馈时钟。下面是用CLKM进行全局时钟复位级联的拓扑结构图:

图三: 基于全局时钟模块级联的全局时钟同步系统

这个方案通过分层级联的方式,可以实现几十个甚至上百台FPP的全局时钟组网,为几十亿门级的超大规模原型验证系统的全局时钟复位架构提供了解决方案。这个方案的技术难点是,由于每个CLKM上用到的1推多时钟驱动芯片的延迟会有微小的偏差,通过CLKM的分层级联会带来时钟延迟的偏差积累,会导致最后送到每个FPGA的全局时钟同步产生不可忽视的偏差进而造成用户的超大规模原型系统无法完成全局时钟同步。为了解决这个问题,我们可以在Master/Slave CLKM模块之间增加反馈时钟线及带时钟相位反馈校准的PLL芯片以实现多级CLK模块之间的时钟相位校准。

当用户有了支持全局时钟模块级联及时钟相位校准的通用解决方案,即使用户的设计规模不断的的扩大,我们也可以通过分层的方式,对用户的全局时钟进行分级校准,以保证超大规模原型系统能够实现全局时钟及复位的同步。

2.2 大规模设计分割方案

设计分割往往是大规模复杂 SoC 设计用户在进 行原型验证系统验证时遇到的最大的挑战。要做好 设计分割需要处理好大规模设计并行编译,全局时 钟树复制,自动化管脚复用,系统时钟约束以及系统 时序分析等多方技术难点。

2.2.1 大规模设计综合

一个设计规模达到几亿门甚至数十亿门的 SoC 设计,如果将整个设计映射在 FPGA 里做设计综合, 综合的时间往往要长达数天甚至数周,这对于在原 型验证阶段经常需要修改代码,重新综合设计的用 户是无法接受的。显然,面对大规模 SoC 设计用户需 要采用将整个设计分块并行综合的方式来进行。

a)一种方式是在大规模 SoC 设计的顶层 RTL 下例化子模块黑盒。将设计规模较大,综合时间较长 的一些子模块黑盒化,这样可以大大缩短黑盒化之 后的顶层设计的综合时间。同时,被设为黑盒的多个 设计子模块也可以被分发到多个服务器上进行并行 的综合。

● 这种方式的优点是使用效果明显,门槛低。 用户无需使用特别的软件和技术,只需要工程师花 一些时间将选定的子模块设置为黑盒进行并行编译,就可以大大缩短整个大规模设计的综合时间。

● 缺点是用户需要对大规模 SoC 设计的子模 块资源占用情况比较了解,清楚哪些模块适合设为 黑盒进行并行综合,哪些不需要。另外,用户手动修 改代码设置子模块黑盒是一个费时费力的工作,一不小心就会出错。

● 一些自动化的分割软件,能够帮助用户将选 定的子模块自动设成黑盒,从而达到事半功倍的效 果,省去了工程师手动修改代码进行子模块黑盒化 的繁琐工作,避免了人工修改代码出错的情况发生。 自动化的分割软件支持 LSF/SLURM 功能,能帮助用 户高效的在多个 HPC 上进行多个子模块的并行综 合。

b)另一种方式是使用基于 RTL 分割工具对大 规模 SoC 设计进行 RTL 级分割。RTL 分割工具对读 入的大规模 SoC 设计进行设计分析和资源估算,再 基于设计分析和资源估算的结果对用户的大规模 SoC 设计进行分层分割,将基于 RTL 的大规模 SoC 分割为以目标 FPGA 为顶层的多个 RTL 模块。RTL 分割完成之后,用户可以调用综合工具对分割后的 FPGA 顶层 RTL 模块进行并行综合,因而大大缩短 整个设计的综合时间。

● 这种方式和第一种方式相比的优点是采用 成熟的 RTL 分割工具,帮助用户先完成设计的 RTL 级切割。减少了用户手动进行设计分割和设置黑盒 的时间,工作量与风险。

● 不足之处在于基于 RTL 级分割的资源估算 的精准度以及 RTL 模块的切割边界的优化效果不 如网表级分割。 c)一些自动化的分割软件,能够将 RTL 级分割 和网表级分割的优点结合起来以帮助用户在节省综 合时间的同时取得更好的设计分割结果:

● 在第一阶段使用 RTL 级分割技术将用户的 设计初步分割到多个 FPGA,再将分割后的多个 FPGA 顶层 RTL 设计并行综合,以帮助用户节省大 量的综合时间。

● 在第二阶段使用网表级分割技术将初步分 割的模块进行基于时序驱动的二次优化,使得分割 模块间的资源分配更加合理,切割边界更加精准,以 帮助用户取得更合理高效的设计分割结果。

……

本文简介:随着 SoC 设计规模的快速膨胀,越来越多的用户在做大规模 SoC 原型验证时会遇到全局时钟复位同步,大规模设计分割,高速接口及先进 Memory 控制器 IP 验证等关键困难。针对这些困难,一些领先的原型验证系统方案提供商,如国微思尔芯,提供了一系列成熟可重用的通用高密原型验证系统产品和解决方案来解决这些困难,以帮助客户完成大规模复杂 SoC 的原型验证,降低项目风险。

站内下载链接:数字芯片设计与验证需要哪些参考资料白皮书?-思尔芯 | S2C

欲了解思尔芯更多信息,请点击:https://www.s2ceda.com

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

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

相关文章

Contact Form 7最新5.9.8版错误修复方案

最近有多位用户反应Contact Form 7最新5.9.8版的管理页面有错误如下图所示 具体错误文件的路径为wp-content\plugins\contact-form-7\admin\includes\welcome-panel.php on line 153 找到welcome-panel.php这个文件编辑它,将如下图选中的部分删除 删除以后&#xf…

AUTOSAR入门篇

AUTOSAR简介 AUTomotive Open System ARchitecture 汽车开放系统结构 AUTOSAR背景 随着车载控制系统日益先进和复杂化,每辆汽车投入的软件开发工数(时间及人力)2010年将达到2002年的5-10倍。汽车电子系统设计复杂化造成的可靠性隐患导致汽车因安全隐患被“招回”的现象频繁…

洪涝洪水滑坡灾害数据集 灾害 2300张 带标注 voc yolo

洪涝洪水滑坡灾害数据集 灾害 2300张 带标注 voc yolo 洪涝洪水滑坡灾害数据集 数据集描述 该数据集是一个专门用于检测和识别洪涝、洪水和滑坡等自然灾害的数据集,旨在帮助研究人员和开发者训练和评估基于深度学习的目标检测模型。数据集涵盖了两种常见的自然灾害…

Java—SPI 机制详解

参考文章 Java常用机制 - SPI机制详解 | Java 全栈知识体系包含: Java 基础, Java 部分源码, JVM, Spring, Spring Boot, Spring Cloud, 数据库原理, MySQL, ElasticSearch, MongoDB, Docker, k8s, CI&CD, Linux, DevOps, 分布式, 中间件, 开发工具, Git, IDE, 源码阅读&a…

力扣之183.从不订购的客户

1. 183.从不订购的客户 1.1 题干 Customers 表: -------------------- | Column Name | Type | -------------------- | id | int | | name | varchar | -------------------- 在 SQL 中,id 是该表的主键。 该表的每一行都表示客户的 ID 和名称。 Ord…

有关shell指令练习2

写一个shell脚本,将以下内容放到脚本中 在家目录下创建目录文件,dir dir下创建dir1和dir2 把当前目录下的所有文件拷贝到dir1中, 把当前目录下的所有脚本文件拷贝到dir2中 把dir2打包并压缩为dir2.tar.xz 再把dir2.tar.xz移动到dir1中 …

MATLAB基于传统方法的车道线检测实现

MATLAB基于传统方法的车道线检测实现 本文实现的是基于传统方法的车道线检测,所谓传统方法就是没有涉及到深度学习算法,基于直观的手段和数学知识来实现,后期会实现基于深度学习的车道线检测方法。 实现步骤: Canny边缘检测手动…

html 几行的空间分成3个区域

1.代码 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>三个区域示例</title> …

SpringBoot+Vue考试系统免费分享

源码说明&#xff1a; 这是一个开源的SpringBoot与Vue开发的在线考试系统。经过站长测试&#xff0c;系统稳定可用&#xff0c;允许重复考试。 环境&#xff1a; 需要安装的环境包括Node.js v14.21.3、JDK8、Maven以及MySQL 5.7。 前端部署教程&#xff1a; 执行 npm inst…

掌控历史:如何通过Git版本管理工具提升你的开发效率

先一览全局: git目录 一.打开git二.git bash的基础命令三.配置git四.仓库搭建五.文件操作和状态六.忽略文件七.gitee的使用1.添加公钥2.创建仓库 八.vs中使用git九.git分支常用命令十.文件差异比较十一.文件回溯和推进十二.合并冲突和消除十三.合并/压缩提交十四.远程仓库推拉十…

新160个crackme - 062-syllogism-crackme1

运行分析 需要破解Name和Serial PE分析 C程序&#xff0c;32位&#xff0c;无壳 静态分析&动态调试 ida找到成功弹窗字符串&#xff0c;双击进入函数 分析关键函数&#xff0c;还需要分析sub_401368函数 分析sub_401368函数&#xff0c;发现是将Name第一位替换为空格&#…

带你0到1之QT编程:十六、三种框架自带Dialog,助你在开发一臂之力

此为QT编程的第十六谈&#xff01;关注我&#xff0c;带你快速学习QT编程的学习路线&#xff01; 每一篇的技术点都是很很重要&#xff01;很重要&#xff01;很重要&#xff01;但不冗余&#xff01; 我们通常采取总-分-总和生活化的讲解方式来阐述一个知识点&#xff01; …

信息安全工程师(12)网络攻击概述

前言 网络攻击&#xff08;Cyber Attacks&#xff0c;也称赛博攻击&#xff09;是指针对计算机信息系统、基础设施、计算机网络或个人计算机设备的任何类型的进攻动作。这些攻击旨在破坏、揭露、修改、使软件或服务失去功能&#xff0c;或在未经授权的情况下偷取或访问计算机数…

消息中间件---Kafka

一、什么是Kafka&#xff1f; Kafka是一个分布式流处理平台,类似于消息队列或企业消息传递系统&#xff1b; 流处理事什么呢&#xff1f; 流处理就是数据处理工作流&#xff0c;本质上是一种计算机编程范例。流处理是对接收到的新数据事件的连续处理。‌它涉及对从生产者到消…

spring boot(学习笔记第二十课) vue + spring boot前后端分离项目练习

spring boot(学习笔记第二十课) vue spring boot前后端分离项目练习 学习内容&#xff1a; 后端程序构建前端程序构建 1. 后端程序构建 前后端分离结构 前后端就是前端程序和后端程序独立搭建&#xff0c;通过Restful API进行交互&#xff0c;进行松耦合的设计。后端程序构建…

WebGL入门(一)绘制一个点

源码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><scr…

【开源免费】基于SpringBoot+Vue.JS教师工作量管理系统(JAVA毕业设计)

本文项目编号 T 043 &#xff0c;文末自助获取源码 \color{red}{T043&#xff0c;文末自助获取源码} T043&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

【C++】内联函数(inline function)详解

&#x1f984;个人主页:小米里的大麦-CSDN博客 &#x1f38f;所属专栏:C_小米里的大麦的博客-CSDN博客 &#x1f381;代码托管:C: 探索C编程精髓&#xff0c;打造高效代码仓库 (gitee.com) ⚙️操作环境:Visual Studio 2022 目录 一、前言 语法: 在函数定义前加上关键字 inli…

学不会最短路问题?看这篇就够了

数据结构入门学习&#xff08;全是干货&#xff09;——图论问题之最短路径 1 最短路径问题概述 最短路径问题的定义 在一个网络&#xff08;图&#xff09;中&#xff0c;求解两个顶点之间所有路径中边的权值之和最小的路径。这条路径称为最短路径。 源点(Source)&#xff…

ClickHouse-Kafka Engine 正确的使用方式

Kafka 是大数据领域非常流行的一款分布式消息中间件&#xff0c;是实时计算中必不可少的一环&#xff0c;同时一款 OLAP 系统能否对接 Kafka 也算是考量是否具备流批一体的衡量指标之一。ClickHouse 的 Kafka 表引擎能够直接与 Kafka 系统对接&#xff0c;进而订阅 Kafka 中的 …