CN109002601B - 一种基于Petri网的FPGA系统的验证模型建模方法 - Google Patents

一种基于Petri网的FPGA系统的验证模型建模方法 Download PDF

Info

Publication number
CN109002601B
CN109002601B CN201810738138.XA CN201810738138A CN109002601B CN 109002601 B CN109002601 B CN 109002601B CN 201810738138 A CN201810738138 A CN 201810738138A CN 109002601 B CN109002601 B CN 109002601B
Authority
CN
China
Prior art keywords
input
output
variables
connection
module
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
CN201810738138.XA
Other languages
English (en)
Other versions
CN109002601A (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.)
Xidian University
Original Assignee
Xidian University
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 Xidian University filed Critical Xidian University
Priority to CN201810738138.XA priority Critical patent/CN109002601B/zh
Publication of CN109002601A publication Critical patent/CN109002601A/zh
Application granted granted Critical
Publication of CN109002601B publication Critical patent/CN109002601B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]

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)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

本发明涉及一种基于Petri网的FPGA系统的验证模型建模方法,主要解决了现有模型对数据不分类、无法具体描述FPGA系统功能的缺点。其实验方案是:步骤一,以moudle为粒度,获取FPGA程序的输入\输出变量、模块间的连接变量、时钟变量以及拓扑结构,并保存;步骤二,区分模块间连接变量具体分类为控制流变量、数据流变量两类,计算并保存所有变量的位宽度;步骤三,计算每个模块所有的输入状态,并通过信号仿真得到其对应的输出状态和对时钟的消耗;步骤四,将普通三元组Petri网模型改进为十元组Petri模型,将前三步获得的信息分别注入对应网元素,得到FPGA系统的基于Petri网模型的验证模型。据此为FPGA系统的可靠性评估提供一种全新的形式化建模方法。

Description

一种基于Petri网的FPGA系统的验证模型建模方法
技术领域
本发明属于电子电路技术领域,具体涉及一种基于Petri网的FPGA系统的验证模型建模方法,可用于对FPGA系统的可靠性分析。
背景技术
现场可编程逻辑阵列FPGA作为一种可编程逻辑器件,具有开发周期短、设计灵活性高、功耗低的优点,在航天领域中有着广泛的应用。据统计,FPGA被广泛使用在包括深空探测、军用、民用以及科学卫星等共60多个航天设备开发项目中。现代FPGA工艺向着低电压、高集成度方向发展,这使得发生空间辐射响应的阈值越来越低,发生故障的概率越来越大。空间辐射效应的发生,轻则会使设备工作异常,重则会导致设备烧毁、永久失效。因此,FPGA必须进行高可靠性设计,来最大限度地预防和解决空间辐射效应的影响。
目前,对FPGA可靠性进行研究通常有两种方法,一种是对FPGA代码进行测试和验证,另一种是对FPGA系统进行综合测试。这两种验证方法虽能不断找出设计错误,却不能证明设计是正确的,所以它们的主要缺点是非完备性。
因此,形式化验证被引入到可靠性分析中,形式化验证就是利用某种语言对实际系统或程序进行建模,然后结合定理证明或模型检测等数学方法完备性地证明设计是否满足控制规范。Machado等在《Amethod for switching activity analysis of VHDL-RTLcombinatorial circuits》中提出了利用二元决策图BDD对组合逻辑VHDL程序进行建模,通过BDD的性质来分析和模拟组合逻辑电路的运行过程。Smrcka等在《Verifying VHDLdesigns with multiple clocks in SMV》把描述多重时钟异步电路的VHDL语言转换为模型检测器SMV能够识别的语言,来验证异步电路设计的合理性。刁岚松等在《高级综合中VHDL描述向Petri网转换方法的研究》中通过提取VHDL源描述中的时序功能信息,提出一种基于执行路径的Petri网生成算法;丁云霞在《Petri网理论在电气系统中的应用研究》提出将逻辑门描述为变迁,输入和输出变量描述为库所,库所中所含托肯情况表示变量的布尔值“0”或“1”;Jui等在《Test Generation and Site of Fault for CombinationalCircuits Using Logic Petri Nets》中也是通过这种逻辑Petri网对组合逻辑电路进行建模,提出了电路测试向量的生成算法以及寻找故障点的方法。但这些建模方法,都是针对VHDL语言,建模的过程中均是以单行代码为模型粒度,且没有对数据的重要程度进行区分,对FPGA系统的功能特性描述过于抽象。
发明内容
为了解决现有技术中存在的上述问题,本发明提供了一种基于Petri网的FPGA系统的验证模型建模方法,以对数据的类型进行区分,更具体的描述FPGA系统的功能特性。本发明要解决的技术问题通过以下技术方案实现:一种基于Petri网的FPGA系统的验证模型建模方法,包括以下步骤:
步骤1,以moudle为粒度,获取FPGA程序的输入\输出变量、模块间的连接变量、时钟变量以及拓扑结构,并保存;
步骤2,将所述模块间的连接变量分为控制流变量和数据流变量两类,计算并保存所述模块间的连接变量的位宽度;
步骤3,计算每个所述模块的输入状态,并通过信号仿真得到其对应的输出状态和对时钟的消耗;
步骤4,建立十元组Petri网模型,将所述步骤1-步骤3获取的信息分别注入对应网元素,生成FPGA系统的验证模型。
进一步的,所述步骤1中所述获取FPGA程序的拓扑结构的具体方法为:在顶层模块中通过寻找关键字input和output确认变量位置、变量类型以及变量在不同模块中的输入输出属性,并通过同一个信号在顶层模块不同例化语句.()中的例化关系,结合所述变量在不同模块中的输入输出属性确认所述变量的连接关系。
进一步的,所述FPGA程序的输入\输出变量、模块间的连接变量、时钟变量以及拓扑结构的保存形式表示如下:
module_i:该变量代表工程的模块,i=0,1,2,3…NUM,NUM为整个程序的子模块数,其中,当i=0时,代表顶层模块;
input_j_{}:该变量代表系统即顶层模块的输入集合,j=1,2,3,…NUM,“j”代表该集合的连接关系是由顶层模块指向第j个模块;
output_i_{}:该变量代表系统即顶层模块的输出集合,i=1,2,3,…NUM,“i”代表该集合的连接关系是由第i个模块输出;
clk_i,j_{}:该变量代表系统中的时钟信号集合,i,j=0,1,2....NUM,i,j表示连接关系是由第i个模块指向第j个模块;
connect_i,j_{}:该变量代表系统中的连接变量结合,i,j=1,2,3…NUM,i,j表示连接关系是由第i个模块指向第j个模块。
进一步的,所述步骤2中将所述模块间的连接变量分为控制流变量和数据流变量的具体分类方法为:若一个变量在其输出模块中,在含关键字if,case的语句中赋值,或者在条件运算符?:及关系运算符>、<、<=、>=、==、!=语句中赋值;
且在其输入模块中,在含关键字if,case的语句中参与运算,或者在条件运算符?:及关系运算符>、<、<=、>=、==、!=语句中参与运算;
则该变量归类为控制流变量,否则归类为数据流变量。
进一步的,所述步骤3的具体步骤为:
步骤3a,在module_i,i=1,2,3…NUM中选取一个module_k,即i=k;
步骤3b,在所有connect_i,j_control{},connect_i,j_data{},input_j_{},中找到连接关系为输出到k的集合,将所有变量按标号由小到大拼接起来,计为in,并计算in所有可能状态数mk,记录所有状态到state_k_in{}={in_1,in_2,……in_mk};
步骤3c,在所有connect_i,j_control{},connect_i,j_data{},output_i_{},clk_i,j_{}中找到连接关系为由k输出的集合,将所有变量按标号从小到大拼接起来,记为out,通过modelsim仿真,向model_k依次输入state_k_in{}中所有元素,得到对应输出记录为state_k_out{}={out_1,out_2,……out_mk};
步骤3d,在所有clk_i,j_{}中找到连接关系为输出到k的集合,选取其中一个时钟变量为基准计为clk_k,在modelsim仿真时,统计对应输入变量变为state_k_in{}的状态输入,到输出变量变为state_k_out{}中对应输出状态时,所经历的clk_k的周期,记录为Time_k{}={t_1,t_2,……t_mk};
步骤3e,根据步骤3a—步骤3d的方法,对所有模块进行操作,得到对任意一个module_i,其输入状态为state_i_in{}={in_1,in_2,……in_mi},对应输出状态为state_i_out{}={out_1,out_2,……out_mi},其时钟属性为消耗时钟clk_i的周期数为Time_i{}={t_1,t_2,……t_mi}。
进一步的,所述步骤4中建立十元组Petri网模型的具体步骤为:
基于基础三元组的Petri网,将库所概念进行重新定义并添加相关变量,建立一个petri网模型P=(Scontrol,Sdata,Sin,Sclk,T,F,W,λ,K,C),其中,表示库所的Scontrol,Sdata,Sin,Sclk不能互相连接,其输入与输出必须与变迁T相连,流关系F为单向不可逆的;其中,
Scontrol表示控制库所,每个connect_i,j_control{}对应一个控制库所Scontrol_i,j;
Sdata表示数据库所,每个connect_i,j_data{}对应一个数据库所Sdata_i,j,每个output_i_{}应到一个数据库所Sdata_i;
Sclk表示时钟库所,每个clk_i,j_{}的每一个对象对应一个时钟库所Sclk_i,j;
Sin表示输入库所,每个input_j_{}对应一个输入库所Sin_i;
T表示变迁,每个module_i对应一个变迁T_i(i=1,2,3…NUM)且T_i执行的功能为当T_i的流关系为指向T_i的库所的变量状态为state_i_in{}={in_1,in_2,……in_mi},经过C_i的λ_i个周期后,将流关系为T_i指向的库所的变量状态变为state_i_out{}={out_1,out_2,……out_mi};
F表示流关系,即变迁到库所,库所到变迁的连接关系,由connect_i,j_control{},connect_i,j_data{},clk_i,j_{}中的(i,j)决定,所述(i,j)表示的意义为,该集合对应的库所,由变迁T_i输入,输出到变迁T_j;input_j_{}对应库所只有输出流关系T_j没有输入流关系,output_i_{}只有输入流关系T_i没有输出流关系;
K表示库所容量,控制库所connect_i,j_control{}对应库所容量分别为size_connect_i,j_control,数据库所input_j_{}、output_i_{}、connect_i,j_data{}的容量等于实际分配的物理地址的大小,若程序中没有分配或定义,则库所容量等于其位宽size_input_j、size_output_i、size_connect_i,j_data;
W表示弧权,库所的输入输出弧权等于其库所容量,模块i消耗时钟C_i对应库所输入弧权为t_i;
λ表示消耗时钟周期数,模块T_i消耗时钟周期数为λ_i等于Time_i{}={t_1,t_2,……t_mi};
C表示消耗时钟对象,模块T_i消耗时钟对象为C_i指代clk_i。
与现有技术相比,本发明的有益效果:
1、对变量数据进行了分类,即将连接变量按生成和使用规则费分类为控制流变量和数据流变量;
2、以输入状态和输出状态的形式具体描述了变迁代表的FPGA程序模块的功能。
附图说明
图1是一种基于Petri网的FPGA系统的验证模型建模方法的执行流程图
图2是控制流变量与数据流变量的区分方法流程图。
具体实施方式
下面结合具体实施例对本发明做进一步详细的描述,但本发明的实施方式不限于此。
在本发明创造的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明创造和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明创造的限制。
此外,术语“第一”、“第二”、“第三”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明创造的描述中,除非另有说明,“多个”的含义是两个或两个以上。
术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以通过具体情况理解上述术语在本发明创造中的具体含义。
如图1、图2所示,实现本发明目的的技术方案是对verilog语言的工程进行建模,为FPGA系统可靠性的形式化验证提供一种新的模型,其实现方案包括如下:
步骤1,以moudle为粒度,获取FPGA程序的输入\输出变量、模块间的连接变量、时钟变量以及拓扑结构,并保存:
步骤1a,打开FPGA工程文件夹,查找.v文件,记录所有.v文件名;
步骤1b,打开工程文件,并在工程中打开顶层模块,在顶层模块代码中通过寻找Module关键字,定位顶层模块起始位置;
步骤1c,从顶层模块的起始位置到最后一行代码,查询步骤1a中获得的每个文件名在顶层模块中的例化次数(例化格式为“文件名例化模块名”),所有文件的例化次数总和,即为子模块的总个数NUM,将模块名按序保存到module_i,i=0,1,2,3,………NUM,特别的module_0代表顶层模块;
步骤1d,在顶层模块中通过input、output关键字,记录系统输入、输出变量,并通过模块例化中的信号例化语句.()(注:例化语句.a(b)表示外部信号a与内部信号b相连),确认其与子模块的连接情况,j将自己定义的时钟变量和其连接关系保存到clk_i,j_{},将其他输入变量名和连接关系保存到input_j_{},将其他输出变量名和其连接关系保存到output_i_{},其中:
input_j_{}:该组代表系统即顶层模块除自定义时钟信号外的输入集合,j=1,2,3,…NUM,“j”代表该集合的连接关系是由顶层模块指向第j个模块;
output_i_{}:该组代表系统即顶层模块的输出集合,i=1,2,3,…NUM,“i”代表该集合的连接关系是由第i个模块输出;
clk_i,j_{}:该组代表系统中的时钟信号集合,i,j=0,1,2....NUM,i,j表示连接关系是由第i个模块指向第j个模块,0代表顶层模块;
步骤1e,打开一个子模块module_i,通过input、output关键字,找到并记录该模块的输入输出变量,选取一个变量,通过顶层例化模块中的例化语句.()确认该变量与模块j相连,若该信号在i模块中是input,在j模块中是output,则该信号的连接关系是j到i,若该信号在i模块中的定义是output,则该信号的连接关系是i到j,以次方法处理所有子模块中的所有定义为input、output的信号,将其中自定义为时钟的信号保存到clk_i,j_{},将其余的保存到connect_i,j_{},其中:
connect_i,j_{}:该组代表系统中的连接变量集合,i,j=1,2,3…NUM,i,j表示连接关系是由第i个模块指向第j个模块。
步骤2,将模块间的连接变量分为控制流变量和数据流变量两类,计算并保存模块间的连接变量的位宽度;
步骤2a,依次选取一个connect_i,j_{},i,j=1,2,3…NUM;
步骤2b,依次选取connect_i,j_{}中的一个变量;
步骤2c,确认当前选取变量在第i个模块中,是否在含关键字if,case的语句中赋值,或者在条件运算符?:及关系运算符>、<、<=、>=、==、!=语句中赋值,若是则该变量归类为控制流变量,若不是将该变量归类为数据流变量并按顺序存储到对应的connect_i,j_data{}集合中;
同时,确认当前选取变量在第j个模块中,是否在含关键字if,case的语句中参与运算,或者在条件运算符?:及关系运算符>、<、<=、>=、==、!=语句中参与运算,若是将该变量归类为控制流变量并按顺序存储到对应的connect_i,j_control{}集合中,若不是将该变量归类为数据流变量并按顺序存储到对应的connect_i,j_data{}集合中;
步骤2d,该变量是否是connect_i,j_{}中的最后一个变量,若是下一步,若不是返回步骤2b;
步骤2e,是否处理完所有connect_i,j_{},若是进行下一步,若不是返回步骤2a;
步骤2f,针对input_j_{}、output_i_{}、clk_i,j_{}、connect_i,j_control{}
、connect_i,j_data{}中的每一个变量,通过读取位于变量名和reg\wire关键字中间的的[:]位宽定义,确认每个变量的位宽(没有[:],默认位宽1bit),对时钟变量按其在对应clk_i,j_{}中的排列顺序依次保存位宽到size_clk_i,j_{},其中i,j=0,1,2,3…NUM,对其变量的位宽按集合求和,并按集合信息分别保存为size_input_j、size_output_i、size_connect_i,j_control、size_connect_i,j_data,其中i,j=1,2,3…NUM。
步骤3,计算每个模块所有的输入状态,并通过信号仿真得到其对应的输出状态和对时钟的消耗:
步骤3a,在module_i,i=1,2,3…NUM中选取一个module_k,即i=k;
步骤3b,在所有connect_i,j_control{},connect_i,j_data{},input_j_{},中找到连接关系为输出到k的集合,将所有变量按标号由小到大拼接起来,计为in,并计算in所有可能状态数mk,记录所有状态到state_k_in{}={in_1,in_2,……in_mk};
步骤3c,在所有connect_i,j_control{},connect_i,j_data{},output_i_{},clk_i,j_{}中找到连接关系为由k输出的集合,将所有变量按标号从小到大拼接起来,记为out,通过modelsim仿真,向model_k依次输入state_k_in{}中所有元素,得到对应输出记录为state_k_out{}={out_1,out_2,……out_mk};
步骤3d,在所有clk_i,j_{}中找到连接关系为输出到k的集合,选取其中一个时钟变量为基准计为clk_k,在modelsim仿真时,统计对应输入变量变为state_k_in{}的状态输入,到输出变量变为state_k_out{}中对应输出状态时,所经历的clk_k的周期,记录为Time_k{}={t_1,t_2,……t_mk};
步骤3e,依照步骤3a—步骤3d的方法,对所有模块进行操作,得到对任意一个module_i,其输入状态为state_i_in{}={in_1,in_2,……in_mi},对应输出状态为state_i_out{}={out_1,out_2,……out_mi},其时钟属性为消耗时钟clk_i的周期数为Time_i{}={t_1,t_2,……t_mi}。
步骤4,将普通三元组Petri网模型改进为十元组Petri模型,将前三步获得的信息分别注入对应网元素,得到FPGA系统的验证模型:
基于基础三元组的Petri网,将库所概念进行重新定义并添加相关变量,建立一个十元组petri网模型,P=(Scontrol,Sdata,Sin,Sclk,T,F,W,λ,K,C),其中,表示库所的Scontrol,Sdata,Sin,Sclk不能互相连接,其输入与输出必须与变迁T相连(可以只有输入或输出),流关系F是单向不可逆的。该模型网元素定义与FPGA系统的对应关系如下:
Scontrol表示控制库所,每个connect_i,j_control{}对应一个控制库所Scontrol_i,j;
Sdata表示数据库所,每个connect_i,j_data{}对应一个数据库所
Sdata_i,j,每个output_i_{}应到一个数据库所Sdata_i;
Sclk表示时钟库所,每个clk_i,j_{}的每一个对象对应一个时钟库所Sclk_i,j;
Sin表示输入库所,每个input_j_{}对应一个输入库所Sin_i(特别的input_i{}与input_j{}完全相同,则Sin_i与Sin_i可合并为Sin_i+j,即一个库所两个输出,同理,可以有多个输出)。
T表示变迁,每个module_i对应一个变迁T_i(i=1,2,3…NUM)且T_i执行的功能为当T_i的流关系为指向T_i的库所的变量状态为state_i_in{}={in_1,in_2,……in_mi},经过C_i的λ_i个周期后,将流关系为T_i指向的库所的变量状态变为state_i_out{}={out_1,out_2,……out_mi};
F表示流关系,即变迁到库所,库所到变迁的连接关系,由connect_i,j_control{},connect_i,j_data{},clk_i,j_{}中的(i,j)决定,所述(i,j)表示的意义为,该集合对应的库所,由变迁T_i输入,输出到变迁T_j;input_j_{}对应库所只有输出流关系T_j没有输入流关系,output_i_{}只有输入流关系T_i没有输出流关系;
K表示库所容量,控制库所connect_i,j_control{}对应库所容量分别为size_connect_i,j_control,数据库所input_j_{}、output_i_{}、connect_i,j_data{}的容量等于实际分配的物理地址的大小,若程序中没有分配或定义,则库所容量等于其位宽size_input_j、size_output_i、size_connect_i,j_data;
W表示弧权,库所的输入输出弧权等于其库所容量,模块i消耗时钟C_i对应库所输入弧权为t_i;
λ表示消耗时钟周期数,模块T_i消耗时钟周期数为λ_i等于Time_i{}={t_1,t_2,……t_mi};
C表示消耗时钟对象,模块T_i消耗时钟对象为C_i指代clk_i。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

Claims (4)

1.一种基于Petri网的FPGA系统的验证模型建模方法,其特征在于:基于verilog语言,包括以下步骤:
步骤1,以moudle为粒度,获取FPGA程序的输入\输出变量、模块间的连接变量、时钟变量以及拓扑结构,并保存;
步骤2,将所述模块间的连接变量分为控制流变量和数据流变量两类,计算并保存所述模块间的连接变量的位宽度;
所述步骤2中将所述模块间的连接变量分为控制流变量和数据流变量的具体分类方法为:若一个变量在其输出模块中,在含关键字if,case的语句中赋值,或者在条件运算符?:及关系运算符>、<、<=、>=、==、!=语句中赋值;
且在其输入模块中,在含关键字if,case的语句中参与运算,或者在条件运算符?:及关系运算符>、<、<=、>=、==、!=语句中参与运算;
则该变量归类为控制流变量,否则归类为数据流变量;
步骤3,计算每个所述模块的输入状态,并通过信号仿真得到其对应的输出状态和对时钟的消耗;
步骤4,建立十元组Petri网模型,将所述步骤1-步骤3获取的信息分别注入对应网元素,生成FPGA系统的验证模型;
所述步骤4中建立十元组Petri网模型的具体步骤为:
基于基础三元组的Petri网,将库所概念进行重新定义并添加相关变量,建立一个petri网模型P=(Scontrol,Sdata,Sin,Sclk,T,F,W,λ,K,C),其中,表示库所的Scontrol,Sdata,Sin,Sclk不能互相连接,其输入与输出必须与变迁T相连,流关系F为单向不可逆的;其中,
Scontrol表示控制库所,每个connect_i,j_control{}对应一个控制库所Scontrol_i,j;
Sdata表示数据库所,每个connect_i,j_data{}对应一个数据库所Sdata_i,j,每个output_i_{}应到一个数据库所Sdata_i;
Sclk表示时钟库所,每个clk_i,j_{}的每一个对象对应一个时钟库所Sclk_i,j;
Sin表示输入库所,每个input_j_{}对应一个输入库所Sin_i;
T表示变迁,每个module_i对应一个变迁T_i(i=1,2,3…NUM)且T_i执行的功能为当T_i的流关系为指向T_i的库所的变量状态为state_i_in{}={in_1,in_2,……in_mi},经过C_i的λ_i个周期后,将流关系为T_i指向的库所的变量状态变为state_i_out{}={out_1,out_2,……out_mi};
F表示流关系,即变迁到库所,库所到变迁的连接关系,由connect_i,j_control{},connect_i,j_data{},clk_i,j_{}中的(i,j)决定,所述(i,j)表示的意义为,该集合对应的库所,由变迁T_i输入,输出到变迁T_j;input_j_{}对应库所只有输出流关系T_j没有输入流关系,output_i_{}只有输入流关系T_i没有输出流关系;
K表示库所容量,控制库所connect_i,j_control{}对应库所容量分别为size_connect_i,j_control,数据库所input_j_{}、output_i_{}、connect_i,j_data{}的容量等于实际分配的物理地址的大小,若程序中没有分配或定义,则库所容量等于其位宽size_input_j、size_output_i、size_connect_i,j_data;
W表示弧权,库所的输入输出弧权等于其库所容量,模块i消耗时钟C_i对应库所输入弧权为t_i;
λ表示消耗时钟周期数,模块T_i消耗时钟周期数为λ_i等于Time_i{}={t_1,t_2,……t_mi};
C表示消耗时钟对象,模块T_i消耗时钟对象为C_i指代clk_i。
2.根据权利要求1所述的验证模型建模方法,其特征在于:所述步骤1中所述获取FPGA程序的拓扑结构的具体方法为:在顶层模块中通过寻找关键字input和output确认变量位置、变量类型以及变量在不同模块中的输入输出属性,并通过同一个信号在顶层模块不同例化语句.()中的例化关系,结合所述变量在不同模块中的输入输出属性确认所述变量的连接关系。
3.根据权利要求1或2所述的验证模型建模方法,其特征在于:所述FPGA程序的输入\输出变量、模块间的连接变量、时钟变量以及拓扑结构的保存形式表示如下:
module_i:该变量代表工程的模块,i=0,1,2,3…NUM,NUM为整个程序的子模块数,其中,当i=0时,代表顶层模块;
input_j_{}:该变量代表系统即顶层模块的输入集合,j=1,2,3,…NUM,“j”代表该集合的连接关系是由顶层模块指向第j个模块;
output_i_{}:该变量代表系统即顶层模块的输出集合,i=1,2,3,…NUM,“i”代表该集合的连接关系是由第i个模块输出;
clk_i,j_{}:该变量代表系统中的时钟信号集合,i,j=0,1,2....NUM,i,j表示连接关系是由第i个模块指向第j个模块;
connect_i,j_{}:该变量代表系统中的连接变量结合,i,j=1,2,3...NUM,i,j表示连接关系是由第i个模块指向第j个模块。
4.根据权利要求1所述的验证模型建模方法,其特征在于:所述步骤3的具体步骤为:
步骤3a,在module_i,i=1,2,3…NUM中选取一个module_k,即i=k;
步骤3b,在所有connect_i,j_control{},connect_i,j_data{},input_j_{},中找到连接关系为输出到k的集合,将所有变量按标号由小到大拼接起来,计为in,并计算in所有可能状态数mk,记录所有状态到state_k_in{}={in_1,in_2,……in_mk};
步骤3c,在所有connect_i,j_control{},connect_i,j_data{},output_i_{},clk_i,j_{}中找到连接关系为由k输出的集合,将所有变量按标号从小到大拼接起来,记为out,通过modelsim仿真,向model_k依次输入state_k_in{}中所有元素,得到对应输出记录为state_k_out{}={out_1,out_2,……out_mk};
步骤3d,在所有clk_i,j_{}中找到连接关系为输出到k的集合,选取其中一个时钟变量为基准计为clk_k,在modelsim仿真时,统计对应输入变量变为state_k_in{}的状态输入,到输出变量变为state_k_out{}中对应输出状态时,所经历的clk_k的周期,记录为Time_k{}={t_1,t_2,……t_mk};
步骤3e,根据步骤3a-步骤3d的方法,对所有模块进行操作,得到对任意一个module_i,其输入状态为state_i_in{}={in_1,in_2,……in_mi},对应输出状态为state_i_out{}={out_1,out_2,……out_mi},其时钟属性为消耗时钟clk_i的周期数为Time_i{}={t_1,t_2,……t_mi}。
CN201810738138.XA 2018-07-06 2018-07-06 一种基于Petri网的FPGA系统的验证模型建模方法 Active CN109002601B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810738138.XA CN109002601B (zh) 2018-07-06 2018-07-06 一种基于Petri网的FPGA系统的验证模型建模方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810738138.XA CN109002601B (zh) 2018-07-06 2018-07-06 一种基于Petri网的FPGA系统的验证模型建模方法

Publications (2)

Publication Number Publication Date
CN109002601A CN109002601A (zh) 2018-12-14
CN109002601B true CN109002601B (zh) 2020-09-08

Family

ID=64598485

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810738138.XA Active CN109002601B (zh) 2018-07-06 2018-07-06 一种基于Petri网的FPGA系统的验证模型建模方法

Country Status (1)

Country Link
CN (1) CN109002601B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109725900B (zh) * 2019-01-07 2021-01-05 西北工业大学 寄存器传输级Verilog代码的SMV模型构建方法
CN110162893A (zh) * 2019-05-27 2019-08-23 电子科技大学 基于Petri网的舰载指挥系统软硬件混合可靠性分析方法
CN111176962B (zh) * 2019-12-02 2021-09-10 深圳先进技术研究院 Fpga平台及其性能评估与设计优化的方法、存储介质
CN111274750B (zh) * 2020-03-05 2023-05-30 中国工程物理研究院计算机应用研究所 一种基于可视化建模的fpga仿真验证系统和方法
CN112632806B (zh) * 2020-09-12 2022-07-05 山东科技大学 一种Petri网Verilog HDL代码生成方法
CN112613200A (zh) * 2020-09-12 2021-04-06 山东科技大学 一种基于FPGA的Petri网模拟仿真平台

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103093046A (zh) * 2013-01-11 2013-05-08 华侨大学 一种将FPGA硬件描述语言VHDL转化为普通Petri网的方法
CN103699730A (zh) * 2013-12-18 2014-04-02 华侨大学 一种基于Petri网的组合逻辑FPGA系统可达图的生成方法
CN103761387A (zh) * 2014-01-20 2014-04-30 华侨大学 一种fpga组合逻辑系统顺序规范的形式化验证方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8661378B2 (en) * 2009-09-30 2014-02-25 Achronix Semiconductor Corporation Asychronous system analysis

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103093046A (zh) * 2013-01-11 2013-05-08 华侨大学 一种将FPGA硬件描述语言VHDL转化为普通Petri网的方法
CN103699730A (zh) * 2013-12-18 2014-04-02 华侨大学 一种基于Petri网的组合逻辑FPGA系统可达图的生成方法
CN103761387A (zh) * 2014-01-20 2014-04-30 华侨大学 一种fpga组合逻辑系统顺序规范的形式化验证方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
FPGA程序的形式化建模与分析方法研究;陈珑;《中国优秀硕士学位论文全文数据库(信息科技辑)》;20160315(第03期);第1,3节 *
二维RCA空域映射Petri网时间性能分析;陈乃金;《计算机工程应用》;20141231;第50卷(第23期);第2-3章 *

Also Published As

Publication number Publication date
CN109002601A (zh) 2018-12-14

Similar Documents

Publication Publication Date Title
CN109002601B (zh) 一种基于Petri网的FPGA系统的验证模型建模方法
Clarke et al. Tree-like counterexamples in model checking
Jyu et al. Statistical timing analysis of combinational logic circuits
US9251304B2 (en) Circuit design evaluation with compact multi-waveform representations
US8554530B1 (en) Methods and systems for property assertion in circuit simulation
US11657201B2 (en) Computer implemented system and method of identification of useful untested states of an electronic design
US11461523B1 (en) Glitch analysis and glitch power estimation system
CN115315702A (zh) 早期阶段电路设计中基于机器学习的度量的预测
Xiao et al. A fast and effective sensitivity calculation method for circuit input vectors
US10176283B2 (en) Equivalence checking of analog models
CN106886487A (zh) 用于评价fpga软件可靠性的方法
Gupta et al. Energy and peak-current per-cycle estimation at RTL
Loiacono et al. Fast cone-of-influence computation and estimation in problems with multiple properties
Bhaduri et al. Scalable techniques and tools for reliability analysis of large circuits
CN117350208A (zh) 时序逻辑元件性能检查方法及设备
CN115437893A (zh) 一种基于聚类分析的集成电路单粒子效应软错误仿真方法
Christensen et al. PyLSE: A pulse-transfer level language for superconductor electronics
CN117350222B (zh) 一种基于仿真的单粒子软错误分析方法和装置
CN111353264A (zh) Xdl电路网表的前向电路图构建方法
Kuo et al. Efficient Boolean characteristic function for timed automatic test pattern generation
Hamad et al. Efficient multilevel formal analysis and estimation of design vulnerability to single event transients
Ivannikov et al. The basics of digital system designs simulation for hardware/software joint debugging
Roy et al. Event propagation for accurate circuit delay calculation using SAT
Zhou et al. Algebraic verification method for SEREs properties via Groebner bases approaches
US11361124B1 (en) Generating a power profile by node sampling an IP block

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