用于验证电路的模型检测中的模型抽象方法及其系统技术方案

技术编号:3847311 阅读:291 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及用于验证电路的模型检测中的模型抽象方法和系统,所述电路由Verilog设计,所述方法包括:步骤1,读入所述电路的Verilog代码,依据检测需求处理所述Verilog代码中的变量,以规范并简化所述代码;步骤2,根据规范后的所述变量和该变量的赋值,提取所述电路的数据路径;步骤3,提取数据路径的数据运算,根据该数据运算抽象所述数据路径;步骤4,对抽象后的所述变量和该变量的赋值进行操作,生成状态机的状态集和边集。本发明专利技术能够在用户提供必要的信息后,自动对Verilog代码进行分析,从中提取数据路径。

【技术实现步骤摘要】

本专利技术涉及形式化验证,尤其涉及用于验证由Verilog设计的电路的模 型检测中的模型抽象方法及其系统。
技术介绍
模型检测是一种自动化程度很高的形式化验证方法。当使用模型检测验 证一个电路时,首先需要将待验证电路转化为一个自动机,然后模型检测工 具通过遍历该自动机来检査待验证电路的功能。模型检测的缺点在于,当待 验证电路的规模不断增长时,模型检测面临着越来越严重的状态爆炸问题, 也就是当自动机的状态过多时,计算所需的空间和时间将令人无法接受。因 此在将待验证电路转化为自动机时,通常需要对电路进行一定程度的抽象, 从而减小生成的自动机的体积。电路中的数据路径占有很大的位宽。例如64位的数据总线或32位的 地址总线等。在验证电路时,数据路径上的数值通常被分类处理,而不会具 体到每一个数值。例如, 一个64位的数据共有2"个数值,而在验证时,可 能仅关心该64位的数据的奇偶性,只为两种情况,因此可以将64位抽象为 l位从而减小自动机的体积。如图l所示一个电路包括输入IOI、内部的寄存器102、输出103、或 门104、以及内部的网线105。在电路的每个时钟周期,输入101的值和寄存 器102的值通过或门104在输出103上输出结果,同时此结果在进入下一个 时钟周期时会通过网线105刷新寄存器102的值。自动机是一个状态转换图, 每个节点表示一个状态,节点间的有向边表示状态的迁移。在图l (b)中自 动机对应于电路。电路的输入1G1和寄存器102的4种取值输入101为0且 寄存器102为0,输入101为1且寄存器102为0,输入101为0且寄存器 102为1,输入101为1且寄存器102为1,形成了自动机的4个状态分别为 106、 107、 108和109。自动机中的有向边对应于电路相邻时钟周期间的状态10转换。Verilog是当前主流的电路设计语言。在使用模型检测对一个应用 Verilog设计的电路进行验证时,为了给模型检测工具提供较小的自动机, 需要首先对电路进行数据路径的抽象。该工作需要对Verilog代码的结构进 行分析,从中提取出电路的数据路径,并对其进行抽象。手工完成该工作, 不但耗费人力,而且花费时间。而目前也没有一套系统的方法可以自动完成 这一工作。
技术实现思路
为了解决上述的技术问题,本专利技术提供了模型检测中抽象数据路径的方 法及其系统,能够在用户提供必要的信息后,自动对Verilog代码进行分析, 从中提取数据路径。本专利技术公开了用于验证电路的模型检测中的模型抽象方法,所述电路为 Verilog设计,所述方法包括步骤l,读入所述电路的Verilog代码,依据检测需求处理所述Verilog 代码中的变量,以规范并简化所述代码;步骤2,根据规范后的所述变量和所述变量的赋值,提取所述电路的数 据路径;步骤3,提取所述数据路径的数据运算,根据所述数据运算抽象所述数 据路径;步骤4,对抽象后的所述代码中的变量和所述变量的赋值进行操作,生 成状态机的状态集和边集。 所述步骤l进一步为,步骤21,读入所述电路的Verilog代码,将所述代码转化为规范形式, 所述规范形式中代码的一个模块包括变量声明和赋值语句;步骤22,获得以所述检测需求为依据逻辑上作为整体的比特序列的数据 字及所述数据字对应的为名字序列的抽象域,将变量中未被定义为数据字的 部分中每个比特作为逻辑个体的数据位;步骤23,对所述数据字和所述数据位生成新的变量,分别对应为字变量 和位变量,将所述赋值语句中的变量引用依据比特对应关系替换为对所述字变量和位变量的引用,删除所述变量的变量声明;步骤24,从所述赋值语句中提取对变量赋值的赋值表达式,并删除所述赋值语句。所述数据字满足的条件包括数据字为变量引用或者多个变量引用的连接;数据字只引用类型为输入变量、输出变量和寄存器变量;在数据字为多个变量引用连接时,被引用的变量类型相同;数据字包含至少两个比特;所有数据字中任意两个变量弓I用不重叠。所述步骤22中将变量中未被定义为数据字的部分中每个比特作为逻辑 个体的数据位进一步为,步骤41,对于每个输入变量、输出变量和寄存器变量中的一个比特,如 果所述比特未被包含在任何所述数据字中,则所述比特为一个所述数据位。所述步骤23还包括字变量和位变量继承定义所述数据字和数据位的变 量的类型,所述类型包括输入、输出和寄存器。所述步骤24中变量的类型包括输出、寄存器和网线。所述步骤2进一步为,步骤71,处理所述变量的赋值表达式,标记出字传递表达式以及字传递 网线变量,删除所有字传递网线变量; 步骤72,对变量进行选择传递。所述步骤71中处理所述变量的赋值表达式,标记出字传递表达式以及字 传递网线变量进一步为,步骤81,处理变量的赋值表达式,获得所述变量的作为数据路径的分支 的集合,所述集合为分支组,所述分支包括指明所述分支对应数据路径开通 的条件的分支条件表达式和指明所述分支对应数据路径的数据源的分支赋值 表达式,标记出分支的分支赋值表达式中的字传递表达式,并删除所述变量 的赋值表达式;步骤82,根据变量类型和标记的字传递表达式,标记字传递网线变量, 确定是否由变量的分支组生成所述变量的新的赋值表达式,并删除所述变量的分支组。所述步骤81进一步为对所述变量的赋值表达式进行分支提取,以获得所 述变量对应的分支组,并标记出分支的分支赋值表达式中的字传递表达式; 进行所述删除所述变量的赋值表达式。所述步骤81中被处理的变量的类型包括输出、寄存器和网线;所述步骤82进一步为,步骤101,对于类型为输出和寄存器的位变量,将所述变量的分支组谓 词化,拼合所述变量的分支组,生成所述变量的新的赋值表达式,删除所述 变量的分支组;步骤102,对于类型为网线的变量,如果所述变量的分支组中存在标记 为字传递表达式的分支赋值表达式,则将所述变量标记为字传递网线变量, 否则,拼合所述变量的分支组,生成所述变量的新的赋值表达式,删除所述 变量的分支组。所述步骤72进一步为,步骤111,对类型为输出和寄存器的位变量的赋值表达式、类型为网线 的变量的赋值表达式、类型为输出和寄存器的字变量的分支条件表达式、类 型为输出和寄存器的字变量的分支赋值表达式,进行选择传递。所述步骤3进一步为,步骤121,提取出所述电路中对于数据字的两种运算, 一种运算为所述 电路的控制部分在数据流中提取信息,另一种运算为所述电路对数据字进行 运算并生成数据;步骤122,根据所述数据字对应的抽象域,生成抽象变量,并抽象所述 两种运算。所述步骤121进一步为对每个类型为输出、寄存器和网线的变量,如果所述变量为字变量,则 对所述变量的每个分支条件表达式和分支赋值表达式进行谓词提取,并对所 述变量的每个分支赋值表达式进行运算提取;否则,对所述变量的赋值表达 式进行谓词提取。所述步骤122进一步为,步骤141,对于每个寄存器字变量和输出字变量,如果该字变量的一个分支赋值表达式为一个对运算变量的变量引用,则令该运算变量的抽象域为 该字变量的抽象域;对于每个字变量和运算变量,生成的抽象变量的类型与 该变量的类型相同,抽象变量的值域为该变量的抽象域;步骤142,获得每个谓词变量的约束表达式和运算变量的约束表达式的 抽象约束表达式;本文档来自技高网
...

【技术保护点】
一种用于验证电路的模型检测中的模型抽象方法,所述电路为Verilog设计,其特征在于,所述方法包括: 步骤1,读入所述电路的Verilog代码,依据检测需求处理所述Verilog代码中的变量,以规范并简化所述代码; 步骤2,根据 规范后的所述变量和所述变量的赋值,提取所述电路的数据路径; 步骤3,提取所述数据路径的数据运算,根据所述数据运算抽象所述数据路径; 步骤4,对抽象后的所述代码中的变量和所述变量的赋值进行操作,生成状态机的状态集和边集。

【技术特征摘要】

【专利技术属性】
技术研发人员:陈博文沈海华
申请(专利权)人:中国科学院计算技术研究所
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1