CN116562204B - 芯片验证方法及装置、电子设备、计算机可读存储介质 - Google Patents

芯片验证方法及装置、电子设备、计算机可读存储介质 Download PDF

Info

Publication number
CN116562204B
CN116562204B CN202310849498.8A CN202310849498A CN116562204B CN 116562204 B CN116562204 B CN 116562204B CN 202310849498 A CN202310849498 A CN 202310849498A CN 116562204 B CN116562204 B CN 116562204B
Authority
CN
China
Prior art keywords
file
account
design
netlist
design file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202310849498.8A
Other languages
English (en)
Other versions
CN116562204A (zh
Inventor
赵岩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Innoda Chengdu Electronic Technology Co ltd
Original Assignee
Innoda Chengdu Electronic Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Innoda Chengdu Electronic Technology Co ltd filed Critical Innoda Chengdu Electronic Technology Co ltd
Priority to CN202310849498.8A priority Critical patent/CN116562204B/zh
Publication of CN116562204A publication Critical patent/CN116562204A/zh
Application granted granted Critical
Publication of CN116562204B publication Critical patent/CN116562204B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/331Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/02CAD in a network environment, e.g. collaborative CAD or distributed simulation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本公开关于一种芯片验证方法及装置、电子设备、计算机可读存储介质。该方法包括:接收用户侧发送的网表,其中,网表是通过对文件集进行编译得到的,文件集包含至少一个账户的设计文件且每个设计文件相互独立,每个设计文件包含用于设计相应账户的芯片的信息;响应于接收到至少一个账户中任一账户启动芯片验证流程的请求,基于网表,对任一账户的设计文件进行验证。

Description

芯片验证方法及装置、电子设备、计算机可读存储介质
技术领域
本公开涉及半导体领域,尤其涉及一种芯片验证方法及装置、电子设备、计算机可读存储介质。
背景技术
在芯片设计中,不同的设计文件通常会调用一些设计模块,当被调用的设计模块有改动的时候,所有调用该设计模块的设计文件都需要同步更新,并且重新进行编译(如本地编译或云端编译)。再有,用于验证芯片的硬件仿真加速器在使用的过程中,内部某些连线有一定概率会失效,这些连线称为坏线,产生坏线后必须对此坏线进行屏蔽,并且所有的设计文件也都需要重新编译(如本地编译或云端编译)之后才能够再次使用。
目前,对于上述问题,相关技术常常采用如下方式克服:1、不同账户(或团队)各自维护各自的设计文件对应的数据库;2、每次迭代或者坏线后所有数据库需要重新出一个版本;3、用版本号管理迭代的所有数据库。但是,上述方案中迭代的时间代价巨大,尤其在复杂场景下,迭代时编译的次数和时间随着账户、外设的增加及变更,迭代次数是成倍增长的;而且,迭代导致数据库的维护成本高昂,如,迭代时设计文件的上传次数是随着账户数量成倍增长的,以及,每个账户依次上传各自的数据库时,人员盯梢会产生巨大的人力成本。同理,硬件仿真加速器坏线后,存在与迭代相类似的问题。
发明内容
本公开提供一种芯片验证方法及装置、电子设备、计算机可读存储介质,以至少解决相关技术中设计文件的编译效率低、上传效率低的问题。
根据本公开实施例的第一方面,提供一种芯片验证方法,包括:接收用户侧发送的网表,其中,网表是通过对文件集进行编译得到的,文件集包含至少一个账户的设计文件且每个设计文件相互独立,每个设计文件包含用于设计相应账户的芯片的信息;响应于接收到至少一个账户中任一账户启动芯片验证流程的请求,基于网表,对任一账户的设计文件进行验证。
可选地,基于网表,对任一账户的设计文件进行验证,包括:运行网表对应的编译脚本,调用任一账户的配置脚本,其中,编译脚本包含将设计文件编译为硬件仿真加速器能够加载的数据库的编译流程,配置脚本包含任一账户的设计文件的文件标识信息;通过调用的配置脚本,确定网表中与文件标识信息对应的设计文件内容;确定任一账户的设计文件对应的外接设备的管脚约束信息;基于管脚约束信息,继续运行编译脚本对设计文件内容进行编译,得到任一账户的设计文件的数据库;将数据库加载至硬件仿真加速器,对任一账户的设计文件进行验证。
可选地,配置脚本还包含任一账户的设计文件对应的外接设备的设备标识信息,其中,确定任一账户的设计文件对应的外接设备的管脚约束信息,包括:通过调用的配置脚本,确定与设备标识信息对应的外设连接约束脚本;通过调用外设连接约束脚本,确定任一账户的设计文件对应的外接设备的管脚约束信息。
可选地,在运行网表对应的编译脚本,调用任一账户的配置脚本之前,还包括:基于网表,获取任一账户的设计文件在文件集中的标识,基于标识,设置配置脚本模版中的文件参数和外接设备参数,得到任一账户的设计文件的配置脚本,其中,配置脚本模版包含用于设置待验证的设计文件的文件标识信息的文件参数和用于设置待验证的设计文件对应的外接设备的设备标识信息的外接设备参数。
可选地,在调用外设连接约束脚本之前,还包括:在本地的存储器中,查询与设备标识信息对应的外设连接约束脚本;在查询结果显示本地的存储器不存在对应的外设连接约束脚本的情况下,创建对应的外设连接约束脚本;在查询结果显示本地的存储器存在对应的外设连接约束脚本的情况下,直接调用对应的外设连接约束脚本。
可选地,配置脚本还包含任一账户的设计文件对应的外接设备的使能信息,其中,该方法还包括:在使能信息指示需要连接外接设备的情况下,调用所述外设连接约束脚本;在使能信息指示不需要连接外接设备的情况下,继续运行编译脚本对设计文件内容进行编译,得到任一账户的设计文件的数据库。
可选地,确定网表中与文件标识信息对应的设计文件内容,包括:确定任一账户的设计文件的文件标识信息;通过对网表中的第一设计文件内容进行临时屏蔽,确定网表中的第二设计文件内容,其中,第一设计文件内容为网表中第二设计文件内容之外的其他设计文件内容,第二设计文件内容是网表中与文件标识信息对应的设计文件内容。
可选地,对网表中的第一设计文件内容进行临时屏蔽,包括:在网表中插入第一设计文件内容对应的替身代码,并使第一设计文件内容的代码接口指向替身代码,其中,替身代码为不执行任何具体操作的代码。
根据本公开实施例的第二方面,提供一种芯片验证方法,包括:获取至少一个账户的设计文件,其中,每个设计文件包含用于设计相应账户的芯片的信息;将至少一个账户的设计文件合并到一个文件集中,其中,文件集中每个设计文件相互独立;对文件集进行编译,得到文件集对应的网表;将网表上传到运行时服务器,以便运行时服务器基于网表对至少一个账户中任一账户的设计文件进行验证。
可选地,对文件集进行编译,得到文件集对应的网表,包括:确定文件集中设计文件所涉及的设计模块中重复的设计模块;在文件集中保留重复的设计模块中的一个设计模块的信息;对处理后的文件集进行编译,得到文件集对应的网表。
可选地,将网表上传到运行时服务器,包括:对网表进行加密处理;将加密后的网表上传到运行时服务器。
根据本公开实施例的第三方面,提供一种芯片验证装置,包括: 网表接收单元,被配置为接收用户侧发送的网表,其中,网表是通过对文件集进行编译得到的,文件集包含至少一个账户的设计文件且每个设计文件相互独立,每个设计文件包含用于设计相应账户的芯片的信息;验证单元,被配置为响应于接收到至少一个账户中任一账户启动芯片验证流程的请求,基于网表,对任一账户的设计文件进行验证。
可选地,验证单元,还被配置为运行网表对应的编译脚本,调用任一账户的配置脚本,其中,编译脚本包含将设计文件编译为硬件仿真加速器能够加载的数据库的编译流程,配置脚本包含任一账户的设计文件的文件标识信息;通过调用的配置脚本,确定网表中与文件标识信息对应的设计文件内容;确定任一账户的设计文件对应的外接设备的管脚约束信息;基于管脚约束信息,继续运行编译脚本对设计文件内容进行编译,得到任一账户的设计文件的数据库;将数据库加载至硬件仿真加速器,对任一账户的设计文件进行验证。
可选地,配置脚本还包含任一账户的设计文件对应的外接设备的设备标识信息,其中,验证单元,还被配置为通过调用的配置脚本,确定与设备标识信息对应的外设连接约束脚本;通过调用外设连接约束脚本,确定任一账户的设计文件对应的外接设备的管脚约束信息。
可选地,验证单元,还被配置为在运行网表对应的编译脚本,调用任一账户的配置脚本之前,基于网表,获取任一账户的设计文件在文件集中的标识,基于标识,设置配置脚本模版中的文件参数和外接设备参数,得到任一账户的设计文件的配置脚本,其中,配置脚本模版包含用于设置待验证的设计文件的文件标识信息的文件参数和用于设置待验证的设计文件对应的外接设备的设备标识信息的外接设备参数。
可选地,验证单元,还被配置为在调用外设连接约束脚本之前,在本地的存储器中,查询与设备标识信息对应的外设连接约束脚本;在查询结果显示本地的存储器不存在对应的外设连接约束脚本的情况下,创建对应的外设连接约束脚本;在查询结果显示本地的存储器存在对应的外设连接约束脚本的情况下,直接调用对应的外设连接约束脚本。
可选地,配置脚本还包含任一账户的设计文件对应的外接设备的使能信息,其中,验证单元,还被配置为在使能信息指示需要连接外接设备的情况下,调用与设备标识信息对应的外设连接约束脚本;在使能信息指示不需要连接外接设备的情况下,继续运行编译脚本对设计文件内容进行编译,得到任一账户的设计文件的数据库。
可选地,验证单元,还被配置为确定任一账户的设计文件的文件标识信息;通过对网表中的第一设计文件内容进行临时屏蔽,确定网表中的第二设计文件内容,其中,第一设计文件内容为网表中第二设计文件内容之外的其他设计文件内容,第二设计文件内容是网表中与文件标识信息对应的设计文件内容。
可选地,验证单元,还被配置为在网表中插入第一设计文件内容对应的替身代码,并使第一设计文件内容的代码接口指向替身代码,其中,替身代码为不执行任何具体操作的代码。
根据本公开实施例的第四方面,提供一种芯片验证装置,包括:获取单元,被配置为获取至少一个账户的设计文件,其中,每个设计文件包含用于设计相应账户的芯片的信息;合并单元,被配置为将至少一个账户的设计文件合并到一个文件集中,其中,文件集中每个设计文件相互独立;编译单元,被配置为对文件集进行编译,得到文件集对应的网表;上传单元,被配置为将网表上传到运行时服务器,以便运行时服务器基于网表对至少一个账户中任一账户的设计文件进行验证。
可选地,编译单元,还被配置为确定文件集中设计文件所涉及的设计模块中重复的设计模块;在文件集中保留重复的设计模块中的一个设计模块的信息;对处理后的文件集进行编译,得到文件集对应的网表。
可选地,上传单元,还被配置为对网表进行加密处理;将加密后的网表上传到运行时服务器。
根据本公开实施例的第五方面,提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为执行指令,以实现根据本公开的芯片验证方法。
根据本公开实施例的第六方面,提供了一种计算机可读存储介质,当计算机可读存储介质中的指令被至少一个处理器运行时,促使至少一个处理器执行如上根据本公开的芯片验证方法。
根据本公开实施例的第七方面,提供了一种计算机程序产品,包括计算机指令,计算机指令被处理器执行时实现根据本公开的芯片验证方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
根据本公开的芯片验证方法及装置、电子设备、计算机可读存储介质,将至少一个账户的设计文件合并到一个文件集,通过对整个文件集进行编译,无需对每个设计文件单独编译,减少了编译次数,降低了编译时间,提升了编译效率,而且,对于多个设计文件,不再是将每个设计文件的编译结果分别上传,而以文本集的形式统一编译后上传一次即可,减少了编译结果的上传次数和上传时间,提高了编译结果的上传效率,还节省了人员盯梢产生的人力成本。因此,本公开解决了相关技术中设计文件的编译效率低、上传效率低的问题。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是示出相关技术的硬件仿真加速器云环境示意图;
图2是示出根据本公开的示例性实施例的多账户使用场景示意图;
图3是示出根据本公开的示例性实施例的多外设使用场景示意图;
图4是示出根据本公开的示例性实施例的设计文件验证流程示意图;
图5是根据一示例性实施例示出的一种芯片验证方法的流程图;
图6是根据一示例性实施例示出的一种BIG_DATA的示意图;
图7是根据另一示例性实施例示出的一种芯片验证方法的流程图;
图8是根据一示例性实施例示出的一种配置脚本中data_num被设置为3时的效果示意图;
图9是根据一示例性实施例示出的一种芯片验证装置的框图;
图10是根据另一示例性实施例示出的一种芯片验证装置的框图;
图11是根据本公开实施例的一种电子设备1100的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在此需要说明的是,在本公开中出现的“若干项之中的至少一项”均表示包含“该若干项中的任意一项”、“该若干项中的任意多项的组合”、“该若干项的全体”这三类并列的情况。例如“包括A和B之中的至少一个”即包括如下三种并列的情况:(1)包括A;(2)包括B;(3)包括A和B。又例如“执行步骤一和步骤二之中的至少一个”,即表示如下三种并列的情况:(1)执行步骤一;(2)执行步骤二;(3)执行步骤一和步骤二。
硬件仿真加速器是一种常用的实现对芯片的设计进行验证的设备。在实际使用中,硬件仿真加速器在全电路仿真方式(In-Circuit Emulation mode,缩写为ICE mode)下,往往需要通过硬件仿真加速器的外设接口来实现对待测设计(Design under Test,DUT)的验证。
根据本公开实施例的硬件仿真加速器可以但不限于是Palladium加速器。Palladium加速器是基于大规模的定制中央处理器(Central Processing Unit,缩写为CPU)阵列构建的硬件仿真加速器,支持Verilog和VHDL(英文全称Very high speedintegrated Hardware Description Language)等硬件描述语言,并可以与其他电子设计自动化(Electronic Design Automation,缩写为EDA)工具集成,主要用于芯片验证。Palladium加速器可以模拟高达数千万门及上亿的复杂芯片设计,比软件仿真快数百倍甚至数千倍,和传统的基于现场可编程门阵列(Field Programmable Gate Array,缩写为FPGA)的硬件仿真加速器相比,Palladium加速器的编译速度更快、调试能力更强,并支持多用户。Palladium加速器在芯片设计和验证中发挥着重要的作用,它可以在不需要实际芯片的情况下对芯片进行全面的测试和验证,从而加快设计周期并降低成本。通过使用Palladium加速器,在芯片研发的早期阶段,就可以让整颗芯片软硬件协同设计成为可能,硬件流片回来之前就可以将配套软件准备好,数小时之内,将操作系统在寄存器转换级电路(Register Transfer Level,缩写为RTL)模块上启动。
如图1所示,账户A通过网络接入到硬件仿真加速器云端,会将本地数据(如设计文件)进行编译后(设计文件简称为DATA,该编译过程简称为compile1,也称本地编译)上传到云端的运行时服务器(runtime server),然后,通过运行时服务器为DATA指定外接设备后,将DATA再次进行编译(该编译过程简称为compile2,也称云端编译),即编译为硬件仿真加速器能够加载的数据库(Database,简称DB),再然后,将DB加载到硬件仿真加速器上对账户A的DATA进行硬件仿真加速验证。
如图1所示的硬件仿真加速器云环境存在多种使用场景,如,多账户使用场景、多外设使用场景、多账户多外设使用场景等,其中,多账户使用场景如图2所示,同一客户下的五个账户同时并行使用同一套硬件仿真加速器,每个账户都需要分别将自己的DATA上传到云端的运行时服务器,编译后加载到硬件仿真加速器,也就是说,硬件仿真加速器同时加载了5个DB,图2中1、2、3、4、5为5个DB在硬件仿真加速器上的资源分布。多外设使用场景如图3所示,硬件仿真加速器需要连接多种外接设备(简称外设)才能加速验证对应的设计文件,有时同一个设计文件需要连接多种外设,也有时多个设计文件需要连接同一个外设,这就需要在DB编译阶段前对外设的连接进行约束声明,需要说明的是,图3中间的硬件仿真加速器可以是Palladium Z1,其中,Z1是型号,除此之外还有Z2、X1等型号,对此本公开并不进行限定;Palladium Z1周围的SATA、USB 2.0/3.0设备、USB 2.0主设备、SAS等仅是所连接的外接设备的示例,Palladium Z1所连接的外接设备并不局限于图3所示的设备,即可以增加新外接设备,也可以删除外接设备,对此本公开并不进行限定。多账户多外设使用场景(后简称复杂场景),结合了上面图2所描述的场景和图3所描述的场景,即同一套硬件仿真加速器由多个账户同时使用,每个账户的设计文件的验证都使用了多种外设,每个账户也都需要执行本地编译、将编译的DATA上传、通过约束声明为DATA指定外设连接,进而对声明后的DATA进行编译得到相应的DB等操作。
需要说明的是,上述编译的时长与设计文件的大小、所占硬件仿真加速器的资源的大小均有关,即设计文件越大,所使用硬件仿真加速器资源越多,编译时间越长,如以大规模集成电路设计(一百万门级)为例,编译时间约为6-8小时。再有,上述验证过程与外设的个数有关,如硬件仿真加速器运行(bring up)时,即首次将设计文件成功加载到硬件仿真加速器如图4所示,在正常的项目调试流程中,若设计文件需要单个外设的情况,从编译到成功加载至硬件仿真加速器的时间约为1周;若该设计文件需要连接4种外设,则对于整个设计文件而言,从编译到成功加载至硬件仿真加速器的时间总体约为1个月。
目前,对芯片的设计进行验证的过程中存在如下问题:
1)迭代的时间代价巨大。在芯片设计验证过程中,DB的迭代是非常频繁的,尤其是在运行阶段,设计文件的每次迭代都需要重新进行compile1、上传、compile2等过程,尤其在复杂场景下,迭代时编译的次数和时间是单一账户环境而言的数倍,即随着账户、外设的增加及变更,迭代次数是成倍增长的。例如,假设有四个账户(或团队)同时使用一套硬件仿真加速器云端,每个账户需要连接的外设都不完全相同,那么迭代的编译次数CN和迭代次数N的关系是:CN = 2×4×N。在每个账户的设计文件都调用了同一个设计模块A的情况下,当设计模块A发现bug,进行修改后,所有的设计文件都需要重新执行compile1和compile2,共计8次编译,假如每次编译时间为6个小时,那么一共需要48个小时才能完成一次迭代,即使每次可以并行同时编译两个设计文件(取决于编译服务器的性能,通常并行运算会拖慢所有进程),理论上也需要24小时才能完成。
2)迭代导致DB的维护成本高昂。每次迭代后,都需要重新编译所有设计文件,在此过程中,每个账户在本地经过compile1得到的DATA,都需要分别上传到云端的运行时服务器进行compile2,使得每个DB都会有一个新版本,这里,迭代时DATA的上传次数是随着用户数量成倍增长的。例如:假设有四个账户(或团队)同时使用一套硬件仿真加速器云端,每个账户需要连接的外设都不完全相同,那么迭代的上传次数TN和迭代次数N的关系是:TN = 4×N。而且,由于同一套硬件仿真加速器不支持多个账户同时上传各自的DATA,因此待上传账户的DATA需要等到当前账户的DATA上传结束之后才能开始上传,即每个账户需要依次上传各自的DATA,在实际应用中,当前上传与下一次上传之间并非无缝连接,可能会存在大量的时间损耗,这是因为编译并上传DATA需要各个账户自行维护操作,所以每次编译上传都需要工作人员进行盯梢,不仅增加了人力成本,还会因为工作人员的主观因素使得当前上传与下一次上传之间的时间损耗变得不可控,从而在编译上传的次数需求多了之后,总体的上传效率将出现明显下降的现象,导致浪费大量时间。
3)硬件仿真加速器坏线后,也需要重新编译所有DB,因此与迭代的问题相类似。
针对上述问题,本公开提供了一种芯片验证方法,可以获取至少一个账户的设计文件,其中,每个设计文件包含用于设计相应账户的芯片的信息;将至少一个账户的设计文件合并到一个文件集中,其中,文件集中每个设计文件相互独立;对文件集进行编译,得到文件集对应的网表;将网表上传到运行时服务器,运行时服务器接收用户侧发送的网表;在至少一个账户中任一账户启动芯片验证流程的情况下,基于网表,对任一账户的设计文件进行验证。通过该方法,能够提高设计文件的编译效率以及上传效率。需要说明的是,上述发送给运行服务器之前的操作可以由任一用户终端独立完成该工作,也可以通过用户终端的服务器独立完成该工作,本公开对此并不进行限定。
下面,将参照附图详细描述根据本公开的示例性实施例的芯片验证方法及装置、电子设备、计算机可读存储介质。
图5是根据一示例性实施例示出的一种芯片验证方法的流程图,如图5所示,芯片验证方法包括以下步骤:
在步骤S501中,获取至少一个账户的设计文件,其中,每个设计文件包含用于设计相应账户的芯片的信息。
上述至少一个账户可以归属于同一个公司或客户,也可以归属于同一团队,对此本公开并不进行限定。上述步骤的执行主体可以是账户所在的任一用户终端,也可以是用户终端侧对应的服务器,对此本公开并不进行限定。
作为示例,以用户终端侧对应的服务器为执行主体为例,假设一个公司下有3个账户都在设计各自的芯片,并且需要验证各自的芯片,则可以获取这三个账户所设计的芯片的设计文件,分别称为设计文件1(DATA1)、设计文件2(DATA2)和设计文件3(DATA3),基于这三个设计文件分别对相应的芯片进行验证。
返回图5,在步骤S502中,将至少一个账户的设计文件合并到一个文件集中,其中,文件集中每个设计文件相互独立。
本步骤中得到文件集后,如果本地编译还没有开始,一旦有新的设计文件出现,可以将新出现的设计文件加入到该文件集中,文件集的大小具体可以根据需要设定,本公开对此并不进行限定。
作为示例,仍以用户终端侧对应的服务器为执行主体为例,可以将设计文件1(DATA1)、设计文件2(DATA2)和设计文件3(DATA3)集成到一个大的文件集中,如图6所示的BIG_DATA,需要说明的是,图6中的BIG_DATA包含了N个DATA,不局限于3个DATA,在这个文件集中DATA1、DATA2和DATA3是相互独立、互不干扰的。如果在本地编译开始前,检测到新的设计文件出现,则可以将该新的设计文件加入到该文件集中。
返回图5,在步骤S503中,对文件集进行编译,得到文件集对应的网表。
上述网表是用于描述电路元件彼此之间的连接关系,一般来说是一个遵循某种比较简单的标记语法的文本文件,可以被相应的计算装置(如运行时服务器,runtime serve)识别。本步骤中的编译属于本地编译,编译的目的一般是出于便于计算装置识别以及信息安全考虑,具体地,可以将设计文件编译为网表或者加密网表,对此本公开并不进行限定。上述“文件集对应的网表”是一个整体性的网表文件,即,尽管文件集是多个设计文件的集合,但本步骤通过编译会将文件集编译成一个整体,以便后续一次性上传到运行时服务器。
作为示例,仍以用户终端侧对应的服务器为执行主体为例,可以将上述包含了3个设计文件的文件集整体进行编译,得到文件集对应的网表。
根据本公开的示例性实施例,对文件集进行编译,得到文件集对应的网表,可以包括但不限于:确定文件集中设计文件所涉及的设计模块中重复的设计模块;在文件集中保留重复的设计模块中的一个设计模块的信息;对处理后的文件集进行编译,得到文件集对应的网表。根据本实施例,在编译过程中,将文件集中涉及的重复的设计模块的冗余内容删除,只保留1个该重复的设计模块,精简了编译内容,也节省了后续编译的时间。
上述设计模块是用于设计相应的芯片的模块,可以被芯片的设计文件调用。在芯片设计过程中,不同的设计文件通常会调用一些相同的设计模块,可以称为公共设计模块,也就是说几个设计文件同时调用一个或几个公共设计模块。因此,在将多个设计文件集成到BIG_DATA之后,可以在对BIG_DATA进行编译(compile1)时,对多个设计文件中重复调用的公共设计模块的冗余部分进行精减处理,即删除重复的公共设计模块的冗余内容,只保留1份重复的公共设计模块的信息在BIG_DATA中。
作为示例,仍以用户终端侧对应的服务器为执行主体为例,在编译BIG_DATA过程中,可以检测BIG_DATA中的设计文件是否重复调用了同一个设计模块,即公共设计模块,如果检测到重复的公共设计模块时,则可以输出有相应模块信息的错误报告(errorreport),根据错误报告可以确定哪些设计模块是多个设计文件都需要调用的公共设计模块。此时,对于多个设计文件重复调用的公共设计模块,可以对这些公共设计模块的冗余部分进行精减处理,例如,多个DATA均调用了设计模块A的情况下,在将这些DATA集成到BIG_DATA后,该设计模块A在BIG_DATA中就会重复表达多次,此时在本地编译过程中,可以将重复表达设计模块A的冗余内容删除,只保留1份表达设计模块A的内容在BIG_DATA中,实现了编译内容的精减,节省了后续编译的时间。
返回图5,在步骤S504中,将网表上传到运行时服务器,以便运行时服务器基于网表对至少一个账户中任一账户的设计文件进行验证。
本步骤中,在上传前,执行主体可以通过网络接入到硬件仿真加速器的云环境网络(也即云端),在连网成功后,可以将编译后的BIG_DATA作为整体上传至云端的运行时服务器(runtime server),对于多个设计文件而言,每个设计文件无需再分别编译,也无需再分别上传,可以BIG_DATA的形式统一编译后上传一次即可,提高了数据传输效率,也节省了人员盯梢产生的各种成本。
根据本公开的示例性实施例,将网表上传到运行时服务器,可以包括但不限于:对网表进行加密处理;将加密后的网表上传到运行时服务器。根据本实施例,网表上传运行时服务器前,先进行加密处理,得到加密网表,从而可以在上传的过程中保护网表,避免网表在传输过程中被泄露。
上述加密处理的方法本公开并不进行限定,可以是任何适用于本公开的加密处理方法。
图7是根据另一示例性实施例示出的一种芯片验证方法的流程图,如图7所示,芯片验证方法包括以下步骤:
在步骤S701中,接收用户侧发送的网表,其中,网表是通过对文件集进行编译得到的,文件集包含至少一个账户的设计文件且每个设计文件相互独立,每个设计文件包含用于设计相应账户的芯片的信息。
上述至少一个账户可以归属于同一个公司或客户,也可以归属于同一团队,对此本公开并不进行限定。上述网表是用于描述电路元件彼此之间的连接关系,一般来说是一个遵循某种比较简单的标记语法的文本文件,可以被相应的计算装置(如运行时服务器,runtime serve)识别的文本文件。上述步骤的执行主体可以是云端的运行时服务器,也可以是云端上其他能够实现本公开的方法的服务器,对此本公开并不进行限定。
根据本公开的示例性实施例,上述网表对应的文本集在编译前,还可以确定文件集中设计文件所涉及的设计模块中重复的设计模块;在文件集中保留重复的设计模块中的一个设计模块的信息;对处理后的文件集进行编译,得到文件集对应的网表。根据本实施例,在编译过程中,将文件集中涉及的重复的设计模块的冗余内容删除,只保留1个该重复的设计模块,精简了编译内容,也节省了后续编译的时间。
根据本公开的示例性实施例,上述网表在发送给云端的运行时服务器之前,可以对网表进行加密处理,在加密处理后,再将加密后的网表上传到运行时服务器。根据本实施例,网表上传运行时服务器前,先进行加密处理,得到加密网表,从而可以在上传的过程中保护网表,避免网表在传输过程中被泄露。
在步骤S702中,响应于接收到至少一个账户中任一账户启动芯片验证流程的请求,基于网表,对任一账户的设计文件进行验证。
在接收上述请求前,至少一个账户可以通过网络接入到硬件仿真加速器的云环境网络(也即云端)。在连网成功后,在至少一个账户中一个账户设计完芯片,并需要对芯片进行验证时,可以向云端的运行时服务器发送启动芯片验证流程的请求,此时运行时服务器可以基于接收到网表,对该账户的设计文件进行验证,具体的验证过程可以包括但不限于如下过程:
根据本公开的示例性实施例,基于网表,对任一账户的设计文件进行验证,可以包括:运行网表对应的编译脚本,调用任一账户的配置脚本,其中,编译脚本包含将设计文件编译为硬件仿真加速器能够加载的数据库的编译流程,配置脚本包含任一账户的设计文件的文件标识信息;通过调用的配置脚本,确定网表中与文件标识信息对应的设计文件内容;确定任一账户的设计文件对应的外接设备的管脚约束信息;基于管脚约束信息,继续运行编译脚本对设计文件内容进行编译,得到任一账户的设计文件的数据库;将数据库加载至硬件仿真加速器,对任一账户的设计文件进行验证。根据本实施例,引入了配置脚本,并将编译脚本和配置脚本相结合,可以灵活的调用网表中的待验证的设计文件,极大减少了需要维护的设计文件的数量。
上述配置脚本可以包括待验证的设计文件的文件标识信息,例如,可以在配置脚本中设置data_num来表示待验证的设计文件的文件标识信息,如在文件集中标识,对此本公开并不进行限定,从而基于配置脚本中该data_num,可以从网表中选择出需要使用的待验证的设计文件的内容(即对应的DATA)。
上述编译脚本包含了将设计文件编译为硬件仿真加速器能够加载的数据库的编译流程,即可以将硬件仿真加速器的编译流程编辑为一个编译脚本(后续可以表示为compile.qel),该编译脚本包含可以调用配置脚本(后续可以表示为cfg.qel)和外设连接约束脚本(后续可以表示为sb_terminalassign.qel)的语句。
作为示例,在需要验证某个芯片的设计文件时,可以直接运行相应的编译脚本,此时就会自动执行设计文件的编译(即compile2),在编译脚本(compile.qel)运行过程中,可以调用配置脚本(cfg.qel),配置脚本中的参数就传递到了编译脚本中,此时可以从网表中选择出待验证的设计文件,然后确定该设计文件对应的外接设备的管脚约束信息,基于管脚约束信息,可以继续运行编译脚本对设计文件进行编译,得到该设计文件的数据库,将该设计文件的数据库加载至硬件仿真加速器,即可实现对该设计文件进行验证。上述编译脚本(compile.qel)中调用配置脚本(cfg.qel)的语句可以为source ../script/ cfg.qel,对此本公开并不进行限定,只要能够实现调用所需的配置脚本即可。
需要说明的是,上述BIG_DATA中所涉及的公共设计模块是独立于DATA的,在DATA需要的时候可以主动调用所需的公共设计模块,因此即使屏蔽掉一部分DATA也不会影响公共设计模块的调用。
根据本公开的示例性实施例,上述确定网表中与文件标识信息对应的设计文件内容,可以包括:确定任一账户的设计文件的文件标识信息;通过对网表中的第一设计文件内容进行临时屏蔽,确定网表中的第二设计文件内容,其中,第一设计文件内容为网表中第二设计文件内容之外的其他设计文件内容,第二设计文件内容是网表中与文件标识信息对应的设计文件内容。根据本实施例,将网表中文件标识信息对应的设计文件内容以外的设计文件内容临时屏蔽掉,可以在不改变当前网表的整体结构,即不影响其他文件标识信息对应的设计文件内容前提下,保证后面编译的仅仅是文件标识信息对应的设计文件内容,从而提高了整体效率。
作为示例,假设在集成的过程中,是将3个DATA集成到了一个BIG_DATA中,且,配置脚本中的data_num被设置为3,则表示需要将BIG_DATA中除了DATA 3之外的DATA(即DATA 1和DATA 2)全部屏蔽掉,即可以理解为在当次编译过程中DATA 1和DATA 2视为不存在,效果可以类似于图8所示,在配置脚本中的data_num被设置为3,编译脚本调用了配置脚本,读取了其中的data_num后,所对应的代码可以如下所示,对此本公开并不进行限定,只要能实现如下所示的逻辑即可:
##### stub unused modules #######
if{$data_num ==1}{
instanceStub -add {BIG_DATA.DATA_2}
instanceStub -add {BIG_DATA.DATA_3}
}
if {$data_num == 2} {
instanceStub -add {BIG_DATA.DATA_1}
instanceStub -add {BIG_DATA.DATA_3}
}
if {$data_num == 3} {
instanceStub -add {BIG_DATA.DATA_1}
instanceStub -add {BIG_DATA.DATA_2}
}
需要说明的是,上述代码采用的是工具命令语言(Tool Command Language,缩写为TCL),对此本公开也不进行限定。
根据本公开的示例性实施例,上述对网表中的第一设计文件内容进行临时屏蔽,可以包括:在网表中插入第一设计文件内容对应的替身代码,并使第一设计文件内容的代码接口指向替身代码,其中,替身代码为不执行任何具体操作的代码。根据本实施例,能够临时屏蔽网表中当前行为不感兴趣的指定内容,提高当前行为的整体效率,且不会改变当前网表的整体结构。
本实施例可以通过stub命令,也可以通过其他具有相似功能的命令实现,对此本公开并不进行限定。
作为示例,以stub命令为例,此时上述替身代码为桩代码,该“桩代码”可以理解为“不感兴趣的部分”的替身代码,其效果类似于将“不感兴趣的部分”屏蔽掉了。下面以屏蔽掉定义好的组件“ComponentA”为例简要介绍stub命令,此时,代码对应如下:
Stubs:{
ComponentA: true
}
上述代码的含义即用“桩代码”替换了原始的组件,但组件外部的接口不变,只是组件的内部方法被不做任何事情的伪造方法替代了,其效果相当于是临时屏蔽了该组件;可见,通过向stub命令代码中传入指定组件的名称,能够临时屏蔽当前源代码中当前行为(例如对部分代码进行测试)不感兴趣的指定组件,提高当前行为的整体效率,且不会改变当前源代码的整体结构;需要说明的是,stub命令的具体实现方式有多种,这里就不展开论述了。
根据本公开的示例性实施例,配置脚本还包含任一账户的设计文件对应的外接设备的设备标识信息,其中,确定任一账户的设计文件对应的外接设备的管脚约束信息,可以包括:通过调用的配置脚本,确定与设备标识信息对应的外设连接约束脚本;通过调用外设连接约束脚本,确定任一账户的设计文件对应的外接设备的管脚约束信息。根据本实施例,配置脚本还设置了待验证的设计文件对应的外接设备的设备标识信息,基于此,可以通过调用的配置脚本,直接调用所需的外设连接脚本,来确定管脚约束,因此,通过配置脚本实现了灵活的调度外设,提高了指定外设连接的效率。
上述配置脚本也可以包括待验证的设计文件对应的外接设备的设备标识信息,此时,配置脚本即可以包含用于选择本次使用的DATA的文件标识信息,还可以包含本次使用的DATA的外设的设备标识信息。例如,此时配置脚本中的部分语句示例可以如下所示,对此本公开并不进行限定,只要能实现如下所示的功能即可:
#选择DATA #
set data_num 3
#选择外设
set en_eth 1
set en_sata 0
set en_usb_host 0
set en_usb_device 0
set en_video_audio 0
set en_pcie 1
set en_hdmi 0
set en_csi 0
set en_dsi 0
其中,上述示例中set data_num 3表示选择BIG_DATA中序号为3的DATA 3为待验证的设计文件;eth、sata、usb_host、usb_device等表示各个外设的名称,“1”表示待验证的设计文件选择连接该外设,“0”表示待验证的设计文件不连接该外设,而上述示例中每行中的en表示“使能”的意思,如en_eth中的en表示是否使用该外设的意思。需要说明的是,也可以单独设置一个en,当en为1表示待验证的设计文件需要连接外接设备,当en为0表示待验证的设计文件不需要连接外接设备,对此本公开并不进行限定。需要说明的是,上述代码采用的是工具命令语言(Tool Command Language,缩写为TCL),对此本公开也不进行限定。
上述外设连接约束脚本包含了相应的外接设备的管脚约束信息,运行该脚本即可以得到相应的外接设备的管脚约束信息。每个外接设备都对应一个外设连接约束脚本,所以可以提前将所有外设的外设连接约束脚本准备好,供编译脚本和配置脚本调用。需要说明的是,外设连接约束脚本(表示为sb_terminalassign.qel)中的“sb”是“SpeedBridge”的简写,对于不同外设的外设连接约束脚本而言,可以将“sb”替换为相应外设的名称即可。外设连接约束脚本中的部分语句示例可以如下所示,对此本公开并不进行限定,只要可以实现如下所示的功能即可:
#Define Physical constructs
targetType -add UART_system {
cableConnection -add {UART_CABLE.HDDC VCBL_1}
pipelineTargetInputs -add {UART_CABLE}
terminalAssign -add {UART_CABLE A6 v_uart0_rx}
terminalAssign -add {UART_CABLE A8 v_uart0_tx}
terminalAssign -add {UART_CABLE B16 v_uart1_rx}
terminalAssign -add {UART_CABLE B19 v_uart1_tx}
}
以上述terminalAssign -add {UART_CABLE A6 v_uart0_rx}为例对语句的含义进行说明,UART_CABLE表示硬件仿真加速器所用接口连线,A6表示硬件仿真加速器所用接口管脚,v_uart0_rx表示硬件仿真加速器和外接设备之间的逻辑信号,这些参数用于声明外接设备的管脚约束,对此本公开并不进行限定。需要说明的是,上述代码采用的是工具命令语言(Tool Command Language,缩写为TCL),对此本公开也不进行限定。
作为示例,通过调用的配置脚本,根据配置脚本(cfg.qel)中的所记载的外设配置信息,调用相应的外设连接约束脚本,具体为,针对如上所示的配置脚本示例中所有设置为“1”的外设,可以调用提前准备好的外设连接约束脚本。编译脚本中调用相应的外设连接约束脚本部分代码如下所示,对此本公开并不进行限定,只要能实现如下所示的逻辑即可:
#ethernet speedbridge
if {$en_eth == 1} {
puts"\nMessage: Ethernet SpeedBridge Enabled\n"
source ../scripts/eth_terminalassign.qel
}
# pcie speedbridge
if {$en_pcie == 1} {
puts"\nMessage: PCIe4.0 SpeedBridge Enabled\n"
source ../scripts/pcie_terminalassign.qel
}
在调用外设连接约束脚本后,根据该外设连接约束脚本,即可以确定待验证的设计文件对应的外接设备的管脚约束信息。需要说明的是,上述代码采用的是工具命令语言(Tool Command Language,缩写为TCL),对此本公开也不进行限定。
根据本公开的示例性实施例,在调用外设连接约束脚本之前,还可以在本地的存储器中,查询与设备标识信息对应的外设连接约束脚本;在查询结果显示本地的存储器不存在对应的外设连接约束脚本的情况下,创建对应的外设连接约束脚本;在查询结果显示本地的存储器存在对应的外设连接约束脚本的情况下,直接调用对应的外设连接约束脚本。根据本实施例,如果外设连接约束脚本在本地存储器中存在,则可以直接沿用已有的外设连接约束脚本,只有本地的存储器不存在所需的外设连接约束脚本的情况下,才会启动创建外设连接脚本的创建过程,减少了创建的时间,也即减少了验证时间。
作为示例,可以将前面创建过的外设连接脚本存储在存储器中,当后续再次需要该外设连接脚本,直接调用该外设连接脚本即可,无需再次创建该外设连接脚本,也即,只需针对硬件仿真加速器上首次使用的外接设备编辑相应的外设连接约束脚本,若没有新增外接设备,则利用配置脚本对存储器中已有的外设连接约束脚本进行灵活调度即可,无需重复编辑外设连接约束脚本,减少了编辑脚本的时间,也进一步地减少了芯片的验证时间。
根据本公开的示例性实施例,配置脚本还包含任一账户的设计文件对应的外接设备的使能信息,从而在使能信息指示需要连接外接设备的情况下,调用外设连接约束脚本;在使能信息指示不需要连接外接设备的情况下,继续运行编译脚本对设计文件内容进行编译,得到任一账户的设计文件的数据库。根据本实施例,配置脚本中还设置了使能信息,指示是否需要连接外设,如果使能信息指示不需要外接设备时,可以直接继续运行编译脚本即可,无需在调用外设脚本,减少了调用过程,提高了验证的效率。
作为示例,可以在配置脚本中单独设置en,当en为1表示待验证的设计文件需要连接外接设备,当en为0表示待验证的设计文件不需要连接外接设备,因此,只要在en为1才进一步通过配置脚本中哪些外设设置为1,确定待验证的设计文件需要连接哪些外接设备,减少了配置脚本的调用时间,也进一步地提高了设计文件的验证效率。
根据本公开的示例性实施例,在运行网表对应的编译脚本,调用任一账户的配置脚本之前,还可以基于网表,获取任一账户的设计文件在文件集中的标识,基于标识,设置配置脚本模版中的文件参数和外接设备参数,得到任一账户的设计文件的配置脚本,其中,配置脚本模版包含用于设置待验证的设计文件的文件标识信息的文件参数和用于设置待验证的设计文件对应的外接设备的设备标识信息的外接设备参数。根据本实施例,只需要维护一个配置脚本,无需每次都修改编译脚本和外设连接约束脚本,减少了维护脚本的时间。
上述配置脚本模版可以预先在运行时服务器配置好,其包含用于设置待验证的设计文件的文件标识信息的文件参数和用于设置待验证的设计文件对应的外接设备的设备标识信息的外接设备参数,每个设计文件在使用配置脚本模版时,仅仅需要更改其中参数为自己对应的参数即可。上述配置脚本模版可以存储在运行时服务器的存储器,也可以存储在云端上其他存储器,对此本公开并不进行限定。
作为示例,在运行时服务器接收到网表后,从存储器中读取配置脚本模版,并开始编辑该网表对应的BIG_DATA的配置脚本和外设连接约束脚本(如果存储器存在该约束脚本,则无需编辑该约束脚本)。假设所需的外设连接约束脚本已存在于存储器,所以仅仅需要编辑配置脚本,此时可以获取待验证的设计文件在文件集中的标识,将配置脚本中的文件参数替换为该标识,将外接设备参数按待验证的设计文件所需的外接设备来设置,即将需要连接的外接设备对应的外接设备参数设置为1。然后,运行编译脚本,调用该配置脚本和相关的外设连接约束脚本,通过运行编译脚本将BIG_DATA再次编译(compile2)为硬件加速器能够加载的数据库(DB)。
为了方便理解本公开的方案,下面结合相关技术中的方案与本公开的方案进行对比说明,以三个设计文件同时使用一套硬件仿真加速器且分别调用不同外设为例:
相关技术中,针对三个设计文件需要进行如下操作:1、在账户所在的本地对设计文件进行编译(编译次数为3*compile1),得到每个设计文件相应的DATA;2、将三个设计文件编译后的DATA依次上传到云端(上传次数为3*trans);3、为每个设计文件指定所需的外设之后再次进行编译(编译次数为3*compile2),得到每个设计文件相应的数据库;4、将各自的数据库加载到硬件仿真加速器上。
使用本公开的方法后,针对三个设计文件需要进行如下操作:1、将3个设计文件集成到了一起得到BIG_DATA,并对BIG_DATA统一进行编译(编译次数为1*compile1);2、将编译后的BIG_DATA上传到云端(上传次数为1*trans);3、通过配置脚本为每个设计文件指定所需的外设之后,再次进行编译(编译次数为3*compile2);4、将各自的数据库加载到硬件仿真加速器上。
可见,使用了本公开的方案后,compile1和trans的次数由3次减少到了1次,提高了设计文件的编译效率和传输效率,尽管使用本公开的方法后,compile1和trans中单次编译和单次传输的内容增加了,但是考虑到编译服务器的性能限制和多次编译上传时人员盯梢的问题,与相关技术方案中执行多次compile1和trans相比,使用本公开的方案后,单次compile1和trans的耗时要明显少于相关技术方案中多次compile1和trans的总耗时。
综上,本公开将多个设计文件合并到一个文件集中,将合并了设计文件的文件集统一进行编译后直接上传,如此仅上传一次即可,降低了设计文件的编译时间和上传次数;同时,在复杂场景下,利用配置脚本可以灵活调用文件集中的待验证的设计文件以及相应的外接设备,也使得硬件仿真加速器可以灵活的调用设计文件对应的数据库,极大减少了需要维护的设计文件的数量,因此,解决了硬件仿真加速器的云端在复杂场景中的效率问题,也节省了设计文件的编译时间和维护成本,进一步缩短了版本迭代或坏线后设计文件的编译时间。
需要说明的是,本公开所涉及的账户的信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于展示的数据、分析的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
图9是根据一示例性实施例示出的一种芯片验证装置的框图。参照图9,该装置包括网表接收单元90和验证单元92。
网表接收单元90,被配置为接收用户侧发送的网表,其中,网表是通过对文件集进行编译得到的,文件集包含至少一个账户的设计文件且每个设计文件相互独立,每个设计文件包含用于设计相应账户的芯片的信息;验证单元92,被配置为响应于接收到至少一个账户中任一账户启动芯片验证流程的请求,基于网表,对任一账户的设计文件进行验证。
根据本公开的实施例,验证单元92,还被配置为运行网表对应的编译脚本,调用任一账户的配置脚本,其中,编译脚本包含将设计文件编译为硬件仿真加速器能够加载的数据库的编译流程,配置脚本包含任一账户的设计文件的文件标识信息;通过调用的配置脚本,确定网表中与文件标识信息对应的设计文件内容;确定任一账户的设计文件对应的外接设备的管脚约束信息;基于管脚约束信息,继续运行编译脚本对设计文件内容进行编译,得到任一账户的设计文件的数据库;将数据库加载至硬件仿真加速器,对任一账户的设计文件进行验证。
根据本公开的实施例,配置脚本还包含任一账户的设计文件对应的外接设备的设备标识信息,其中,验证单元92,还被配置为通过调用的配置脚本,确定与设备标识信息对应的外设连接约束脚本;通过调用外设连接约束脚本,确定任一账户的设计文件对应的外接设备的管脚约束信息。
根据本公开的实施例,验证单元92,还被配置为在运行网表对应的编译脚本,调用任一账户的配置脚本之前,基于网表,获取任一账户的设计文件在文件集中的标识,基于标识,设置配置脚本模版中的文件参数和外接设备参数,得到任一账户的设计文件的配置脚本,其中,配置脚本模版包含用于设置待验证的设计文件的文件标识信息的文件参数和用于设置待验证的设计文件对应的外接设备的设备标识信息的外接设备参数。
根据本公开的实施例,验证单元92,还被配置为在调用外设连接约束脚本之前,在本地的存储器中,查询与设备标识信息对应的外设连接约束脚本;在查询结果显示本地的存储器不存在对应的外设连接约束脚本的情况下,创建对应的外设连接约束脚本;在查询结果显示本地的存储器存在对应的外设连接约束脚本的情况下,直接调用对应的外设连接约束脚本。
根据本公开的实施例,配置脚本还包含任一账户的设计文件对应的外接设备的使能信息,其中,验证单元92,还被配置为在使能信息指示需要连接外接设备的情况下,调用与设备标识信息对应的外设连接约束脚本;在使能信息指示不需要连接外接设备的情况下,继续运行编译脚本对设计文件内容进行编译,得到任一账户的设计文件的数据库。
根据本公开的实施例,验证单元92,还被配置为确定任一账户的设计文件的文件标识信息;通过对网表中的第一设计文件内容进行临时屏蔽,确定网表中的第二设计文件内容,其中,第一设计文件内容为网表中第二设计文件内容之外的其他设计文件内容,第二设计文件内容是网表中与文件标识信息对应的设计文件内容。
根据本公开的实施例,验证单元92,还被配置为在网表中插入第一设计文件内容对应的替身代码,并使第一设计文件内容的代码接口指向替身代码,其中,替身代码为不执行任何具体操作的代码。
图10是根据另一示例性实施例示出的一种芯片验证装置的框图。参照图10,该装置包括获取单元100、合并单元102、编译单元104和上传单元106。
获取单元100,被配置为获取至少一个账户的设计文件,其中,每个设计文件包含用于设计相应账户的芯片的信息;合并单元102,被配置为将至少一个账户的设计文件合并到一个文件集中,其中,文件集中每个设计文件相互独立;编译单元104,被配置为对文件集进行编译,得到文件集对应的网表;上传单元106,被配置为将网表上传到运行时服务器,以便运行时服务器基于网表对至少一个账户中任一账户的设计文件进行验证。
根据本公开的实施例,编译单元104,还被配置为确定文件集中设计文件所涉及的设计模块中重复的设计模块;在文件集中保留重复的设计模块中的一个设计模块的信息;对处理后的文件集进行编译,得到文件集对应的网表。
根据本公开的实施例,上传单元106,还被配置为对网表进行加密处理;将加密后的网表上传到运行时服务器。
根据本公开的实施例,可提供一种电子设备。图11是根据本公开实施例的一种电子设备1100的框图,该电子设备包括至少一个存储器1101和至少一个处理器1102,所述至少一个存储器中存储有计算机可执行指令集合,当计算机可执行指令集合被至少一个处理器执行时,执行根据本公开实施例的芯片验证方法。
作为示例,电子设备1100可以是PC计算机、平板装置、个人数字助理、智能手机、或其他能够执行上述指令集合的装置。这里,电子设备1000并非必须是单个的电子设备,还可以是任何能够单独或联合执行上述指令(或指令集)的装置或电路的集合体。电子设备1100还可以是集成控制系统或系统管理器的一部分,或者可被配置为与本地或远程(例如,经由无线传输)以接口互联的便携式电子设备。
在电子设备1100中,处理器1102可包括中央处理器(CPU)、图形处理器(GPU)、可编程逻辑装置、专用处理器系统、微控制器或微处理器。作为示例而非限制,处理器1102还可包括模拟处理器、数字处理器、微处理器、多核处理器、处理器阵列、网络处理器等。
处理器1102可运行存储在存储器中的指令或代码,其中,存储器1101还可以存储数据。指令和数据还可经由网络接口装置而通过网络被发送和接收,其中,网络接口装置可采用任何已知的传输协议。
存储器1101可与处理器1102集成为一体,例如,将RAM或闪存布置在集成电路微处理器等之内。此外,存储器1101可包括独立的装置,诸如,外部盘驱动、存储阵列或任何数据库系统可使用的其他存储装置。存储器1101和处理器1102可在操作上进行耦合,或者可例如通过I/O端口、网络连接等互相通信,使得处理器1102能够读取存储在存储器1101中的文件。
此外,电子设备1100还可包括视频显示器(诸如,液晶显示器)和用户交互接口(诸如,键盘、鼠标、触摸输入装置等)。电子设备的所有组件可经由总线和/或网络而彼此连接。
根据本公开的实施例,还可提供一种计算机可读存储介质,其中,当计算机可读存储介质中的指令被至少一个处理器运行时,促使至少一个处理器执行本公开实施例的芯片验证方法。这里的计算机可读存储介质的示例包括:只读存储器(ROM)、随机存取可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、非易失性存储器、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、蓝光或光盘存储器、硬盘驱动器(HDD)、固态硬盘(SSD)、卡式存储器(诸如,多媒体卡、安全数字(SD)卡或极速数字(XD)卡)、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及任何其他装置,所述任何其他装置被配置为以非暂时性方式存储计算机程序以及任何相关联的数据、数据文件和数据结构并将所述计算机程序以及任何相关联的数据、数据文件和数据结构提供给处理器或计算机使得处理器或计算机能执行所述计算机程序。上述计算机可读存储介质中的计算机程序可在诸如客户端、主机、代理装置、服务器等计算机设备中部署的环境中运行,此外,在一个示例中,计算机程序以及任何相关联的数据、数据文件和数据结构分布在联网的计算机系统上,使得计算机程序以及任何相关联的数据、数据文件和数据结构通过一个或多个处理器或计算机以分布式方式存储、访问和执行。
根据本公开实施例,提供了一种计算机程序产品,包括计算机指令,计算机指令被处理器执行时实现本公开实施例的芯片验证方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (14)

1.一种芯片验证方法,其特征在于,包括:
接收用户侧发送的网表,其中,所述网表是通过对文件集进行编译得到的,所述文件集包含至少一个账户的设计文件且每个设计文件相互独立,每个设计文件包含用于设计相应账户的芯片的信息;
响应于接收到所述至少一个账户中任一账户启动芯片验证流程的请求,基于所述网表,对所述任一账户的设计文件进行验证;
其中,所述基于所述网表,对所述任一账户的设计文件进行验证,包括:
运行所述网表对应的编译脚本,调用所述任一账户的配置脚本,其中,所述编译脚本包含将设计文件编译为硬件仿真加速器能够加载的数据库的编译流程,所述配置脚本包含所述任一账户的设计文件的文件标识信息;
通过调用的所述配置脚本,确定所述网表中与所述文件标识信息对应的设计文件内容;
确定所述任一账户的设计文件对应的外接设备的管脚约束信息;
基于所述管脚约束信息,继续运行所述编译脚本对所述设计文件内容进行编译,得到所述任一账户的设计文件的数据库;
将所述数据库加载至所述硬件仿真加速器,对所述任一账户的设计文件进行验证。
2.如权利要求1所述的芯片验证方法,其特征在于,所述配置脚本还包含所述任一账户的设计文件对应的外接设备的设备标识信息,
其中,所述确定所述任一账户的设计文件对应的外接设备的管脚约束信息,包括:
通过调用的所述配置脚本,确定与所述设备标识信息对应的外设连接约束脚本;
通过调用所述外设连接约束脚本,确定所述任一账户的设计文件对应的外接设备的管脚约束信息。
3.如权利要求2所述的芯片验证方法,其特征在于,在运行所述网表对应的编译脚本,调用所述任一账户的配置脚本之前,还包括:
基于所述网表,获取所述任一账户的设计文件在所述文件集中的标识,
基于所述标识,设置配置脚本模版中的文件参数和外接设备参数,得到所述任一账户的设计文件的配置脚本,其中,所述配置脚本模版包含用于设置待验证的设计文件的文件标识信息的文件参数和用于设置所述待验证的设计文件对应的外接设备的设备标识信息的外接设备参数。
4.如权利要求2所述的芯片验证方法,其特征在于,在调用所述外设连接约束脚本之前,还包括:
在本地的存储器中,查询与所述设备标识信息对应的外设连接约束脚本;
在查询结果显示本地的存储器不存在所述对应的外设连接约束脚本的情况下,创建所述对应的外设连接约束脚本;
在查询结果显示本地的存储器存在所述对应的外设连接约束脚本的情况下,直接调用所述对应的外设连接约束脚本。
5.如权利要求2所述的芯片验证方法,其特征在于,所述配置脚本还包含所述任一账户的设计文件对应的外接设备的使能信息,
其中,所述方法还包括:
在所述使能信息指示需要连接外接设备的情况下,调用所述外设连接约束脚本;
在所述使能信息指示不需要连接外接设备的情况下,继续运行所述编译脚本对所述设计文件内容进行编译,得到所述任一账户的设计文件的数据库。
6.如权利要求1所述的芯片验证方法,其特征在于,所述确定所述网表中与所述文件标识信息对应的设计文件内容,包括:
确定所述任一账户的设计文件的文件标识信息;
通过对所述网表中的第一设计文件内容进行临时屏蔽,确定所述网表中的第二设计文件内容,其中,所述第一设计文件内容为所述网表中所述第二设计文件内容之外的其他设计文件内容,所述第二设计文件内容是所述网表中与所述文件标识信息对应的设计文件内容。
7.如权利要求6所述的芯片验证方法,其特征在于,所述对所述网表中的第一设计文件内容进行临时屏蔽,包括:
在所述网表中插入第一设计文件内容对应的替身代码,并使所述第一设计文件内容的代码接口指向所述替身代码,其中,所述替身代码为不执行任何具体操作的代码。
8.一种芯片验证方法,其特征在于,包括:
获取至少一个账户的设计文件,其中,每个设计文件包含用于设计相应账户的芯片的信息;
将所述至少一个账户的设计文件合并到一个文件集中,其中,所述文件集中每个设计文件相互独立;
对所述文件集进行编译,得到所述文件集对应的网表;
将所述网表上传到运行时服务器,以便所述运行时服务器基于所述网表对所述至少一个账户中任一账户的设计文件进行验证;
其中,所述运行时服务器基于所述网表对所述任一账户的设计文件进行验证,通过如下方式实现:
运行所述网表对应的编译脚本,调用所述任一账户的配置脚本,其中,所述编译脚本包含将设计文件编译为硬件仿真加速器能够加载的数据库的编译流程,所述配置脚本包含所述任一账户的设计文件的文件标识信息;
通过调用的所述配置脚本,确定所述网表中与所述文件标识信息对应的设计文件内容;
确定所述任一账户的设计文件对应的外接设备的管脚约束信息;
基于所述管脚约束信息,继续运行所述编译脚本对所述设计文件内容进行编译,得到所述任一账户的设计文件的数据库;
将所述数据库加载至所述硬件仿真加速器,对所述任一账户的设计文件进行验证。
9.如权利要求8所述的芯片验证方法,其特征在于,所述对所述文件集进行编译,得到所述文件集对应的网表,包括:
确定所述文件集中设计文件所涉及的设计模块中重复的设计模块;
在所述文件集中保留所述重复的设计模块中的一个设计模块的信息;
对处理后的文件集进行编译,得到所述文件集对应的网表。
10.如权利要求8所述的芯片验证方法,其特征在于,所述将所述网表上传到运行时服务器,包括:
对所述网表进行加密处理;
将加密后的网表上传到运行时服务器。
11.一种芯片验证装置,其特征在于,包括:
网表接收单元,被配置为接收用户侧发送的网表,其中,所述网表是通过对文件集进行编译得到的,所述文件集包含至少一个账户的设计文件且每个设计文件相互独立,每个设计文件包含用于设计相应账户的芯片的信息;
验证单元,被配置为响应于接收到所述至少一个账户中任一账户启动芯片验证流程的请求,基于所述网表,对所述任一账户的设计文件进行验证;
所述验证单元,还被配置为运行所述网表对应的编译脚本,调用所述任一账户的配置脚本,其中,所述编译脚本包含将设计文件编译为硬件仿真加速器能够加载的数据库的编译流程,所述配置脚本包含所述任一账户的设计文件的文件标识信息;通过调用的所述配置脚本,确定所述网表中与所述文件标识信息对应的设计文件内容;确定所述任一账户的设计文件对应的外接设备的管脚约束信息;基于所述管脚约束信息,继续运行所述编译脚本对所述设计文件内容进行编译,得到所述任一账户的设计文件的数据库;将所述数据库加载至所述硬件仿真加速器,对所述任一账户的设计文件进行验证。
12.一种芯片验证装置,其特征在于,包括:
获取单元,被配置为获取至少一个账户的设计文件,其中,每个设计文件包含用于设计相应账户的芯片的信息;
合并单元,被配置为将所述至少一个账户的设计文件合并到一个文件集中,其中,所述文件集中每个设计文件相互独立;
编译单元,被配置为对所述文件集进行编译,得到所述文件集对应的网表;
上传单元,被配置为将所述网表上传到运行时服务器,以便所述运行时服务器基于所述网表对所述至少一个账户中任一账户的设计文件进行验证;
其中,所述运行时服务器基于所述网表对所述任一账户的设计文件进行验证,通过如下方式实现:
运行所述网表对应的编译脚本,调用所述任一账户的配置脚本,其中,所述编译脚本包含将设计文件编译为硬件仿真加速器能够加载的数据库的编译流程,所述配置脚本包含所述任一账户的设计文件的文件标识信息;
通过调用的所述配置脚本,确定所述网表中与所述文件标识信息对应的设计文件内容;
确定所述任一账户的设计文件对应的外接设备的管脚约束信息;
基于所述管脚约束信息,继续运行所述编译脚本对所述设计文件内容进行编译,得到所述任一账户的设计文件的数据库;
将所述数据库加载至所述硬件仿真加速器,对所述任一账户的设计文件进行验证。
13.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至10中任一项所述的芯片验证方法。
14.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的指令被至少一个处理器运行时,促使所述至少一个处理器执行如权利要求1至10中任一项所述的芯片验证方法。
CN202310849498.8A 2023-07-12 2023-07-12 芯片验证方法及装置、电子设备、计算机可读存储介质 Active CN116562204B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310849498.8A CN116562204B (zh) 2023-07-12 2023-07-12 芯片验证方法及装置、电子设备、计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310849498.8A CN116562204B (zh) 2023-07-12 2023-07-12 芯片验证方法及装置、电子设备、计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN116562204A CN116562204A (zh) 2023-08-08
CN116562204B true CN116562204B (zh) 2023-09-22

Family

ID=87498688

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310849498.8A Active CN116562204B (zh) 2023-07-12 2023-07-12 芯片验证方法及装置、电子设备、计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN116562204B (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5541849A (en) * 1990-04-06 1996-07-30 Lsi Logic Corporation Method and system for creating and validating low level description of electronic design from higher level, behavior-oriented description, including estimation and comparison of timing parameters
US6216252B1 (en) * 1990-04-06 2001-04-10 Lsi Logic Corporation Method and system for creating, validating, and scaling structural description of electronic device
US7100133B1 (en) * 2000-06-23 2006-08-29 Koninklijke Philips Electronics N.V Computer system and method to dynamically generate system on a chip description files and verification information
CN101008915A (zh) * 2006-12-29 2007-08-01 深圳市明微电子有限公司 网络芯片的自动化验证方法
US10922462B1 (en) * 2019-11-22 2021-02-16 SiFive, Inc. Intellectual property block validation and design integration for integrated circuits
CN112580295A (zh) * 2020-11-24 2021-03-30 北京智芯微电子科技有限公司 多核SoC芯片的自动化验证方法、系统及装置
CN112732636A (zh) * 2021-01-11 2021-04-30 上海金卓科技有限公司 基于多fpga的芯片原型验证系统的配置方法、装置和设备
CN112949233A (zh) * 2021-03-08 2021-06-11 北京士昌鼎科技有限公司 Fpga芯片的自动化开发方法及装置、电子设备
CN114325336A (zh) * 2021-12-31 2022-04-12 眸芯科技(上海)有限公司 基于fpga的面向wgl的芯片测试系统及应用
CN115630036A (zh) * 2022-11-14 2023-01-20 英诺达(成都)电子科技有限公司 报错信息处理方法、装置、设备、存储介质和程序产品
CN218938947U (zh) * 2023-03-08 2023-04-28 英诺达(成都)电子科技有限公司 基于硬件仿真加速器的jtag接口适配板及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7124376B2 (en) * 2000-05-02 2006-10-17 Palmchip Corporation Design tool for systems-on-a-chip

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5541849A (en) * 1990-04-06 1996-07-30 Lsi Logic Corporation Method and system for creating and validating low level description of electronic design from higher level, behavior-oriented description, including estimation and comparison of timing parameters
US6216252B1 (en) * 1990-04-06 2001-04-10 Lsi Logic Corporation Method and system for creating, validating, and scaling structural description of electronic device
US7100133B1 (en) * 2000-06-23 2006-08-29 Koninklijke Philips Electronics N.V Computer system and method to dynamically generate system on a chip description files and verification information
CN101008915A (zh) * 2006-12-29 2007-08-01 深圳市明微电子有限公司 网络芯片的自动化验证方法
US10922462B1 (en) * 2019-11-22 2021-02-16 SiFive, Inc. Intellectual property block validation and design integration for integrated circuits
CN112580295A (zh) * 2020-11-24 2021-03-30 北京智芯微电子科技有限公司 多核SoC芯片的自动化验证方法、系统及装置
CN112732636A (zh) * 2021-01-11 2021-04-30 上海金卓科技有限公司 基于多fpga的芯片原型验证系统的配置方法、装置和设备
CN112949233A (zh) * 2021-03-08 2021-06-11 北京士昌鼎科技有限公司 Fpga芯片的自动化开发方法及装置、电子设备
CN114325336A (zh) * 2021-12-31 2022-04-12 眸芯科技(上海)有限公司 基于fpga的面向wgl的芯片测试系统及应用
CN115630036A (zh) * 2022-11-14 2023-01-20 英诺达(成都)电子科技有限公司 报错信息处理方法、装置、设备、存储介质和程序产品
CN218938947U (zh) * 2023-03-08 2023-04-28 英诺达(成都)电子科技有限公司 基于硬件仿真加速器的jtag接口适配板及系统

Also Published As

Publication number Publication date
CN116562204A (zh) 2023-08-08

Similar Documents

Publication Publication Date Title
US10922462B1 (en) Intellectual property block validation and design integration for integrated circuits
US11010283B2 (en) Mock-based unit test(s) for an end-to-end test of a code snippet
US11914933B2 (en) Generation of dynamic design flows for integrated circuits
US9740586B2 (en) Flexible configuration and control of a testing system
US10180850B1 (en) Emulating applications that use hardware acceleration
US8181131B2 (en) Enhanced analysis of array-based netlists via reparameterization
CN112068852B (zh) 基于国产服务器的开源软件安装方法、系统及设备和介质
US20140173564A1 (en) Test scope determination based on code change(s)
US10380283B2 (en) Functional verification with machine learning
US7437282B2 (en) Method and apparatus to provide alternative stimulus to signals internal to a model actively running on a logic simulation hardware emulator
US8904346B1 (en) Method and system for automated load testing of web applications
CN115952758A (zh) 芯片验证方法、装置、电子设备及存储介质
US20200242006A1 (en) Realization of functional verification debug station via cross-platform record-mapping-replay technology
US10614193B2 (en) Power mode-based operational capability-aware code coverage
US20050049841A1 (en) Simulation management system
CN116562204B (zh) 芯片验证方法及装置、电子设备、计算机可读存储介质
US7165201B2 (en) Method for performing testing of a simulated storage device within a testing simulation environment
CN111240808A (zh) 一种核电站模拟机运行数据开发和管理系统
Wannipurage et al. A Framework to capture and reproduce the Absolute State of Jupyter Notebooks
US7340661B2 (en) Computer program product for performing testing of a simulated storage device within a testing simulation environment
CN108334313A (zh) 用于大型soc研发的持续集成方法、装置及代码管理系统
WO2020138386A1 (ja) 以前のトレースデータを使用する協調シミュレーションリピータ
US20200349304A1 (en) Method, apparatus, device, and medium for implementing simulator
US20080127075A1 (en) Method and system for enforcing version control
US20240160559A1 (en) Automated decoupling of unit tests

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant