首页> 中国专利> 一种芯片设计仿真文件到Pattern文件的转换方法及其系统

一种芯片设计仿真文件到Pattern文件的转换方法及其系统

摘要

本发明提出了一种芯片设计仿真文件到Pattern文件的转换方法及其系统,方法包括:读取配置文件获取引脚信息,并创建读线程、写线程和Pattern文件;主线程读取仿真文件查找测试引脚的引脚定义;调用各个读线程并行读取该仿真文件,记录仿真文件中的时刻状态数据;每个写线程解析Pattern行向量并将其写入对应的一个Pattern文件中;当仿真文件被读取完毕或仿真文件在结束时间戳之前的时刻状态数据已被解析完毕时,结束格式转换。本发明的方案能够高效、灵活地实现芯片设计仿真文件到Pattern格式的转换,利用配置文件中的多个行向量实现多线程转换,解析时间短、转换效率高,不仅能够同时获取多个Pattern文件,而且无需占用过多的内存和存储空间,存储压力小。

著录项

  • 公开/公告号CN115630594A

    专利类型发明专利

  • 公开/公告日2023-01-20

    原文格式PDF

  • 申请/专利权人 杭州加速科技有限公司;

    申请/专利号CN202211629360.9

  • 发明设计人 邬刚;凌云;

    申请日2022-12-19

  • 分类号G06F30/30(2020.01);G06F9/445(2018.01);

  • 代理机构深圳智趣知识产权代理事务所(普通合伙) 44486;

  • 代理人李兴生

  • 地址 311100 浙江省杭州市余杭区余杭街道文一西路1818-1号5G创新园J1层-103M

  • 入库时间 2023-06-19 18:24:15

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-03-21

    授权

    发明专利权授予

  • 2023-02-14

    实质审查的生效 IPC(主分类):G06F30/30 专利申请号:2022116293609 申请日:20221219

    实质审查的生效

  • 2023-01-20

    公开

    发明专利申请公布

说明书

技术领域

本发明涉及芯片仿真文件转换领域,特别涉及一种芯片设计仿真文件到Pattern文件的转换方法及其系统。

背景技术

随着集成电路技术的不断发展和规模的不断扩大,芯片的验证和测试占有越来越重要的地位。Pattern(测试激励文件),本质就是芯片的真值表,其包含的主要内容就是输入时序与期望时序的符号组合,也包含了用于实现某些复杂功能的微指令。

ATE(Automatic Test Equipment)是自动测试设备,在芯片测试过程中,向被测试芯片的输入管脚发送Pattern行向量的输入时序,比较被测试芯片的输出管脚的输出时序与该Pattern(测试激励文件)行向量的期望时序,根据比较结果确定此测试芯片是否满足要求。

VCD(Value Change Dump)文件格式为一种通用波形文件格式,是IEEE1364标准(Verilog HDL硬件描述语言标准,p325)中定义的一种ASCII(American Standard Codefor Information Interchange,美国信息交换标准码)文件,是一个通用芯片设计仿真文件,现阶段Pattern通常都是由VCD转换成的。

现有技术中,VCD转Pattern比较好的方案是主线程在读取VCD波形文件时创建第一子线程和第二子线程,并将读取到的头节点信息数据和值变化信息数据分别存储于第一队列和第二队列,第一子线程用于对第一队列中的数据进行解析,第二子线程用于对所述第二队列中的数据进行解析。这种方案虽然一定程度上提高波形文件的解析速度,但是本质上是对VCD文件中的所有信号值变化信息数据逐行读取并解析。通常测试时,并不需要知道所有的信号的值变化信息数据,也不需要知道VCD文件中全部时间下产生的波形(只需知道某一段即可),而当前VCD文件信号值变化信息数据通常由数万行甚至数十万行组成。这样一来势必会花费大量时间解析这些不需要的信号以及信号对应的值变化信息数据,同时也必定需要花费大量空间去存储,增加存储成本。

此外,对于转换生成的Pattern文件数据相同的相邻的行通常也有数千行甚至数万行,使得Pattern文件存储空间消耗也很大。

发明内容

有鉴于此,本发明提出了一种芯片设计仿真文件到Pattern文件的转换方法及其系统,具体方案如下:

一种芯片设计仿真文件到Pattern文件的转换方法,包括如下步骤:

获取预设第一配置文件、预设第二配置文件和待转换的仿真文件;

通过读取第一配置文件获取预设测试引脚的引脚信息;

读取第二配置文件,并创建读线程、写线程和Pattern文件;其中,第二配置文件记录了包括开始时间戳、结束时间戳和切割周期在内的周期化分割信息;

主线程读取仿真文件,并基于引脚信息查找测试引脚在该仿真文件中的引脚定义;

调用各个读线程并行读取该仿真文件,基于引脚定义查找并记录仿真文件中测试引脚在从开始时间戳到结束时间戳范围内的时刻状态数据;

每个写线程基于开始时间戳和切割周期将读线程中所记录的时刻状态数据解析为Pattern行向量,并将解析出的Pattern行向量写入对应的一个Pattern文件中;

当仿真文件被读取完毕或仿真文件在结束时间戳之前的时刻状态数据已被解析完毕时,结束格式转换,得到由仿真文件转换而来的多个Pattern文件。

在一个具体实施例中,将第二配置文件中的每一行数据作为一个第一行向量;

为每个第一行向量创建一个读线程、一个写线程和一个Pattern文件,每个读线程和写线程中都记录有对应的第一行向量;

每个读线程之间相互独立,负责从仿真文件中读取测试引脚的时刻状态数据;

每个写线程之间相互独立,负责将对应读线程读取的时刻状态数据解析生成信号时序和Pattern行向量,并将Pattern行向量写入相应的Pattern文件中。

在一个具体实施例中,写线程以开始时间戳为起点开始记录信号时序,并以切割周期为单位在解析时刻状态数据过程中,不断更新信号时序;

当写线程记录的信号时序满足一个切割周期时,去除信号时序中的切割周期,同时更新信号时序种类,并基于去除信号时序前解析的时刻状态数据生成一个Pattern行向量。

在一个具体实施例中,每当生成一个Pattern行向量时,判断信号时序种类是否超过机台预设的阈值:

若是,则修改第二配置文件中的结束时间戳,并结束格式转换;

若否,则判断当前的Pattern行向量与前一个Pattern行向量在信号时序上是否一致,并在一致时修改上一次的Pattern行向量,在不一致时追加存储当前的Pattern行向量。

在一个具体实施例中,仿真文件中包括测试引脚在各个时刻点的时刻状态数据;

读线程在读取仿真文件过程中,将相邻两个时刻点的时刻状态数据作为一组行数据,以行数据的形式将仿真文件中的数据传递至写线程中;

其中,每组行数据中涉及起始时刻点、终止时刻点和处于起始时刻点到终止时刻点这一时段内的时刻状态数据。

在一个具体实施例中,在读线程中预设一个缓冲区,读线程每读取一组行数据便缓存至该缓冲区;

当达到缓冲区的上限时,读线程停止读取仿真文件,直至收到写线程的请求;

当收到写线程的请求时,读线程将缓冲区中的每一组行数据输出至写线程,并继续读取仿真文件。

在一个具体实施例中,在写线程中预设两个缓冲区,一个缓冲区负责存储由读线程输出的行数据,另一个负责存储Pattern行向量;

当负责存储行数据的缓冲区存储空间大于预设值时,写线程向读线程发出请求以补充行数据;

当负责存储Pattern行向量的缓冲区达到存储上限或所有的行数据解析完毕后,则将Pattern行向量写入Pattern文件中。

在一个具体实施例中,写线程从缓冲区中按照时间顺序依次读取行数据,获取该行数据中的起始时刻点、终止时刻点以及时刻状态数据;

以切割周期为单位对行数据进行切割,得到多个Pattern行向量;

若切割之后存在不满一个切割周期的时刻状态数据,则将该部分时刻状态数据合并至下一组行数据中,并适应性的修改下一组行数据的起始时刻点。

一种芯片设计仿真文件到Pattern文件的转换系统,包括如下:

配置单元,用于获取预设第一配置文件、预设第二配置文件和待转换的仿真文件;通过读取第一配置文件获取预设测试引脚的引脚信息;读取第二配置文件,并创建读线程、写线程和Pattern文件;其中,第二配置文件记录了包括开始时间戳、结束时间戳和切割周期在内的周期化分割信息;

主线程单元,用于通过主线程读取仿真文件,并基于引脚信息查找测试引脚在该仿真文件中的引脚定义;

读线程单元,用于调用各个读线程并行读取该仿真文件,基于引脚定义查找并记录仿真文件中测试引脚在从开始时间戳到结束时间戳范围内的时刻状态数据;

写线程单元,用于使每个写线程基于开始时间戳和切割周期将读线程中所记录的时刻状态数据解析为Pattern行向量,并将解析出的Pattern行向量写入对应的一个Pattern文件中;

输出单元,用于当仿真文件被读取完毕或仿真文件在结束时间戳之前的时刻状态数据已被解析完毕时,结束格式转换,得到由仿真文件转换而来的多个Pattern文件。

在一个具体实施例中,配置单元还包括:

将第二配置文件中的每一行数据作为一个第一行向量;

为每个第一行向量创建一个读线程、一个写线程和一个Pattern文件,每个读线程和写线程中都记录有对应的第一行向量;

每个读线程之间相互独立,负责从仿真文件中读取测试引脚的时刻状态数据;

每个写线程之间相互独立,负责将对应读线程读取的时刻状态数据解析生成信号时序和Pattern行向量,并将Pattern行向量写入相应的Pattern文件中。

有益效果:本发明提出了一种芯片设计仿真文件到Pattern文件的转换方法及其系统,能够高效、灵活地实现芯片设计仿真文件到Pattern格式的转换,利用配置文件中的多个行向量实现多线程转换,解析时间短、转换效率高,不仅能够同时获取多个Pattern文件,而且无需占用过多的内存和存储空间,存储压力小。通过定义一个反应时序的信号时序种类,能够有效避免Pattern文件因状态种类过多而无法被测试机台使用的问题。

附图说明

图1为本发明实施例转换方法流程示意图;

图2为本发明实施例的转换原理示意图;

图3为本发明实施例转换系统模块示意图。

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

附图标记:1-配置单元;2-主线程单元;3-读线程单元;4-写线程单元;5-输出单元。

具体实施方式

在下文中,将更全面地描述本发明公开的各种实施例。本发明公开可具有各种实施例,并且可在其中做出调整和改变。然而,应理解:不存在将本发明公开的各种实施例限于在此公开的特定实施例的意图,而是应将本发明公开理解为涵盖落入本发明公开的各种实施例的精神和范围内的所有调整、等同物和/或可选方案。

在本发明中,仿真文件是芯片设计仿真文件,如VCD文件等。

在本发明公开的各种实施例中使用的术语仅用于描述特定实施例的目的并且并非意在限制本发明公开的各种实施例。如在此所使用,单数形式意在也包括复数形式,除非上下文清楚地另有指示。除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本发明公开的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本发明公开的各种实施例中被清楚地限定。

实施例1

本发明实施例1公开了一种芯片设计仿真文件到Pattern文件的转换方法,通过配置文件中的行向量实现多线程转换处理,解决了芯片设计仿真文件到Pattern格式转换时解析信号状态时间长、占内存大的问题。转换方法流程图说明书附图1所示,具体方案如下:

一种芯片设计仿真文件到Pattern文件的转换方法,包括如下步骤:

101、获取预设第一配置文件、预设第二配置文件和待转换的仿真文件;

102、通过读取第一配置文件获取预设测试引脚的引脚信息;

103、读取第二配置文件,并创建读线程、写线程和Pattern文件;其中,第二配置文件记录了包括开始时间戳、结束时间戳和切割周期在内的周期化分割信息;

104、主线程读取仿真文件,并基于引脚信息查找测试引脚在该仿真文件中的引脚定义;

105、调用各个读线程并行读取该仿真文件,基于引脚定义查找并记录仿真文件中测试引脚在从开始时间戳到结束时间戳范围内的时刻状态数据;

106、每个写线程基于开始时间戳和切割周期将读线程中所记录的时刻状态数据解析为Pattern行向量,并将解析出的Pattern行向量写入对应的一个Pattern文件中;

107、当仿真文件被读取完毕或仿真文件在结束时间戳之前的时刻状态数据已被解析完毕时,结束格式转换,得到由仿真文件转换而来的多个Pattern文件。

本实施例的转换方法借助配置文件中的行向量实现多线程的格式转换,测试效率高,且无须占用过多的内存,借助线程中的缓冲区即可实现,存储成本低。

仿真文件转换为Pattern文件需要一些配置信息:1.与仿真文件中的引脚一致的被测芯片的引脚名称及类型,如输入(IN),输出(OUT)等;2.周期化分割信息,包括开始时间戳、结束时间戳以及在该时间段内的切割周期。其中,第一配置文件中存储了被测芯片的引脚信息,第二配置文件中存储有多个第一行向量,每个第一行向量记录了切割仿真文件的开始时间戳、结束时间戳以及在该时间段内的切割周期。

一个待测芯片有很多引脚,就是有很多信号,需要根据需要选择相应的引脚。本实施例将选出的引脚命名为测试引脚。测试引脚在不同文件中可能会有不同的命名方式。因此,需要先通过读取第一配置文件获取测试引脚的引脚信息。其中,引脚信息主要包括测试引脚在第一配置文件中的名称和类型。在待转换的仿真文件中,测试引脚可能存在不同的名字。引脚信息会在主线程读取仿真文件时使用。

第二配置文件中的每一行数据可看作一个行向量,本实施例将其命名为第一行向量。第一行向量记录了切割仿真文件的开始时间戳、结束时间戳以及在该时间段内的切割周期。具体地,为每个第一行向量创建一个读线程、一个写线程和一个Pattern文件。每个读线程和写线程中都记录有对应的第一行向量。每个读线程之间相互独立,负责从仿真文件中读取测试引脚的时刻状态数据;每个写线程之间相互独立,负责将对应读线程所读取的时刻状态数据解析成信号时序和Pattern行向量,并将Pattern行向量写入相应的Pattern文件中。需要说明的是,只有记录同一第一行向量的读线程和写线程才是同步运行关系,其余的读线程和写线程之间都是相互独立的。

多个行向量意味着最终能够输出多个Pattern文件,解决了现有技术中一次只能生成一个Pattern文件的弊端。假设第二配置文件中有n行数据,就会有n个第一行向量,最终会同时得到n个Pattern文件。

通过主线程读取仿真文件在预设信号定义域查找测试引脚的相关定义和信息,如果读到测试引脚,则记录其名称和类型。没有则忽略。以VCD文件为例。VCD文件中预设有信号定义区、信号初始化区以及信号变化区,可在信号定义区和信号变化区筛选测试引脚的别名。主线程开始读取VCD文件,并用列表sid记录列表signalName中测试引脚在VCD中的别名。用列表signalState记录所选信号的初始化状态。主线程获取完VCD文件中所选信号定义和初始化状态后,调用各个读线程。

各个读线程先并行读取仿真文件的数据直到找到读线程所记录的第一行向量的开始时间戳。开始时间戳和结束时间戳相当于规定了一个大的时间范围,该范围内的数据是需要转换到Pattern中的,需要解析处于开始时间戳到结束时间戳之间的数据。因此,读线程读取仿真文件时,需要先查找开始时间戳,找到开始时间戳之后才会真正读取数据。开始时间戳之前的数据、结束时间戳之后的数据无需记录。

各个读线程再并行逐行读取VCD文件数据,边读边记录所选信号当前时刻状态及其时刻点。在本实施例中,读线程会将读取的数据先缓存至缓冲区,当收到写线程指令或满足其它条件时,再统一传递至写线程。

其中,仿真文件中包括测试引脚在各个时刻点的时刻状态数据。优选地,读线程在读取仿真文件过程中,将相邻两个时刻点的时刻状态数据作为一组行数据,以行数据的形式将仿真文件中的数据传递至写线程中;其中,每组行数据中涉及起始时刻点、终止时刻点和处于起始时刻点到终止时刻点这一时段内的时刻状态数据。

在读线程中预设一个缓冲区,读线程每读取一组行数据便缓存至该缓冲区;当达到缓冲区的上限时,读线程停止读取仿真文件,直至收到写线程的请求;当收到写线程的请求时,读线程将缓冲区中的每一组行数据输出至写线程,此时可以控制读线程继续读取仿真文件。这样可以在不增加缓存压力的基础上,尽可能地提升读线程的读取效率。其中,让读线程停止读取的条件包括:读取到仿真文件结束、或行向量的结束时间戳之前的数据都已经解析过、又或者存储的行数据达到缓冲区上线。当读线程收到写线程的请求,就将缓冲区的数据传递至写线程中。

其中,写线程会解析读线程输出的行数据得到信号时序和Pattern行向量,并把生成的Pattern行向量写入对应的Pattern文件中。具体地,写线程以开始时间戳为起点开始记录信号时序,并以切割周期为单位在解析时刻状态数据过程中,不断更新信号时序。当写线程记录的信号时序满足一个切割周期时,去除信号时序中的切割周期,同时更新信号时序种类,并基于去除信号时序前解析的时刻状态数据生成一个Pattern行向量。

在写线程中预设两个缓冲区,一个缓冲区负责存储由读线程输出的行数据,另一个负责存储Pattern行向量;两个缓冲区的设置能够缓解一定的存储压力,同时让数据处理更加高效。当负责存储行数据的缓冲区存储空间大于预设值时(即存储空间充足时),写线程向读线程发出请求以补充行数据;当负责存储Pattern行向量的缓冲区达到存储上限或所有的行数据解析完毕后,则将Pattern行向量写入Pattern文件中。

写线程从缓冲区中按照时间顺序依次读取行数据,获取该行数据中的起始时刻点、终止时刻点以及时刻状态数据;以切割周期为单位对行数据进行切割,得到多个Pattern行向量;若切割之后存在不满一个切割周期的时刻状态数据,则将该部分时刻状态数据合并至下一组行数据中,并适应性的修改下一组行数据的起始时刻点。

根据测试平台所允许的引脚信号的状态种类设定一个阈值,例如常用的测试平台允许的信号的状态种类的最大值为8,使用转换得到的Pattern文件若是超过机台信号的状态种类预设的阈值是不能被机台使用的。基于此,本实施例的转换方法引入了时序种类这一特征,信号时序被记载于timming文件中,一个信号之下的最多有八个WFC(WFC是信号时序的别名,就是个标识符),即一个测试引脚最多有八个时序。Timming文件负责记录一个pattern文件下,以切割周期为周期的各个信号的时序。某一引脚在timming文件中的时序数量即为时序种类。在得到一个Pattern行向量之后,会判断时序种类与测试机台的阈值之间的关系,进而避免转换的Pattern文件不能被测试机台使用。

具体地,每当生成一个Pattern行向量时,判断信号时序种类是否超过机台预设的阈值;

若是,则修改第二配置文件中的结束时间戳,并结束格式转换;

若否,则判断当前的Pattern行向量与前一个Pattern行向量在信号时序上是否一致;若一致,则用repeat命令修改上次的得到Pattern行向量,压缩并存储Pattern行向量,之后可以控制读线程继续读取仿真文件;若不一致,则追加存储当前的Pattern行向量,之后可以控制读线程继续读取仿真文件。针对可能存在的相邻Pattern行向量重复的问题,本实施例设置了对每个Pattern行向量的重复项检测,通过判断当前的Pattern行向量于前一个Pattern行向量在信号时序上是否一致,进而判断是否相邻的行向量是否相同。若是信号时序相同,则证明前后解析的行数据是相同的,通过用命令压缩优化Pattern文件数据相同的相邻的行,减少了Pattern文件存储空间。对Pattern向量数据进行有效的压缩,不仅可以大大缩短测试过程中Pattern向量数据加载时间,而且可以大大降低Pattern向量存储所需的容量。

在本实施例中,转换方法的输入包括第一配置文件、第二配置文件和待转换的仿真文件,输出包括timming文件和Pattern文件。每个第一行向量都会输出一个Pattern文件,最终会得到多个Pattern文件,加快了转换效率。相当于将大量的Pattern行向量拆分到多个Pattern文件中,使得切转换生成的每个Pattern文件中的行数都不会过多,大大减少Pattern文件的存储空间。

本实施例提出了一种芯片设计仿真文件到Pattern文件的转换方法,能够高效、灵活地实现芯片设计仿真文件到Pattern格式的转换,利用配置文件中的多个行向量实现多线程转换,解析时间短、转换效率高,不仅能够同时获取多个Pattern文件,而且无需占用过多的内存和存储空间,存储压力小。通过定义一个反应时序的信号时序种类,能够有效避免Pattern文件因状态种类过多而无法被测试机台使用的问题。

实施例2

本发明实施例2公开了一种芯片设计仿真文件到Pattern文件的转换系统,将实施例1的一种芯片设计仿真文件到Pattern文件的转换方法系统化,系统的具体结构如说明书附图3所示,具体方案如下:

一种芯片设计仿真文件到Pattern文件的转换系统,包括如下:

配置单元1,用于获取预设第一配置文件、预设第二配置文件和待转换的仿真文件;通过读取第一配置文件获取预设测试引脚的引脚信息;读取第二配置文件,并创建读线程、写线程和Pattern文件;其中,第二配置文件记录了包括开始时间戳、结束时间戳和切割周期在内的周期化分割信息;

主线程单元2,用于通过主线程读取仿真文件,并基于引脚信息查找测试引脚在该仿真文件中的引脚定义;

读线程单元3,用于调用各个读线程并行读取该仿真文件,基于引脚定义查找并记录仿真文件中测试引脚在从开始时间戳到结束时间戳范围内的时刻状态数据;

写线程单元4,用于使每个写线程基于开始时间戳和切割周期将读线程中所记录的时刻状态数据解析为Pattern行向量,并将解析出的Pattern行向量写入对应的一个Pattern文件中;

输出单元5,用于当仿真文件被读取完毕或仿真文件在结束时间戳之前的时刻状态数据已被解析完毕时,结束格式转换,得到由仿真文件转换而来的多个Pattern文件。

其中,配置单元1还包括:将第二配置文件中的每一行数据作为一个第一行向量;为每个第一行向量创建一个读线程、一个写线程和一个Pattern文件,每个读线程和写线程中都记录有对应的第一行向量;每个读线程之间相互独立,负责从仿真文件中读取测试引脚的时刻状态数据;每个写线程之间相互独立,负责将对应读线程读取的时刻状态数据解析生成信号时序和Pattern行向量,并将Pattern行向量写入相应的Pattern文件中。

本发明提出了一种芯片设计仿真文件到Pattern文件的转换方法及其系统,能够高效、灵活地实现芯片设计仿真文件到Pattern格式的转换,利用配置文件中的多个行向量实现多线程转换,解析时间短、转换效率高,不仅能够同时获取多个Pattern文件,而且无需占用过多的内存和存储空间,存储压力小。通过定义一个反应时序的信号时序种类,能够有效避免Pattern文件因状态种类过多而无法被测试机台使用的问题。

本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。上述本发明序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号