DSO.ai:基于AI的搜索优化型EDA工具介绍

DSO.ai:基于AI的搜索优化型EDA工具介绍

相关阅读

DSO.aihttps://blog.ZEEKLOG.net/weixin_45791458/category_13126364.html?spm=1001.2014.3001.5482


        Synopsys提供了多种基于AI的搜索优化型EDA工具,可应用于硅芯片设计与生命周期流程的多个环节,辅助用户的工作流,其中包括2020年3月推出的DSO.ai、2023年3月推出的VSO.ai、TSO.ai、ASO.si。除此之外,作为全栈式AI驱动EDA套件Synopsys.ai,其中还包括2023年11月推出的Synopsys.ai Copilot和2025年3月推出的Synopsys AgentEngineer。

        DSO.ai是Synopsys推出的业界首款自主式AI芯片设计优化工具(后面Cadence在2021年7月推出了Cerebrus作为竞品),通过强化学习在超大规模设计空间中自主探索,实现从RTL到GDSII的全流程PPA(功耗、性能、面积)优化,大幅提升设计效率与结果质量。

图1 全栈式AI驱动EDA套件Synopsys.ai

        芯片设计或生命周期中的每一个具体步骤,都可以被视为一个必须通过流程来解决的问题,这个流程通常被拆解为以下整体问题解决步骤:

1、明确要解决的问题

2、定义该问题的成功解决方案标准

3、思考解决问题的方法

4、识别可能的解决方案

5、最终在项目预算范围内,用可接受的方案解决问题

        在这个流程中,可以通过Synopsys AI辅助的环节,是耗时的“识别可能的解决方案”这一步,借助AI,用户就像拥有了一个专属的个人智能体,代表用户开展工作。AI智能体将在相关搜索空间内自动识别更有前景的解决方案,并处理大量人工试错所需的繁琐流程,体会帮助你实现用户设定的重要问题解决目标。

        作为问题解决流程的通用示例,可以考虑个人出行这个问题。根据具体日期,这个问题的解决方案可能会有很多不同的要求,下面会用这个例子,结合具体场景来拆解问题解决流程,然后展示在流程的哪些步骤中,AI智能体可以显著提升工作效率。

        在个人出行这个问题上,用户通常会有一些目标,这些目标共同构成了一个最优解决方案。

  • 为了在不同的可能方案之间进行比较,需要先定义可量化的指标,这样才能对不同的潜在方案进行有效对比。
  • 个人出行的最优方案,可能基于几个核心指标,比如低成本、高速度、高安全性。理想的方案应该让用户既能负担得起,又能快速、安全地抵达目的地。
  • 在比较不同方案时,这些指标之间往往会存在一些权衡取舍,但在所有方案中,总会有一些明显更优的选择。

        在明确了解决方案的方向之后,流程的下一步是识别搜索空间的可能维度,这些维度能够生成可行的解决方案。

  • 以个人出行例子来说,这可能包括车辆类型、获取车辆的地点,以及车辆制造商等维度。
  • 通过同时考虑多个维度,就拥有了一个庞大的搜索空间来寻找最优解。通过识别更多现实可行的问题解决方法,获得令人满意的解决方案的可能性也会大大提高。

        在完成问题解决流程的初步步骤后,下一步的核心工作就是识别和评估可能的解决方案。

  • 寻找解决方案的过程,会基于搜索空间的可能维度进行评估,从而根据预设指标得到可比较的方案。
  • 如果手动执行这个流程,这个庞大的搜索空间可能会让人望而生畏;但Synopsys的AI智能体能够高效地在这些大型搜索空间中导航,让你专注于其他问题,从而提升工作效率。
  • Synopsys的AI智能体会自动学习搜索空间的特性,帮助你识别更有前景的解决方案,让你达成目标,而无需手动管理多次实验的执行过程。

        只要有充足的时间、足够的搜索空间,以及现实可行的目标,问题最终都会得到解决。

  • Synopsys的AI智能体将通过高效地在你指定的方向上导航解空间,最终收敛到一个可用的解决方案。
  • 这个解决方案本身可以作为Synopsys流程中的一个输出结果,应用到硅芯片设计与生命周期流程的下一步骤中。
  • 关于本次设计中搜索空间的有效利用经验,也可以应用到硅芯片设计与生命周期流程中再次执行该步骤的场景中。这使得从本次问题解决过程中获得的知识,可以扩展到你组织内的其他机会中。

        以上的整个流程如图2所示。

图2 个人出行问题的解决

        下面更深入地看看解空间的搜索方式。在个人出行例子中,用户定义了几个期望达成的指标,例如:成本最小化、速度最大化、安全性最大化。

        基于这些指标,可以对众多维度进行相互比较;为了简化说明,先考察这组指标之间的两两关系,如图3所示。

        一旦通过评估可能的方案得到了一些数据点,就可以将这些方案相互对比。从中可以发现,虽然用户关注的指标之间可能存在一些权衡,但总有一些方案在多个维度上表现更优。

        在解空间中,那些更优结果所在的方向,就是Synopsy AI智能体收敛的方向,它会通过识别搜索空间中通向这些方案的模式来实现这一点。这一过程可以在所有目标指标上同时进行,还能自动管理复杂度,从而提升用户的工作效率。

图3 个人出行问题的解空间

        当首次构建一个搜索空间时,用户对其维度没有任何数据。这就需要对搜索空间进行高效采样,以确定哪个子空间最适合收敛。这种对搜索空间的初始探索,是通过高效的采样方法完成的,以确保在同时探索搜索空间所有维度时,覆盖整个空间。下面用一个仅为二维的简单示例,来比较两种不同的初始探索方法,以避免常见的误解。

        当从搜索空间中随机采样时,每个样本的选择都与其他样本无关,这会导致采样的整体分布不规则。这可能会遗漏搜索空间中的某些未探索区域,是一种效率低下的搜索空间探索方法。

        另一种更高效的方法是使用均匀采样:所有采样点都被统一规划,使得探索样本点的整体分布更加均匀,如图4所示。注意,这并非遍历所有可能的组合来“扫过”整个搜索空间,而是以非随机的方式确保对整个搜索空间的完全覆盖。这种均匀采样方法,正是Synopsys AI搜索优化工具在对搜索空间没有其他信息时所采用的工作方式。

图4 随机采样与均匀采样

        一旦通过初始均匀采样获得了问题的若干可行方案数据,Synopsys AI智能体就能够从这些数据中进行学习,继续用二维搜索空间的简单例子来理解。

        方案被评估后,就可以根据预设的重要指标对这些可行方案进行相互比较,如图5所示。

图5 方案评估

        这会确定Synopsys AI智能体的自动搜索方向,即决定下一步要评估哪些可行方案,如图6所示。

图6 方案搜索

        这种学习能力让Synopsys AI智能体能够识别出更优的方案,从而实现你的目标,如图7所示。

图7 方案确定

Read more

深入解析C/C++标量初始化警告:braces around scalar initializer的根源与修复

1. 什么是"braces around scalar initializer"警告? 当你用C或C++写代码时,可能会遇到这样的警告:"warning: braces around scalar initializer"。这个警告的意思是你在初始化一个标量(scalar)变量时,不必要地使用了花括号{}。 标量变量指的是那些简单的、不可再分的变量类型,比如: * 基本数据类型:int, float, double等 * 指针类型:int*, char*等 * 枚举类型 举个例子,下面这行代码就会触发这个警告: int x = {5}; // 警告:标量初始化使用了不必要的花括号 而正确的写法应该是: int x = 5; // 正确:直接使用值初始化标量 这个警告通常出现在GCC和Clang编译器中,特别是当你开启了-Wall或-Wextra警告选项时。

By Ne0inhk

C++中std::string的弱点:你可能未曾注意到的缺点

性能方面的局限 由于std::string是动态大小的字符串,它需要在运行时动态分配内存来存储字符串的内容。在字符串长度变化时,要频繁地进行内存分配和释放操作,导致一定的性能开销。 1. 频繁的内存分配和释放操作可能导致内存碎片的产生,内存空间的利用率降低。 2. 内存分配的成本比较高,特别是在频繁进行小块内存分配时,会增加系统开销。 3. 频繁地进行内存分配和释放操作会导致性能下降,尤其是在大规模数据处理时。 当字符串长度超过当前分配的内存空间时,std::string需要进行动态内存重分配,这会带来一定的性能开销。当字符串长度超过当前分配的内存空间时,std::string需要进行内存重分配,涉及到申请新的内存空间、拷贝数据、释放旧内存等操作,导致性能开销。 std::string 的性能局限之一是字符串拼接的效率问题。当对多个字符串进行拼接操作时,使用加法操作符或者append()方法在每次拼接时都需要进行内存重新分配和复制,这会导致较高的性能开销。特别是在频繁拼接大量字符串时,这种操作会导致大量的内存重分配和数据复制,从而影响程序的性能表现。 三、可变性带来的

By Ne0inhk

JavaQuestPlayer终极指南:简单快速的QSP游戏完整解决方案

JavaQuestPlayer终极指南:简单快速的QSP游戏完整解决方案 【免费下载链接】JavaQuestPlayer 项目地址: https://gitcode.com/gh_mirrors/ja/JavaQuestPlayer 想要轻松畅玩各类QSP游戏却苦于复杂的配置过程?JavaQuestPlayer为你提供了最简单快捷的解决方案,这款基于Java开发的智能游戏运行器让新手也能快速上手,享受流畅的游戏体验。无论你是游戏爱好者还是开发者,都能在这里找到适合你的运行方式。 🎯 从零开始:快速入门指南 环境准备与项目获取 首先确保你的系统已安装Java运行环境,支持Oracle JDK1.8或OpenJDK JDK 11及以上版本。通过以下命令获取项目: git clone https://gitcode.com/gh_mirrors/ja/JavaQuestPlayer 项目结构清晰,主要源码位于src/main/java/com/baijiacms/qsp目录下,包含游戏控制器、资源管理、核心逻辑等模块。 两种运行模式详解 桌面应用模式提供原生的游戏体验

By Ne0inhk
计算机毕设java共享单车租借网络平台设计 基于SpringBoot的城市公共自行车智能租赁与调度系统 Java Web共享出行工具在线预约与运营管理平台

计算机毕设java共享单车租借网络平台设计 基于SpringBoot的城市公共自行车智能租赁与调度系统 Java Web共享出行工具在线预约与运营管理平台

计算机毕设java共享单车租借网络平台设计g4j999(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。 随着城市化进程的加速和绿色出行理念的普及,共享单车作为解决"最后一公里"出行的重要方式,已成为现代城市交通体系的重要组成部分。然而,传统的单车租赁管理存在车辆分布不均、租借流程繁琐、费用结算不透明、车辆维护滞后等问题,难以满足用户便捷出行和运营商高效管理的需求。在智慧城市建设和共享经济发展的背景下,构建一套智能化、网络化的单车租借平台,能够实现车辆的精准调度、租借流程的自动化处理以及运营数据的实时分析,从而提升用户体验,优化资源配置,推动城市绿色交通的可持续发展。 本系统采用Java作为开发语言,基于SpringBoot框架构建,结合MySQL数据库和B/S架构设计,旨在打造一个功能完善、操作便捷、高效稳定的共享单车租借网络平台。系统核心功能模块涵盖以下方面: 用户管理模块:实现用户账号注册、登录、个人信息维护,包含用户账号、密码、用户姓名、头像、性别、手机号码、身份证号等基础信息管理,支持密码修改与账户

By Ne0inhk