相关阅读DSO.aihttps://blog.csdn.net/weixin_45791458/category_13126364.html?spm1001.2014.3001.5482写在开始建议在阅读本文前首先阅读下面的博客。DSO.ai基于AI的搜索优化型EDA工具介绍https://chenzhang.blog.csdn.net/article/details/157735793?spm1001.2014.3001.5502DSO.ai简介DSO.ai(Design Space Optimization AI)是一款与物理实现工具包括但不限于Fusion Compiler、IC Compiler II配合使用的机器学习工具。通过探索设计空间并根据一组用户指定的指标(Metrics)评估结果该工具旨在寻找“最佳”设计方案从而提供更优的功耗、性能和面积(PPA)。设计空间由影响PPA的输入项组成例如工具的应用选项和设计的相关设置。在DSO.ai工具中这些输入项被称为排列元(Permuton)排列元的定义对于构建设计空间是必须的。指标可以是标准的PPA指标如最差负裕量(WNS)和总负裕量(TNS)也可以是通过Tcl过程计算得出的用户自定义指标。用户必须提供一个可运行的基准流程包括输入设计和物理实现工具脚本。DSO.ai工具只需对现有的实现脚本进行微调即可运行设计流程并在设计空间内进行多次运行(Run)综合考虑多个输入项和输出指标以实现PPA的改进这一系列运行被称为一个会话(Session)一个会话可以探索整个设计流程也可以只探索其中的一部分。例如可以探索不同的金属层权重如何影响时序和可布线性或者指定各实现阶段的单元库列表以平衡功耗和时序。DSO.ai工具提供以下两种基于指标的优化方法来评估和改进结果多目标(Pareto)使用Pareto优化时工具会考虑多个独立的指标以确定帕累托最优解即一个在不恶化一个或多个其他指标的情况下无法进一步改进任何单个指标的解决方案。单目标(ADES)使用ADES优化时工具会权衡各指标之间的平衡以确定满足用户指定实现目标的解决方案。关于这两种优化方法详细信息的将在之后的章节描述。DSO.ai工具既可以仅从当前会话中学习也可以从先前的会话中学习。当使用来自先前会话的学习成果时工具能以更少的计算开销更快地获得结果。工具将所有运行结果存储在DSO.ai学习数据库中并可将此信息用于未来的分析和学习。除此之外在一系列运行中对于满足用户定义的运行保存规则的那些运行工具会保存运行生成的所有数据包括NDM设计库。这些保存的数据可用作未来会话的输入或读入其他Synopsys工具作为后续Flow的起点。例如假设用户希望在保持总负裕量(TNS)优于-100ns的前提下实现最低功耗。下图展示了DSO.ai工具在大约一周内识别出的解决方案由紫色圆点标识许多此类方案提供的结果质量(QoR)都优于最佳的手动调整结果由绿色圆点标识而手动结果通常需要耗费数月时间。图1 DSO.ai的运行结果DSO.ai的优化方法DSO.ai工具利用机器学习高效地探索巨大的设计空间以寻找“最佳”设计它通过启动具有不同设置的子任务来探索设计空间随着时间的推移优化器会学习哪些排列元取值能改进结果哪些会使结果恶化。DSO.ai工具为优化器提供了两种评估和改进结果的方法。多目标(Pareto)在使用Pareto优化时工具会考虑多个独立的组件指标以确定帕累托最优解即一个在不恶化一个或多个其他组件指标的情况下无法进一步改进任何单个组件指标的解决方案一组Pareto最优解被称为Pareto前沿。对应于Pareto前沿的结果都是备选方案但并非每个Pareto最优解都是理想方案因为它可能无法满足所有组件指标的目标。通常“Pareto前沿”一词指代第一前沿即包含最优秀结果的集合实际上存在多个前沿最佳结果集、次佳结果集依此类推。在大多数情况下用户只需关注第一前沿最佳结果集。在优化过程中工具会尝试通过改进所有组件指标来推动Pareto前沿向前移动。图2显示了Pareto优化优化引擎尝试推动整个前沿向前移动以同时实现更小的面积和更优的TNS。图2 Pareto优化单目标(ADES)使用ADES优化时工具会根据聚合指标(Aggregate Metric)的定义权衡各组件指标之间的平衡以确定满足用户指定实现目标的解决方案。聚合指标标识了关注的组件指标及其实现目标和相对重要性权重。对于每一次运行DSO.ai工具都会使用聚合指标的定义通过对比运行结果与组件指标目标的差异计算出一个聚合设计评分(Aggregate Design Score, ADES)。图3显示了ADES优化优化引擎专注于单一目标即降低ADES分值因此其重点集中在设计空间中较小的特定部分。图3 ADES优化DSO.ai工具支持的两类优化技术各有千秋Pareto优化的优势在于配置极其简便用户只需指定所关注的组件指标即可请记住为了获得最佳效果建议将组件指标数量限制在4到5个以内但并非每个Pareto最优解都是理想方案因为它可能无法满足所有组件指标的目标。ADES优化则提供了极具针对性的优化能力它会综合考虑您为每个关注的组件指标设定的实现目标以及各组件指标的相对重要性。但是用户必须亲自定义能够将这些信息传递给工具的聚合指标而要提炼出能产生最佳结果的定义通常需要经过多次迭代。DSO.ai学习策略在一个会话中DSO.ai工具会使用以下学习策略来探索排列元组成的设计空间构建学习数据库并从当前会话中学习默认模式使用该策略的会话被称为非引导式会话。采用此策略时DSO.ai工具使用专有算法将设计空间中早期运行的排列元取值分布到整个设计空间。当工具确定早期采样已获得足够的反馈响应后优化器将根据早期运行的响应结果为接下来的运行选择排列元取值。通常在项目启动阶段使用此策略用于验证物理实现工具脚本并探索设计空间。先从先前会话中学习然后从当前会话中学习使用该策略的会话被称为引导式会话。采用此策略时DSO.ai工具在第一组并行运行中会借鉴先前会话的学习成果。对于随后的各组并行运行优化器则根据当前会话中已完成运行的反馈响应来选择排列元取值。当会话从现有数据中学习时用户可以用更少的计算资源更快地获得相似的结果。通常在项目中后期使用此策略以达成最终的PPA目标。先回放先前会话中的特定运行然后从当前会话中学习除了上述两种学习策略外DSO.ai工具还可以直接将先前会话中某次或多次运行的排列元取值应用于当前会话。回放可以作为独立的会话运行也可以与其他学习策略结合使用。通常在项目末期使用此策略用于对设计进行最后的润色和收尾。DSO.ai设计流程当使用DSO.ai工具运行设计流程时流程会被切分为多个切片(Slice)每个切片执行设计流程的一部分如综合阶段。在切片内部设计流程通过启动器(Launcher)进一步细分每个启动器执行一个子任务。图4展示了切片、启动器以及物理实现工具命令之间的关系。图4 设计流程中的各部分关系每个会话运行一个或多个切片每个切片都是一个具有独立配置的唯一对象DSO.ai工具支持融合会话。包含多个切片的可融合会话被称为融合会话仅包含单个切片的会话则被称为非融合会话。要运行一个完整的设计流程可以在单个融合会话中运行所有切片也可以在各自的非融合会话中分别运行每个切片或者采用融合与非融合会话相结合的方式。图5展示了一个包含三个切片布局place、时钟clock和布线route的设计流程可能存在的会话配置。图5 可能的会话结构对于融合会话前一个切片中表现优异的运行将作为后续切片的候选输入如图6所示用户可以自定义DSO.ai工具筛选运行的规则。图6 谱系(Lineage)的选择在学习过程中DSO.ai工具会根据会话结束时的运行结果来选择排列元取值无论该结束点代表的是切片的终点非融合会话还是整个流程的终点融合会话。使用融合会话的主要优势包括缩短总周转时间这是因为后续切片可以在有计算资源可用时立即启动而无需等待整个前置会话彻底完成、学习过程是基于流程的最终结果而非中间结果进行的。