CN101488160A - 覆盖率驱动随机验证集成电路的方法及系统 - Google Patents

覆盖率驱动随机验证集成电路的方法及系统 Download PDF

Info

Publication number
CN101488160A
CN101488160A CNA2009100783265A CN200910078326A CN101488160A CN 101488160 A CN101488160 A CN 101488160A CN A2009100783265 A CNA2009100783265 A CN A2009100783265A CN 200910078326 A CN200910078326 A CN 200910078326A CN 101488160 A CN101488160 A CN 101488160A
Authority
CN
China
Prior art keywords
individuality
father
individual
population
coverage rate
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.)
Granted
Application number
CNA2009100783265A
Other languages
English (en)
Other versions
CN101488160B (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.)
Loongson Technology Corp Ltd
Original Assignee
Institute of Computing Technology of CAS
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 Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN2009100783265A priority Critical patent/CN101488160B/zh
Publication of CN101488160A publication Critical patent/CN101488160A/zh
Application granted granted Critical
Publication of CN101488160B publication Critical patent/CN101488160B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

本发明涉及覆盖率驱动随机验证集成电路的方法和系统,该方法包括:步骤1,生成初始种群,初始化当前种群为初始种群;步骤2,根据当前种群生成验证程序,由指令集模拟器和待验证设计执行验证程序,比较两个执行结果确定待验证设计是否正确,同时获得覆盖率报告;步骤3,根据覆盖率报告计算当代种群中个体的适应度,根据适应度判断当前种群是否满足优化准则,如果满足,结束验证,否则,执行步骤4;步骤4,根据适应度选择当前种群中的优秀个体作为父个体,选择父个体的交叉对象,进行交叉操作以生成新个体,新个体组成下一代种群,更新当前种群为下一代种群,执行步骤2。本发明能够自动优化验证程序。

Description

覆盖率驱动随机验证集成电路的方法及系统
技术领域
该发明涉及设计验证领域,尤其涉及覆盖率驱动随机验证集成电路的方法及系统。
背景技术
功能验证被认为是当前硬件设计流程中的瓶颈,实际上,在整个设计流程中,大概有70%的时间和资源耗费在功能验证上,因此如何提高验证效率和质量,以期在尽量少的时间内发现尽量多的错误一直是验证领域关注的重点。当前主要的验证方法有模拟验证和形式化验证。其中模拟验证是工业应用中主要的验证方法,特别是对于大型复杂的设计,如微处理器,而言,与之相比,形式化验证虽然能提供验证对象的正确性证明,但是由于“状态爆炸”等问题的存在而导致其应用范围有限。正因为模拟验证无法证明设计的正确性,只能说明到某个阶段没有发现错误,如何衡量验证的充分程度对整个设计流程就显得至关重要。现有技术中,通过定义各种各样的覆盖率信息可以在一定程度上衡量验证进行的程度。这是通过定义一系列的覆盖点,然后检测其是否被覆盖过,来评估整个验证进度的。在整个验证流程中需要始终保持对覆盖率数据的监测和分析,以此来指导测试程序的生成和仿真过程。常见的覆盖率指标有:代码覆盖率、行覆盖率、翻转覆盖率、状态机覆盖率以及功能覆盖率等。
同时,在当前的设计验证中,仿真工具大多提供了相应的覆盖率搜集和分析工具,使得验证工程师在仿真的同时很容易获得相应的覆盖率数据。
当前主要的模拟验证方法有人工手写测试程序、约束随机生成以及覆盖率驱动的测试生成。在大型VLSI(超大规模集成电路)的设计验证中,约束随机的测试生成是最主要的方法,对于那些采用随机难以覆盖到的功能点,可以采用人工手写测试程序的方法作为辅助。
在上述的传统验证流程中,验证工程师通过仿真工具所得到的覆盖率报告,手工分析未被覆盖到的功能点或语句,通过修改随机约束,使得产生的测试向量能够覆盖到这些未覆盖到的区域,从而不断提高覆盖率,直到达到验证计划的要求。由于每次仿真结束后验证工程师都需要对结果进行分析,不断修改随机约束,对于大型设计而言,这个人工的过程是十分耗时的,严重影响了验证效率。由此,覆盖率驱动的验证方法孕育而生,通过在覆盖率报告和验证向量生成之间构成了反馈回路,能够根据覆盖率的信息自动指导验证向量的生成,除了初始指定约束,整个过程不再需要人为干预,是自动化程度最高的方法。
图1中描述了当前覆盖率驱动验证应用于微处理器验证的过程,通常包括8个部分,验证计划101,约束指导102,随机测试程序生成引擎103,验证程序104,仿真环境和指令集模拟器(I.S.S)105,覆盖率分析工具106,覆盖率报告107,覆盖率驱动引擎(Coverage Directed Driver)108。验证工程师根据验证计划101生成初始的约束指导102,将其作为输入送入随机测试程序生成引擎103;随机测试程序生成引擎103在约束指导102的约束条件下产生随机的验证程序S104;仿真环境和指令集模拟器S105一方面将验证程序送入待验证设计(DUV)进行仿真,另一方面送入I.S.S参考模型中执行,仿真环境对两者的输出结果进行对比,判断DUV设计的正确与否;覆盖率分析工具106根据仿真过程自动获取验证程序对应的覆盖率报告107;覆盖率驱动引擎108根据当前覆盖率信息自动指导测试程序的生成,使得验证过程尽量向当前未被覆盖到的区域扩展。
当前的覆盖率驱动引擎主要是采用如贝叶斯置信网(Bayesian BeliefNetwork)等人工智能的方法建立约束指导和所定义覆盖率模型之间的映射关系,同时在基于算术指令的简单模型上取得了较好的效果,但是对于实际的大型设计,一方面由于约束指导和覆盖率模型之间并不是简单的一对一关系,而是复杂的网状联系,使得贝叶斯网络的学习和推理过程需要付出高昂的代价;另一方面,由于实际验证工作中不同约束指导的复杂程度各不相同,过于简单的约束指导与复杂的覆盖率模型之间是“松耦合”的关系,很难通过贝叶斯网络学习出两者之间特定的联系。此外,对于使用贝叶斯网络或者其他的机器学习技术所学习到的约束指导和覆盖率模型之间的关系用于指导验证生成,将有可能导致覆盖率模型中的某些易于覆盖的功能点被大量地重复覆盖,影响验证效率。这是因为,对于每次仿真后的覆盖率结果,通过结构和参数学习后构造的贝叶斯网络对于没有覆盖到的功能点进行推理,得出最有可能覆盖到该功能点的约束指导,然后作为生成引擎的输入再次产生验证向量进行仿真。因此,对于每个未被覆盖到的功能点都要产生一组相应的约束指导再次进行仿真,而实际上每个约束指导生成的验证向量是可以覆盖到很多功能点的,这就造成了很多易于覆盖的功能点被重复覆盖,宝贵的仿真时间可能浪费在已覆盖到功能点的验证上了。
综上所述,当前的覆盖率驱动验证方法存在可伸缩性的问题而难以应用到大型的设计验证中去,此外由于领域知识和效率等问题的存在,人们期望有更简单易用,但又更为高效的覆盖率驱动引擎的出现。
遗传算法是基于生物遗传学和进化理论的随机搜索方法,通过模拟自然界的进化过程来获取问题更好的近似解。其简单易用和有效性使得被广泛应用到各种优化和约束满足问题领域。
遗传算法的基本流程可以简要阐述如下:首先产生初始种群,分别计算每个个体对应的适应度,然后判断当前代是否满足优化准则,若不满足,则开始产生新一代的计算,为了产生新的一代,首先需要按照适应度对个体进行选择操作,被选中的个体通过交叉生成子代,然后子代按照一定的概率进行变异,产生新的种群。接着计算新种群的适应度,新种群变成父代,这一过程循环执行,直到得到的种群满足优化准则,作为搜索到的问题的解。
应该注意的是,由于遗传算法作为一种通用的搜索方法,本身具有惊人的多样性,编码方式、变异算子、种群规模、选择机制、初始化和评估函数以及其他的各个方面的细微不同可能得到形式各异的搜索过程。但是正由于其本质上是一种通用的搜索算法,如果不利用所求解问题的特定领域知识,算法的性能将与采用何种编码方式、变异算子、种群规模以及选择机制没有多大关系,这将会导致其平均性能等同于盲目的随机搜索。比如在其它设计相同的情况下,使用二进制编码进行的交叉操作可以实现的目标,使用八进制,十六进制甚至十一进制同样可以做到,只是可能在效率上有所差别。因此在实际应用中需要对问题作尽可能多的了解,将领域知识更多地融入到覆盖率驱动引擎的设计中去,设计出与具体问题相匹配的合适算法。
发明内容
为了解决上述技术问题,本发明提出了覆盖率驱动随机验证集成电路的方法和系统,本发明能够自动优化验证程序。
本发明公开了一种覆盖率驱动随机验证集成电路的方法,所述方法包括:
步骤1,生成初始种群,初始化当前种群为所述初始种群;
步骤2,根据当前种群生成验证程序,由指令集模拟器和待验证设计执行所述验证程序,比较两个执行结果确定所述待验证设计是否正确,同时获得覆盖率报告;
步骤3,根据所述覆盖率报告计算所述当代种群中个体的适应度,根据所述适应度判断所述当前种群是否满足预设优化准则,如果满足,结束验证,否则,执行步骤4;
步骤4,根据所述适应度选择当前种群中的优秀个体作为父个体,选择所述父个体的交叉对象,进行交叉操作以生成新个体,所述新个体组成下一代种群,更新所述当前种群为所述下一代种群,执行所述步骤2。
所述步骤4中在生成新个体和所述新个体组成下一代种群间还包括:
步骤21,对所述新个体进行变异操作。
所述步骤1进一步为:
步骤31,确定可配置随机验证平台的指令模板文件对应的编码方式;
步骤32,按所述编码方式采用随机方法生成所述初始种群。
所述步骤2进一步为,
步骤41,将当代种群的个体转换为指令模板文件,并将各个所述指令模板文件输入可配置随机验证平台生成对应的验证程序;
步骤42,将各个验证程序送入所述指令集模拟器进行执行,并通过仿真工具使待验证设计执行各个验证程序,比较所述指令集模拟器和所述待验证设计的执行结果,确定所述待验证设计是否正确,同时获得所述仿真工具提供的覆盖率报告。
所述指令模板文件包括随机数种子约束、寄存器类型约束、指令类型约束以及指令组类型约束。
所述随机数种子约束采用十进制编码方式;
所述寄存器类型约束、所述指令类型约束和所述指令组类型约束采用二进制编码方式。
所述覆盖率报告中包括在执行个体对应的验证程序时,各个预设功能点被覆盖的次数;
所述步骤3中根据所述覆盖率报告计算所述当代种群中个体的适应度进一步为,
步骤71,确定在执行个体对应的验证程序时,被覆盖到的功能点的个数为所述个体的主适应度,被过度覆盖到的功能点的个数为所述个体的从适应度。
所述步骤71进一步为,确定在执行个体对应的验证程序时,被覆盖次数大于等于第一阈值的功能点的个数为所述个体的主适应度,在执行个体对应的验证程序时,被覆盖次数大于第二阈值的功能点的个数为所述个体的从适应度;所述第一阈值小于所述第二阈值。
所述优化准则为连续M代的平均适应度没有提高,所述M为预设值。
所述步骤4中根据所述适应度选择当前种群中的优秀个体作为父个体进一步为,
步骤101,从当代种群中随机选择m个个体,m为预设值,2≤m≤pop_size,其中pop_size为种群中个体的个数;
步骤102,从选择的m个个体中选择最优秀的个体作为一个父个体,主适应度的值越大的个体越优秀,如果主适应度相同,则从适应度的值越小的个体越优秀;
步骤103,如果选择出的父个体的个数未达到pop_size/2,则执行步骤101。
所述步骤4中选择所述父个体的交叉对象进一步为,
步骤111,计算每个父个体和当前种群中的非父个体的相对适应度;
步骤112,产生范围在0至1间的随机浮点数NR,如果NR大于等于预设的选择概率,则执行步骤113,否则,执行步骤114;
步骤113,采用轮盘赌算法选择出所述父个体的交叉对象;
步骤114,根据所述相对适应度选择相对于所述父个体最优秀的个体为所述父个体的交叉对象。
所述步骤111进一步为,
在执行父个体对应的验证程序时被覆盖次数大于等于所述第一阈值的功能点的集合同在执行被计算个体对应的验证程序时被覆盖次数大于等于所述第一阈值的功能点的集合合并,合并后集合中功能点的个数为所述被计算个体对应于所述父个体的相对主适应度;
在执行父个体对应的验证程序时被覆盖次数大于所述第二阈值的功能点的集合同在执行被计算个体对应的验证程序时被覆盖次数大于所述第二阈值的功能点的集合合并,合并后集合中功能点的个数为所述被计算个体对应于所述父个体的相对从适应度;
相对主适应度的值越大的个体对应于所述父个体越优秀,如果相对主适应度相同,则相对从适应度的值越小的个体对应于所述父个体越优秀。
种群的个体包括二进制编码部分和十进制编码部分;
所述步骤4中进行交叉操作以生成新个体进一步为,
步骤131,对父个体和所述父个体的交叉对象的十进制编码部分进行交叉操作;
步骤132,对父个体和所述父个体的交叉对象的二进制编码部分进行交叉操作。
所述步骤132后还包括:
步骤143,对交叉操作生成的新个体的二进制编码部分进行修订,以使所述新个体的集合满足编码方式对应的约束条件。
所述步骤131进一步为,
步骤151,将所述父个体和所述父个体的交叉对象的十进制编码部分进行右对齐;
步骤152,从所述父个体和所述父个体的交叉对象的十进制编码部分的左边的对齐点开始进行编号;
步骤153,从编号位置中随机选择一个交叉位置,将所述父个体和所述父个体的交叉对象从所述交换位置起右边的十进制编码部分进行交换;
步骤154,进行交换后的所述父个体和所述父个体的交叉对象的十进制编码部分对应于两个所述新个体的十进制编码部分。
所述步骤132进一步为,
步骤161,计算所述父个体同所述父个体的交叉对象的二进制编码部分间的海明码距为DH
步骤162,判断DH是否大于等于第三阈值,如果是,则执行步骤163;
步骤163,在所述父个体和所述父个体的交叉对象的二进制编码部分随机选择DH/2个交换位置进行交换,交换后的所述父个体和所述父个体的交叉对象的二进制编码部分对应于两个所述新个体的二进制编码部分。
所述步骤132进一步为,
步骤171,对父个体和所述父个体的交叉对象的二进制编码部分按指令模板文件具有的约束类型进行分组;
步骤172,将每个组等效为一个点,随机选择交换位置;
步骤173,将所述父个体和所述父个体的交叉对象从所述交换位置起右边的二进制编码部分进行交换;
步骤174,进行交换后的所述父个体和所述父个体的交叉对象的二进制编码部分对应于两个所述新个体的二进制编码部分。
所述步骤21进一步为,
步骤181,对所述新个体的十进制编码部分的每一位随机判断是否对当前操作位进行变异,如果是,随机确定对当前操作位进行插入操作、替换操作或者删除操作;
步骤182,对所述新个体的二进制编码部分的每一位随机确定是否进行反转操作;
步骤183,对变异后的新个体二进制部分进行修订,以使所述新个体的集合满足编码方式对应的约束条件。
本发明还公开了覆盖率驱动随机验证集成电路的系统,所述系统包括:
初始化模块,用于生成初始种群,初始化当前种群为所述初始种群,启动验证模块;
所述验证模块,用于根据当前种群生成验证程序,由指令集模拟器和待验证设计执行所述验证程序,比较两个执行结果确定所述待验证设计是否正确,同时获得覆盖率报告;
结束判断模块,用于根据所述覆盖率报告计算所述当代种群中个体的适应度,根据所述适应度判断所述当前种群是否满足优化准则,如果满足,结束验证,否则,启动下一代种群生成模块;
所述下一代种群生成模块,用于根据所述适应度选择当前种群中的优秀个体作为父个体,选择所述父个体的交叉对象,进行交叉操作以生成新个体,所述新个体组成下一代种群,更新所述当前种群为所述下一代种群,启动所述验证模块。
所述下一代种群生成模块,还用于在生成新个体和新个体组成下一代种群间,对所述新个体进行变异操作。
所述系统还包括处理指令模板文件的可配置随机验证平台;
所述初始化模块进一步用于,确定可配置随机验证平台的指令模板文件对应的编码方式;按所述编码方式采用随机系统生成所述初始种群。
所述系统还包括,用于提供仿真环境进行验证并生成覆盖率报告的仿真工具;
所述验证模块进一步用于将当代种群的个体转换为指令模板文件,并将各个所述指令模板文件输入可配置随机验证平台生成对应的验证程序;将各个验证程序送入所述指令集模拟器进行执行,并通过仿真工具使待验证设计执行各个验证程序,比较所述指令集模拟器和所述待验证设计的执行结果,确定所述待验证设计是否正确,同时获得所述仿真工具提供的覆盖率报告。
所述指令模板文件包括随机数种子约束、寄存器类型约束、指令类型约束以及指令组类型约束。
所述随机数种子约束采用十进制编码方式;
所述寄存器类型约束、所述指令类型约束和所述指令组类型约束采用二进制编码方式。
所述覆盖率报告中包括在执行个体对应的验证程序时,各个预设功能点被覆盖的次数;
所述结束判断模块在根据所述覆盖率报告计算所述当代种群中个体的适应度时进一步用于确定在执行个体对应的验证程序时,被覆盖到的功能点的个数为所述个体的主适应度,被过度覆盖到的功能点的个数为所述个体的从适应度。
所述结束判断模块在确定个体的主适应度和从适应度时进一步用于确定在执行个体对应的验证程序时,被覆盖次数大于等于第一阈值的功能点的个数为所述个体的主适应度,在执行个体对应的验证程序时,被覆盖次数大于第二阈值的功能点的个数为所述个体的从适应度;所述第一阈值小于所述第二阈值。
所述优化准则为连续M代的平均适应度没有提高,所述M为预设值。
所述下一代种群生成模块在根据所述适应度选择当前种群中的优秀个体作为父个体时进一步用于从当代种群中随机选择m个个体,m为预设值,2≤m≤pop_size,其中pop_size为种群中个体的个数;从选择的m个个体中选择最优秀的个体作为一个父个体,主适应度的值越大的个体越优秀,如果主适应度相同,则从适应度的值越小的个体越优秀;如果选择出的父个体的个数未达到pop_size/2,则继续选择父个体。
所述下一代种群生成模块在选择所述父个体的交叉对象时进一步用于计算每个父个体和当前种群中其他个体的相对适应度;产生范围在0至1间的随机浮点数NR,如果NR大于等于预设的选择概率,则采用轮盘赌算法选择出所述父个体的交叉对象,否则,根据所述相对适应度选择对应于所述父个体最优秀的个体为所述父个体的交叉对象。
所述下一代种群生成模块在计算每个父个体和当前种群中其他个体的相对适应度时进一步用于在执行父个体对应的验证程序时将被覆盖次数大于等于所述第一阈值的功能点的集合同在执行被计算个体对应的验证程序时被覆盖次数大于等于所述第一阈值的功能点的集合合并,合并后集合中功能点的个数为所述被计算个体对应于所述父个体的相对主适应度;将在执行父个体对应的验证程序时被覆盖次数大于所述第二阈值的功能点的集合同在执行被计算个体对应的验证程序时被覆盖次数大于所述第二阈值的功能点的集合合并,合并后集合中功能点的个数为所述被计算个体对应于所述父个体的相对从适应度;相对主适应度的值越大的个体对应于所述父个体越优秀,如果相对主适应度相同,则相对从适应度的值越小的个体对应于所述父个体越优秀。
种群的个体包括二进制编码部分和十进制编码部分;
所述下一代种群生成模块在进行交叉操作以生成新个体时进一步用于对父个体和所述父个体的交叉对象的十进制编码部分进行交叉操作;对父个体和所述父个体的交叉对象的二进制编码部分进行交叉操作。
所述下一代种群生成模块还用于对交叉操作生成的新个体二进制编码部分进行修订,以使所述新个体的集合满足编码方式对应的约束条件。
所述下一代种群生成模块在对父个体和所述父个体的交叉对象的十进制编码部分进行交叉操作时进一步用于将所述父个体和所述父个体的交叉对象的十进制编码部分进行右对齐;从所述父个体和所述父个体的交叉对象的十进制编码部分的左边的对齐点开始进行编号;从编号位置中随机选择一个交叉位置,将所述父个体和所述父个体的交叉对象从所述交换位置起右边的十进制编码部分进行交换;进行交换后的所述父个体和所述父个体的交叉对象的十进制编码部分对应于两个所述新个体的十进制编码部分。
所述下一代种群生成模块在对父个体和所述父个体的交叉对象的二进制编码部分进行交叉操作时进一步用于计算所述父个体同所述父个体的交叉对象的二进制编码部分间的海明码距为DH;判断DH是否大于等于第三阈值,如果是,则在所述父个体和所述父个体的交叉对象的二进制编码部分随机选择DH/2个交换位置进行交换,交换后的所述父个体和所述父个体的交叉对象的二进制编码部分对应于两个所述新个体的二进制编码部分。
所述下一代种群生成模块在对父个体和所述父个体的交叉对象的二进制编码部分进行交叉操作时进一步用于对父个体和所述父个体的交叉对象的二进制编码部分按指令模板文件具有的约束类型进行分组;将每个组等效为一个点,随机选择交换位置;将所述父个体和所述父个体的交叉对象从所述交换位置起右边的二进制编码部分进行交换;进行交换后的所述父个体和所述父个体的交叉对象的二进制编码部分对应于两个所述新个体的二进制编码部分。
所述下一代种群生成模块在对所述新个体进行变异操作时进一步用于对所述新个体的十进制编码部分的每一位随机判断是否对当前操作位进行变异,如果是,随机确定对当前操作位进行插入操作、替换操作或者删除操作;对所述新个体的二进制编码部分的每一位随机确定是否进行反转操作;对变异后的新个体二进制部分进行修订,以使所述新个体的集合满足编码方式对应的约束条件。
本发明的有益效果在于,通过在验证中采用遗传算法生成验证程序,使得验证程序不断被优化;并且使用该验证程序能够增加功能点的覆盖率,同时减少功能点被过度覆盖;通过实际工作检验,已经证明本法发明的正确性和有效性,同时对于其他设计验证工作而言,本发明具有一定的可移植性,并且由于本发明算法的搜索速度快,相较仿真时间,搜索时间可以忽略不计,本发明具有很好的可伸缩性,易于应用到大型的设计验证工作中。
附图说明
图1为现有技术的覆盖率驱动随机验证方法的示意图;
图2为本发明覆盖率驱动随机验证集成电路方法的流程图;
图3为本发明中的编码方式的示意图;
图4为本发明中选择操作的实施流程图;
图5为本发明中交叉操作的实施流程图;
图6为本发明中的十进制交叉操作的实施示例;
图7为本发明中二进制全交叉操作的实施示例;
图8为本发明中二进制组间交叉操作的实施示例;
图9为本发明中变异操作的实施流程图;
图10为本发明中十进制变异操作的实施流程图;
图11为本发明覆盖率驱动随机验证集成电路的系统的结构图。
具体实施方式
下面结合附图,对本发明做进一步的详细描述。
如图2所示,将本发明的覆盖率驱动随机验证方法应用到微处理器的具体实施中去,包括以下步骤:
步骤S201,确定CRPG(可配置随机验证平台)的Directives(对于微处理器的指令级随机验证,对应为指令模板文件)对应的编码方式。
确定问题的表示方式,当前问题的解是CRPG平台的指令模板文件,为了通过遗传算法找到能够提高覆盖率的更优的解,首先需要对指令模板文件进行编码。
指令模板文件包含的约束类型下表所示。
 
随机数种子约束 .seed_random
.register_def
 
寄存器类型约束 R0      ratioR1      ratio...     ...R31     ratio.end_register_def
指令类型约束 .instruction_group     group_nameADD                    ratioSUB                    ratio...                    ...MUL                    ratio.end_instruction_group      
指令组类型约束 .instruction_defgroup_name0            ratiogroup_namel            ratio...                    ...goup_name(n-1)         ratio.end_instruction_def
表1
图3中是对指令模板文件的具体编码方式。
随机数种子约束的编码方式,直接用十进制编码来表示,这有利于保持种群的多样性。
而对于寄存器类型约束、指令类型约束和指令组类型约束则采用二进制编码来表示。
下面以寄存器类型约束为例说明具体的编码过程,MIPS兼容处理器的通用寄存器有32个,将其在指令模板中指定的所占的绝对比例扩大MR倍,具体实施例中MR=1000,此时对应的二进制数需要10位来表示,因此对于整个通用寄存器类型约束需要32×10位来表示,如图3中的寄存器类型约束所示。对于指令类型约束和指令组类型约束可以采用同样的方式进行编码。最后得到二进制串分别如图3所示的组1、组2、…、组N和指令组类型约束所示,将这些串直接组合起来,得到一个较长的二进制串,与前述随机数种子约束的十进制编码一起作为编码形式,该编码形式为个体的表示形式。
步骤S202,按编码方式采用随机方法生成初始种群。
确定演化计算的初始种群,根据S201中的编码方式,在解的有效空间中完全随机地生成相应长度的二进制串和十进制串。
对于表示随机数种子约束的十进制串直接使用rand()函数随机生成即可。
对于二进制串,以寄存器类型约束为例,如前所述,每个通用寄存器需要10位,表示该寄存器所占的比例,因此需要满足一定的约束条件:如对应的各个寄存器所占的绝对比例之和应该为1等。假设对寄存器类型约束的ratio部分WRi扩大MR倍,则应该满足如下约束:
Σ i = 0 31 WR i = M R ∀ i ∈ [ 0,31 ] WR i ∈ [ 0 , M R ]
对于指令类型约束和指令组类型约束,同样应该遵循上述两种约束条件。
用户预先指定种群中个体的数目,由参数pop_size表示,依次通过上述方法在有效解空间中获得的初始种群。
步骤S203,确定当前种群。
如果从步骤S202转入步骤S203,则初始化当前种群为初始种群;如果从步骤S212转入步骤S203,则更新当前种群为新生的下一代种群。
步骤S204,通过转换引擎将当代种群的个体转换为指令模板文件。
无论是从S203中送入的初始种群,还是经过演化的下一代种群,都是由步骤S201中所述的十进制编码和二进制编码来表示的,需要进行反向映射,将编码通过转换引擎再次转换为CRPG平台所能接受的指令模板文件的格式,具体如表1所示。该过程为是步骤S201中所述过程的逆过程,根据具体编码方式的不同分别处理,得到对应的指令模板文件。
步骤S205,将各个指令模板文件输入CRPG,GRPG根据指令模板文件的约束条件生成相应的验证程序。
步骤S206,将各个验证程序送入指令集模拟器进行执行,并通过仿真工具使待验证设计执行各个验证程序,比较指令集模拟器和待验证设计的执行结果,确定所述待验证设计是否正确。
验证程序被送入到仿真环境中执行,将在待验证设计上的执行结果与指令集模拟器的参考模型的执行结果进行比较,以判断设计中是否存在缺陷。在仿真完成后,仿真工具可以自动提供覆盖率报告。
步骤S207,获得仿真工具提供的覆盖率报告。
步骤S208,根据覆盖率报告计算当代种群中个体的适应度。
适应度函数是评估解的质量的唯一指标,也是为了判断演化过程是否满足优化准则的前提,因为需要预先设计适应度函数。
为了能够得到尽可能提高功能覆盖率,同时尽量减少不必要覆盖的指令模板,根据经验和验证问题的规模,设定两个非负整数ni和nj,其中ni<nj,覆盖次数在[ni,nj]范围内为正常覆盖,小于ni的为很少覆盖的任务,大于nj的为过度覆盖,遵循上述目标设计适应度函数。
适应度包括主适应度和从适应度。
主适应度为执行个体对应的验证程序时,所有被覆盖到的功能点的集合中功能点的个数,从适应度为执行个体对应的验证程序时被过度覆盖的功能点的集合中功能点的个数。
被覆盖指覆盖次数大于等于预设第一阀值;
过度覆盖指覆盖次数大于等于预设第二阀值,第二阀值大于第一阀值。
当由于主适应度相同时,使用从适应度来判断个体的优劣。
预先定义的覆盖率模型的功能点的个数为N,所有功能点的集合定义为{FCi|i=0,1,……,N-1},相应的,每个功能点FCi被覆盖的次数记为Count(FCi)。适应度函数采用的是集合的形式,其中一集合是针对主适应度,另一集合针对从适应度。对应于一个个体的Directivei,其主适应度函数为:
Fitness1(Directivei)={FCi,其中Count(FCi)≥ni}
从适应度函数为:
Fitness2(Directivei)={FCi,其中Count(FCi)>nj}
通过上述适应度函数,根据覆盖率报告,计算出当前种群中所有个体对应的主适应度为主适应度函数中的功能点个数,从适应度为从适应度函数中的功能点个数。
步骤S209,,根据各个个体的适应度判断所述当前种群是否满足优化准则,如果满足,结束验证,否则,执行步骤S210。
满足时,如图2中,执行步骤S213,结束验证。
根据步骤S208计算的适应度判断是否满足优化准则,如果满足,则执行步骤S213,验证结束,否则,执行步骤S210。
通常情况下,对于验证问题而言,优化准则为所有功能点都被覆盖到,即100%覆盖率。
但是由于问题规模的庞大导致了覆盖率模型的复杂,其中可能有很多功能点难以覆盖到甚至是无法覆盖到,如果优化准则是100%的覆盖率可能导致迭代一直进行下去也无法得到满意的结果。因此,优化准则是连续M(M≥1)代的平均适应度都没有提高。如果连续M(M≥1)代的平均适应度都没有提高,则验证结束。其中M的大小与问题的规模有关,在具体实施例中取M=3。
步骤S210,根据各个个体的适应度选择当前种群中的优秀个体作为父个体,选择父个体的交叉对象。
由于当代种群的适应度并不满足步骤S209优化准则的要求,所以通过对当代种群继续演化得到下一代种群。
首先通过选择操作选择出进行交叉的个体,该个体为父个体和父个体的交叉对象。
如图4所示,设计一种二级选择算法选择出进行交叉的个体,使得当前代种群中优秀个体的特性得以遗传给后代。
步骤S401,当代种群的大小为用户指定的pop_size个个体,在第一级选择中,通过锦标赛选择出其中一半的个体为父个体,个数为pop_size/2。
种群是由pop_size个个体组成。根据步骤S208计算出来的各个个体对应主适应度和从适应度进行选择。
具体锦标赛选择如下。
选择竞赛规模为m,m∈[2,pop_size],在具体实施例中取3。每次随机从种群中挑选m个个体,在其中选择最优的个体加入到被选中集中,作为父个体,重复此过程直至完成pop_size/2个个体的选择。
按照以下方式判断最优秀个体。首先根据主适应度选择最优秀个体,主适应度的值越大,对应个体越优秀;如果两个个体的主适应度的值相同,则按从适应度进行判断,从适应度的值越小,对应的个体越优秀。
一个举例中的当代种群的主从适应度如表2所示。
 
个体 0 1 2 3 4 5 6 7 8 9
主适应度 8 5 9 10 7 12 5 19 10 14
从适应度 4 3 6 3 5 8 2 7 4 5
表2
当竞赛规模为3时,随机选择3个个体,分别为2、3、8。比较其主适应度的大小,个体3和个体8为最优,则分别考虑其从适应度势的大小,由于个体3的从适应度较小,则选择3作为父个体,如此反复直至完成第一级pop_size/2个父个体选择。
由于在选择父个体时,优选能够覆盖到尽量多功能点,同时尽量少过度覆盖的个体作为父个体,因此保证父个体的优良特性被传递给后代,即可以增加功能点的覆盖率,同时减少过度覆盖。
步骤S402,在通过步骤S401选出父个体后,为其中每一个父个体计算非父个体相对该父个体的相对适应度,作为选择父个体的交叉对象的依据。两个个体的相对主适应度函数为,
(Fitness1(Directivei)∪Fitness1(Directivej))
相对从适应度函数为,
(Fitness2(Directivei)∪Fitness2(Directivej))
根据上述公式为每一个父个体依次计算其它所有非父个体相对该父个体的适应度,并按大小次序进行排序,相对主适应度越大者越优,当相对主适应度相同时,判断从适应度,从适应度越小者越优。
步骤S403,为了给每一个父个体选择与其进行交叉操作的交叉对象,采用概率性选择。
针对预定的选择概率PS,首先产生一个[0,1]间的随机浮点数NR,若NR≥PS,则执行步骤S404,否则,执行步骤S405。
步骤S404,采用轮盘赌算法选择与该父个体交叉的交叉对象,使得适应度更大的个体有更大的机会被选中作为参与交叉的个体。
轮盘赌算法如下所述。
根据步骤S402计算的所有其他pop_size/2个非父个体相对于当前父个体的相对主适应度,将其按比例转化为选择概率,然后将选择概率按照每个所述非父个体出现的顺序转化为累积概率,转动轮盘产生[0,1]之间的随机数,与累积概率进行比较,根据落入的具体区间选择出与当前父个体进行交叉的个体。以下表为例说明其具体过程:
 
个体 相对主适应度 选择概率 累积概率
1 8 0.086957 0.086957
2 5 0.054348 0.141304
3 2 0.021739 0.163043
4 10 0.108696 0.271739
5 7 0.076087 0.347826
6 12 0.130435 0.478261
7 5 0.054348 0.532609
8 19 0.206522 0.73813
9 10 0.108696 0.847826
10 14 0.152174 1
表3
若产生的随机数为0.3,落入区间[0.271739,0.347826],则应选择个体5。
步骤S405,直接选择步骤S402中计算出来的相对该父个体最优秀的个体进行交叉操作。
按相对主适应度进行判断,相对主适应度的值越大则该个体对应于父个体越优秀,如果相对主适应度相同,则按相对从适应度进行判断,相对从适应度的值越小则该个体对应于父个体越优秀。
步骤S211,对父个体和该父个体的交叉对象进行交叉操作以生成新个体。
对根据步骤S210中选择出来的pop_size/2对父个体和其交叉对象,分别进行交叉操作,以得到下一代的新个体。
由于交叉操作与编码方式密切相关,如S201所述,编码方式采用十进制与二进制的混合编码方式,因此交叉操作也要按编码方式的不同来进行。
图5是交叉操作的详细流程图,具体步骤为:
步骤S501,对十进制编码部分进行交叉操作,即对随机数种子约束部分进行交叉,将父个体和其交叉对象进行右对齐,从左边的对齐点开始,进行编号,在编号位置中随机选择一个交叉位置,将从该选择位置起右边的部分,包括该选择位置,进行交换。下面以图6为例,详细说明十进制编码的交叉操作:
将两个父个体进行右对齐,示例中对应于21753和469,从最左边对齐位置的左边那一位开始,自左向右,逐个记下位置,对应到21753的“7”位,记为起始位,分别有1,2,3。此后随机生成[1,3]之间的一个数,为2,对应于21753的“5”和469的“6”位,在该位置将父个体和交叉对象的该选择位置左边部分进行交换,得到新个体对21769和453。
步骤S502,对二进制编码部分进行交叉操作。二进制编码的是由:寄存器类型约束(Reg)、指令类型约束(组1,…,组N)以及指令组类型约束(InstGroup)组成。因此交叉算法采用两种形式:一种是对整个二进制编码进行交叉;另一种是组间交叉,以组为单位进行交叉。
首先计算两个待交叉父个体的海明码距,设为DH,和给定的阈值FC比较,若DH≥FC,则对二进制编码整体进行交叉,随机选择其中的DH/2个位置进行交换。下面以图7为例,说明具体的交叉过程。
待交叉的父个体和其交叉对象如图所示,计算得到的海明码距为12,则随机选择其中的6个位置进行交换,这里随机选取的交叉点位置为2、5、6、8、10、15(从左至右),将父个体对应位置上的值进行交换得到子个体。
对于组间交叉,采用单点交叉方式,即将每个组(寄存器类型约束、指令类型约束以及指令组类型约束)等效为“一个点”,共有N+2个点,随机生成一个数,并以该点为分界进行交换,下面以图8为例,说明具体的交叉过程。
待交叉的父个体如图所示,共有N+2个点,随机生成的数为8,则以该点为分界进行交换,将该点起右边的部分进行交换。
步骤S503,对步骤S502产生的子代个体二进制编码部分进行修补操作,这是因为进行交叉操作后可能会导致得到的个体违反步骤S202所述的各种约束,需要进行调整使其满足约束,成为合法的解。下面以寄存器类型约束为例,说明具体的修补过程:
将交叉后得到的编码对应的各个寄存器的数值转换为相应的比例,然后将其扩大MR倍,全部取下整,然后对取整后的WRi进行累加,计算与MR的差值λ,随机选择λ个WRi,在取整后的编码上加1。对指令类型约束和指令组类型约束的每个编码组(共N+1个)都采用类似的“修补”操作。其目的在于使得对应的指令模板的各组内的组成部分的概率之和相加为1。
步骤S212,对新生个体进行变异操作,进行变异操作后的新生个体组成下一代种群。
在完成步骤S211的交叉操作后,将父代种群的优良特性保持下来了,但是为了保持种群的多样性,类比自然界的进化过程,还需要种群中的每一个个体进行变异操作。
与交叉操作一样,变异操作同样需要根据编码方式的不同划分为十进制变异操作和二进制变异操作。
图9是变异操作的详细流程图,具体步骤为:
步骤S901,对十进制编码部分进行变异操作,即对随机数种子约束部分进行变异操作。
现结合图10阐述十进制编码变异操作的详细流程,其中变异概率Pm,发生插入操作的概率PInsert,发生修改操作的概率PModify,发生删除操作的概率PDelete,其中PInsert<PModify<PDelete
步骤S1001,计算该十进制编码的长度,记为Length,从左向右进行编号:0,1,…,Lengthi-1,按位依次进行变异操作。
步骤S1002,判断是否所有的Lengthi位都进行了变异操作,如果是则终止,否则进入下一步;
步骤S1003,生成随机浮点数p,其中p∈[0,1]。
步骤S1004,根据随机浮点数p判断当前编码位是否应该进行变异操作。
步骤S1005,如果p<Pm,则需要进行变异操作,生成随机数浮点p,p∈[0,1]。
步骤S1006,根据随机浮点数p判断当前编码位具体需要进行何种变异操作。
步骤S1007,如果p′<PModify,则需要进行插入操作,首先生成随机整数a,a∈[0,9]。
步骤S1008,根据随机浮点数p判断进行何种插入操作。
步骤S1009,如果p′<PInsert,则需要在当前编码位前插入步骤S1007中生成的随机整数a。
步骤S1010,如果PInsert≤p′<PModify,则需要在当前编码位后插入步骤S1007中生成的随机整数a。
步骤S1011,如果PModifyt≤p′<PDelete,则需要进行替换修改操作,生成不同于当前编码位的随机整数a,a∈[0,9]。
步骤S1012,用步骤S1011中生成的随机整数a替换当前编码位;
步骤S1013,如果p′≥PDelete,则需要删除当前编码位;
步骤S902,进行完S901对十进制编码部分的变异操作后,需要对其中的二进制编码部分(包括指令类型约束和指令组类型约束)进行变异操作,只需要按照指定的变异概率P′m对其中的每一位依次进行判断,如果每次生成的随机浮点数p<Pm,则将当前编码位翻转即可。
步骤S903,如步骤S503所述,对二进制编码进行了修改之后,还要判断当前的编码形式是否合法,因此同样需要进行相同的修补操作,具体操作同步骤S503。
进行完如图9所示的变异操作后,得到的是下一代的种群,此时又可以作为新的种群送入到步骤S203中继续执行。
通过将上述方法应用到微处理的随机验证中去,与采用普通的约束随机方法相比较,在相同的验证时间下,将覆盖率从80%提高到了91%。
由本发明中采用遗传算法因而对于其他具体的设计验证,模块级或系统级,只需要根据具体应用修改编码和设计具体的适应度函数就能使用该方法来提高验证效率,从而具有一定的可移植性。
一种覆盖率驱动随机验证集成电路的系统如图11所示。
所述系统包括:初始化模块1101、验证模块1102、结束判断模块1103、下一代种群生成模块1104。
初始化模块1101,用于生成初始种群,初始化当前种群为初始种群,启动验证模块1102。
所述系统还包括处理指令模板文件的可配置随机验证平台;
初始化模块1101进一步用于,确定可配置随机验证平台的指令模板文件对应的编码方式;按所述编码方式采用随机系统生成所述初始种群。
指令模板文件包括:随机数种子约束、寄存器类型约束、指令类型约束以及指令组类型约束。
所述随机数种子约束采用十进制编码方式。
所述寄存器类型约束、所述指令类型约束和所述指令组类型约束采用二进制编码方式。
验证模块1102,用于根据当前种群生成验证程序,由指令集模拟器和待验证设计执行所述验证程序,比较两个执行结果确定所述待验证设计是否正确,同时获得覆盖率报告。
所述系统还包括,用于提供仿真环境进行验证并生成覆盖率报告的仿真工具。
验证模块1102进一步用于将当代种群的个体转换为指令模板文件,并将各个所述指令模板文件输入可配置随机验证平台生成对应的验证程序;将各个验证程序送入所述指令集模拟器进行执行,并通过仿真工具使待验证设计执行各个验证程序,比较所述指令集模拟器和所述待验证设计的执行结果,确定所述待验证设计是否正确,同时获得所述仿真工具提供的覆盖率报告。
结束判断模块1103,用于根据所述覆盖率报告计算所述当代种群中个体的适应度,根据所述适应度判断所述当前种群是否满足优化准则,如果满足,结束验证,否则,启动下一代种群生成模块1104。
所述优化准则为连续M代的平均适应度没有提高,所述M为预设值。
所述覆盖率报告中包括在执行个体对应的验证程序时,各个预设功能点被覆盖的次数;
所述结束判断模块1103在根据所述覆盖率报告计算所述当代种群中个体的适应度时进一步用于确定在执行个体对应的验证程序时,被覆盖到的功能点的个数为所述个体的主适应度,被过度覆盖到的功能点的个数为所述个体的从适应度。确定在执行个体对应的验证程序时,被覆盖次数大于等于第一阈值的功能点的个数为所述个体的主适应度,在执行个体对应的验证程序时,被覆盖次数大于第二阈值的功能点的个数为所述个体的从适应度;所述第一阈值小于所述第二阈值。
下一代种群生成模块1104,用于根据所述适应度选择当前种群中的优秀个体作为父个体,选择所述父个体的交叉对象,进行交叉操作以生成新个体,所述新个体组成下一代种群,更新当前种群为下一代种群,启动验证模块1102。
下一代种群生成模块1104,还用于在生成新个体和新个体组成下一代种群间,对所述新个体进行变异操作。
下一代种群生成模块1104在根据所述适应度选择当前种群中的优秀个体作为父个体时进一步用于从当代种群中随机选择m个个体,m为预设值,2≤m≤pop_size,其中pop_size为种群中个体的个数;从选择的m个个体中选择最优秀的个体作为一个父个体,主适应度的值越大的个体越优秀,如果主适应度相同,则从适应度的值越小的个体越优秀;如果选择出的父个体的个数未达到pop_size/2,则继续选择父个体。
下一代种群生成模块1104在选择所述父个体的交叉对象时进一步用于计算每个父个体和当前种群中其他个体的相对适应度;产生范围在0至1间的随机浮点数NR,如果NR大于等于预设的选择概率,则采用轮盘赌算法选择出所述父个体的交叉对象,否则,根据所述相对适应度选择对应于所述父个体最优秀的个体为所述父个体的交叉对象。
下一代种群生成模块1104在计算每个父个体和当前种群中其他个体的相对适应度时进一步用于在执行父个体对应的验证程序时将被覆盖次数大于等于所述第一阈值的功能点的集合同在执行被计算个体对应的验证程序时被覆盖次数大于等于所述第一阈值的功能点的集合合并,合并后集合中功能点的个数为所述被计算个体对应于所述父个体的相对主适应度;将在执行父个体对应的验证程序时被覆盖次数大于所述第二阈值的功能点的集合同在执行被计算个体对应的验证程序时被覆盖次数大于所述第二阈值的功能点的集合合并,合并后集合中功能点的个数为所述被计算个体对应于所述父个体的相对从适应度;相对主适应度的值越大的个体对应于所述父个体越优秀,如果相对主适应度相同,则相对从适应度的值越小的个体对应于所述父个体越优秀。
种群的个体包括二进制编码部分和十进制编码部分;
下一代种群生成模块1104在进行交叉操作以生成新个体时进一步用于对父个体和所述父个体的交叉对象的十进制编码部分进行交叉操作;对父个体和所述父个体的交叉对象的二进制编码部分进行交叉操作。
下一代种群生成模块1104还用于对交叉操作生成的新个体二进制编码部分进行修订,以使所述新个体的集合满足编码方式对应的约束条件。
下一代种群生成模块1104在对父个体和所述父个体的交叉对象的十进制编码部分进行交叉操作时进一步用于将所述父个体和所述父个体的交叉对象的十进制编码部分进行右对齐;从所述父个体和所述父个体的交叉对象的十进制编码部分的左边的对齐点开始进行编号;从编号位置中随机选择一个交叉位置,将所述父个体和所述父个体的交叉对象从所述交换位置起右边的十进制编码部分进行交换;进行交换后的所述父个体和所述父个体的交叉对象的十进制编码部分对应于两个所述新个体的十进制编码部分。
下一代种群生成模块1104在对父个体和所述父个体的交叉对象的二进制编码部分进行交叉操作时采用行交叉或者组间交叉。
行交叉为,计算所述父个体同所述父个体的交叉对象的二进制编码部分间的海明码距为DH;判断DH是否大于等于第三阈值,如果是,则在所述父个体和所述父个体的交叉对象的二进制编码部分随机选择DH/2个交换位置进行交换,交换后的所述父个体和所述父个体的交叉对象的二进制编码部分对应于两个所述新个体的二进制编码部分。
组间交叉为,对父个体和所述父个体的交叉对象的二进制编码部分按指令模板文件具有的约束类型进行分组;将每个组等效为一个点,随机选择交换位置;将所述父个体和所述父个体的交叉对象从所述交换位置起右边的二进制编码部分进行交换;进行交换后的所述父个体和所述父个体的交叉对象的二进制编码部分对应于两个所述新个体的二进制编码部分。
下一代种群生成模块1104在对所述新个体进行变异操作时进一步用于对所述新个体的十进制编码部分的每一位随机判断是否对当前操作位进行变异,如果是,随机确定对当前操作位进行插入操作、替换操作或者删除操作;对所述新个体的二进制编码部分的每一位随机确定是否进行反转操作;对变异后的新个体二进制部分进行修订,以使所述新个体的集合满足编码方式对应的约束条件。
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。

Claims (36)

1.一种覆盖率驱动随机验证集成电路的方法,其特征在于,所述方法包括:
步骤1,生成初始种群,初始化当前种群为所述初始种群;
步骤2,根据当前种群生成验证程序,由指令集模拟器和待验证设计执行所述验证程序,比较两个执行结果确定所述待验证设计是否正确,同时获得覆盖率报告;
步骤3,根据所述覆盖率报告计算所述当代种群中个体的适应度,根据所述适应度判断所述当前种群是否满足预设优化准则,如果满足,结束验证,否则,执行步骤4;
步骤4,根据所述适应度选择当前种群中的优秀个体作为父个体,选择所述父个体的交叉对象,进行交叉操作以生成新个体,所述新个体组成下一代种群,更新所述当前种群为所述下一代种群,执行所述步骤2。
2.如权利要求1所述的覆盖率驱动随机验证集成电路的方法,其特征在于,
所述步骤4中在生成新个体和所述新个体组成下一代种群间还包括:
步骤21,对所述新个体进行变异操作。
3.如权利要求2所述的覆盖率驱动随机验证集成电路的方法,其特征在于,
所述步骤1进一步为:
步骤31,确定可配置随机验证平台的指令模板文件对应的编码方式;
步骤32,按所述编码方式采用随机方法生成所述初始种群。
4.如权利要求3所述的覆盖率驱动随机验证集成电路的方法,其特征在于,
所述步骤2进一步为,
步骤41,将当代种群的个体转换为指令模板文件,并将各个所述指令模板文件输入可配置随机验证平台生成对应的验证程序;
步骤42,将各个验证程序送入所述指令集模拟器进行执行,并通过仿真工具使待验证设计执行各个验证程序,比较所述指令集模拟器和所述待验证设计的执行结果,确定所述待验证设计是否正确,同时获得所述仿真工具提供的覆盖率报告。
5.如权利要求3所述的覆盖率驱动随机验证集成电路的方法,其特征在于,
所述指令模板文件包括随机数种子约束、寄存器类型约束、指令类型约束以及指令组类型约束。
6.如权利要求5所述的覆盖率驱动随机验证集成电路的方法,其特征在于,
所述随机数种子约束采用十进制编码方式;
所述寄存器类型约束、所述指令类型约束和所述指令组类型约束采用二进制编码方式。
7.如权利要求4所述的覆盖率驱动随机验证集成电路的方法,其特征在于,
所述覆盖率报告中包括在执行个体对应的验证程序时,各个预设功能点被覆盖的次数;
所述步骤3中根据所述覆盖率报告计算所述当代种群中个体的适应度进一步为,
步骤71,确定在执行个体对应的验证程序时,被覆盖到的功能点的个数为所述个体的主适应度,被过度覆盖到的功能点的个数为所述个体的从适应度。
8.如权利要求7所述的覆盖率驱动随机验证集成电路的方法,其特征在于,
所述步骤71进一步为,确定在执行个体对应的验证程序时,被覆盖次数大于等于第一阈值的功能点的个数为所述个体的主适应度,在执行个体对应的验证程序时,被覆盖次数大于第二阈值的功能点的个数为所述个体的从适应度;所述第一阈值小于所述第二阈值。
9.如权利要求1所述的覆盖率驱动随机验证集成电路的方法,其特征在于,
所述优化准则为连续M代的平均适应度没有提高,所述M为预设值。
10.如权利要求8所述的覆盖率驱动随机验证集成电路的方法,其特征在于,
所述步骤4中根据所述适应度选择当前种群中的优秀个体作为父个体进一步为,
步骤101,从当代种群中随机选择m个个体,m为预设值,2≤m≤pop_size,其中pop_size为种群中个体的个数;
步骤102,从选择的m个个体中选择最优秀的个体作为一个父个体,主适应度的值越大的个体越优秀,如果主适应度相同,则从适应度的值越小的个体越优秀;
步骤103,如果选择出的父个体的个数未达到pop_size/2,则执行步骤101。
11.如权利要求10所述的覆盖率驱动随机验证集成电路的方法,其特征在于,所述步骤4中选择所述父个体的交叉对象进一步为,
步骤111,计算每个父个体和当前种群中的非父个体的相对适应度;
步骤112,产生范围在0至1间的随机浮点数NR,如果NR大于等于预设的选择概率,则执行步骤113,否则,执行步骤114;
步骤113,采用轮盘赌算法选择出所述父个体的交叉对象;
步骤114,根据所述相对适应度选择相对于所述父个体最优秀的个体为所述父个体的交叉对象。
12.如权利要求11所述的覆盖率驱动随机验证集成电路的方法,其特征在于,
所述步骤111进一步为,
在执行父个体对应的验证程序时被覆盖次数大于等于所述第一阈值的功能点的集合同在执行被计算个体对应的验证程序时被覆盖次数大于等于所述第一阈值的功能点的集合合并,合并后集合中功能点的个数为所述被计算个体对应于所述父个体的相对主适应度;
在执行父个体对应的验证程序时被覆盖次数大于所述第二阈值的功能点的集合同在执行被计算个体对应的验证程序时被覆盖次数大于所述第二阈值的功能点的集合合并,合并后集合中功能点的个数为所述被计算个体对应于所述父个体的相对从适应度;
相对主适应度的值越大的个体对应于所述父个体越优秀,如果相对主适应度相同,则相对从适应度的值越小的个体对应于所述父个体越优秀。
13.如权利要求11所述的覆盖率驱动随机验证集成电路的方法,其特征在于,
种群的个体包括二进制编码部分和十进制编码部分;
所述步骤4中进行交叉操作以生成新个体进一步为,
步骤131,对父个体和所述父个体的交叉对象的十进制编码部分进行交叉操作;
步骤132,对父个体和所述父个体的交叉对象的二进制编码部分进行交叉操作。
14.如权利要求13所述的覆盖率驱动随机验证集成电路的方法,其特征在于,
所述步骤132后还包括:
步骤143,对交叉操作生成的新个体的二进制编码部分进行修订,以使所述新个体的集合满足编码方式对应的约束条件。
15.如权利要求13所述的覆盖率驱动随机验证集成电路的方法,其特征在于,所述步骤131进一步为,
步骤151,将所述父个体和所述父个体的交叉对象的十进制编码部分进行右对齐;
步骤152,从所述父个体和所述父个体的交叉对象的十进制编码部分的左边的对齐点开始进行编号;
步骤153,从编号位置中随机选择一个交叉位置,将所述父个体和所述父个体的交叉对象从所述交换位置起右边的十进制编码部分进行交换;
步骤154,进行交换后的所述父个体和所述父个体的交叉对象的十进制编码部分对应于两个所述新个体的十进制编码部分。
16.如权利要求13所述的覆盖率驱动随机验证集成电路的方法,其特征在于,所述步骤132进一步为,
步骤161,计算所述父个体同所述父个体的交叉对象的二进制编码部分间的海明码距为DH
步骤162,判断DH是否大于等于第三阈值,如果是,则执行步骤163;
步骤163,在所述父个体和所述父个体的交叉对象的二进制编码部分随机选择DH/2个交换位置进行交换,交换后的所述父个体和所述父个体的交叉对象的二进制编码部分对应于两个所述新个体的二进制编码部分。
17.如权利要求13所述的覆盖率驱动随机验证集成电路的方法,其特征在于,所述步骤132进一步为,
步骤171,对父个体和所述父个体的交叉对象的二进制编码部分按指令模板文件具有的约束类型进行分组;
步骤172,将每个组等效为一个点,随机选择交换位置;
步骤173,将所述父个体和所述父个体的交叉对象从所述交换位置起右边的二进制编码部分进行交换;
步骤174,进行交换后的所述父个体和所述父个体的交叉对象的二进制编码部分对应于两个所述新个体的二进制编码部分。
18.如权利要求6所述的覆盖率驱动随机验证集成电路的方法,其特征在于,所述步骤21进一步为,
步骤181,对所述新个体的十进制编码部分的每一位随机判断是否对当前操作位进行变异,如果是,随机确定对当前操作位进行插入操作、替换操作或者删除操作;
步骤182,对所述新个体的二进制编码部分的每一位随机确定是否进行反转操作;
步骤183,对变异后的新个体二进制部分进行修订,以使所述新个体的集合满足编码方式对应的约束条件。
19.一种覆盖率驱动随机验证集成电路的系统,其特征在于,所述系统包括:
初始化模块,用于生成初始种群,初始化当前种群为所述初始种群,启动验证模块;
所述验证模块,用于根据当前种群生成验证程序,由指令集模拟器和待验证设计执行所述验证程序,比较两个执行结果确定所述待验证设计是否正确,同时获得覆盖率报告;
结束判断模块,用于根据所述覆盖率报告计算所述当代种群中个体的适应度,根据所述适应度判断所述当前种群是否满足优化准则,如果满足,结束验证,否则,启动下一代种群生成模块;
所述下一代种群生成模块,用于根据所述适应度选择当前种群中的优秀个体作为父个体,选择所述父个体的交叉对象,进行交叉操作以生成新个体,所述新个体组成下一代种群,更新所述当前种群为所述下一代种群,启动所述验证模块。
20.如权利要求19所述的覆盖率驱动随机验证集成电路的系统,其特征在于,
所述下一代种群生成模块,还用于在生成新个体和新个体组成下一代种群间,对所述新个体进行变异操作。
21.如权利要求20所述的覆盖率驱动随机验证集成电路的系统,其特征在于,
所述系统还包括处理指令模板文件的可配置随机验证平台;
所述初始化模块进一步用于,确定可配置随机验证平台的指令模板文件对应的编码方式;按所述编码方式采用随机系统生成所述初始种群。
22.如权利要求21所述的覆盖率驱动随机验证集成电路的系统,其特征在于,
所述系统还包括,用于提供仿真环境进行验证并生成覆盖率报告的仿真工具;
所述验证模块进一步用于将当代种群的个体转换为指令模板文件,并将各个所述指令模板文件输入可配置随机验证平台生成对应的验证程序;将各个验证程序送入所述指令集模拟器进行执行,并通过仿真工具使待验证设计执行各个验证程序,比较所述指令集模拟器和所述待验证设计的执行结果,确定所述待验证设计是否正确,同时获得所述仿真工具提供的覆盖率报告。
23.如权利要求21所述的覆盖率驱动随机验证集成电路的系统,其特征在于,
所述指令模板文件包括随机数种子约束、寄存器类型约束、指令类型约束以及指令组类型约束。
24.如权利要求23所述的覆盖率驱动随机验证集成电路的系统,其特征在于,
所述随机数种子约束采用十进制编码方式;
所述寄存器类型约束、所述指令类型约束和所述指令组类型约束采用二进制编码方式。
25.如权利要求22所述的覆盖率驱动随机验证集成电路的系统,其特征在于,
所述覆盖率报告中包括在执行个体对应的验证程序时,各个预设功能点被覆盖的次数;
所述结束判断模块在根据所述覆盖率报告计算所述当代种群中个体的适应度时进一步用于确定在执行个体对应的验证程序时,被覆盖到的功能点的个数为所述个体的主适应度,被过度覆盖到的功能点的个数为所述个体的从适应度。
26.如权利要求25所述的覆盖率驱动随机验证集成电路的系统,其特征在于,
所述结束判断模块在确定个体的主适应度和从适应度时进一步用于确定在执行个体对应的验证程序时,被覆盖次数大于等于第一阈值的功能点的个数为所述个体的主适应度,在执行个体对应的验证程序时,被覆盖次数大于第二阈值的功能点的个数为所述个体的从适应度;所述第一阈值小于所述第二阈值。
27.如权利要求19所述的覆盖率驱动随机验证集成电路的系统,其特征在于,
所述优化准则为连续M代的平均适应度没有提高,所述M为预设值。
28.如权利要求26所述的覆盖率驱动随机验证集成电路的系统,其特征在于,
所述下一代种群生成模块在根据所述适应度选择当前种群中的优秀个体作为父个体时进一步用于从当代种群中随机选择m个个体,m为预设值,2≤m≤pop_size,其中pop_size为种群中个体的个数;从选择的m个个体中选择最优秀的个体作为一个父个体,主适应度的值越大的个体越优秀,如果主适应度相同,则从适应度的值越小的个体越优秀;如果选择出的父个体的个数未达到pop_size/2,则继续选择父个体。
29.如权利要求28所述的覆盖率驱动随机验证集成电路的系统,其特征在于,
所述下一代种群生成模块在选择所述父个体的交叉对象时进一步用于计算每个父个体和当前种群中其他个体的相对适应度;产生范围在0至1间的随机浮点数NR,如果NR大于等于预设的选择概率,则采用轮盘赌算法选择出所述父个体的交叉对象,否则,根据所述相对适应度选择对应于所述父个体最优秀的个体为所述父个体的交叉对象。
30.如权利要求29所述的覆盖率驱动随机验证集成电路的系统,其特征在于,
所述下一代种群生成模块在计算每个父个体和当前种群中其他个体的相对适应度时进一步用于在执行父个体对应的验证程序时将被覆盖次数大于等于所述第一阈值的功能点的集合同在执行被计算个体对应的验证程序时被覆盖次数大于等于所述第一阈值的功能点的集合合并,合并后集合中功能点的个数为所述被计算个体对应于所述父个体的相对主适应度;将在执行父个体对应的验证程序时被覆盖次数大于所述第二阈值的功能点的集合同在执行被计算个体对应的验证程序时被覆盖次数大于所述第二阈值的功能点的集合合并,合并后集合中功能点的个数为所述被计算个体对应于所述父个体的相对从适应度;相对主适应度的值越大的个体对应于所述父个体越优秀,如果相对主适应度相同,则相对从适应度的值越小的个体对应于所述父个体越优秀。
31.如权利要求29所述的覆盖率驱动随机验证集成电路的系统,其特征在于,
种群的个体包括二进制编码部分和十进制编码部分;
所述下一代种群生成模块在进行交叉操作以生成新个体时进一步用于对父个体和所述父个体的交叉对象的十进制编码部分进行交叉操作;对父个体和所述父个体的交叉对象的二进制编码部分进行交叉操作。
32.如权利要求31所述的覆盖率驱动随机验证集成电路的系统,其特征在于,
所述下一代种群生成模块还用于对交叉操作生成的新个体二进制编码部分进行修订,以使所述新个体的集合满足编码方式对应的约束条件。
33.如权利要求31所述的覆盖率驱动随机验证集成电路的系统,其特征在于,所述下一代种群生成模块在对父个体和所述父个体的交叉对象的十进制编码部分进行交叉操作时进一步用于将所述父个体和所述父个体的交叉对象的十进制编码部分进行右对齐;从所述父个体和所述父个体的交叉对象的十进制编码部分的左边的对齐点开始进行编号;从编号位置中随机选择一个交叉位置,将所述父个体和所述父个体的交叉对象从所述交换位置起右边的十进制编码部分进行交换;进行交换后的所述父个体和所述父个体的交叉对象的十进制编码部分对应于两个所述新个体的十进制编码部分。
34.如权利要求31所述的覆盖率驱动随机验证集成电路的系统,其特征在于,
所述下一代种群生成模块在对父个体和所述父个体的交叉对象的二进制编码部分进行交叉操作时进一步用于计算所述父个体同所述父个体的交叉对象的二进制编码部分间的海明码距为DH;判断DH是否大于等于第三阈值,如果是,则在所述父个体和所述父个体的交叉对象的二进制编码部分随机选择DH/2个交换位置进行交换,交换后的所述父个体和所述父个体的交叉对象的二进制编码部分对应于两个所述新个体的二进制编码部分。
35.如权利要求31所述的覆盖率驱动随机验证集成电路的系统,其特征在于,
所述下一代种群生成模块在对父个体和所述父个体的交叉对象的二进制编码部分进行交叉操作时进一步用于对父个体和所述父个体的交叉对象的二进制编码部分按指令模板文件具有的约束类型进行分组;将每个组等效为一个点,随机选择交换位置;将所述父个体和所述父个体的交叉对象从所述交换位置起右边的二进制编码部分进行交换;进行交换后的所述父个体和所述父个体的交叉对象的二进制编码部分对应于两个所述新个体的二进制编码部分。
36.如权利要求20所述的覆盖率驱动随机验证集成电路的系统,其特征在于,
所述下一代种群生成模块在对所述新个体进行变异操作时进一步用于对所述新个体的十进制编码部分的每一位随机判断是否对当前操作位进行变异,如果是,随机确定对当前操作位进行插入操作、替换操作或者删除操作;对所述新个体的二进制编码部分的每一位随机确定是否进行反转操作;对变异后的新个体二进制部分进行修订,以使所述新个体的集合满足编码方式对应的约束条件。
CN2009100783265A 2009-02-25 2009-02-25 覆盖率驱动随机验证集成电路的方法及系统 Active CN101488160B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009100783265A CN101488160B (zh) 2009-02-25 2009-02-25 覆盖率驱动随机验证集成电路的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009100783265A CN101488160B (zh) 2009-02-25 2009-02-25 覆盖率驱动随机验证集成电路的方法及系统

Publications (2)

Publication Number Publication Date
CN101488160A true CN101488160A (zh) 2009-07-22
CN101488160B CN101488160B (zh) 2011-03-23

Family

ID=40891048

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009100783265A Active CN101488160B (zh) 2009-02-25 2009-02-25 覆盖率驱动随机验证集成电路的方法及系统

Country Status (1)

Country Link
CN (1) CN101488160B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102436521A (zh) * 2011-09-27 2012-05-02 浪潮(北京)电子信息产业有限公司 随机验证方法和系统
CN102542088A (zh) * 2010-12-27 2012-07-04 北京国睿中数科技股份有限公司 覆盖率驱动的随机验证的方法
CN102968515A (zh) * 2011-08-31 2013-03-13 国际商业机器公司 用于计算集成电路模型的验证覆盖率的方法和设备
CN105302573A (zh) * 2015-11-20 2016-02-03 浪潮集团有限公司 一种用于功能验证平台的功能点匹配设置自动化平台的搭建方法
CN107273604A (zh) * 2017-06-12 2017-10-20 郑州云海信息技术有限公司 随机约束可选择的基于覆盖率驱动的随机验证方法
CN107958097A (zh) * 2017-10-31 2018-04-24 成都华微电子科技有限公司 覆盖率驱动的fpga及类似asic验证方法
CN111814414A (zh) * 2020-07-13 2020-10-23 中国科学院微电子研究所 一种基于遗传算法的覆盖率收敛方法及系统
CN112035376A (zh) * 2020-11-05 2020-12-04 四川科道芯国智能技术股份有限公司 一种生成覆盖率报告的方法、装置、设备及存储介质
CN112527571A (zh) * 2019-09-18 2021-03-19 珠海零边界集成电路有限公司 一种cpu指令集覆盖率计算方法及装置
CN117034817A (zh) * 2023-10-10 2023-11-10 沐曦集成电路(上海)有限公司 自动随机生成验证数据包的方法、电子设备和介质

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102542088A (zh) * 2010-12-27 2012-07-04 北京国睿中数科技股份有限公司 覆盖率驱动的随机验证的方法
CN102542088B (zh) * 2010-12-27 2014-03-12 北京国睿中数科技股份有限公司 覆盖率驱动的随机验证的方法
CN102968515A (zh) * 2011-08-31 2013-03-13 国际商业机器公司 用于计算集成电路模型的验证覆盖率的方法和设备
CN102968515B (zh) * 2011-08-31 2016-03-30 国际商业机器公司 用于计算集成电路模型的验证覆盖率的方法和设备
CN102436521A (zh) * 2011-09-27 2012-05-02 浪潮(北京)电子信息产业有限公司 随机验证方法和系统
CN105302573A (zh) * 2015-11-20 2016-02-03 浪潮集团有限公司 一种用于功能验证平台的功能点匹配设置自动化平台的搭建方法
CN107273604B (zh) * 2017-06-12 2020-09-22 苏州浪潮智能科技有限公司 随机约束可选择的基于覆盖率驱动的随机验证方法
CN107273604A (zh) * 2017-06-12 2017-10-20 郑州云海信息技术有限公司 随机约束可选择的基于覆盖率驱动的随机验证方法
CN107958097A (zh) * 2017-10-31 2018-04-24 成都华微电子科技有限公司 覆盖率驱动的fpga及类似asic验证方法
CN112527571A (zh) * 2019-09-18 2021-03-19 珠海零边界集成电路有限公司 一种cpu指令集覆盖率计算方法及装置
CN112527571B (zh) * 2019-09-18 2024-02-02 珠海零边界集成电路有限公司 一种cpu指令集覆盖率计算方法及装置
CN111814414A (zh) * 2020-07-13 2020-10-23 中国科学院微电子研究所 一种基于遗传算法的覆盖率收敛方法及系统
CN112035376A (zh) * 2020-11-05 2020-12-04 四川科道芯国智能技术股份有限公司 一种生成覆盖率报告的方法、装置、设备及存储介质
CN112035376B (zh) * 2020-11-05 2021-04-09 四川科道芯国智能技术股份有限公司 一种生成覆盖率报告的方法、装置、设备及存储介质
CN117034817A (zh) * 2023-10-10 2023-11-10 沐曦集成电路(上海)有限公司 自动随机生成验证数据包的方法、电子设备和介质
CN117034817B (zh) * 2023-10-10 2023-12-22 沐曦集成电路(上海)有限公司 自动随机生成验证数据包的方法、电子设备和介质

Also Published As

Publication number Publication date
CN101488160B (zh) 2011-03-23

Similar Documents

Publication Publication Date Title
CN101488160B (zh) 覆盖率驱动随机验证集成电路的方法及系统
Kaliszyk et al. Learning-assisted automated reasoning with Flyspeck
US8065243B2 (en) Optimizing operations of a hydrogen pipeline system
CN102141958B (zh) 面向缺陷的路径覆盖测试数据进化生成方法
US20080307399A1 (en) Gene expression programming based on hidden markov models
CN104616062B (zh) 一种基于多目标遗传规划的非线性系统辨识方法
CN108563555A (zh) 基于四目标优化的故障更改代码预测方法
US20070179917A1 (en) Intelligent design optimization method and system
CN113687821A (zh) 一种基于图形可视化的智能代码拼接方法
CN114706762B (zh) 一种基于强化学习的Simulink软件测试方法
CN112364352A (zh) 可解释性的软件漏洞检测与推荐方法及系统
Divina et al. Evolutionary concept learning
CN117114250A (zh) 一种基于大模型的智能决策系统
de Alfaro Quantitative verification and control via the mu-calculus
CN102521130B (zh) 一种基于聚类不变式分析的错误定位方法
CN105825075A (zh) 基于nga-ts算法的蛋白质结构预测方法
Rodriguez et al. Multi-objective information retrieval-based NSGA-II optimization for requirements traceability recovery
Huerta y Munive Algebraic verification of hybrid systems in Isabelle/HOL
Senthooran et al. Human-centred feasibility restoration
CN101487876A (zh) 验证向量的优化方法及装置
Guo et al. On-the-fly reduction of stimuli for functional verification
CN107480768A (zh) 贝叶斯网络结构自适应学习方法和装置、存储设备以及终端设备
Compton Simulating expertise
Glavas et al. Metaheuristic approach to class responsibility assignment problem
Christiansen et al. A machine learning approach to test data generation: A case study in evaluation of gene finders

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
EE01 Entry into force of recordation of patent licensing contract

Assignee: Beijing Loongson Zhongke Technology Service Center Co., Ltd.

Assignor: Institute of Computing Technology, Chinese Academy of Sciences

Contract fulfillment period: 2009.12.16 to 2028.12.31

Contract record no.: 2010990000062

Denomination of invention: Method and system for driving accidental validation integrated circuit by coverage rate

License type: exclusive license

Record date: 20100128

LIC Patent licence contract for exploitation submitted for record

Free format text: EXCLUSIVE LICENSE; TIME LIMIT OF IMPLEMENTING CONTACT: 2009.12.16 TO 2028.12.31; CHANGE OF CONTRACT

Name of requester: BEIJING LOONGSON TECHNOLOGY SERVICE CENTER CO., LT

Effective date: 20100128

C14 Grant of patent or utility model
GR01 Patent grant
EC01 Cancellation of recordation of patent licensing contract

Assignee: Longxin Zhongke Technology Co., Ltd.

Assignor: Institute of Computing Technology, Chinese Academy of Sciences

Contract record no.: 2010990000062

Date of cancellation: 20141231

EM01 Change of recordation of patent licensing contract

Change date: 20141231

Contract record no.: 2010990000062

Assignee after: Longxin Zhongke Technology Co., Ltd.

Assignee before: Beijing Loongson Zhongke Technology Service Center Co., Ltd.

LICC Enforcement, change and cancellation of record of contracts on the licence for exploitation of a patent or utility model
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20090722

Assignee: Longxin Zhongke Technology Co., Ltd.

Assignor: Institute of Computing Technology, Chinese Academy of Sciences

Contract record no.: 2015990000066

Denomination of invention: Method and system for driving accidental validation integrated circuit by coverage rate

Granted publication date: 20110323

License type: Common License

Record date: 20150211

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200821

Address after: 100095, Beijing, Zhongguancun Haidian District environmental science and technology demonstration park, Liuzhou Industrial Park, No. 2 building

Patentee after: LOONGSON TECHNOLOGY Corp.,Ltd.

Address before: 100080 Haidian District, Zhongguancun Academy of Sciences, South Road, No. 6, No.

Patentee before: Institute of Computing Technology, Chinese Academy of Sciences

EC01 Cancellation of recordation of patent licensing contract
EC01 Cancellation of recordation of patent licensing contract

Assignee: LOONGSON TECHNOLOGY Corp.,Ltd.

Assignor: Institute of Computing Technology, Chinese Academy of Sciences

Contract record no.: 2015990000066

Date of cancellation: 20200928

CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Patentee after: Loongson Zhongke Technology Co.,Ltd.

Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Patentee before: LOONGSON TECHNOLOGY Corp.,Ltd.