分享
可扩展可维护的EDA平台搭建方法.pdf
下载文档

ID:2643306

大小:1.90MB

页数:3页

格式:PDF

时间:2023-08-20

收藏 分享赚钱
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
扩展 维护 EDA 平台 搭建 方法
信息通信可扩展可维护的EDA平台搭建方法郭春鹏(上海寒武纪信息科技有限公司,上海2 0 12 0 3)摘要:对于asic行业极其复杂的工作使用环境,文章提出了一个有效的平台搭建方法并在项目中具体实践。文章从实现原理出发,详细说明了搭建的思路和实现框架,并以区分核心层,配置层和用户层的方式对实现过程加以概述。最后,结合具体项实践,给出从模块层级到系统层级,从单一项目执行到多个项目并行的实现方法。对于如何适应新工具,如何快速实现可扩展可维护的平台建设,提供了非常好的解决思路关键词:ASIC;EDA平台;核心层(ASIMcore);配置层(ASIMcfg);用户接口层中图分类号:TP3111 引言随着asic行业的规模化和复杂化,IC设计验证过程中使用的工具层出不穷,如何搭建一个适用性好、扩展性强并易维护的电子设计自动化EDA平台一直困扰着诸多用户。主要的问题包含:(1)复杂:用到的软件工具很多,增加了IC设计验证的复杂性。比如Synopsys公司的vcs、v e r d i;M e n t o r 的questasim、c a l i b r e;Ca d e n c e 的virtuoso等等。(2)易错:不同公司的工具在实现相似功能时参数不尽相同。而单个工具具体参数也极多,相互依赖项更数不胜数,增加了IC设计验证中的出错率。以vcs为例,常规参数也要近几百条。(3)多变:行业内EDA工具演化迭代,新领域,新工具仍不断加入已有平台的现象十分常见。突破目前IC设计验证环境复杂易错多变情况已经为目前各个用户共同面对需要解决的困难,从而搭建可扩展可维护的EDA平台成为重要的解决方案。为解决上面提到的诸多问题,本文提出一种搭建EDA平台的具体思路和方法。将分三部分展开讨论:其中实现思路着重讨论整体框架分层和实现原理;实现方法将从核心层实现方式、配置实现方法与用户层界面三个维度介绍具体情况;最后结合真正项目实践,从单项目到多项目以及拓展性方面介绍使用情况。本文以验证vcs工具为主要讨论对象,对于其他工具的推演将给类比性说明。2平台实现2.1实现思路鉴于不同工具的接口千差万别,以分层的方式实现EDA平台是合理的选择,在本文平台中,整体工具分为三层:核心层(ASIMcore)、配置层(ASIMcfg)和用户接口层(ASIMui)。用户层主要为用户接口,在面对相同功能的EDA工具希望保持不变,以保留用户多项目不同层级使用习惯,避免面对不同工具的易错问题。此层以下如图1实线所示,由专人专项维护,不再暴露给用户侧。配置层的目的是基于不同的EDA工具,可灵活配置工具使用,此层由管理员依据项目不同而统一管理。最底下为核心层,提供基础组件,可由平台开发人员维护更新,可以跨多项目使用。如图1所示分层的引入使用户接口层单一简单不易出错,灵活的配置层可统一更改和封装各种工具以应对复杂多变的需求。核心层的基础组件的实现可一次开发,多项目共用,节省公司资源。2.2实现方法以下将以此三层为组织讨论具体实现方法,在业务实践中整个平台由python3.6实现,后续部分伪代码由python体现。收稿日期:2 0 2 3-0 3-0 7作者简介:郭春鹏(19 8 3-),男,河北承德人,研究生,研究方向集成电路。132023年第0 5期(总第 2 45 期)文献标识码:A文章编号:2 0 9 6-9 7 59(2 0 2 3)0 5-0 0 13-0 32.2.1 核心层基于Linux命令行的EDA工具使用,可将EDA工具使用高度抽象成一个基本理念,即执行一个命令时给这个命令一组入参,并通过命令返回记录反馈执行状态。不同款工具的区别是命令行、命令入参以及结果记录的形式不同。基于此,在核心底层定义一个基本元素称为Action,A c t i o n 的是一个抽象单元,主要用以处理命令行、命令入参以及结果记录。时间片维度上由预备(pre),执行(Act),后处理(Pst),检验(Chk)四个阶段实现。在Pre阶段,会准备并检查执行某一命令所需要的前置条件,包括目录是否创建,所需文件是否准备完成,所需参数是否准备到位等事宜。Act阶段正式执行相应命令并产生执行结果记录(log)。Ps t 后处理阶段主要目的是提供一个接口,用以在某些场景下有机会处理一些非预期事务,是扩展性的考量。最后的Chk阶段,核实log是否有误,由此判断此Action是否正确执行。在整个平台中,Action作为基础单元形成细胞,由一组Ac-tion按顺序组合可成为一个任务(Task),一组Task按顺序组合,可成为一个Task集合(list)。这样一个自底向上的列表,就可以有机的组织起来作为调度任务的核心层。Task示意如图2 所示。在Python实现中,Action作为一个独立class的底层单元,其他特定功能的实现可由此单元继承而来。2.2.2配置层配置层所实现的目标是基于特定场景,对Action和Task进行有机组织。这里又可细分为两个层面的配置,一个是向下对核心层进组织,一个是向上进行用户态的使用接口选择优化。首先因为整个平台一切都是基于参数在运转,所以在实现过程中以Python的简易数据库作为参数存储中心,此数据中心由标准对外接口进行缓存并持续整个任务周期,在Action、T a s k执行阶段可随时从此数据库中获取工具运行需要的各种参数。ASIMuiASIMcfgAsIMcore图1平台分层框架Changjiang Information&Communications郭春鹏:可扩展可维护的EDA平台搭建方法PrePREaction接ActCMDIARGSPstPOSTaction接口ChkAction结果核查PrePRESyncswm*svnargsPOSTsyncChksync log check其次通过指定一组配置后,可实现Task的自组装和生成。以VCS仿真为例,可生成如下Task集合。于VCS仿真而言,整体生命周期可分为三个阶段(详见图3,这个下面都要做必要的引用,就是讲到图3的第几步或者第几个框图了):(1)仿真准备阶段此阶段定义事项为同步(sync)代码,即把代码从svn上同步至本地环境中,涉及命令是svn,参数是诸如-r1234xxxx.v的一类。Pst动作暂无,进行检查项为svn过程是否异常出错。此一项Action即形成第一个Task。(2)仿真执行阶段此阶段可再次细分为三个阶段,即代码编译(compile),代码链接(elaboration),仿真执行(sim)。在代码编译阶段生成两组Task,分别为Dut编译和TB编译,此分组原因在于IC项目过程中中,Dut和TB属设计与验证人员分别开发代码,独立成集合,利于分割相关性,提高效率。在Dut 编译即Dut task中,因可能涉及多个lib编译和公共组件,所有并行无依赖的文件分组均可成为独立编译单元,分成不同的Action可并行编译提高效率。同理TB的编译过程原则是尽量以systemverilog的package作为分组,作为独立单元也可以进行并行编译减少耦合。如图3所示,此时的Ac-tion命令为vlogan,在Action pre阶段主要进行目录创建并检查是否成功;Act阶段执行时从参数存储中心提取vlogan所用参数,并执行命令,此命令会生成编译后的代码库(lib)用于后续链接使用;此Action无Pst阶段;最后在Chk阶段检查vlogan过程中产生的log中是否有报错。代码链接阶段主要是基于已编译好的lib进行链接,生成相应的可执行simv用于后续仿真使用。在项目配置中,也可以并行进行链接目的是可最大化有效利用已编译的lib库文件。在此阶段的Action命令为vcs,参数列表仍旧从参数存储中心提取,此阶段可配置无Pst阶段并在Chk阶段检查vcselab过程所产生的log中否有报错。最终结果会生成用于仿真阶段的simv文件。仿真执行(sim)阶段,对于同一simv文件,可传递不同的参数形成不同的用例进行验证工作,故此阶段的Action命令统一为simv,在ActionPre阶段可依据特定参数决定是否执行,PrePREaction接口ActCMDIARGSPstPOSTaction接口ChkAction结果核查图2 Action、T a s k 组织PREvOAnDUTPrePREvlogan TBActViogan+tbcompargsNOSTPstPOSTvlogan TBChkTBcomp log checkPOSTVIeDutcoPREMoanDUTVoganPOSToganDUTOut coniplog checkDuttasklistPrePREaction接口ActCMDIARGSPstPOSTaction接口ChkAction结果核查PrePREelabActVes elab+ebargsPstPOSTvcselabChkelab log checkchiecPrePREMoganTBActVogan+tbcompargs-PstPOSTvloganTBChkTBcomp log checkTB task list图3VCS平台说明在我司项目中有场景为需要进行一组C文件的编译用于仿真使用,即在此时嵌入;在Actionact阶段,同样从参数存储中心提取此Action所需参数序列进行仿真执行;在Pst阶段,同样可嵌入后处理环节进行仿真文件整理整合,在我司项目中对部分文件对比操作在此时嵌入;最后的Chk阶段会进行simvlog检查和关键字识别,用以判断仿真是否正常结束并文件标识。(3)仿真检查阶段在大量仿真结束后,对所有结果的整体回溯和检查在此阶段实现,在实践过程中,用Python写了简单脚本工具RE-GCHK实现,Action pre阶段主要进行simvlog的存在检查用以判断数量是否异常;Action act阶段用REGCHK脚本提取log,并统计通过与错误数量,对于通过的case可依据参数选择是否删除或保留。此Action无pst,c h k 阶段。以代码编译阶段为例,如需配置文件代码片段如下:DutCompilePre=DutGenDirDutCompileAct=vloganDutCompileBuildOpt=dut_comp_opts,comp_opts,dut_definesDutCompileLF=compile.logDutCompilePst=DutCompileChk=CompCheckPattern.db2.2.3用户层在用户层配置后,用户可在配置下看到标准统一的对外接口,因为平台中Action,T a s k 高度可配置,随时可插拔,所以在对外接口上可保持一致,配置层配置整体平台分三组Task列表,分别为PPlist(准备目录以及分析输入文件参数),TGlist(生成仿真各阶段Action参数)以及TSlist(任务调度,比如区分集群仿真还是本地服务器仿真)。最后的虚框里,提供了网页查看结果以及重新仿真的Action用于复现特定错误用例。Argsdb为参数存储中心为所有Action提供参数。2.4项目实践2.4.1单项目实践在单一项目实践中,因涉及从模块级至子系统,以至到全芯片级的多维度环境,为方便从底向上的继承参数使用,平台中的用户接口文件,可直接简单加载就可复用。对于公共组件特性,由公共文件加载而实现,项目运行,输出以单一项目维度的统一脚本文件。14PreActPstChksimvlogcheckPRESimVActPrePREelabActVcs elab+elargs-PstPOSTves elabChkelab log checkelabtasklistPREsimvsimv+argsPOSTsimvPstsumv+argsPOSTsimvChksimv log checkPrePRESimvsimv+arsPstPOSTsimvChksimv log checksimtask listPrePREREGCHKActREGCHK+args-PstPOSTREG

此文档下载收益归作者所有

下载文档
你可能关注的文档
收起
展开