CN116108800A - 基于uvm的sm4模块验证平台及验证方法 - Google Patents
基于uvm的sm4模块验证平台及验证方法 Download PDFInfo
- Publication number
- CN116108800A CN116108800A CN202211656130.1A CN202211656130A CN116108800A CN 116108800 A CN116108800 A CN 116108800A CN 202211656130 A CN202211656130 A CN 202211656130A CN 116108800 A CN116108800 A CN 116108800A
- Authority
- CN
- China
- Prior art keywords
- data
- module
- encryption
- decryption
- reference model
- 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.)
- Pending
Links
- 238000012795 verification Methods 0.000 title claims abstract description 202
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000012545 processing Methods 0.000 claims abstract description 126
- 238000012360 testing method Methods 0.000 claims abstract description 54
- 238000010200 validation analysis Methods 0.000 claims abstract description 31
- 239000003795 chemical substances by application Substances 0.000 claims abstract description 10
- 238000004364 calculation method Methods 0.000 claims description 106
- 230000008569 process Effects 0.000 claims description 19
- 238000012827 research and development Methods 0.000 abstract description 11
- 230000006870 function Effects 0.000 description 50
- 238000012805 post-processing Methods 0.000 description 9
- 238000007781 pre-processing Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000005284 excitation Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000002243 precursor Substances 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/398—Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本申请公开了一种基于UVM的SM4模块验证平台及验证方法,包括:代理模块,被配置为根据测试用例生成验证事务,并将所述验证事务发送至待测SM4模块以及参考模型模块;所述验证事务封装了以下变量:加解密选择、工作模式选择、初始向量、初始向量密钥、输入数据、数据密钥和输出数据;参考模型模块,被配置为模拟所述待测SM4模块的行为,获取SM4算法参考模型对所述验证事务执行预设处理后生成的第一结果;对比模块,被配置为对所述第一结果和所述待测SM4模块输出的第二结果进行比对,获得比对结果。如此,基于UVM对SM4模块进行验证,可以遍历SM4模块所有的工作模式,能够有效提高对SM4模块的验证效率,缩短芯片的研发周期,同时降低芯片研发成本。
Description
技术领域
本发明涉及芯片验证技术领域,特别是涉及一种基于UVM的SM4模块验证平台及验证方法。
背景技术
早期阶段,验证主要是使用Verilog,由于Verilog是针对设计的语言,在验证方面存在很多缺点,比如随机化不足,并且很多功能是使用直接用例测试,使得需要的测试用例比较多,验证工作复杂且不够充分。
同时,随着芯片集成度的不断提高,芯片的功能复杂度也大大增加,芯片的设计过程更加容易引入错误,验证工作变得更加艰巨。因此,传统的验证技术已经不能再满足对SM4模块进行快速验证的需求。
发明内容
本申请的目的在于提供一种基于UVM的SM4模块验证平台及验证方法,能够有效提高对SM4模块的验证效率,缩短芯片的研发周期,同时降低芯片研发成本。
为达到上述目的:
第一方面,本申请实施例提供了一种基于UVM的SM4模块验证平台,包括:
代理模块,被配置为根据测试用例生成验证事务,并将所述验证事务发送至待测SM4模块以及参考模型模块;所述验证事务封装了以下变量:加解密选择、工作模式选择、初始向量、初始向量密钥、输入数据、数据密钥和输出数据;
参考模型模块,被配置为模拟所述待测SM4模块的行为,获取SM4算法参考模型对所述验证事务执行预设处理后生成的第一结果;
对比模块,被配置为对所述第一结果和所述待测SM4模块输出的第二结果进行比对,获得比对结果。
在一实施方式中,所述代理模块包括序列发生器模块、驱动器模块和监视器模块;其中,
所述序列发生器模块,被配置为根据测试用例生成验证事务;
所述驱动器模块,被配置为获取所述验证事务,并将所述验证事务转换成信号级数据驱动到所述待测SM4模块;
所述监视器模块,被配置为将所述验证事务发送至所述参考模型模块,以及将所述待测SM4模块输出的第二结果从信号级数据转换为事务级数据,并发送给所述对比模块。
在一实施方式中,所述对比模块包括计分板模块;其中,
所述计分板模块,被配置为对所述第一结果和所述待测SM4模块输出的第二结果进行比对,并打印获得的比对结果。
在一实施方式中,所述对比模块包括覆盖率收集器模块;其中,
所述覆盖率统计器模块,被配置为收集预定功能覆盖率参数的数据信息,基于覆盖率收集模型和所述数据信息对完成功能覆盖点的覆盖率进行统计。
在一实施方式中,所述参考模型模块,被配置为:
对所述验证事务中的输入数据进行分组,获得至少一个分组数据;
对于每一个分组数据,根据所述验证事务调用SM4算法参考模型对所述分组数据进行处理,并将获得的所述分组数据对应的处理结果合并至输出数据,以生成所述第一结果。
在一实施方式中,所述参考模型模块,被配置为:
响应于所述验证事务中的工作模式选择为磁盘加密模式,将使用初始向量密钥加密后的初始向量与素元阶乘,对获得的阶乘结果数据与当前分组数据进行异或逻辑运算,并根据加解密选择和数据密钥调用SM4算法参考模型对获得的异或逻辑运算结果数据进行加解密计算,获得的加解密计算结果数据与所述阶乘结果数据进行异或逻辑运算,获得所述当前分组数据对应的处理结果;
响应于所述验证事务中的工作模式为电码本模式,根据加解密选择和数据密钥调用SM4算法参考模型对当前分组数据进行加解密计算,获得所述当前分组数据对应的处理结果;
响应于所述验证事务中的工作模式为密码分组链模式,若加解密选择为加密,则将上一分组数据对应的处理结果与当前分组数据进行异或逻辑运算,并根据数据密钥调用SM4算法参考模型对获得的异或逻辑运算结果数据进行加密计算,获得所述当前分组数据对应的处理结果;若加解密选择为解密,则根据数据密钥调用SM4算法参考模型对当前分组数据进行解密计算,并将获得的解密计算结果数据与上一分组数据对应的处理结果进行异或逻辑运算,获得所述当前分组数据对应的处理结果;其中,当所述当前分组数据为第一个分组数据时,所述上一分组数据对应的处理结果为初始向量;
响应于所述验证事务中的工作模式为密码反馈模式或输出反馈模式,根据加解密选择和数据密钥调用SM4算法参考模型对上一分组数据对应的处理结果进行加解密计算,对获得的加解密计算结果数据与当前分组数据进行异或逻辑运算,获得所述当前分组数据对应的处理结果;其中,当所述当前分组数据为第一个分组数据时,所述上一分组数据对应的处理结果为初始向量;
响应于所述验证事务中的工作模式为计数器模式,根据加解密选择和数据密钥调用SM4算法参考模型对初始向量进行加解密计算,对获得的加解密计算结果数据与当前分组数据进行异或逻辑运算,获得所述当前分组数据对应的处理结果,并对初始向量自增1。
第二方面,本申请实施例提供一种基于UVM的SM4模块验证平台的验证方法,包括:
根据测试用例生成验证事务,并将所述验证事务发送至待测SM4模块以及SM4算法参考模型;所述验证事务封装了以下变量:加解密选择、工作模式选择、初始向量、初始向量密钥、输入数据、数据密钥和输出数据;
获取SM4算法参考模型对所述验证事务执行预设处理后生成的第一结果;
对所述第一结果和所述待测SM4模块输出的第二结果进行比对,获得比对结果。
在一实施方式中,所述根据测试用例生成验证事务,并将所述验证事务发送至待测SM4模块以及SM4算法参考模型,包括:
根据测试用例生成验证事务;
将所述验证事务转换成信号级数据驱动到待测SM4模块,并将所述验证事务发送至参考模型模块。
在一实施方式中,所述获取SM4算法参考模型对所述验证事务执行预设处理后生成的第一结果,包括:
对所述验证事务中的输入数据进行分组,获得至少一个分组数据;
对于每一个分组数据,根据所述验证事务调用SM4算法参考模型对所述分组数据进行处理,并将获得的所述分组数据对应的处理结果合并至输出数据,以生成所述第一结果。
在一实施方式中,所述对于每一个分组数据,根据所述验证事务调用SM4算法参考模型对所述分组数据进行处理,包括:
响应于所述验证事务中的工作模式选择为磁盘加密模式,将使用初始向量密钥加密后的初始向量与素元阶乘,对获得的阶乘结果数据与当前分组数据进行异或逻辑运算,并根据加解密选择和数据密钥调用SM4算法参考模型对获得的异或逻辑运算结果数据进行加解密计算,获得的加解密计算结果数据与所述阶乘结果数据进行异或逻辑运算,获得所述当前分组数据对应的处理结果;
响应于所述验证事务中的工作模式为电码本模式,根据加解密选择和数据密钥调用SM4算法参考模型对当前分组数据进行加解密计算,获得所述当前分组数据对应的处理结果;
响应于所述验证事务中的工作模式为密码分组链模式,若加解密选择为加密,则将上一分组数据对应的处理结果与当前分组数据进行异或逻辑运算,并根据数据密钥调用SM4算法参考模型对获得的异或逻辑运算结果数据进行加密计算,获得所述当前分组数据对应的处理结果;若加解密选择为解密,则根据数据密钥调用SM4算法参考模型对当前分组数据进行解密计算,并将获得的解密计算结果结果与上一分组数据对应的处理结果进行异或逻辑运算,获得所述当前分组数据对应的处理结果;其中,当所述当前分组数据为第一个分组数据时,所述上一分组数据对应的处理结果为初始向量;
响应于所述验证事务中的工作模式为密码反馈模式或输出反馈模式,根据加解密选择和数据密钥调用SM4算法参考模型对上一分组数据对应的处理结果进行加解密计算,对获得的加解密计算结果数据与当前分组数据进行异或逻辑运算,获得所述当前分组数据对应的处理结果;其中,当所述当前分组数据为第一个分组数据时,所述上一分组数据对应的处理结果为初始向量;
响应于所述验证事务中的工作模式为计数器模式,根据加解密选择和数据密钥调用SM4算法参考模型对初始向量进行加解密计算,对获得的加解密计算结果数据与当前分组数据进行异或逻辑运算,获得所述当前分组数据对应的处理结果,并对初始向量自增1。
本申请实施例提供的基于UVM的SM4模块验证平台及验证方法,所述基于UVM的SM4模块验证平台包括:代理模块,被配置为根据测试用例生成验证事务,并将所述验证事务发送至待测SM4模块以及参考模型模块;所述验证事务封装了以下变量:加解密选择、工作模式选择、初始向量、初始向量密钥、输入数据、数据密钥和输出数据;参考模型模块,被配置为模拟所述待测SM4模块的行为,获取SM4算法参考模型对所述验证事务执行预设处理后生成的第一结果;对比模块,被配置为对所述第一结果和所述待测SM4模块输出的第二结果进行比对,获得比对结果。如此,基于UVM对SM4模块进行验证,可以遍历SM4模块所有的工作模式,能够有效提高对SM4模块的验证效率,缩短芯片的研发周期,同时降低芯片研发成本。
附图说明
图1为本发明实施例提供的基于UVM的SM4模块验证平台的结构示意图一;
图2为本发明实施例提供的基于UVM的SM4模块验证平台的验证方法的流程示意图一;
图3为本发明实施例提供的基于UVM的SM4模块验证平台的结构示意图二;
图4为本发明实施例提供的基于UVM的SM4模块验证平台的验证方法的流程示意图二;
图5为本发明实施例中参考模型根据事务计算预期输出结果的过程示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素,此外,本申请不同实施例中具有同样命名的部件、特征、要素可能具有相同含义,也可能具有不同含义,其具体含义需以其在该具体实施例中的解释或者进一步结合该具体实施例中上下文进行确定。
应当理解,尽管在本文可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本文范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语"如果"可以被解释成为"在……时"或"当……时"或"响应于确定"。再者,如同在本文中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文中有相反的指示。应当进一步理解,术语“包含”、“包括”表明存在所述的特征、步骤、操作、元件、组件、项目、种类、和/或组,但不排除一个或多个其他特征、步骤、操作、元件、组件、项目、种类、和/或组的存在、出现或添加。此处使用的术语“或”和“和/或”被解释为包括性的,或意味着任一个或任何组合。因此,“A、B或C”或者“A、B和/或C”意味着“以下任一个:A;B;C;A和B;A和C;B和C;A、B和C”。仅当元件、功能、步骤或操作的组合在某些方式下内在地互相排斥时,才会出现该定义的例外。
应该理解的是,虽然本申请实施例中的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
需要说明的是,在本文中,采用了诸如S101、S102等步骤代号,其目的是为了更清楚简要地表述相应内容,不构成顺序上的实质性限制,本领域技术人员在具体实施时,可能会先执行S102后执行S101等,但这些均应在本申请的保护范围之内。
应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或者“单元”的后缀仅为了有利于本申请的说明,其本身没有特定的意义。因此,“模块”、“部件”或者“单元”可以混合地使用。
为了便于了解本申请的目的,先对SM4进行简要说明。SM4是由国家密码管理局发布的一种对称密码分组算法,分组长度128bit,密钥长度128bit,加解密算法和密钥扩展算法都是32轮非线性迭代结构,加密和解密的结构相同,只是轮密钥的使用顺序相反。SM4包括以下几种工作模式:
XTS(磁盘加密模式,XOR-ENCRYPT-XOR Tweakable Block Cipher WithCiphertext Stealing),应用于磁盘加密,要求被加密的数据单元大小固定,每个数据单元的加解密是独立的,该模式处理后的数据单元密文和明文保持同等长度。
CBC(密码分组链模式,Cipher Block Chaining),其加密特点是先将明文块和前一个密文块做“XOR”逻辑再加密,第一块的明文是和初始向量做逻辑;解密时先将明文解密,再与前一个密文做“XOR”逻辑,第一个密文与初始向量做逻辑。
ECB(电码本模式,Electronic Codebook Block),是最简单的块密码加密模式,加密前根据加密块大小分成若干块,之后将每块使用相同的密钥单独加密,解密同理。简单快速,可并行计算,但容易被破解。
CFB(密码反馈模式,Cipher FeedBack),前一个密文分组会被送入密码算法的输入端,再将输出的结果与明文做异或。由于加密流程和解密流程中被块加密器加密的数据是前一段密文,因此即使明文数据的长度不是加密块大小的整数倍也是不需要填充的,这保证了数据长度在加密前后是相同的。
OFB(输出反馈模式,Output feedback),先用块加密器生成密钥流,然后再将密钥流与明文流异或得到密文流,解密是先用块加密器生成密钥流,再将密钥流与密文流异或得到明文,由于异或操作的对称性所以加密和解密的流程是完全一样的。
CTR(计数器模式,Counter),有一个自增的算子,这个算子用密钥加密之后的输出和明文异或的结果得到密文,相当于一次一密。这种加密方式简单快速,安全可靠,而且可以并行加密。
参阅图1,为本申请实施例提供的一种基于UVM的SM4模块验证平台,包括:
代理模块1,被配置为根据测试用例生成验证事务,并将验证事务发送至待测SM4模块以及参考模型模块2;验证事务封装了以下变量:加解密选择、工作模式选择、初始向量、初始向量密钥、输入数据、数据密钥和输出数据;
参考模型模块2,被配置为模拟待测SM4模块的行为,获取SM4算法参考模型对验证事务执行预设处理后生成的第一结果;
对比模块3,被配置为对第一结果和待测SM4模块输出的第二结果进行比对,获得比对结果。
其中,代理模块1可通过接口分别与待测SM4模块、参考模型模块2和对比模块3通信连接,比如,代理模块1可通过输入接口将验证事务发送至待测SM4模块以及参考模型模块2,以及通过输出接口获取参考模型模块2输出的第一结果和待测SM4模块输出的第二结果,并将第一结果和第二结果发送至对比模块3。测试用例是为了验证待测SM4模块而编制的一组测试输入、执行条件以及预期结果,以便测试待测SM4模块是否满足特定需求或条件。具体地,代理模块1用于产生对待测SM4模块的随机化或定向的验证事务。可选地,验证事务可包含于测试序列中,即代理模块1可以为根据测试用例生成包含验证事务的测试序列。此外,验证事务可以为多个。验证事务封装了以下变量:加解密选择、工作模式选择、初始向量、初始向量密钥、输入数据、数据密钥和输出数据。其中,加解密选择为rand int数据类型,可以利用正整数进行指示,比如用“0”表示加密,而“1”表示解密;工作模式选择为rand int数据类型,可以利用正整数进行指示,比如用“0”表示磁盘加密模式,“1”表示密码分组链模式,“2”表示电码本模式,“3”表示密码反馈模式,“4”表示输出反馈模式,“5”表示计数器模式;初始向量为rand bit数据类型,部分工作模式会使用该初始变量作为初始值;初始向量密钥为rand bit数据类型,磁盘加密模式时会使用该初始向量密钥对初始向量进行加密;输入数据为rand bit数据类型,加密时为明文,解密时为密文;数据密钥为randbit数据类型;输出数据为rand bit数据类型,加密时为明文,解密时为密文。
在一实施方式中,继续参阅图1,代理模1包括序列发生器模块10、驱动器模块11和监视器模块12;其中,
序列发生器模块10,被配置为根据测试用例生成验证事务;
驱动器模块11,被配置为获取验证事务,并将验证事务转换成信号级数据驱动到待测SM4模块;
监视器模块12,被配置为将验证事务发送至参考模型模块2,以及将待测SM4模块输出的第二结果从信号级数据转换为事务级数据,并发送给对比模块3。
其中,序列发生器模块10在生成验证事务后,可对生成的验证事务暂存,并在驱动器模块11申请需要验证的事务时,将验证事务发送给驱动器模块11。驱动器模块11在从序列发生器模块10获取验证事务后,将验证事务转换成待测SM4模块可接收的信号级数据,并将转换后的验证事务通过接口向待测SM4模块发送。监视器模块12可通过接口提取验证事务,并将验证事务发送至参考模型模块2,以及在通过接口获取到待测SM4模块输出的第二结果时,将第二结果从信号级数据转换为对比模块3可接收的事务级数据,并将处理后的第二结果发送给对比模块3。可选地,监视器模块12可包括输入监视器模块和输出监视器模块,输入监视器模块可被配置为采集输入接口信息,并将从输入接口采集的验证事务务发送至参考模型模块,而输出监视器模块可被配置为采集待测SM4模块输出的第二结果,并将第二结果发送给对比模块3。
其中,参考模型模块2可具有模拟待测SM4模块的行为模型,并通过SM4算法参考模型对验证事务执行预设处理,输出获得的第一结果。可选地,SM4算法参考模型可以为C语言描述的SM4算法参考模型,即SM4的C函数模型。可选地,参考模型模块2可通过DPI接口调用SM4算法参考模型。这里,通过将SM4模块所有的工作模式单独封装成一个函数模型,具有较好的移植性。
可选地,参考模型模块2,被配置为:
对验证事务中的输入数据进行分组,获得至少一个分组数据;
对于每一个分组数据,根据验证事务调用SM4算法参考模型对分组数据进行处理,并将获得的分组数据对应的处理结果合并至输出数据,以生成第一结果。
其中,对验证事务中的输入数据可按128bit进行分组,即可获得大小为128bit的至少一个分组数据,并可采用特定标识进行区分,比如data_0、data_1……data_n等。对于每一个分组数据,可以根据验证事务中的工作模式选择和加解密选择等变量,调用SM4算法参考模型对分组数据进行处理,并将获得的分组数据对应的处理结果合并至输出数据,以生成第一结果。这里,参考模型模块2将每个分组数据对应的处理结果合并至验证事务中的输出数据后,会输出数据作为第一结果进行输出,从而实现将各分组数据对应的处理结果按组输出。如此,通过对验证事务中的输入数据进行分组,并调用SM4算法参考模型对各分组数据分别处理,以及将各分组数据对应的处理结果按组输出,计算简单且高效,进一步提高了验证效率。
可选地,参考模型模块2,被配置为:
响应于验证事务中的工作模式选择为磁盘加密模式,将使用初始向量密钥加密后的初始向量与素元阶乘,对获得的阶乘结果数据与当前分组数据进行异或逻辑运算,并根据加解密选择和数据密钥调用SM4算法参考模型对获得的异或逻辑运算结果数据进行加解密计算,获得的加解密计算结果数据与阶乘结果数据进行异或逻辑运算,获得当前分组数据对应的处理结果;
响应于验证事务中的工作模式为电码本模式,根据加解密选择和数据密钥调用SM4算法参考模型对当前分组数据进行加解密计算,获得当前分组数据对应的处理结果;
响应于验证事务中的工作模式为密码分组链模式,若加解密选择为加密,则将上一分组数据对应的处理结果与当前分组数据进行异或逻辑运算,并根据数据密钥调用SM4算法参考模型对获得的异或逻辑运算结果数据进行加密计算,获得当前分组数据对应的处理结果;若加解密选择为解密,则根据数据密钥调用SM4算法参考模型对当前分组数据进行解密计算,并将获得的解密计算结果数据与上一分组数据对应的处理结果进行异或逻辑运算,获得当前分组数据对应的处理结果;其中,当当前分组数据为第一个分组数据时,上一分组数据对应的处理结果为初始向量;
响应于验证事务中的工作模式为密码反馈模式或输出反馈模式,根据加解密选择和数据密钥调用SM4算法参考模型对上一分组数据对应的处理结果进行加解密计算,对获得的加解密计算结果数据与当前分组数据进行异或逻辑运算,获得当前分组数据对应的处理结果;其中,当当前分组数据为第一个分组数据时,上一分组数据对应的处理结果为初始向量;
响应于验证事务中的工作模式为计数器模式,根据加解密选择和数据密钥调用SM4算法参考模型对初始向量进行加解密计算,对获得的加解密计算结果数据与当前分组数据进行异或逻辑运算,获得当前分组数据对应的处理结果,并对初始向量自增1。
其中,当前分组数据为验证事务中的输入数据被分组后获得的至少一个分组数据中正在处理的分组数据,针对验证事务中的工作模式的不同,对当前分组数据执行的操作也相应不同。(1)可选地,当验证事务中的工作模式选择为磁盘加密模式时,先使用初始向量密钥对初始向量进行加密,然后将加密后的初始向量与素元阶乘,再对获得的阶乘结果数据与当前分组数据进行异或逻辑运算,接着根据加解密选择和数据密钥调用SM4算法参考模型对获得的异或逻辑运算结果数据进行加解密计算,再通过对获得的加解密计算结果数据与阶乘结果数据进行异或逻辑运算,将获得的结果作为当前分组数据对应的处理结果并将当前分组数据对应的处理结果合并至输出数据,进而将下一个分组数据作为当前分组数据重复上述操作,以此循环,直至至少一个分组数据被全部执行完毕;其中,这边的初始向量是初始设定向量,一旦设定,后续无需再更改。(2)可选地,当验证事务中的工作模式选择为电码本模式时,先根据加解密选择和数据密钥调用SM4算法参考模型对当前分组数据进行加解密计算,将获得的加解密结果数据作为当前分组数据对应的处理结果并将当前分组数据对应的处理结果合并至输出数据,进而将下一个分组数据作为当前分组数据重复上述操作,以此循环,直至至少一个分组数据被全部执行完毕。(3)可选地,当验证事务中的工作模式为密码分组链模式时,若加解密选择为加密,则先将上一分组数据对应的处理结果与当前分组数据进行异或逻辑运算,接着根据数据密钥调用SM4算法参考模型对获得的异或逻辑运算结果数据进行加密计算,将获得的加密计算结果数据作为当前分组数据对应的处理结果并将当前分组数据对应的处理结果合并至输出数据,进而将下一个分组数据作为当前分组数据重复上述操作,以此循环,直至至少一个分组数据被全部执行完毕;若加解密选择为解密,则先根据数据密钥调用SM4算法参考模型对当前分组数据进行解密计算,接着将获得的解密计算结果数据与上一分组数据对应的处理结果进行异或逻辑运算,将获得的结果作为当前分组数据对应的处理结果并将当前分组数据对应的处理结果合并至输出数据,进而将下一个分组数据作为当前分组数据重复上述操作,以此循环,直至至少一个分组数据被全部执行完毕。其中,对于密码分组链模式,当当前分组数据为第一个分组数据时,上一分组数据对应的处理结果为初始向量。需要说明的是,当加解密选择为加密时,则根据数据密钥调用SM4算法参考模型进行加密计算。当加解密选择为解密时,根据数据密钥调用SM4算法参考模型进行解密计算。(4)可选地,当验证事务中的工作模式为密码反馈模式或输出反馈模式时,先根据加解密选择和数据密钥调用SM4算法参考模型对上一分组数据对应的处理结果进行加解密计算(为方便解释,这边称为第一计算结果),接着对获得的计算结果与当前分组数据进行异或逻辑运算,从而获得当前分组数据对应的处理结果(为方便解释,这边称为第二计算结果),并将当前分组数据对应的处理结果合并至输出数据,进而将下一个分组数据作为当前分组数据重复上述操作,以此循环,直至至少一个分组数据被全部执行完毕。其中,当当前分组数据为第一个分组数据时,上一分组数据对应的处理结果为初始向量。另外,当为密码反馈模式时,获得的第二计算结果需返回给SM4算法参考模型,以供下一组数据的数据密钥调用;当为输出反馈模式时,获得的第一计算结果需返回给SM4算法参考模型,以供下一组数据的数据密钥调用。(5)可选地,当验证事务中的工作模式为计数器模式时,先根据加解密选择和数据密钥调用SM4算法参考模型对初始向量进行加解密计算,接着对获得的加解密计算结果数据与当前分组数据进行异或逻辑运算,从而获得当前分组数据对应的处理结果,并将当前分组数据对应的处理结果合并至输出数据,进而将下一个分组数据作为当前分组数据重复上述操作,以此循环,直至至少一个分组数据被全部执行完毕,同时对初始向量自增1。
可选地,对比模块3包括计分板模块30;其中,计分板模块30,被配置为对第一结果和待测SM4模块输出的第二结果进行比对,并打印获得的比对结果。这里,计分板模块30对第一结果和待测SM4模块输出的第二结果进行比对,若第一结果与第二结果一致,则表明功能验证正确,而若第一结果与第二结果不一致,则表明功能验证错误。此外,在比对完成后,还可打印获得的比对结果。如此,以参考模型模块输出的结果为参考依据验证待测SM4模块输出的结果,可以提高验证的准确性。
综上,上述实施例提供的基于UVM的SM4模块验证平台中,基于UVM对SM4模块进行验证,可以遍历SM4模块所有的工作模式,能够有效提高对SM4模块的验证效率,缩短芯片的研发周期,同时降低芯片研发成本。
在一实施方式中,对比模块3包括覆盖率收集器模块31;其中,覆盖率统计器模块31,被配置为收集预定功能覆盖率参数的数据信息,基于覆盖率收集模型和数据信息对完成功能覆盖点的覆盖率进行统计。可选地,当比对结果显示第一结果与第二结果不一致或者测试用例运行完毕时,可通过覆盖率统计器模块31收集预定功能覆盖率参数的数据信息,并基于覆盖率收集模型和数据信息对完成功能覆盖点的覆盖率进行统计,从而可量化验证完备性,进一步提高验证效率和验证的可信程度。
基于前述实施例相同的发明构思,本实施例提供了一种基于UVM的SM4模块验证平台的验证方法,该方法可采用上述实施例提供的基于UVM的SM4模块验证平台进行实现,该方法包括:
步骤S101:根据测试用例生成验证事务,并将验证事务发送至待测SM4模块以及SM4算法参考模型;验证事务封装了以下变量:加解密选择、工作模式选择、初始向量、初始向量密钥、输入数据、数据密钥和输出数据。
其中,测试用例是为了验证待测SM4模块而编制的一组测试输入、执行条件以及预期结果,以便测试待测SM4模块是否满足特定需求或条件。可选地,验证事务可包含于测试序列中,即可以为根据测试用例生成包含验证事务的测试序列。此外,验证事务可以为多个。验证事务封装了以下变量:加解密选择、工作模式选择、初始向量、初始向量密钥、输入数据、数据密钥和输出数据。其中,加解密选择为rand int数据类型,可以利用正整数进行指示,比如用“0”表示加密,而“1”表示解密;工作模式选择为rand int数据类型,可以利用正整数进行指示,比如用“0”表示磁盘加密模式,“1”表示密码分组链模式,“2”表示电码本模式,“3”表示密码反馈模式,“4”表示输出反馈模式,“1”表示计数器模式;初始向量为randbit数据类型,部分工作模式会使用该初始变量作为初始值;初始向量密钥为rand bit数据类型,磁盘加密模式时会使用该初始向量密钥对初始向量进行加密;输入数据为rand bit数据类型,加密时为明文,解密时为密文;数据密钥为rand bit数据类型;输出数据为randbit数据类型,加密时为明文,解密时为密文。
其中,根据测试用例生成验证事务,并将验证事务发送至待测SM4模块以及SM4算法参考模型,包括:
根据测试用例生成验证事务;
将验证事务转换成信号级数据驱动到待测SM4模块,并将验证事务发送至SM4算法参考模型。
可选地,在根据测试用例生成验证事务后,可将验证事务转换成待测SM4模块可接收的信号级数据,并将转换后的验证事务通过接口向待测SM4模块发送。
步骤S102:获取SM4算法参考模型对验证事务执行预设处理后生成的第一结果。
其中,通过SM4算法参考模型对验证事务执行预设处理,生成第一结果。可选地,SM4算法参考模型可以为C语言描述的SM4算法参考模型,即SM4的C函数模型。这里,通过将SM4模块所有的工作模式单独封装成一个函数模型,具有较好的移植性。
可选地,获取SM4算法参考模型对验证事务执行预设处理后生成的第一结果,包括:
对验证事务中的输入数据进行分组,获得至少一个分组数据;
对于每一个分组数据,根据验证事务调用SM4算法参考模型对分组数据进行处理,并将获得的分组数据对应的处理结果合并至输出数据,以生成第一结果。
其中,对验证事务中的输入数据可按128bit进行分组,即可获得大小为128bit的至少一个分组数据,并可采用特定标识进行区分,比如data_0、data_1……data_n等。对于每一个分组数据,可以根据验证事务中的工作模式选择和加解密选择等变量,通过SM4算法参考模型对分组数据进行处理,并将获得的分组数据对应的处理结果合并至输出数据,以生成第一结果。这里,将每个分组数据对应的处理结果合并至验证事务中的输出数据后,会输出数据作为第一结果进行输出,从而实现将各分组数据对应的处理结果按组输出。如此,通过对验证事务中的输入数据进行分组,并通过SM4算法参考模型对各分组数据分别处理,以及将各分组数据对应的处理结果按组输出,计算简单且高效,进一步提高了验证效率。
可选地,对于每一个分组数据,根据验证事务调用SM4算法参考模型对分组数据进行处理,包括:
响应于验证事务中的工作模式选择为磁盘加密模式,将使用初始向量密钥加密后的初始向量与素元阶乘,对获得的阶乘结果数据与当前分组数据进行异或逻辑运算,并根据加解密选择和数据密钥调用SM4算法参考模型对获得的异或逻辑运算结果数据进行加解密计算,获得的加解密计算结果数据与阶乘结果数据进行异或逻辑运算,获得当前分组数据对应的处理结果;
响应于验证事务中的工作模式为电码本模式,根据加解密选择和数据密钥调用SM4算法参考模型对当前分组数据进行加解密计算,获得当前分组数据对应的处理结果;
响应于验证事务中的工作模式为密码分组链模式,若加解密选择为加密,则将上一分组数据对应的处理结果与当前分组数据进行异或逻辑运算,并根据数据密钥调用SM4算法参考模型对获得的异或逻辑运算结果数据进行加密计算,获得当前分组数据对应的处理结果;若加解密选择为解密,则根据数据密钥调用SM4算法参考模型对当前分组数据进行解密计算,并将获得的解密计算结果数据与上一分组数据对应的处理结果进行异或逻辑运算,获得当前分组数据对应的处理结果;其中,当当前分组数据为第一个分组数据时,上一分组数据对应的处理结果为初始向量;
响应于验证事务中的工作模式为密码反馈模式或输出反馈模式,根据加解密选择和数据密钥调用SM4算法参考模型对上一分组数据对应的处理结果进行加解密计算,对获得的加解密计算结果数据与当前分组数据进行异或逻辑运算,获得当前分组数据对应的处理结果;其中,当当前分组数据为第一个分组数据时,上一分组数据对应的处理结果为初始向量;
响应于验证事务中的工作模式为计数器模式,根据加解密选择和数据密钥调用SM4算法参考模型对初始向量进行加解密计算,对获得的加解密计算结果数据与当前分组数据进行异或逻辑运算,获得当前分组数据对应的处理结果,并对初始向量自增1。
其中,当前分组数据为验证事务中的输入数据被分组后获得的至少一个分组数据中正在处理的分组数据,针对验证事务中的工作模式的不同,对当前分组数据执行的操作也相应不同。(1)可选地,当验证事务中的工作模式选择为磁盘加密模式时,先使用初始向量密钥对初始向量进行加密,然后将加密后的初始向量与素元阶乘,再对获得的阶乘结果数据与当前分组数据进行异或逻辑运算,接着根据加解密选择和数据密钥调用SM4算法参考模型对获得的异或逻辑运算结果数据进行加解密计算,再通过对获得的加解密计算结果数据与阶乘结果数据进行异或逻辑运算,将获得的结果作为当前分组数据对应的处理结果并将当前分组数据对应的处理结果合并至输出数据,进而将下一个分组数据作为当前分组数据重复上述操作,以此循环,直至至少一个分组数据被全部执行完毕;其中,这边的初始向量是初始设定向量,一旦设定,后续无需再更改。(2)可选地,当验证事务中的工作模式选择为电码本模式时,先根据加解密选择和数据密钥调用SM4算法参考模型对当前分组数据进行加解密计算,将获得的加解密结果数据作为当前分组数据对应的处理结果并将当前分组数据对应的处理结果合并至输出数据,进而将下一个分组数据作为当前分组数据重复上述操作,以此循环,直至至少一个分组数据被全部执行完毕。(3)可选地,当验证事务中的工作模式为密码分组链模式时,若加解密选择为加密,则先将上一分组数据对应的处理结果与当前分组数据进行异或逻辑运算,接着根据数据密钥调用SM4算法参考模型对获得的异或逻辑运算结果数据进行加密计算,将获得的加密计算结果数据作为当前分组数据对应的处理结果并将当前分组数据对应的处理结果合并至输出数据,进而将下一个分组数据作为当前分组数据重复上述操作,以此循环,直至至少一个分组数据被全部执行完毕;若加解密选择为解密,则先根据数据密钥调用SM4算法参考模型对当前分组数据进行解密计算,接着将获得的解密计算结果数据与上一分组数据对应的处理结果进行异或逻辑运算,将获得的结果作为当前分组数据对应的处理结果并将当前分组数据对应的处理结果合并至输出数据,进而将下一个分组数据作为当前分组数据重复上述操作,以此循环,直至至少一个分组数据被全部执行完毕。其中,对于密码分组链模式,当当前分组数据为第一个分组数据时,上一分组数据对应的处理结果为初始向量。需要说明的是,当加解密选择为加密时,则根据数据密钥调用SM4算法参考模型进行加密计算。当加解密选择为解密时,则根据数据密钥调用SM4算法参考模型进行解密计算。(4)可选地,当验证事务中的工作模式为密码反馈模式或输出反馈模式时,先根据加解密选择和数据密钥调用SM4算法参考模型对上一分组数据对应的处理结果进行加解密计算(为方便解释,这边称为第一计算结果),接着对获得的计算结果与当前分组数据进行异或逻辑运算,从而获得当前分组数据对应的处理结果(为方便解释,这边称为第二计算结果),并将当前分组数据对应的处理结果合并至输出数据,进而将下一个分组数据作为当前分组数据重复上述操作,以此循环,直至至少一个分组数据被全部执行完毕。其中,当当前分组数据为第一个分组数据时,上一分组数据对应的处理结果为初始向量。另外,当为密码反馈模式时,获得的第二计算结果需返回给SM4算法参考模型,以供下一组数据的数据密钥调用;当为输出反馈模式时,获得的第一计算结果需返回给SM4算法参考模型,以供下一组数据的数据密钥调用。(5)可选地,当验证事务中的工作模式为计数器模式时,先根据加解密选择和数据密钥调用SM4算法参考模型对初始向量进行加解密计算,接着对获得的加解密计算结果数据与当前分组数据进行异或逻辑运算,从而获得当前分组数据对应的处理结果,并将当前分组数据对应的处理结果合并至输出数据,进而将下一个分组数据作为当前分组数据重复上述操作,以此循环,直至至少一个分组数据被全部执行完毕,同时对初始向量自增1。
步骤S103:对第一结果和待测SM4模块输出的第二结果进行比对,获得比对结果。
在一实施方式中,对第一结果和待测SM4模块输出的第二结果进行比对,获得比对结果,包括:对第一结果和待测SM4模块输出的第二结果进行比对,并打印获得的比对结果。这里,对第一结果和待测SM4模块输出的第二结果进行比对,若第一结果与第二结果一致,则表明功能验证正确,而若第一结果与第二结果不一致,则表明功能验证错误。此外,在比对完成后,还可打印获得的比对结果。如此,以参考模型模块输出的结果为参考依据验证待测SM4模块输出的结果,可以提高验证的准确性。
综上,上述实施例提供的基于UVM的SM4模块验证平台的验证方法中,基于UVM对SM4模块进行验证,可以遍历SM4模块所有的工作模式,能够有效提高对SM4模块的验证效率,缩短芯片的研发周期,同时降低芯片研发成本。
在一实施方式中,该方法还包括:收集预定功能覆盖率参数的数据信息,基于覆盖率收集模型和数据信息对完成功能覆盖点的覆盖率进行统计。可选地,当比对结果显示第一结果与第二结果不一致或者测试用例运行完毕时,可收集预定功能覆盖率参数的数据信息,并基于覆盖率收集模型和数据信息对完成功能覆盖点的覆盖率进行统计,从而可量化验证完备性,进一步提高验证效率和验证的可信程度。
基于前述实施例相同的发明构思,下面通过一具体示例对前述实施例进行详细说明。
随着IC行业按照摩尔定律的快速发展,整个系统的复杂度不断提升,出现了一种新的验证语言SystemVerilog,它是verilog的扩展,也是一种面向对象的编程语言,并具有很多优点,如可产生受约束的随机激励、覆盖率收集等,同时还可以通过DPI(直接编程接口,Direct Programming Interface)接口导入C/C++函数,从而大大提高了验证效率,缩短芯片开发周期。
UVM(通用验证方法,Universal Verification Methodology)是由Mentor和Cadence联合发布的,前身是OVM(Open Verification Methodology),UVM几乎完全继承了OVM,同时又吸纳了VMM(Verification Methodology Manual)的寄存器解决方案RAL。目前主流的EDA厂商都完美的支持UVM,由于其使用方便,越来越受到广大工程师的欢迎,成为主流的验证方法学。
本实施例的目的在于提供一种基于UVM的SM4模块验证平台,以基于UVM对SM4模块进行验证,如图3所示,该验证平台包括有多个UVM组件和待测模块(DUT)组成,UVM组件包括env(验证环境)、env_config(配置文件)、virtual sequencer(虚拟序列发生器)、sequence(序列)、agent_in、agent_out、sequencer(序列发生器)、drive(驱动)、monitor_in(输入监视器)、monitor out(输出监视器)、refermode(参考模型)、scoreboard(计分板)、transaction(事务数据)、coverage(覆盖率收集器)、interface(接口)、DPI接口调用的c_mode等。其中,
DUT为SM4模块;
interface(接口)将SM4模块的输入信号和输出信号封装,并用于验证平台组件之间、验证平台与DUT之间的通信;
c_mode(C函数)为SM4的C函数模型,经由DPI接口与验证平台之间通信,接收来自验证平台的数据,并将计算后的数据返回给验证平台;
transaction(事务数据)派生自uvm_sequence_item,封装了模式选择、初始向量IV、初始向量密钥、输入数据、输出数据、数据密钥这些变量;
sequence(序列)派生自uvm_sequence,用于根据需求产生相应激励,可以包含很多个事务类,不同测试激励的差异主要体现在sequence的不同;
sequencer(序列发生器)派生自uvm_sequencer,将序列进行暂存并打包发送,当驱动来取数据时,会检查是否有数据发送,如有则可以直接发送;
virtual sequencer(虚拟序列发生器)派生自uvm_sequencer,管理验证平台的序列发生器,当平台有多个序列发生器时,可以控制序列经由哪个序列发生器发送;
drive(驱动)派生自uvm_driver,主要是向序列发生器申请事务,当申请成功后,通过驱动接口将事务信息发送给DUT;
monitor_in(输入监视器)派生自uvm_monitor,采集输入接口信息,并传输给参考模型;
monitor_out(输出监视器)派生组uvm_monitor,采集输出接口信息,并传输给计分板;
agent_in派生自uvm_agent,封装sequencer,driver,monitor_in;
agent_out派生自uvm_agent,封装monitor_out;
refermode(参考模型)派生自uvm_component,对输入监视器传输的事务进行处理,并将计算结果传输给计分板;
scoreboard(计分板)派生自uvm_scoreboard,接收输出监视器和参考模型的事务,完成数据比对,并打印比对结果;
coverage(覆盖率收集器)派生自uvm_object,收集模块的覆盖率,量化验证完备性;
env派生自uvm_env,封装整个验证平台;
env config派生自uvm_object,封装配置和全局变量。
其中,参阅图4,本实施例提供的基于UVM的SM4模块验证方法可包括如下步骤:
步骤S201、序列发生器根据测试场景生成测试序列。
在搭建如图3所示的验证平台后,序列发生器可根据测试场景生成测试序列。其中,一个测试序列可以包含任意个事务,每个事务封装了加解密选择、工作模式选择、初始向量、初始向量密钥、输入数据、数据密钥、输出数据;这些变量均为rand类型,可根据测试需求产生定向序列或受约束的随机序列。其中,加解密选择(enc_dec_sel),rand int数据类型,0-加密,1-解密;工作模式选择(work_mode),rand int数据类型,0-XTS,1-CBC,2-ECB,3-CFB,4-OFB,5-CTR;初始向量(iv),rand bit数据类型,部分模式会使用该变量作为初始值;初始向量密钥(iv-key),rand bit数据类型,XTS模式使用该密钥对初始向量加密;输入数据(data_in),rand bit数据类型,加密时为明文,解密时为密文;数据密钥(key),rand bit数据类型;输出数据(data_out),rand bit数据类型,加密时为密文,解密时为明文。这里,序列发生器会将生成的测试序列暂存,等待驱动来取数据。
步骤S202、驱动向序列发生器申请事务,并发送申请到的事务。
这里,驱动向序列发生器申请事务,并对申请到的事务进行解析,按照SM4设计的时序驱动接口,将事务信息发送给DUT。
步骤S203、输入监视器采集包含申请到的事务的输入接口信息并传输给参考模型。
这里,输入监视器采集输入接口信息,并将包含有申请到的事务的信息打包成事务,然后传输给参考模型。
步骤S204、参考模型根据事务计算预期输出结果。
具体地,参考模型接收到事务后,根据工作模式调用相应的函数(function sm4_xts,function sm4_ecb,function sm4_cbc、function sm4_cfb,function sm4_ofb,function sm4_ctr),计算预期输出结果,并将预期输出结果传输给计分板。其中,每个函数的计算流程均相似,计算流程主要可分为分组、预处理、加/解密计算、后处理、合并等,如图5所示,参考模型根据事务计算预期输出结果的过程可包括:
步骤S301、对输入数据data_in按照128bit分组为data_0至data_n。
步骤S302、根据工作模式对当前分组数据data_i进行预处理。
步骤S303、利用C函数对数据进行加解密计算。
步骤S304、根据工作模式对获得的计算结果进行后处理。
步骤S305、将计算结果合并到输出数据data_out。
步骤S306、判断当前分组数据data_i是否为data_n,若是,则执行步骤S307,否则执行步骤S308。
其中,对于function sm4_xts,预处理是对初始向量做加密,然后与素元阶乘,得到的数据与该组data做“XOR”逻辑;接着,将计算结果调用C函数根据加解密选项做加/解密,得到的结果无需后处理,直接合并到data_out。
对于function sm4_ecb,无需预处理,直接对该分组data调用C函数做加/解密,得到的结果无需后处理,直接合并到data_out。
对于function sm4_cbc,在加密时,预处理是将该分组data和前一组计算结果(第一组为初始向量)做“XOR”逻辑,然后调用C函数做加/解密,得到的结果无需后处理,直接合并到data_out;在解密时,无需预处理,将该分组data调用C函数做加/解密,后处理是将得到的结果和前一组计算结果(第一组为初始向量)做“XOR”逻辑,然后合并到data_out。
对于function sm4_cfb,无需预处理,将前一组计算的结果(第一组为初始向量)调用C函数做加/解密,后处理是将得到的结果与该分组data做“XOR”逻辑,然后合并到data_out,同时计算结果返回给上一步供C函数调用。
对于function sm4_ofb,无需预处理,将前一组计算的结果(第一组为初始向量)调用C函数做加/解密,后处理:将得到的结果返回给上一步供C函数调用;与该分组data做“XOR”逻辑,然后合并到data_out。
对于function sm4_ctr,无需预处理,将初始向量调用C函数做加/解密,后处理是将得到的结果与该分组data做“XOR”逻辑,然后合并到data_out,同时初始向量自增1。
步骤S205、输出监视器采集包含DUT的实际输出结果的输出接口信息,并传输给计分板。
这里,输出监视器会采集输出接口的信息,并将包含DUT的实际输出结果的信息打包成事务,传输给计分板。
步骤S206、计分板对预期输出结果与实际输出结果进行比对。
这里,计分板在收到来自输出监视器发送的事务和参考模型发送的事务后,进行数据对比以判断预期输出和实际输出结果是否一致,同时打印比对结果。
此外,会重复执行上述步骤S202~S207,直到所有的测试用例都测试完成,进而收集覆盖率进行分析,补充测试用例,完成DUT验证工作。
综上,上述实施例提供的基于UVM的SM4模块验证平台中,以SM4的加解密模块为验证对象,基于UVM搭建验证平台,与传统测试方法相比,大大提高验证效率,减少芯片研发成本;支持SM4常用的XTS、CBC、ECB、CFB、OFB、CTR六种工作模式,并将各个工作模式的预期数据计算单独封装成一个函数,有较高的可移植性;利用DPI接口内嵌C函数模型,按组依照systemverilog和C函数的映射关系输入数据,并将c函数的结果处理后按组输出,预期数据的计算更加简单高效;可产生受约束的随机测试向量,加解密选择(enc_dec_sel)、工作模式选择(work_mode)、初始向量(iv)、初始向量密钥(iv_key,XTS模式使用)、输入数据(data_in)、数据密钥(data_key)、输出数据(data_out)均可随机,提高验证的充分性;支持覆盖率收集,量化验证的完备性,提升验证质量。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,除了包含所列的那些要素,而且还可包含没有明确列出的其他要素。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种基于UVM的SM4模块验证平台,其特征在于,包括:
代理模块,被配置为根据测试用例生成验证事务,并将所述验证事务发送至待测SM4模块以及参考模型模块;所述验证事务封装了以下变量:加解密选择、工作模式选择、初始向量、初始向量密钥、输入数据、数据密钥和输出数据;
参考模型模块,被配置为模拟所述待测SM4模块的行为,获取SM4算法参考模型对所述验证事务执行预设处理后生成的第一结果;
对比模块,被配置为对所述第一结果和所述待测SM4模块输出的第二结果进行比对,获得比对结果。
2.根据权利要求1所述的基于UVM的SM4模块验证平台,其特征在于,所述代理模块包括序列发生器模块、驱动器模块和监视器模块;其中,
所述序列发生器模块,被配置为根据测试用例生成验证事务;
所述驱动器模块,被配置为获取所述验证事务,并将所述验证事务转换成信号级数据驱动到所述待测SM4模块;
所述监视器模块,被配置为将所述验证事务发送至所述参考模型模块,以及将所述待测SM4模块输出的第二结果从信号级数据转换为事务级数据,并发送给所述对比模块。
3.根据权利要求1或2所述的基于UVM的SM4模块验证平台,其特征在于,所述对比模块包括计分板模块;其中,
所述计分板模块,被配置为对所述第一结果和所述待测SM4模块输出的第二结果进行比对,并打印获得的比对结果。
4.根据权利要求1或2所述的基于UVM的SM4模块验证平台,其特征在于,所述对比模块包括覆盖率收集器模块;其中,
所述覆盖率统计器模块,被配置为收集预定功能覆盖率参数的数据信息,基于覆盖率收集模型和所述数据信息对完成功能覆盖点的覆盖率进行统计。
5.根据权利要求1或2所述的基于UVM的SM4模块验证平台,其特征在于,所述参考模型模块,被配置为:
对所述验证事务中的输入数据进行分组,获得至少一个分组数据;
对于每一个分组数据,根据所述验证事务调用SM4算法参考模型对所述分组数据进行处理,并将获得的所述分组数据对应的处理结果合并至输出数据,以生成所述第一结果。
6.根据权利要求5所述的基于UVM的SM4模块验证平台,其特征在于,所述参考模型模块,被配置为:
响应于所述验证事务中的工作模式选择为磁盘加密模式,将使用初始向量密钥加密后的初始向量与素元阶乘,对获得的阶乘结果数据与当前分组数据进行异或逻辑运算,并根据加解密选择和数据密钥调用SM4算法参考模型对获得的异或逻辑运算结果数据进行加解密计算,获得的加解密计算结果数据与所述阶乘结果数据进行异或逻辑运算,获得所述当前分组数据对应的处理结果;
响应于所述验证事务中的工作模式为电码本模式,根据加解密选择和数据密钥调用SM4算法参考模型对当前分组数据进行加解密计算,获得所述当前分组数据对应的处理结果;
响应于所述验证事务中的工作模式为密码分组链模式,若加解密选择为加密,则将上一分组数据对应的处理结果与当前分组数据进行异或逻辑运算,并根据数据密钥调用SM4算法参考模型对获得的异或逻辑运算结果数据进行加密计算,获得所述当前分组数据对应的处理结果;若加解密选择为解密,则根据数据密钥调用SM4算法参考模型对当前分组数据进行解密计算,并将获得的解密计算结果数据与上一分组数据对应的处理结果进行异或逻辑运算,获得所述当前分组数据对应的处理结果;其中,当所述当前分组数据为第一个分组数据时,所述上一分组数据对应的处理结果为初始向量;
响应于所述验证事务中的工作模式为密码反馈模式或输出反馈模式,根据加解密选择和数据密钥调用SM4算法参考模型对上一分组数据对应的处理结果进行加解密计算,对获得的加解密计算结果数据与当前分组数据进行异或逻辑运算,获得所述当前分组数据对应的处理结果;其中,当所述当前分组数据为第一个分组数据时,所述上一分组数据对应的处理结果为初始向量;
响应于所述验证事务中的工作模式为计数器模式,根据加解密选择和数据密钥调用SM4算法参考模型对初始向量进行加解密计算,对获得的加解密计算结果数据与当前分组数据进行异或逻辑运算,获得所述当前分组数据对应的处理结果,并对初始向量自增1。
7.一种基于UVM的SM4模块验证平台的验证方法,其特征在于,所述方法包括:
根据测试用例生成验证事务,并将所述验证事务发送至待测SM4模块以及SM4算法参考模型;所述验证事务封装了以下变量:加解密选择、工作模式选择、初始向量、初始向量密钥、输入数据、数据密钥和输出数据;
获取SM4算法参考模型对所述验证事务执行预设处理后生成的第一结果;
对所述第一结果和所述待测SM4模块输出的第二结果进行比对,获得比对结果。
8.根据权利要求7所述的方法,其特征在于,所述根据测试用例生成验证事务,并将所述验证事务发送至待测SM4模块以及SM4算法参考模型,包括:
根据测试用例生成验证事务;
将所述验证事务转换成信号级数据驱动到待测SM4模块,并将所述验证事务发送至参考模型模块。
9.根据权利要求7或8所述的方法,其特征在于,所述获取SM4算法参考模型对所述验证事务执行预设处理后生成的第一结果,包括:
对所述验证事务中的输入数据进行分组,获得至少一个分组数据;
对于每一个分组数据,根据所述验证事务调用SM4算法参考模型对所述分组数据进行处理,并将获得的所述分组数据对应的处理结果合并至输出数据,以生成所述第一结果。
10.根据权利要求9所述的方法,其特征在于,所述对于每一个分组数据,根据所述验证事务调用SM4算法参考模型对所述分组数据进行处理,包括:
响应于所述验证事务中的工作模式选择为磁盘加密模式,将使用初始向量密钥加密后的初始向量与素元阶乘,对获得的阶乘结果数据与当前分组数据进行异或逻辑运算,并根据加解密选择和数据密钥调用SM4算法参考模型对获得的异或逻辑运算结果数据进行加解密计算,获得的加解密计算结果数据与所述阶乘结果数据进行异或逻辑运算,获得所述当前分组数据对应的处理结果;
响应于所述验证事务中的工作模式为电码本模式,根据加解密选择和数据密钥调用SM4算法参考模型对当前分组数据进行加解密计算,获得所述当前分组数据对应的处理结果;
响应于所述验证事务中的工作模式为密码分组链模式,若加解密选择为加密,则将上一分组数据对应的处理结果与当前分组数据进行异或逻辑运算,并根据数据密钥调用SM4算法参考模型对获得的异或逻辑运算结果数据进行加密计算,获得所述当前分组数据对应的处理结果;若加解密选择为解密,则根据数据密钥调用SM4算法参考模型对当前分组数据进行解密计算,并将获得的解密计算结果数据与上一分组数据对应的处理结果进行异或逻辑运算,获得所述当前分组数据对应的处理结果;其中,当所述当前分组数据为第一个分组数据时,所述上一分组数据对应的处理结果为初始向量;
响应于所述验证事务中的工作模式为密码反馈模式或输出反馈模式,根据加解密选择和数据密钥调用SM4算法参考模型对上一分组数据对应的处理结果进行加解密计算,对获得的加解密计算结果数据与当前分组数据进行异或逻辑运算,获得所述当前分组数据对应的处理结果;其中,当所述当前分组数据为第一个分组数据时,所述上一分组数据对应的处理结果为初始向量;
响应于所述验证事务中的工作模式为计数器模式,根据加解密选择和数据密钥调用SM4算法参考模型对初始向量进行加解密计算,对获得的加解密计算结果数据与当前分组数据进行异或逻辑运算,获得所述当前分组数据对应的处理结果,并对初始向量自增1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211656130.1A CN116108800A (zh) | 2022-12-22 | 2022-12-22 | 基于uvm的sm4模块验证平台及验证方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211656130.1A CN116108800A (zh) | 2022-12-22 | 2022-12-22 | 基于uvm的sm4模块验证平台及验证方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116108800A true CN116108800A (zh) | 2023-05-12 |
Family
ID=86255356
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211656130.1A Pending CN116108800A (zh) | 2022-12-22 | 2022-12-22 | 基于uvm的sm4模块验证平台及验证方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116108800A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117411727A (zh) * | 2023-12-14 | 2024-01-16 | 山东省大数据中心 | 一种通信传输对称加密的加密方法、装置及存储介质 |
CN117555741A (zh) * | 2024-01-10 | 2024-02-13 | 深流微智能科技(深圳)有限公司 | 基于uvm的原子指令模块验证系统、方法、设备及介质 |
-
2022
- 2022-12-22 CN CN202211656130.1A patent/CN116108800A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117411727A (zh) * | 2023-12-14 | 2024-01-16 | 山东省大数据中心 | 一种通信传输对称加密的加密方法、装置及存储介质 |
CN117411727B (zh) * | 2023-12-14 | 2024-02-20 | 山东省大数据中心 | 一种通信传输对称加密的加密方法、装置及存储介质 |
CN117555741A (zh) * | 2024-01-10 | 2024-02-13 | 深流微智能科技(深圳)有限公司 | 基于uvm的原子指令模块验证系统、方法、设备及介质 |
CN117555741B (zh) * | 2024-01-10 | 2024-04-26 | 深流微智能科技(深圳)有限公司 | 基于uvm的原子指令模块验证系统、方法、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116108800A (zh) | 基于uvm的sm4模块验证平台及验证方法 | |
Ting et al. | An FPGA based SHA-256 processor | |
CN109194491B (zh) | 一种密码评测试验系统及密码评测试验方法 | |
CN103530474A (zh) | 面向aes算法电路的差分功耗攻击测试方法 | |
US20120278372A1 (en) | Cryptographic Random Number Generator Using Finite Field Operations | |
CN116488794B (zh) | 基于fpga的高速sm4密码模组实现方法及装置 | |
Smekal et al. | Acceleration of aes encryption algorithm using field programmable gate arrays | |
Feller et al. | TinyTPM: A lightweight module aimed to IP protection and trusted embedded platforms | |
CN1996830B (zh) | 具有高级加密标准核的集成电路及验证该标准核的外包 | |
Kamadi et al. | Implementation of TRNG with SHA-3 for hardware security | |
CN200990081Y (zh) | 计算机硬盘数据加密卡 | |
CN105912834A (zh) | 用于检查随机数序列的熵的装置和方法 | |
Salkanovic et al. | Analysis of cryptography algorithms implemented in android mobile application | |
CN111914307A (zh) | 基于高层次综合的国密算法sm4加速处理方法及系统 | |
CN113156295B (zh) | 一种适用于电力安全芯片响应时间的测试方法及系统 | |
CN106788976A (zh) | 一种aes加解密电路仿真分析方法及装置 | |
Rao et al. | An efficient high speed AES implementation using Traditional FPGA and LabVIEW FPGA platforms | |
CN111988133B (zh) | 系统sm4加密解密验证方法、装置、设备、及存储介质 | |
CN113268745B (zh) | 基于Camellia加密算法的软PUF | |
CN113961979A (zh) | 继电保护安全芯片密码服务模块及其哈希算法单元 | |
CN215987306U (zh) | 一种体育考试测试设备数据安全保护装置 | |
Alimi et al. | Functional Verification of Large-integers Circuits using a Cosimulation-based Approach. | |
Durai | A hardware implementation of HS1-SIV encryption algorithm using System Verilog | |
Smith | Power analysis attacks on the SHA-3 candidate Grøstl | |
Liu et al. | An Improved DES Anti-DPA Algorithm and Its Automatic Simulation System |
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 |