当前位置: 首页 > news >正文

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

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

相关文章:

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

0 引言 随着当今 SoC 设计规模的快速膨胀,仅仅靠几 颗当代最先进的 FPGA 已经无法满足原型验证的需求。简单的增加系统的容量,会遇到系统时钟复位同 步,设计分割以及高速接口和先进 Memory控制器 IP 验证等多重困难。此时,一个商用…...

新产品,推出 MLX90372GVS 第三代 Triaxis® 位置传感器 IC,适用于汽车和工业系统(MLX90372GVS-ACE-308)

Triaxis 旋转和线性位置传感器IC: MLX90372GVS-ACE-103 MLX90372GVS-ACE-108 MLX90372GVS-ACE-301 MLX90372GVS-ACE-200 MLX90372GVS-ACE-208 MLX90372GVS-ACE-303 MLX90372GVS-ACE-300 MLX90372GVS-ACE-350 MLX90372GVS-ACE-100 MLX90372GVS-ACE-101 MLX90372GVS-…...

JAVA毕业设计178—基于Java+Springboot+vue的智能家具管理系统(源代码+数据库+万字论文)

毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootvue的智能家具管理系统(源代码数据库万字论文)178 一、系统介绍 本项目前后端分离(可以改为ssm版本),分为用户、管理员两种角色 1、用户&#xff1…...

掌握 Python 异步上下文管理器

在现代编程中,异步编程已成为处理并发任务的重要手段,特别是在 I/O 密集型应用中。Python 的 asyncio 库提供了强大的工具来编写异步代码。在异步编程中,上下文管理器(context manager)扮演着资源管理的关键角色。本文…...

当你问AI“有点烦”

感到烦躁是很正常的情绪反应,生活中总会有各种各样的压力和挑战让我们感到不安或不舒服。以下是一些建议,希望能帮助你缓解烦躁的情绪: 深呼吸:尝试进行几次深呼吸,这有助于放松身体和减缓心跳,让你的思维从…...

音视频入门基础:AAC专题(3)——AAC的ADTS格式简介

音视频入门基础:AAC专题系列文章: 音视频入门基础:AAC专题(1)——AAC官方文档下载 音视频入门基础:AAC专题(2)——使用FFmpeg命令生成AAC裸流文件 音视频入门基础:AAC…...

高可用web集群面经:集群搭建、nginx+keepalived高可用、prometheus+zabbix监控、nfs+dns

高可用web集群面经:集群搭建、nginxkeepalived高可用、prometheuszabbix监控、nfsdns 高可用web集群面经飞书在线链接🔗: (https://h03yz7idw7.feishu.cn/wiki/Ucj1wWZCGiqR68kripMcC2CLnvd)...

vue3+ts+supermap iclient3d for cesium功能集合

会把各项功能链接放在这 1.vue3配置supermap iclient3d for cesium vue3中使用supermap icilent3d for cesium_npm 引入supermapgis-CSDN博客 2.功能 2.1加载天地图,加载地形,夸大地形 supermap icilent3d for cesium加载地形并夸大地形-CSDN博客 …...

【案例71】配置https之后 IE打不开登陆页面 Uclient没有问题

问题现象 配置https之后 IE打不开登陆页面 Uclient没有问题。 jvm控制台 显示如下 basic: 已调整小应用程序大小且已将其添加到父容器中 basic: PERF: AppletExecutionRunnable - applet.init() BEGIN ; jvmLaunch dt 170755 us, pluginInit dt 722531 us, TotalTime: 89328…...

ROS 设置dhcp option 6 多个地址格式

ROS routeOS 手工设置 dhcp 服务 option 6 多个dns 地址格式。字符串方式...

Python 二级考试

易错点 电脑基础知识 定义学生关系模式如下:Student (S#, Sn, Ssex,class,monitorS#)(其属性分别为学号、学生名、性别、班级和班长学号) 在关系模式中,如果…...

Linux笔记---简单指令

1. 使用的环境 博主使用的是华为云服务器xshell终端的方式学习的,因为据说这样的方式比较接近以后的工作环境。 其中云服务器安装的是Ubuntu操作系统(以Linux为内核,适合新手学习Linux的一个版本) 这里的云服务器不一定使用华为的,但是我在…...

软考无损连接判断

如何判断是否为无损连接,要看能否还原回最开始的关系模式 最开始的关系模式 U{A,B,C} 函数连接 F{A -> B},这个函数连接的意思就是A可以推导出B 首先从P1开始判断,{ AB,BC } C不能通过函数依赖推导出来…...

微服务-- Sentinel的使用

目录 Sentinel:微服务的哨兵 生态系统景观 sentinel与spring cloud Hystrix 对比 Sentinel 主要分为两部分 Sentinel安装与使用 Sentinel的控制规则 流控规则 流控规则的属性说明 新增流控规则 关联流控模式 SentinelResource注解的使用 SentinelResou…...

TS React 项目中使用TypeScript

在 React 项目中使用 TS 创建新项目 在现有项目中添加 TS 创建新项目 命令:npx create-react-app my-app --template typescript 说明:在命令行中,添加 --template typescript 表示创建支持 TS 的项目 项目目录的变化: 在项目…...

【JavaEE】IP协议 应用层协议

🔥个人主页: 中草药 🔥专栏:【Java】登神长阶 史诗般的Java成神之路 🕶️一.IP地址 IP协议(Internet Protocol)是TCP/IP协议族中最核心的协议之一,它定义了数据包在网络中传输的标准…...

CRM如何助力科技服务机构突破业务瓶颈?

在当今知识经济时代,科技服务机构面临着复杂的业务环境和多样化的客户需求。客户管理系统(CRM)在这个领域的应用正逐渐成为机构提升运营效率、优化客户服务的关键。 科技服务行业的业务特点 知识产权代理行业具有高度的专业性和复杂性。其业…...

牛啊,GitHub 代理加速图文教程

大家好,众所周知,GitHub 在国内访问速度堪忧,经常出现访问不了的情况,如果我们去 clone 代码,网速非常差。今天教大家如何给 GitHub 进行加速。 要用到我开发的开源项目 Cloudflare Workers Proxy,它是一个…...

基于扣子(Coze)打造第一个智能体——个性化对话机器人

文章目录 一,智能体体验二,动手打造一个自己的智能体1,主页点击创建机器人1.1 创建一个新的机器人1.2 修订Bot基础信息1.3 工具编排信息修订人设和回复逻辑、增补开场白等 2,使用插件优化机器人3,使用工作流优化机器人…...

算法-深度拷贝链表(138)

深度拷贝一个链表可以分以下几个步骤: 步骤 1:插入新节点 目标:在每个节点后面插入一个复制的节点。步骤: 遍历整个链表。对于每个节点 current,创建一个新节点 newNode,其值为 current.val。将 newNode …...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发&#xff0c;其初衷是为了满足他自己的一个项目需求&#xff0c;即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源&#xff0c;Redis凭借其简单易用、…...