首页
书签
论坛
网盘
邮件
壁纸
影视
在线音乐
更多
直播
统计
个人微博
云笔记
云存储
图片视频
友链
留言
关于
Search
1
文档内容搜索哪家强? 15款文件搜索软件横向评测
14 阅读
2
常见系统部署(1)
12 阅读
3
makfile 知识汇总
10 阅读
4
Verilog-AMS Verilog-A介绍
7 阅读
5
欢迎使用 Typecho
5 阅读
默认分类
数字电路
芯片后端
模拟电路
芯片验证
原型验证
算法与架构
DFX与量产
windows设置
Linux设置
MacOS设置
移动OS设置
软件方案
登录
Search
标签搜索
python
PyQT
systemverilog
Alist
Docker
cadence
linux
sv
webdav
vscode
uos
verilog-ams
cpp
upf
ESL
TLM
浏览器
virtuoso
tsmc8rf
TSMC
bennyhe
累计撰写
49
篇文章
累计收到
8
条评论
首页
栏目
默认分类
数字电路
芯片后端
模拟电路
芯片验证
原型验证
算法与架构
DFX与量产
windows设置
Linux设置
MacOS设置
移动OS设置
软件方案
页面
书签
论坛
网盘
邮件
壁纸
影视
在线音乐
直播
统计
个人微博
云笔记
云存储
图片视频
友链
留言
关于
搜索到
49
篇与
的结果
2025-05-26
什么是 CXL?
本文由半导体产业纵横(ID:ICVIEWS)编译自 spiceworksCXL(Compute Express Link)可以提高数据中心内存的性能、可扩展性和灵活性。MemVerge 的 Steve Scargall 解释了 CXL 是什么、它是如何工作的,以及为什么它是各种应用程序的游戏规则改变者,例如 AI/ML、HPC、数据库和分析。他还强调了采用 CXL 标准化的云计算和数据中心基础设施的一些行业趋势。CXL 是一种新兴的开放式行业标准互连,彻底改变了以数据为中心的计算。凭借其在 CPU 和设备(例如加速器、内存扩展和持久内存设备)之间的高带宽和低延迟缓存一致性连接,CXL 有可能重塑数据中心内存的性能、可扩展性和灵活性。通过解决 AI/ML 应用程序面临的常见内存挑战并启用新的高性能内存架构,CXL 有望成为以数据为中心的计算的下一代互连。什么是 CXL?CXL 是一种行业采用的开放标准,为处理器、内存扩展和加速器提供高速缓存一致性互连。它基于 PCI Express (PCIe) 规范物理和电气接口,但为 AI/ML 应用程序提供了额外的功能和优势。CXL 可实现 CPU 内存空间与附加设备(例如加速器、GPU 或内存设备)上的内存之间的内存一致性。这意味着 CPU 和设备可以共享相同的内存视图并访问它,而无需任何软件干预或同步。CXL 还通过允许 CPU 以低延迟和高带宽访问连接设备上更大的内存池来扩展内存。这可以增加 AI/ML 应用程序的内存容量和性能。规范的三个主要版本描述了 CXL 标准。未来计划更多主要版本。现有主要版本的更新也将根据需要公布。每个主要版本都为以前的版本添加了新功能。CXL 1.0 :CXL 的第一个版本,于 2019 年 3 月发布,基于 PCIe 5.0。它允许主机 CPU 使用缓存一致性协议 (CXL.cache) 访问加速器设备上的共享内存,并使用内存语义 (CXL.mem) 启用内存扩展。CXL 2.0 :CXL 的第二个版本,于 2020 年 11 月发布,基于 PCIe 5.0。它支持 CXL 交换,将多个 CXL 设备连接到一个主机处理器或将每个设备连接到多个主机处理器。它还实现了设备完整性和数据加密功能。CXL 3.0 :CXL 的第三个版本,于 2022 年 8 月发布,基于 PCIe 6.0。它支持比 CXL 2.0 更高的带宽和更低的延迟,并增加了设备热插拔、电源管理和错误处理等新功能。图 1 显示了每个主要 CXL 版本的功能比较。图 1:CXL 功能比较CXL 规范描述了三种允许设备相互通信的协议。http://CXL.io:PCIe 5.0 协议的增强版本,可用于初始化、链接、设备发现、枚举和寄存器访问。它为 I/O 设备提供非一致性加载/存储接口。CXL.cache :一种缓存一致性协议,它定义了主机和设备之间的交互,允许连接的 CXL 设备使用请求和响应方法以极低的延迟有效地缓存主机内存。CXL.mem :一种内存协议,它使用加载和存储命令为主机处理器提供对连接设备内存的访问,其中主机 CPU 充当主设备,CXL 设备充当从属设备。它可以支持易失性和持久性内存架构。至少,所有 CXL 设备都必须使用 http://CXL.io,但可以选择支持 CXL.cache 或 CXL.mem,或同时支持两者。这些组合派生出三种设备类型:类型 1 :没有本地内存的专用加速器(例如智能 NIC)。设备依赖于使用 http://CXL.io 和 CXL.cache 协议对主机 CPU 内存进行一致访问。它们可以扩展 PCIe 协议功能(例如原子操作),并且可能需要实现自定义排序模型。类型 2 :具有高性能本地内存(GDDR 或 HBM)的通用加速器(GPU、ASIC 或 FPGA)。要访问主机 CPU 和设备内存,设备可以使用 http://CXL.io、CXL.cache 和 CXL.mem 协议。它们可以支持连贯和非连贯事务。类型 3 :没有本地缓存的内存扩展板和持久内存设备。设备可以使用 http://CXL.io 和 CXL.mem 协议通过加载和存储命令为主机 CPU 提供对内存的访问。它们可以支持易失性和持久性内存架构。基础设施用例CXL 是云和本地数据中心基础设施的游戏规则改变者,预计将很快得到广泛采用和标准化,包括:云计算CXL 可以使云服务提供商通过利用支持 CXL 的设备(例如加速器、内存扩展设备和持久性内存设备)为其客户提供更快、更高效的服务。云服务提供商每年在未使用或未充分利用的主内存(称为「搁浅内存」)上花费数十亿美元。应用程序可以更优化地使用集群中的计算节点按需访问的 CXL 设备池,从而优化数据中心资源。数据中心存储与云环境类似,虽然规模小得多,但 CXL 设备可以使数据中心运营商构建可持续发展的环境,并通过使用支持 CXL 的设备显著降低其基础设施成本和使用率。CXL 可以通过启用对内存驻留数据的低延迟和高带宽访问来提高块存储性能和可靠性。边缘计算CXL 可以使边缘计算平台通过使用支持 CXL 的设备(例如加速器、智能 NIC、内存扩展设备和持久内存设备)来处理不断增加的数据量和复杂性。在将数据发送到主数据中心之前在边缘处理数据可以减少流量并提高边缘计算性能、效率和安全性。网络CXL 可以使网络平台通过使用支持 CXL 的网络设备(例如智能 NIC、FPGA 和 ASIC)来处理不断增加的网络流量和复杂性。CXL 可以通过实现对设备内存的一致和非一致访问以及支持原子操作和自定义排序模型来提高网络性能、可扩展性和功能。应用用例应用程序将从支持 CXL 的基础架构中受益匪浅。一些主要的兴趣领域包括:1.AI/ML 加速CXL 可以为 GPU、ASIC 或 FPGA 等 AI/ML 加速器实现更快、更高效的 CPU 到设备和 CPU 到内存的连接。CXL 可以支持异构设备之间的一致性和非一致性事务、内存扩展和资源共享。允许应用程序处理更大的数据集,同时减少主机之间传输的数据量,从而缩短获得结果的时间。大规模内存、分析和图形数据库CXL 允许数据库访问无限的低延迟和高带宽内存,从而使系统能够在更大的数据池上工作。高性能计算CXL 可以通过利用支持 CXL 的加速器和内存池来提高高性能计算的性能、可扩展性和灵活性。CXL 3.0 引入了共享内存功能,允许许多计算节点就地访问内存驻留数据,而无需在运行前将其复制到本地,然后再将结果复制回来。使用 CXL 的行业标准互连加速以数据为中心的计算CXL 是一种新兴的开放式行业标准互连,可在 CPU 和设备(如加速器、内存扩展和持久内存设备)之间提供高带宽和低延迟缓存一致性连接。CXL 可以提高数据中心资源的性能、可扩展性和灵活性。CXL 可以帮助解决 AI/ML 应用程序面临的一些常见内存挑战,例如内存不足错误、溢出到磁盘以及数据/计算偏差。CXL 还可以支持需要大规模和高性能内存架构的新应用程序和用例,例如内存数据库、实时分析和高性能计算。由英特尔、AMD、Arm、Astera Labs、三星、美光、X-Conn 等众多行业领导者和创新者组成的不断壮大的生态系统支持 CXL。作为以数据为中心的计算的下一代互连,CXL 有望在不久的将来得到广泛接受和标准化。
2025年05月26日
2 阅读
0 评论
0 点赞
2025-05-23
cadence virtuoso安装tsmc8rf
注意1:可以直接下载免安装OA 格式的tsmc18rf库,下载路径:https://download.csdn.net/download/d_pcb66/87074114注意2:IC617 之后的virtuoso版本不再提供cdb2oa功能会提示错误;ERROR (CDBOA-2003):Support for the CDB to OpenAccess translator has been removed. Contact Cadence Customer Support to discuss how to complete any outstanding migration tasks.tsmc18rf 工艺库可从如下地址下载https://download.csdn.net/download/qq_35379940/11953193下载后得到文件 tsmc18rf_pdk_v13d.tar,将该文件放入单独的文件夹中,然后解压,可得到如下的一些文件。对于不同的工程,通常会采用不同的工艺和工艺库,因此把 PDK 安装在工程目录下。之前创建了 project01 作为测试,现在把这个工艺库安装在这个目录下。在 tsmc18rf 工艺库解压目录下直接执行如下语句进行安装。perl pdkInstall.pl其中 1P6M 指工艺为 1 层多晶硅 6 层金属。 由于 IC610 以上的版本只能识别 OA 格式的 PDK,而 tsmc18rf 采用的是 CDB 格式,因此需要用 IC617 自带的工具进行转换。执行以下指令为转换做准备。cd /home/praise/ICDesign/project01mkdir OAconvertmkdir OAconvert/cdbcp /home/praise/ICDesign/project01/tsmc18rf_1P6M/cds.lib OAconvert/cdb编辑 OAconvert/cdb/cds.lib 文件,删除前两行,将第三行改为如下形式,指向 CDB 格式的 PDK。DEFINE tsmc18rf /home/praise/ICDesign/project01/tsmc18rf_1P6M/tsmc18rf进入 OAconvert 文件夹,运行 virtuoso。cd OAconvertrun_virtuoso在下图中点击 Browse,选择刚才修改的 cds.lib 文件,如下图红框中所示,然后点击 OK。稍等一会儿,等运行完成后,用 OAconvert 中生成的 tsmc18rf 替换原本 tsmc18rf_1P6M 文件夹中的同名文件。注意此过程可能会有三个报错,如下图 log 文件所示,感谢 zli_网友的提醒,发现此处是由于缺少 libXp.so.6 动态链接库所致,cdb2oail 程序需要 libXp.so.6 才能运行,但 ubuntu18.04 中删除了该库,从而导致此错误。解决办法是,下载下面的 deb 安装包,然后用 dpkg 命令安装。sudo dpkg -i libxp6_1.0.2-2_amd64.deblibxp6_1.0.2-2_amd64.deb安装完成后重启 virtuoso 重新进行转换,就不会报错了。 打开上面图中生成的 tsmc18rf 文件夹,找到 libInit.il 文件,将下面两行注释掉。然后打开 /home/praise/ICDesign/project01/tsmc18rf_1P6M/techfile,将文件中最后一段 Controls 剪切到最前面,如下图所示。 退出 virtuoso,回到之前的 project01 文件夹,重新运行 run_virtuoso。cd /home/praise/ICDesign/project01run_virtuoso新建 Library,Name 为 tsmc18rf,点击 OK。等待运行完成即可。
2025年05月23日
3 阅读
0 评论
0 点赞
2025-05-23
手机浏览器安装插件
安卓手机目前安卓支持插件的浏览器有kiwi 浏览器https://kiwibrowsercn.github.io/ 、 yandex 浏览器、 edge 浏览器和via 浏览器轻插件。这三者是chrome 内核(via除外),一般都支持chrome 插件。但是kiwi 浏览器只有 手机版本,没有pc 版本,交互数据不方便。这里助于说明yandex和edge 浏览器(1)安卓edge 正式版本支持的插件有限,不支持pc 的插件,但是Edge Canary版本支持pc插件第一步:安装Edge Canary版本从以下渠道下载最新版Edge Canary:Google Play 商店Microsoft 官方网站APKMirror 等可信第三方平台为了方便大家下载,我将下载好的安装包上传至夸克网盘,以下是最新版的 Microsoft Edge Canary 夸克网盘下载链接(提取码:4t3Q):https://pan.quark.cn/s/3cf9fef90835#/list/shareMicrosoft Edge Canary第二步:开启扩展支持打开Edge Canary后在地址栏输入: edge://flags搜索”Android Extension”将选项切换为”Enabled”重启浏览器使设置生效开启扩展支持开启扩展支持第三步:启用开发者模式点击右下角菜单按钮(≡)进入”设置”选择”关于 Microsoft Edge”连续点击版本号5次启用开发者选项启用开发者模式启用开发者模式第四步:安装扩展访问Microsoft Edge扩展商店网页版(以沉浸式翻译为例)选择想要的扩展并复制其ID(URL最后的字符串,最后一个“/”后面的内容,不包含“/” )返回Edge Canary开发者选项找到”Extension install by id”粘贴ID并确认安装沉浸式翻译安装扩展安装扩展实用技巧与建议 💡扩展管理:定期检查更新以获得最佳性能及时清理不常用的扩展注意控制同时运行的扩展数量关闭不需要的扩展以节省资源性能优化:优先选择官方认证的扩展避免安装功能重复的扩展根据实际需求选择必要的扩展常见问题解答 ❓Q: 为什么某些扩展无法安装? A: 目前并非所有PC端扩展都支持移动版,建议优先尝试官方推荐的扩展。Q: 安装扩展后浏览器变慢怎么办? A: 可以尝试以下解决方案:减少已安装的扩展数量及时更新浏览器版本清理浏览器缓存检查手机存储空间Q: 扩展设置会同步到其他设备吗? A: 是的,登录相同的Microsoft账号后,扩展设置将自动同步安卓edge浏览安装插件还是很麻烦,好处就是不用翻墙。可以将建立桌面图标(名称可以重命名,但是不能自定义图标),地址栏隐藏和全屏效果不能设置(2) 安卓yandex 浏览器方法一,进入开发者模式Yandex并不能直接安装.crx离线包,需要先将.crx转化为压缩包解压并修改文件夹名,具体教程:将Chrome浏览器扩展插件修改为手机版将修改完的插件压缩包发送至手机,使用手机自带或安装专业的解压工具RAR,解压插件压缩包(必须在手机内解压,否则无法安装)。由于crx 不用版本的原因,需要将_metadata文件夹改为metadata开Yandex浏览器,在地址栏输入Chrome://extensions/打开,放大页面,启用右上角的开发者选项,然后点击左上角的加载已解压的扩展程序点击右上角三个点,选择显示内部储存空间,然后点击左上角菜单图标,打开下载选项下方的手机存储空间(这里一定要注意,必须通过这个方式找到解压后的压缩包,否则会提示缺少文件)点击右上角选择按照名称排序,找到存放解压后的插件文件夹(图例为uBlock),打开文件夹,点击任意文件名即可安装。这种方法经常遇到crx 版本兼容无法安装,比较麻烦方法二:直接翻墙,打开chrome web store:https://chromewebstore.google.com/ 网页,直接在线安装,不是所有的插件都能安装,目前的yandex 版本自己所用到安装好的插件截图(3)via 浏览器有轻插件,实际上脚本,支持油猴插件via浏览器非常好用,没有pc 版本是一种确定,但是via 可以全屏,可以隐藏地址栏,还自带广告拦截和资源嗅探,非常还用,并且将网页建立到桌面图标(类似windows 快捷方式),既可以自定义图标又可以自定义名字。这里有一些插件:https://github.com/kaelynchen/Via-plugin 插件添加教程1)、首先打开via浏览器,进入之后点击界面右下角的【三】选项;2)、点击后会弹出更多的功能选项,在弹出的功能选项中点击【设置】;3)、之后进入设置功能界面,在这里找到【脚本】选项并点击;4)、进入脚本管理界面后,点击右上方的【+】选项;5)、点击后会弹出更多的功能选项,点击其中的【导入脚本】选项即可选择脚本文件进行导入。另外可以安装 “油猴/篡改猴” 脚本:这个浏览器无需安装 “油猴/篡改猴” 的插件,您只需要直接安装 “油猴/篡改猴” 的脚本即可。安装好 “Via浏览器” 之后,打开它,然后在里面直接访问脚本地址:https://greasyfork.org/zh-CN/scripts找到您所需要的脚本,直接点击安装即可这个浏览器无需安装 “油猴/篡改猴” 的插件,您只需要直接安装 “油猴/篡改猴” 的脚本即可。安装好 “Via浏览器” 之后,打开它,然后在里面直接访问脚本地址:https://greasyfork.org/zh-CN/scripts找到您所需要的脚本,直接点击安装即可系统会提示您进行安装:安装完毕后即时生效,可以在 “Via浏览器” 的:设置 → 脚本 中查看已安装的脚本。ios 浏览器插件via 浏览器支持ios,也支持脚本,操作和安卓一样。ios的yandex和edge 也不支持安装插件只有ios 自己的safari 浏览器可以安装插件(ios 15.0 版本以上)添加 Safari 浏览器扩展在 iPhone 上前往 Safari 浏览器 App 。轻点 “页面设置”按钮,然后轻点“管理扩展”。轻点“更多扩展”以浏览 App Store 中的扩展。找到想要的扩展后,请轻点价格;或者如果 App 是免费的,请轻点“获取”,然后按照屏幕指示操作。【注】如果 iPhone 上安装的 Safari 浏览器扩展在其他平台上也可用,其将会出现在登录相同 Apple 账户的任何 iPhone、iPad 或 Mac 上的 Safari 浏览器设置中,以更易于查找和下载。更改 Safari 浏览器扩展设置你可以使用扩展自定义浏览器的工作方式。你可以随时打开或关闭 Safari 浏览器扩展。前往“设置” > App >“Safari 浏览器”。轻点“扩展”,然后轻点一个扩展。打开“允许扩展”。如果已设置 Safari 浏览器用户场景,请为想要搭配使用的每个用户场景打开扩展。【重要事项】检查已安装的扩展并确保你熟悉其功能。为单个网站更改 Safari 浏览器扩展设置你可以为单个网站打开或关闭扩展,而无需更改整体的 Safari 浏览器设置。在 iPhone 上前往 Safari 浏览器 App 。轻点搜索栏左侧的 “页面设置”按钮,然后轻点“管理扩展”。打开或关闭各个扩展。移除 Safari 浏览器扩展在主屏幕上向下轻扫,然后搜索要移除的扩展。按住扩展图标,轻点“删除 App”,然后按照屏幕指示操作。safari 也支持油猴安装Tampermonkey(油猴)0). App Store 安装第1步 Safari浏览器扩展①设置中找到【Safari浏览器】→②点击【扩展】→③【更多扩展】。第2步 Stay中,导入GreasyFork脚本④Safari浏览器扩展,下滑免费排行中安装【Stay for Safari】插件→⑤右上角【+】→⑥选择【从GreasyFork导入】脚本。⑦GreasyFork排行靠前的脚本都很厉害,⑧也可以根据自己需求去搜索对应脚本。注意:第一次安装【Stay插件】,要在Safari浏览器设置关联激活,会有提示,2步就OK很简单。演示【Safari浏览器】安装了【GreasyFork插件】中的【xxx脚本】后:
2025年05月23日
4 阅读
0 评论
0 点赞
2025-05-22
ESL发展及其在项目中的应用
原文链接:https://blog.csdn.net/xiaohaolaoda/article/details/131117987作者 | JJ.Tian, 复睿微电子ESL建模工程师一. 前言随着半导体行业的高速发展,ESL(Electronic System Level)建模或芯片建模在大算力高性能芯片领域显得越来越重要,国内外EDA或芯片设计公司都在构建自己的芯片评估工具或平台,以应对复杂芯片设计所带来的挑战。希望通过这篇文章让大家对ESL建模以及相关的基本概念和设计方法有一定的认识,了解ESL建模的方法和流程,理解工具并利用工具创造价值。本文主要介绍ESL相关的基础知识、概念、术语、以及ESL发展历史。基于这些新的理念和方法,ESL建模得到了长足发展并且逐渐趋于完善。与其它技术类似,ELS或芯片建模采用的工具平台也包括商业和开源两大阵营。此外,本文还介绍了芯片建模标准规范,IEEE1666-2011 SystemC+TLM2.0。在此基础上,还介绍了芯片建模的主要应用领域,有些应用比较成熟,比如性能模型(架构探索/评估/分析),功能模型(软件提前开发),功耗模型(功耗评估),混合仿真(功能或性能模型),软硬件协同设计,验证与划分等。有些应用比较新颖,比如高阶综合(HLS),主流的EDA供应商已经发布了相应的工具,由于应用领域局限性而尚未得到广泛应用。限于篇幅,本文只涉及性能模型和功能模型两个应用方向,其它方向的应用后续有机会再作介绍。在本文中,ESL、ESL建模、芯片建模,名称不同但是含义相当。二. 术语三. ESL发展简介早在20年前,随着芯片行业的发展,芯片结构越来越复杂,版本迭代越来越快速,应用场景越来越多样化,这些变化给芯片设计带来了巨大的挑战。人们注意到传统的设计方法已经不能再满足芯片设计需求,亟需一种全新的设计方法和理念,既能处理复杂的内部结构,又能应对功能的快速迭代,由此ESL应运而生。2001年,ESL率先由Gartner Dataquest定义和发布,并被大众所熟知,至今,ESL已经在芯片设计、验证以及仿真领域得到广泛应用。如果深入研究ESL的本质,它不是某种具体的设计语言、工具或平台,而是一种通用的设计和验证方法学,根据芯片各阶段的设计要求,在规格定义阶段(前期)、中期、后期利用这种方法对芯片的性能,功能,功耗进行建模,通过仿真得到某些参数或指标,作为芯片设计和优化参考。ESL主要应用领域:·性能/架构模型(CA/AT):架构探索,评估与优化,架构设计阶段·功能模型(TL):软件提前开发,软硬件并行开发,缩短研发周期·功耗模型:功耗评估·系统设计(System Level Design):软硬件协同设计、验证与划分·Co-simulation(Model+RTL)混合仿真:包括功能和性能仿真·高阶综合(HLS):使用工具将C++/SystemC+TLM2.0模型直接综合成RTL代码ESL之所以能应用于不同领域,是因为采用了高级编程语言,建模灵活,快速迭代,可以实现不同抽象层次(Abstraction Level)的模型。如果非要从学术层面来定义ESL,可以理解为“利用适当的抽象来增加对系统的理解,并以具有成本效益的方式提高成功实现功能的可能性”。这里面涉及系统、抽象、软硬协同设计和验证以及功能实现等。业界根据这些设计方法和思想,经过多年发展,已经形成了开源和商用两大阵营,以下是业界具有代表性的仿真工具与平台。·开源· SystemC+TLM2.0· QEMU· GEM5· ……·商用· FastModel, arm· VDK, Synopsys· Simics, Wind River/Intel· ……除了以上列出来的仿真工具和平台之外,当然还包括其它开源和商用仿真工具,不胜枚举,详情可以参考[15]。由于商用工具需要购买license,有些公司与其IP深度绑定,形成了完整的生态链,处于垄断地位,授权价格昂贵且授权方式完全由供应商主导,对国内芯片公司不是特别友好。因此国内大多数公司把目标都转向开源仿真工具,开源工具中使用比较广泛的是GEM5和QEMU,两者都提供了丰富的模型和完整的软件,但他们之间也存在差异。GEM5和QEMU都有完整的处理器,总线和外设功能模型,可以快速搭建用户需要的模型,另外,还提供相应的驱动软件和系统软件包,可以更快的实现系统boot功能,用户只需要关注软件开发工作,这些只是功能模型方向的应用。另外GEM5还提供了业界主流架构的处理器(core)模型,如x86/arm/risc-v等,总线(NoC)等架构模型,可以进行性能仿真和评估。在学术界也非常流行,使用GEM5进行计算机或芯片架构探索,性能评估等,基于GEM5仿真所发表的学术论文特别多。对于多数自研IP的公司来说,比如AI/GPU/NPU等,通常还是基于C++/SystemC+TLM2.0建模,根据自研芯片规格来实现自定义架构模型,也会借用GEM5里面现成的模型。顺便提一下,SystemC+TLM2.0之所以重要,是因为商用仿真平台多数都是参考或基于SystemC+TLM2.0开发。比如大家所熟知的Synopsys VDK仿真平台,就是在开源SystemC+TLM2.0基础上,增加和增强了很多新的功能,以图形界面方式呈现,专门为用户提供了二次开发的接口和方法,究其最低层技术还是基于SystemC+TLM2.0标准实现的,另外Candence Xcelium,一种综合逻辑仿真器,也支持SystemC+TLM2.0模型仿真,SystemC+TLM2.0是芯片建模和仿真的重要基础。四. IEEE1666-2011标准为了能够更全面地认识SystemC+TLM2.0, 我们可以从产生背景、编程语言、参考仿真器等多个方面来了解。根据前面介绍,早在2000年左右,人们就提出了抽象层次设计概念以应对复杂芯片设计挑战,但是当时并没有统一的实现语言和工具,比如LISA/LISA+早在90年代就被提出了,是最早架构建模语言之一,迄今为止,在arm的FastModel里面仍然可以见到其身影,除了FastModel之外业界很少直接使用LISA/LISA+语言建模。直到2004年SystemC诞生,架构建模语言逐渐趋于收敛和统一,2011年OSCI发了SystemC 2.3.0,目前最新版本为2.3.4,随后被纳入IEEE标准,并正式发布IEEE1666-2011标准版本。直到今天,还是由OSCI开发和维护,同时OSCI隶属于标准组织Accellera并成为该组织下面众多技术标准之一。首先,SystemC+TLM2.0是全面兼容C/C++的类库(classlibrary),支持C++11/14特征(Feature),所以可以理解为SystemC+TLM2.0是基于C/C++的建模语言(Modeling language),作为一门编程语言,它一直都在不断升级和发展,根据官方资料显示,主要朝着多线程(Multithreading)、功能安全(Functional Safety)、错误注入(Error Injection等方向进行发展和演变。其次,SystemC+TLM2.0还是一种开源参考仿真器,可以通过离散事件实现进程之间通信和同步,在这里,进程可以理解为模块里面具备独立功能的逻辑电路,使用进程旨在描述独立功能的逻辑电路的“并行性”,如果从这个角度来讲,SystemC+TLM2.0编程具有协同程序(Co-routines)的思想,因此在建模的时候,总是要考虑进程(逻辑电路)之间是顺序关系还是并行关系。通过几张图(均来自IEEE1666-2011)介绍SystemC+TLM2.0的主要内容和构成。图1展示了SystemC Language Architecture,最底层是标准C++编程语言,在此之上包括两大块核心内容Core Language 和 Data Type。核心语言部分主要包括module(sc_module), port(sc_port/sc_export), interface(sc_interface), channel(sc_channel),clock(sc_clock), 调度器(scheduler),进程(thread/SC_THREA/SC_METHOD),括号里面是相应的类名、函数或宏名。Data Type用于描述硬件中的数据位宽,逻辑状态(高电平,低电平,高阻态,不确定态),以及数据和状态之间的操作等。在两大核心的基础上还包括进程之间的控制和交互使用的接口(Interface)和通道(Channel),如signal、buffer、mutex、semaphore等。具备这些建模的基本要素之后就可以根据芯片规格(Specification)对其建模了。图1. SystemC Language Architecture (IEEE1666-2011)如果只用SystemC提供的组件来建模,开发者不仅需要关注模块内部结构和功能实现,还需要关注模块之间的通信功能实现。这对开发者来说,无疑是增加了开发负担,也不利于开发更高抽象层次的模型开发,因为SystemC里面模块之间通信以channel为主,比如signal/fifo,这种方式虽然可以描述更加精准的硬件行为(CA),但是仿真效率低,对于芯片架构探索或开发前期来说并不适用。为了解决不能开发任意抽象层次模型和仿真效率低两大问题,OSCI还推出了TLM(Transaction Level Modeling)。在OSCI官方文档中对SystemC+TLM2.0最常用的描述为SystemC with TLM2.0,SystemC/TLM2.0或SystemC+TLM2.0。SystemC+TLM2.0实际上包括两块独立功能的内容,建模时会同时使用。参考图2,SystemC又是TLM2.0的基础,包含TLM1.0和TLM2.0,两个版本在实现方式和细节上有所不同,TLM1.0使用相对较少,本文不做介绍。由于TLM2.0设计更具有通用性,获得了广泛应用,TLM2.0不仅提供blocking/non-block/Debug/DMI transport接口,还实现了通用数据类型(generic payload)和通用的相位(phase),由这两个通用模块构成基础协议(Base protocol)。接口和基础协议组成通用层(Interoperability layer),通用层除了极大地方便建模外,还让不同公司开发的模型可以集成到同一个系统中。除了通用层之外,TLM2.0还提供了utilities class,可以作为golden simple,包括socket/callback register/blocking/ non-blocking transport等。其中simple_initiator_socket/ simple_target_socket极为常用。这些接口效率高且使用方便,应用非常广泛,对于大多数建模场景而言,使用自带utilities class基本满足要求,当然如果有特殊需求,例如增加时序或时钟信息,或对新的通信协议进行建模,可以在通用层的基础上开发全新的socket,比如AMBA协议簇里面的AXI /CHI等。图2. TLM2.0 Class (IEEE1666-2011)根据前文对SystemC+TLM2.0的介绍,现在可以研究一下SystemC+TLM2.0建模抽象层次与具体应用之间的关系。图3展示了建模方式(Coding Styles)以及抽象层次,应用场景可分为四类,即软件开发、软件性能分析、架构性能分析、硬件验证。可以根据仿真需求选择相应的coding styles和TLM2.0通用层来实现,比如transport/ socket等。建模抽象层次应根据要求而定,精度和抽象层次更是需要权衡考虑(Trade-off),同时还需要兼顾仿真效率。总的来说,对精度要求更高,则对建模抽象层次要求也更低,其仿真效率就越低(仿真慢),反之亦然。除了SytemC+TLM2.0存在这个客观局限之外,其它EDA工具也类似,纵观芯片设计链路中的EDA工具中,没有任何一个EDA工具可以全部覆盖设计和验证功能,都会存在自身的优势和劣势。即便如此,也可以使用不完美的工具得出相对满意的结果,如何充分利用好SystemC+TLM2.0需要综合考虑模型精度和仿真效率。以模型对时钟或时序要求为例,每一种应用场景对时钟或时序要求差异很大,硬件验证则需要确保时钟周期完全一致,架构探索和软件性能分析则只需要时钟或时序近似,软件开发则完全不需要考虑时序信息,只要保证数据正确即可。图3. Use cases, coding styles, and mechanism(IEEE1666-2011)五. 性能模型图4是简化版本的芯片设计流程,忽略其它步骤和细节,对于前端和后端而言,EDA公司可以提供明确的测试与验证平台(工具),包括方法和流程。但是对于架构设计来说,如何验证,使用什么工具或平台呢?假如芯片架构师收到了来自市场或客户的产品需求文档(Product Requirement Document, PRD),需要根据产品需求文档量化芯片的参数和指标,即定义芯片规格,确定芯片里面某些子模块的具体参数和行为,比如L1/L2/L3 cache size,总线带宽,关键模块之间的时延,内存架构等,芯片研发初期,此时RTL还未开始开发,更是没有任何平台配合应用场景来验证参数的正确性和合理性,因此如何验证架构设计成为芯片挑战之一。特别是AI/GPU/NPU等类似专用的芯片,对架构验证平台的需求尤为突出。架构模型或性能模型成为验证架构设计的主要工具或平台,在规格定义阶段并可以开始设计架构模型,迭代,测试和优化,将结果反馈给芯片架构师,不断精细化芯片参数,架构或性能模型应当具备以下几点要求:模型精确性,抽象层次,可定量或定性分析模型迭代,参数可配置,可快速迭代,可探索全新的架构(下一代)图4. 芯片设计流程(简化)参考图4,芯片架构验证就是建模、测试、校验和优化的过程。尽管芯片架构验证处于芯片设计初期,实际上这一过程伴随芯片设计整个周期。架构探索可以分为单元架构(处理器微架构/存储架构)和系统架构,单元架构模型更聚焦于内部实现细节和交互信息,比如处理器5级流水,取指、解码、执行、访存、写回。而系统架构则侧重于整体性能评估,将应用场景实例化之后,直接加载到架构模型上运行,通过收集数据处理信息,比如Latency/Bandwidth/Efficiency/Event/Timing等等,定量分析架构的性能和参数。抽象层次其实是架构模型在建模之前需要考虑的重点。从周期精度模型(CA model),时间近似模型(AT model)到行为模型(LT/Behavior Model),需要根据评估目标而定,无关性能的模型,可以采用行为模型,需要关注性能的模型可以使用周期精度或时间近似模型,将这些不同抽象层次的模型集成到同一系统,还能得到混合(Hybrid)模型,该模型可以满足某些特殊场景的测试和验证需求。图5展示了建模与仿真流程,以及与架构设计之间的关系。无论是软件还是硬件设计,都有一种设计理念,称为可执行规格(Executable Specifications),对于芯片设计而言,其意是指架构设计、架构建模和架构验证过程。可以直接将架构规格说明转化为可执行程序,定量分析架构设计。图5. 建模和仿真流程架构建模包含的内容很多,流程虽然简单,但是整个建模和仿真过程,可以粗略也可以精细,灵活多变,结果呈现方式和分析方法也是多种多样。经过仿真除了可以得到带宽(Bandwidth)、时延(Latency/Delay)、波形(Waveform)等最基本的数据之外,还可以获得状态、事件统计等信息。架构设计和架构建模互为补充,伴随参数调整、仿真迭代、仿真优化和结果分析等过程,直到最终得到满足应用要求的参数和结果。图6. 简单的NoC参数和性能分析用例图6给出了一个简单的NoC性能分析用例,在NoC的上行和下行接口上增加监测(Monitor),收集数据传输过程的参数。假设总线协议是AXI,CPU发送的数据包来自某个应用场景。可以调整BL(Burst Length)长度、Burst Size、Burst Type等以适配不同的NoC配置,直到满足要求的结果。六. 功能模型我们知道任何产品都有窗口期,每家公司都希望自己的产品尽快上市(Time-to-Market),更快更多地抢占市场。为了最大化地缩短开发和生产周期,每个行业都在使用新进的工具来进行并行开发。芯片设计也不例外,如果简单地将芯片设计划分为硬件和软件两部分,传统的设计流程是先硬件后软件,以串行方式进行。因为软件开发依赖于硬件平台,为了实现硬件与软件并行开发,功能模型使软硬件并行开发成为可能。功能模型(Function model)也称为虚拟原型(Virtual Prototyping VP),虚拟平台(Virtual Platform VP),它们的本质都是一样,如果说非要有些区别,虚拟原型更倾向于片上系统(System on Chip, SoC),虚拟平台涉及更大的系统,除了包括SoC之外,还包括其它子模型如NoC,DDR,Peripherals等,在这里,可以理解为板级(Printed Circuit Board,PCB)虚拟系统。软件设计左移(Shift-left)在芯片设计领域越来越被重视,左移就是为了实现软硬件并行开发。参考图7,如果将芯片设计简单分为架构,前端和后端设计三个阶段,使用传统设计流程,软件需要在RTL开发快结束的时候,才能在FPGA/Emulator平台开始软件开发和调试,参考图7中Emulation starting point。如果采用功能模型或虚拟原型(VP),在时间上可以提前至少8~12个月,给软件团队足够的时间来开发和优化软件,利用功能模型,可以开发firmware/driver/API/boot flow/Linux/software stack等,如果功能模型增加了时序和追踪(Trace)功能,还可以运行应用程序,用来分析软件的性能。通过两种方式对比,在时间上有绝对的优势,因此获得了广泛应用,比如VDK、Simics、利用SystemC+TLM2.0开发的功能模型等。图7. 芯片研发周期示意图与性能模型相比,功能模型是程序员视角模型(Programmer View, PV),只要保证寄存器精度和数据传输正确即可,无需关注时序以及链路上数据的具体传输过程。如果有额外的需求,比如分析软件性能,可以在模型里面增加时序(Timing)、事件(Event)等信息,建模非常灵活,完全可以根据需求增加相应的特征(Feature)或功能。图8. 功能模型内部结构由于功能模型不需要考虑时序和传输过程等因素,与性能模型比起来,相对简单很多,参考图8,典型的功能模型用例主要包括输入/输出接口,数据队列,控制逻辑,回调函数,寄存器,状态信息,中断信号等等。针对无时序模型SystemC+TLM2.0专门提供了blocking和DMI接口,即b_transport和get_direct_mem_ptr,通过调用这两个接口函数可以直接返回结果,调用接口函数过程中不会被其它模块或进程打断。此外,SystemC+TLM2.0还提供了时间解耦(Temporal Decoupling),仿真时钟精度(Time Resolution),全局量子时间(GlobalQuantum)等特征,充分利用non-blocking/DMI接口和这些特征可以巨大地提升功能模型的仿真效率。七. 总结首先,本文介绍了ESL发展历史,以及商用和开源两大阵营中主流仿真工具和平台。其次,还介绍了SystemC+TLM2.0标准规范,最后介绍了两个主要应用场景:性能模型(架构模型)和功能模型(虚拟原型)。尽管可以使用SystemC+TLM2.0创建任意抽象层次的模型,但是也存在不足之处,目前SystemC+TLM2.0只支持单线程,正是这个原因导致复杂的或抽象层次较低的模型仿真很慢(仿真效率低),从官方渠道可以得知,SystemC+TLM2.0正在朝着多线程、功能安全、错误注入等方向发展和演变,以解决仿真效率问题和拓展更多的应用领域。参考资料[1]. IEEE Standard for Standard SystemC Language Reference Manual, IEEE Std 1666-2011[2]. TLM_2_0_presentation[3]. ESL DESIGN AND VERIFICATION 2006[4]. A SystemC Primer 2002[5]. systemc-from-the-ground-up-2-edition 2004[6]. System Design with SystemC 2002[7]. Enhanced Virtual Prototyping (Featuring RISC-V Case Studies) 2021[8]. Complete Symbolic Simulation of SystemCModels2016[9]. https://en.wikipedia.org/wiki/Virtual_prototyping[10].https://www.intel.com/content/www/us/en/developer/articles/tool/simics-simulator.html[11]. https://developer.arm.com/Tools%20and%20Software/Fast%20Models[12]. https://www.synopsys.com/verification/virtual-prototyping.html[13]. https://www.qemu.org/[14]. https://www.gem5.org/[15]. A Survey of Computer Architecture Simulation Techniques and Tools, 2019作者介绍JJ.Tian, 复睿微电子ESL建模工程师,华中科技大学工学硕士,在服务器芯片测试和验证、CPU/AI芯片建模等领域积累了丰富的工作经验。关于复睿微电子复睿微电子是世界500强企业复星集团出资设立的先进技术型企业。公司目标成为世界领先的智能出行时代的大算力方案提供商,致力于为汽车电子、人工智能、通用计算等领域提供以高性能芯片为基础的解决方案。目前主要从事汽车智能座舱、ADS/ADAS芯片研发,以领先的芯片设计能力和人工智能算法,通过底层技术赋能。复睿微电子是复星智能出⾏⽣态的通⽤⼤算⼒和⼈⼯智能⼤算⼒的基础平台。复睿微电子以提升客户体验为使命,在后摩尔定律时代持续通过先进封装、先进制程和解决⽅案提升算⼒,与合作伙伴共同⾯对汽⻋智能化的新时代
2025年05月22日
2 阅读
0 评论
0 点赞
2025-05-22
cadence upf低功耗流程的仿真验证
本文是记录项目过程中遇到的奇巧淫技,如有遗漏或者不足,请大家改正和补充,谢谢。随着深亚微米技术的普及与发展,leakage功耗在整个功耗中的比重越来越大,比如45nm下,已经占到了60%以上,所以低功耗解决方案应运而生。目前已经有一套标准的低功耗设计流程,流程有CPF(cadence主导)和UPF(synopsys主导)两种,但技术趋势是UPF会大一统,所以本篇将为那些仍旧使用ncverilog而不是vcs仿真工具的苦逼们提供一些参考。目前常用的降低低功耗的方法有四种:多电压域、时钟门控、电源关断和动态电压频率调整。其中的时钟门控对验证影响较小,大家应该都接触过,而剩下的三个对验证工作影响较大,需要用到各个EDA厂商的低功耗解决方案。闲话就说这么多,那么cadence如何使用upf来实现低功耗流程的仿真验证呢?第一步,先得有UPF文件,根据设计需求,使用TCL建立脚本,建立和管理独立电压源、确定隔离、建立电平漂移等,一般是设计或者后端人员书写,验证工程师当然也可以写,具体内容参考IEEE 1801。第二步,仿真case中添加电源上电过程,使用$supply_on函数给相应VDD上电。第三步,将UPF嵌入到仿真命令中,即:irun -lps_1801 sim.upf -lps_assign_ft_buf -lps_iso_verbose ...或者1 ncvlog ...2 ncelab -lps_1801 sim.upf -lps_assign_ft_buf -lps_iso_verbose ...3 ncsim ...相关options解释如下:①-lps_1801 filename: 指定符合IEEE 1801标准的UPF文件;②-lps_assign_ft_buf: 指定assign赋值被当做buffer对待,而非默认的wire,好处是从always-on domain进入和穿过power-down domain的信号被force成x,便于debug;③-lps_const_aon: 对处在power-down domain并且直接和always-on domain相连接的tie-high或者tie-low constant,不使能corruption功能;默认不使用该功能;④-lps_enum_rand_corrupt:对于用户定义的enum类型数据,在电源关断后,随机从枚举列表中选择一个值作为变量值;和该命令相类似的还有-lps_enum_right, -lps_implicit_pso等,因为不常用,就不一一介绍了;⑤-lps_iso_verbose: 使能isolation的log功能,这个一般需要加上;⑥...其它的options请参考cadence的low-power simulation guide。最后,运行仿真即可。最后说一下low power流程验证正确性和完备性的确认方法。①增加的low power流程不能影响芯片本身功能的正确性,比如通过电源关断来降低芯片功耗,则关断再打开后,芯片还可以正常work。这部分可以利用原有的self-check验证环境来确认。②利用log文件分析,上述仿真命令-lps_verbose和UPF文件会为仿真输出与low power相关的warning, error以及assertion信息,通过log文件可以check流程的正确性;③自动的assertion checker分析,使用-lps_verify选项可以自动检查电源关断顺序(隔离->复位->断电)和电源打开过程(上电->解复位->解隔离),如不满足该时序要求,会自动报错;④利用覆盖率保证验证完备性,使用-lps_vplan选项依据UPF文件生成low power验证计划,通过simvision提供的coverage接口,得到low power相关的功能覆盖率;https://www.cnblogs.com/jyaray/p/4817777.html
2025年05月22日
1 阅读
0 评论
1 点赞
1
...
7
8
9
10