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

news2024/11/13 22:18:29

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.coloradmin.cn/o/2155046.html

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

相关文章

vscode软件在 C发中常用插件

一. 简介 本文简单介绍一下,当做 C开发时 vscode软件常用的插件。 vscode软件是 微软公司目前提供的一款免费的开发软件,可以通过 vscode官网下载 vscode。 二. vscode软件在 C开发中常用插件 注意:vscode软件安装后,可以直接…

表盘针头位置检测系统源码分享

表盘针头位置检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer…

JAVA开源项目 房屋租赁系统 计算机毕业设计

本文项目编号 T 041 ,文末自助获取源码 \color{red}{T041,文末自助获取源码} T041,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析5.4 用例设计 六、核…

MySQL深入原理

MySQL深入原理 索引、事务、日志原理、InnoDB引擎、缓存、锁 有4个数据库是属于MySQL自带的系统数据库: ​ mysql MySQL 系统自带的核心数据库,它存储了MySQL的用户账户和权限信息,一些存储过程、事件的定义信息,一些运行过程中…

WebGL系列教程九(动画)

目录 1 前言2 绘制立方体并进行纹理映射3 动画思路4 开始绘制4.1 在顶点着色器中声明旋转矩阵4.2 获取旋转矩阵变量并进行赋值4.3 计算角度4.4 每一帧都去绘制4.5 效果4.6 完整代码 5 总结 1 前言 上一篇我们讲了WebGL中的基础语法,现在我们已经讲过了三维物体的绘制…

14.面试算法-字符串常见算法题(三)

1. 字符串回文问题 1.1 LeetCode.125. 验证回文串 回文问题在链表中是重点,在字符串中同样是个重点。当初我去美团面试第一轮技术面的第一个算法题就是让写判断字符串回文的问题。 这个本身还是比较简单的,只要先转换成字符数组,然后使用双…

PS相关操作记录

1. 磨皮步骤 1.1. 图层操作 先对照片进行去瑕疵、液化等操作,操作完的图层,重命名为液化,方便识别。复制两个图层,分别改为“低频”、“高频”,低频在下,高频在上。选中“低频”图层,滤镜 -&g…

NodeJs文档

文件操作 // 1. 导入fs模块 const fs require(fs)文件写入 //异步写入 // fs.writeFile(文件名, 待写入的数据, 选项设置(可选), 回调函数) fs.writeFile(./座右铭.txt, 三人行,必有我师傅, err > {/…

kubernetes应用的包管理Helm工具

目录 一、helm简介 二、部署helm 1、官网与资源 2、部署helm (1)安装helm (2)配置helm命令补齐 三、helm常用操作 (1)查询官方应用中心 (2)管理第三方repo源 (…

AI周报(9.15-9.21)

AI应用-宇宙建筑师:AI探索宇宙结构 近日,来自马克斯普朗克研究所等机构,利用宇宙学和红移依赖性对宇宙结构形成进行了场级仿真。 AI版“宇宙闪电侠”:若以传统宇宙模拟的缓慢行进比作悠然自得的蜗牛,那么AI便宛如宇宙…

centos7 添加中文字体

一、打开C:\Windows\Fonts 复制 复制出来再拷贝到linux服务器目录:/usr/share/fonts/jtwin #执行 #mkdir /usr/share/fonts/jtwin chmod -R 755 /usr/share/fonts/jtwin yum -y install ttmkfdir ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir 编辑&…

Ubuntu 安装和使用 Fcitx 中文输入法;截图软件flameshot

一、Ubuntu 安装和使用 Fcitx 中文输入法 在 Ubuntu 上安装和使用 Fcitx 输入法框架是一个常见的选择,特别是对于需要中文输入的用户。以下是详细的步骤来安装和配置 Fcitx 输入法: 1. 安装 Fcitx 和相关输入法 首先,更新你的包列表并安装…

黑马智数Day1

src文件夹 src 目录指的是源代码目录,存放项目应用的源代码,包含项目的逻辑和功能实现,实际上线之后在浏览器中跑的代码就是它们 apis - 业务接口 assets - 静态资源 (图片) components - 组件 公共组件 constants…

1.量化第一步,搭建属于自己的金融数据库!

数据是一切量化研究的前提。 做量化没有数据,就相当于做饭时没有食材。 很多时候,我们需要从大量的数据中寻找规律,并从中开发出策略。如果我们每次使用的时候,都从网上去找数据,一方面效率低下,另一方面短…

erlang学习:Linux常用命令2

目录操作命令 对目录进行基本操作 相关cd切换目录之类的就直接省去了,以下操作中都会用到 查看当前目录下的所有目录和文件 ls 列表查看当前目录下的所有目录和文件(列表查看,显示更多信息) ls -l 或 ll 在当前目录下创建一个…

中断-MCU

中断 目录 中断 中断的概念 中断的执行过程 中断服务函数 中断的部分专业术语 – 了解 STM32中的中断分类 嵌套向量中断控制器 NVIC STM32中的中断优先级 中断编程 外部中断(单片机之外)之EXTI中断 相关寄存器 外部中断(EXTI&am…

在jupyter notebook中取消代理服务器的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

2.个人电脑部署MySQL,傻瓜式教程带你拥有个人金融数据库!

2.个人电脑部署MySQL,傻瓜式教程带你拥有个人金融数据库! ‍ 前边我们提到,比较适合做量化投研的数据库是MySQL,开源免费。所以今天我就写一篇教程来教大家如何在自己的环境中部署MySQL。 在不同的设备或系统中安装MySQL的步骤…

MySQL篇(存储过程 触发器 存储函数)(持续更新迭代)

目录 一、存储过程 1. 简介 2. 特点 3. 语法 3.1. 创建 3.2. 调用 3.3. 查看 3.4. 删除 4. 示例 二、变量 1. 简介 2. 系统变量 2.1. 查看系统变量 2.2. 设置系统变量 2.3. 演示示例 3. 用户定义变量 3.1. 赋值 方式一 方式二 3.2. 使用 3.3. 演示示例 4.…

MES系统能够实时监控生产进度,优化生产排程

一、MES系统实时监控生产进度 MES系统通过集成各种数据采集手段(如RFID、条形码、传感器、PLC等),能够实时、准确地采集生产现场的数据,包括设备状态、生产数量、生产时间、人员操作等信息。这些数据被实时传输到MES系统的数据库…