CN116956789B - 一种用于寄存器后门访问的方法、计算设备及介质 - Google Patents
一种用于寄存器后门访问的方法、计算设备及介质 Download PDFInfo
- Publication number
- CN116956789B CN116956789B CN202311207182.5A CN202311207182A CN116956789B CN 116956789 B CN116956789 B CN 116956789B CN 202311207182 A CN202311207182 A CN 202311207182A CN 116956789 B CN116956789 B CN 116956789B
- Authority
- CN
- China
- Prior art keywords
- register
- post
- access class
- back door
- gate access
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 67
- 238000004088 simulation Methods 0.000 claims abstract description 31
- 238000004458 analytical method Methods 0.000 claims abstract description 17
- 230000006870 function Effects 0.000 claims description 44
- 238000012795 verification Methods 0.000 claims description 38
- 238000004590 computer program Methods 0.000 claims description 14
- 230000008859 change Effects 0.000 claims description 13
- 238000012544 monitoring process Methods 0.000 claims description 7
- 230000000977 initiatory effect Effects 0.000 claims description 4
- 238000013461 design Methods 0.000 description 39
- 238000012360 testing method Methods 0.000 description 24
- 238000012545 processing Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 10
- 230000006399 behavior Effects 0.000 description 8
- 230000004044 response Effects 0.000 description 6
- 230000009286 beneficial effect Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000005284 excitation Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000004807 localization Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012942 design verification Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
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)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及计算机技术领域,提供一种用于寄存器后门访问的方法、计算设备及介质。该方法包括:获得第一寄存器表单;解析表单得到第一寄存器表单解析结果,然后基于解析结果,生成寄存器模型和与其对应的寄存器后门访问类;将寄存器后门访问类赋予对应的寄存器模型;在编译建模阶段,利用寄存器模型生成与寄存器对应的寄存器用例,并且至少在该阶段结束之前,利用寄存器模型各自被赋予的寄存器后门访问类,检测寄存器用例各自是否存在寄存器路径错误;在仿真执行阶段,利用寄存器用例各自对应的寄存器模型被赋予的寄存器后门访问类所定义的后门访问操作,实现对寄存器用例的后门访问操作组合。如此提高定位效率且利于拓展。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种用于寄存器后门访问的方法、计算设备及介质。
背景技术
寄存器访问操作分成寄存器前门访问操作和寄存器后门访问。一般地,寄存器前门访问操作通过物理总线来实现物理时序访问,代表了真实的物理操作,可以用来测试寄存器访问的物理通路和模拟真实硬件行为。寄存器后门访问操作绕过物理总线直接作用于寄存器变量。现有技术中,通过直接编程接口(Direct Programming Interface,DPI)进行寄存器后门访问操作,在建立寄存器模型时设置路径参数,通过调用相关内置函数来试图获取寄存器值或者写入寄存器。但是,现有技术中的用于实现寄存器后门访问操作的方式,只有在仿真阶段才能调用DPI和相关函数,这样就导致对问题的定位效率低下,而且难以满足芯片前端验证的多样化需求。
为此,本申请提供了一种用于寄存器后门访问的方法、计算设备及介质,用于解决现有技术中的技术难题。
发明内容
第一方面,本申请提供了一种用于寄存器后门访问的方法。所述方法包括:获得第一寄存器表单,其中,所述第一寄存器表单包括一个或者多个寄存器各自的寄存器地址、寄存器名称、寄存器类型、域名称、域宽度、域类型和复位值;解析所述第一寄存器表单得到第一寄存器表单解析结果,然后,基于所述第一寄存器表单解析结果,生成至少一个寄存器模型和与所述至少一个寄存器模型一一对应的至少一个寄存器后门访问类,其中,所述至少一个寄存器后门访问类中的每一个寄存器后门访问类定义与该寄存器后门访问类对应的寄存器路径和与该寄存器后门访问类对应的寄存器模型所对应的至少一种后门访问操作;将所述至少一个寄存器后门访问类中的每一个寄存器后门访问类赋予所述至少一个寄存器模型中与该寄存器后门访问类对应的寄存器模型;在编译建模阶段,利用所述至少一个寄存器模型,生成与所述一个或者多个寄存器一一对应的一个或者多个寄存器用例,并且,至少在所述编译建模阶段结束之前,利用所述至少一个寄存器模型各自被赋予的寄存器后门访问类,检测所述一个或者多个寄存器用例各自是否存在寄存器路径错误;在仿真执行阶段,利用所述一个或者多个寄存器用例各自对应的寄存器模型被赋予的寄存器后门访问类所定义的后门访问操作,实现对所述一个或者多个寄存器用例的寄存器后门访问操作组合。
通过本申请的第一方面,在编译建模阶段就可以检测出是否存在寄存器路径错误,不需要等到仿真执行阶段才能发现问题,从而有利于提高对问题的定位效率,提供可定制的寄存器后门访问类以及可定制的寄存器后门访问操作,从而有利于结合寄存器类型、访问属性、定位等各种参考因素进而拓展和满足芯片验证的多样化需求。
在本申请的第一方面的一种可能的实现方式中,所述方法还包括:至少在所述编译建模阶段开始之前,用自定义宏替换所述至少一个寄存器模型各自被赋予的寄存器后门访问类所定义的寄存器路径。
在本申请的第一方面的一种可能的实现方式中,针对所述至少一个寄存器后门访问类中的每一个寄存器后门访问类,该寄存器后门访问类所定义的至少一种后门访问操作基于与该寄存器后门访问类对应的寄存器模型的寄存器类型确定。
在本申请的第一方面的一种可能的实现方式中,当给定寄存器模型的寄存器类型是可读可写寄存器类型时,与所述给定寄存器模型对应的寄存器后门访问类所定义的至少一种后门访问操作包括寄存器读操作和第一寄存器写操作,其中,所述寄存器读操作用于通过与所述给定寄存器模型对应的寄存器后门访问类所定义的寄存器路径访问并返回寄存器值以及对所返回的寄存器值进行状态检查,所述第一寄存器写操作用于通过与所述给定寄存器模型对应的寄存器后门访问类所定义的寄存器路径直接赋值。
在本申请的第一方面的一种可能的实现方式中,当所述给定寄存器模型的寄存器类型是只读寄存器类型时,所述给定寄存器模型对应的寄存器后门访问类所定义的至少一种后门访问操作包括所述第一寄存器读操作和第二寄存器写操作,其中,所述第二寄存器写操作用于发出对不支持写操作的寄存器类型发起写操作的警告。
在本申请的第一方面的一种可能的实现方式中,针对所述至少一个寄存器后门访问类中的每一个寄存器后门访问类,该寄存器后门访问类所定义的至少一种后门访问操作基于与该寄存器后门访问类对应的寄存器模型的寄存器类型、访问属性、应用场景确定。
在本申请的第一方面的一种可能的实现方式中,第一寄存器后门访问类属于所述至少一个寄存器后门访问类,所述第一寄存器后门访问类所定义的至少一种后门访问操作包括寄存器读操作前置回访操作,其中,所述寄存器读操作前置回访操作用于,在每次通过所述第一寄存器后门访问类所定义的寄存器路径执行寄存器读操作之前,统计通过所述第一寄存器后门访问类执行过的寄存器读操作的次数。
在本申请的第一方面的一种可能的实现方式中,第二寄存器后门访问类属于所述至少一个寄存器后门访问类,所述第二寄存器后门访问类所定义的至少一种后门访问操作包括寄存器读操作后置回访操作,其中,所述寄存器读操作后置回访操作用于,在每次通过所述第二寄存器后门访问类所定义的寄存器路径执行寄存器读操作之后,统计通过所述第一寄存器后门访问类执行过的寄存器读操作的次数。
在本申请的第一方面的一种可能的实现方式中,第三寄存器后门访问类属于所述至少一个寄存器后门访问类,所述第三寄存器后门访问类所定义的至少一种后门访问操作包括寄存器写操作前置回访操作,其中,所述寄存器写操作前置回访操作用于,在每次通过所述第三寄存器后门访问类所定义的寄存器路径直接赋值之前,统计通过所述第三寄存器后门访问类执行过的直接赋值的次数。
在本申请的第一方面的一种可能的实现方式中,第四寄存器后门访问类属于所述至少一个寄存器后门访问类,所述第四寄存器后门访问类所定义的至少一种后门访问操作包括寄存器写操作后置回访操作,其中,所述寄存器写操作后置回访操作用于,在每次通过所述第四寄存器后门访问类所定义的寄存器路径直接赋值之后,统计通过所述第四寄存器后门访问类执行过的直接赋值的次数。
在本申请的第一方面的一种可能的实现方式中,第五寄存器后门访问类属于所述至少一个寄存器后门访问类,所述第五寄存器后门访问类所定义的至少一种后门访问操作包括寄存器值变化监控操作,其中,所述寄存器值变化监控操作用于实时监控与所述第五寄存器后门类对应的寄存器模型的寄存器值的变化并当所述寄存器值发生变化时生成触发信号。
在本申请的第一方面的一种可能的实现方式中,第六寄存器后门访问类属于所述至少一个寄存器后门访问类,所述第六寄存器后门访问类所定义的至少一种后门访问操作包括寄存器镜像值更新操作,其中,所述寄存器镜像值更新操作用于控制与所述第六寄存器后门访问类对应的寄存器模型的域段镜像值更新。
在本申请的第一方面的一种可能的实现方式中,对所述一个或者多个寄存器用例的寄存器后门访问操作组合包括以下一项或者多项:寄存器读操作,用于访问并返回寄存器值以及对所返回的寄存器值进行状态检查;第一寄存器写操作,用于直接赋值;第二寄存器写操作,用于发出对不支持写操作的寄存器类型发起写操作的警告;寄存器读操作前置回访操作,用于在每次执行所述寄存器读操作之前,统计执行过的所述寄存器读操作的次数;寄存器读操作后置回访操作,用于在每次执行所述寄存器读操作之后,统计执行过的所述寄存器读操作的次数;寄存器写操作前置回访操作,用于在每次直接赋值之前,统计执行过的直接赋值的次数;寄存器写操作后置回访操作,用于在每次直接赋值之后,统计执行过的直接赋值的次数。
在本申请的第一方面的一种可能的实现方式中,所述方法还包括:在所述仿真执行阶段,通过直接编程接口,多次调用被内置在验证方法学源码中的寄存器后门访问读函数和寄存器后门访问写函数,以及,利用所述一个或者多个寄存器用例各自对应的寄存器模型被赋予的寄存器后门访问类所定义的后门访问操作,实现对所述一个或者多个寄存器用例的寄存器后门访问操作组合。
在本申请的第一方面的一种可能的实现方式中,所述方法还包括:获得第二寄存器表单;解析所述第二寄存器表单得到第二寄存器表单解析结果;在所述仿真执行阶段,基于所述第二寄存器表单解析结果,通过所述直接编程接口,多次调用所述寄存器后门访问读函数和所述寄存器后门访问写函数,实现与所述第二寄存器表单对应的寄存器用例的寄存器后门访问操作组合。
第二方面,本申请实施例还提供了一种计算机设备,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据上述任一方面的任一种实现方式的方法。
第三方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据上述任一方面的任一种实现方式的方法。
第四方面,本申请实施例还提供了一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的指令,当所述指令在计算机设备上运行时使得所述计算机设备执行根据上述任一方面的任一种实现方式的方法。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一种芯片前端验证应用场景的示意图;
图2为本申请实施例提供的一种用于寄存器后门访问的方法的流程示意图;
图3为本申请实施例提供的一种计算设备的结构示意图。
具体实施方式
下面将结合附图对本申请实施例作进一步地详细描述。
应当理解的是,在本申请的描述中,“至少一个”指一个或一个以上,“多个”指两个或两个以上。另外,“第一”、“第二”等词汇,除非另有说明,否则仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
图1为一种芯片前端验证应用场景的示意图。如图1所示,芯片前端验证应用场景包括编译建模阶段110和仿真执行阶段120。芯片设计分成芯片前端设计和芯片后端设计,芯片前端设计从系统规划开始,确定芯片设计目的和划分各个模块,然后进行数字电路设计和模拟电路设计,以及进行仿真验证,最后得到的是寄存器传输级描述文件或者说寄存器传输级代码。然后用综合工具,将寄存器传输级描述文件转换为电路网表描述,就可以用于后续的电路版图设计也就是芯片后端设计。因此,芯片前端设计验证应用场景需要确保芯片设计的正确性,也就需要通过仿真验证来确保寄存器传输级描述文件或者寄存器传输级代码符合系统规划时确定的设计目的并且能对激励给出正确的响应。为此,在芯片前端设计阶段,需要进行大量的前端验证,尽可能覆盖各种可能的情况。具体的验证方法,是在编译建模阶段110,建立用于模拟仿真的硬件模型,例如建立与各个寄存器对应的寄存器模型;然后在仿真执行阶段120,加载模型和调用仿真器,用序列发生器生成激励,再将激励通过驱动注入待测试芯片设计,然后通过监视器来观测待测试芯片设计对激励做出的响应。这样可以通过比较参考模型对激励做出的响应还有待测试芯片设计对激励做出的响应,从而检测出电路设计上的可能错误以及其它问题。其中,在编译建模阶段110和仿真执行阶段120都涉及到大量的寄存器模型的生成和加载。随着芯片复杂度越来越高,芯片设计中用到的寄存器的数量还有种类也越来越多,这也就影响了芯片前端验证的效率和时间,进而影响了芯片设计的整体响应速度。
继续参阅图1,在芯片前端验证应用场景,需要频繁地进行寄存器访问操作。寄存器访问操作包括前门访问和后门访问两种。前门访问是通过物理总线来实现物理时序访问,代表了真实的物理操作,可以用来测试寄存器访问的物理通路和模拟真实硬件行为。后门访问是绕过物理总线,通过如直接编程接口(Direct Programming Interface,DPI)等软件方式,直接作用于待测设计中的寄存器变量。后门访问省去了访问物理总线和硬件行为,可以节约运行时间。可以通过后门访问对寄存器进行配置,如给计数器寄存器附加初值,又如通过后门访问随机化寄存器列表等。前门访问和后门访问一般结合使用,利用前门访问验证寄存器访问的物理通路正常以及模拟真实硬件行为和物理方式访问寄存器,利用后门访问配置寄存器来节约运行时间。其中,通过DPI接口来对寄存器进行后门访问操作的方式,DPI接口包括了内置的函数,用C语言写的函数(uvm_hdl_read,uvm_hdl_deposit),可以根据输入的字符串形式的路径信息获取该路径信息所代表的寄存器的值。DPI接口与用于生成激励的序列发生器连接,可调用DPI接口内置的函数实现后门访问操作。具体地,通过DPI接口来进行后门访问操作,意味着将寄存器的读写操作直接作用到待测设计内的寄存器变量上,因此在建立寄存器模型时必须保证将各个寄存器映射到待测设计侧的硬件描述语言(hardware design language,HDL)路径上。结合图1,通过DPI接口来对寄存器进行后门访问操作的方式包括以下步骤:在编译建模阶段110,建立用于模拟仿真的硬件模型,包括建立与各个寄存器对应的寄存器模型,其中在建立与各个寄存器对应的寄存器模型时设置路径参数,包括确保各个寄存器与HDL路径之间的映射关系;在编译建模阶段110结束后,也就是已经建立完成硬件模型,其包含了与各个寄存器对应的寄存器模型,加载硬件模型以及调用仿真器,开始仿真执行阶段120;在仿真执行阶段120中,通过序列发生器来生成激励,然后将激励通过驱动注入到待测设计中,再通过监视器来观测待测设计对激励做出的响应。其中,通过调用上述的内置函数会获取待测设计中寄存器的值并返回。如果被调用的内置函数对寄存器的后门访问不成功,例如输入的路径信息不对如找不到hdl路径,则会返回一个错误的状态。还可以通过调用上述的内置函数对待测设计中寄存器执行写入操作。如果内置函数对寄存器的后门访问不成功,例如输入的路径信息不对如找不到HDL路径,则会返回一个错误的状态。但是,通过DPI接口去执行寄存器后门访问操作,必然导致运行效率低下,并且只有在仿真阶段才能在通过调用内置函数时发现错误,从而导致对问题的定位效率低下。随着芯片规模增加,寄存器数量和对寄存器进行后门访问操作的次数也增加,通过DPI接口来对寄存器进行后门访问操作的方式会带来明显增加的运行时间。另外,DPI接口提供了直接声明内置函数以及自定义函数主体后调用的方式,但是难以进行拓展,不利于满足芯片验证的多样化需求。DPI接口用于与编程语言的交互,可以直接声明编程语言内置的函数或者自定义函数主体后调用。序列发生器自身会生成激励用于驱动待测设计,序列发生器生成激励流量会通过专门的接口输入到待测设计,因此DPI接口相当于额外的与待测设计的接口。
继续参阅图1,为了在芯片前端验证应用场景中实现尽量高的覆盖率,需要大量的应用到寄存器后门访问操作。例如,通过前门访问的方式,先验证寄存器访问的物理通路工作正常,并且可以提供专门用于寄存器测试的前门访问用例来遍历所有的寄存器,这样在前门访问被验证充分的前提下,可以在后续测试中使用后门访问来节省访问多个寄存器的时间。再例如,待测设计包括了一些特殊类型的寄存器,例如只能写一次的寄存器等,用前门访问也即物理方式去访问可以保证反映真实的硬件行为。再例如,通过寄存器随机设置来模拟实际应用中不可预期的场景从而提高芯片前端验证的覆盖率,具体地,先通过后门访问随机化整个寄存器列表(在一定的随机约束条件下),然后通过前门访问来配置寄存器。如此,可以通过让测试序列一开始的寄存器值都随机化来模拟无法预期的硬件配置前场景,以及可以在稍后设置了必要的寄存器之后进一步观测是否有超出预期的边界情况发生。再例如,有些情况下通过先写再读的方式来测试一个寄存器也可能存在地址不匹配的情况,这可能是因为寄存器的原本地址与硬件实现的对应地址位置不一致导致的,从而使得先写再读的方式也难以有效检测出这种错误。对于这种难以通过先写再读的方式来测试寄存器地址匹配的情况,可以通过前门访问配置寄存器之后,再通过后门访问来判断HDL地址映射的寄存器变量值是否改变,最后通过前门访问来读取寄存器的值,这样就在前门访问的基础上中途加入了比较后门访问和数值,从而可以有效地检测出是否存在地址映射到内部错误的寄存器的问题。再例如,对于一些状态寄存器,在一些时候外界的激励条件修改会依赖这些状态寄存器,并且在时序上的要求也可能很严格。例如,寄存器中有一组状态寄存器表示各个信道中先进先出缓存的余量,而这种信道中先进先出缓存的余量对于激励驱动的行为也很重要。无论是前门访问还是后门访问,都可能无法第一时间反映先进先出缓存在当前时刻的余量。因此对于需要要求更严格的测试场景,除了需要前门和后门来访问寄存器,也需要映射一些重要的信号来反映第一时间的信息。
如上所述,在芯片前端验证应用场景中,为了提高验证效率和验证效果,需要广泛地采用寄存器后门访问操作,而且需要结合具体需求、寄存器类型等,将寄存器后门访问操作与寄存器前门访问操作还有其他操作协作。例如,为了模拟实际应用中不可预期的场景从而提高芯片前端验证的覆盖率,先通过寄存器后门访问操作按照随机约束条件来随机化整个寄存器列表,然后通过寄存器前门访问操作来配置寄存器。但是,通过直接编程接口(Direct Programming Interface,DPI)进行寄存器后门访问操作,意味着在建立寄存器模型时设置路径参数,通过调用相关内置函数来试图获取寄存器值或者写入寄存器。这种通过DPI实现寄存器后门访问操作的方式,只有在仿真阶段才能调用DPI和相关函数,这样就导致对问题的定位效率低下,而且受限于可以调用的内置函数,不利于进行拓展也难以满足芯片前端验证的多样化需求。为此,本申请实施例提供了一种用于寄存器后门访问的方法、计算设备及介质,用于应对这些挑战,下面结合具体实施例和附图进行详细说明。
图2为本申请实施例提供的一种用于寄存器后门访问的方法的流程示意图。如图2所示,方法包括以下步骤。
步骤S202:获得第一寄存器表单,其中,所述第一寄存器表单包括一个或者多个寄存器各自的寄存器地址、寄存器名称、寄存器类型、域名称、域宽度、域类型和复位值。
步骤S204:解析所述第一寄存器表单得到第一寄存器表单解析结果,然后,基于所述第一寄存器表单解析结果,生成至少一个寄存器模型和与所述至少一个寄存器模型一一对应的至少一个寄存器后门访问类,其中,所述至少一个寄存器后门访问类中的每一个寄存器后门访问类定义与该寄存器后门访问类对应的寄存器路径和与该寄存器后门访问类对应的寄存器模型所对应的至少一种后门访问操作。
步骤S206:将所述至少一个寄存器后门访问类中的每一个寄存器后门访问类赋予所述至少一个寄存器模型中与该寄存器后门访问类对应的寄存器模型。
步骤S208:在编译建模阶段,利用所述至少一个寄存器模型,生成与所述一个或者多个寄存器一一对应的一个或者多个寄存器用例,并且,至少在所述编译建模阶段结束之前,利用所述至少一个寄存器模型各自被赋予的寄存器后门访问类,检测所述一个或者多个寄存器用例各自是否存在寄存器路径错误。
步骤S210:在仿真执行阶段,利用所述一个或者多个寄存器用例各自对应的寄存器模型被赋予的寄存器后门访问类所定义的后门访问操作,实现对所述一个或者多个寄存器用例的寄存器后门访问操作组合。
参阅图2和上述各个步骤,在步骤S202获得第一寄存器表单,接着,在步骤S204,解析所述第一寄存器表单得到第一寄存器表单解析结果,然后,基于所述第一寄存器表单解析结果,生成至少一个寄存器模型和与所述至少一个寄存器模型一一对应的至少一个寄存器后门访问类。这里,第一寄存器表单代表了在芯片前端验证应用场景中待测设计中的各种寄存器。如上所述,在芯片前端验证应用场景中,为了提高验证效率和验证效果,需要广泛地采用寄存器后门访问操作,而且需要结合具体需求、寄存器类型等,将寄存器后门访问操作与寄存器前门访问操作还有其他操作协作。第一寄存器表单包括一个或者多个寄存器各自的寄存器地址、寄存器名称、寄存器类型、域名称、域宽度、域类型和复位值。该一个或者多个寄存器对应了在后续处理流程中生成的与所述一个或者多个寄存器一一对应的一个或者多个寄存器用例,该一个或者多个寄存器用例就是用在仿真验证中,例如以寄存器传输级代码的方式。在一种可能的实施方式中,可以通过自动化脚本,为待测设计中的每一个寄存器定义一个寄存器后门访问类,例如将待测设计中的所有寄存器都包含在第一寄存器表单上,然后为每一个寄存器单独提供一个寄存器模型,以及为每一个寄存器模型生成一个对应的寄存器后门访问类。这样做,可以实现对每一个寄存器各自的后门访问操作分别地彼此独立地进行定制和管理。换句话说,对于待测设计中的每一个寄存器,可以通过与每个寄存器各自对应的寄存器模型所对应的寄存器后门访问类,进行单独的管理和定制化。在另一种可能的实施方式中,某些寄存器可能被视为一个集合或者一个整体或者这些寄存器的后门访问操作是相同的且同步的,这种情况下可以为这样一个集合的寄存器提供一个寄存器模型和相应的寄存器后门访问类,从而便于同步地管理和定制化同一个集合内的寄存器的后门访问操作。在一种可能的实施方式中,基于所述第一寄存器表单解析结果,生成至少一个寄存器模型。该至少一个寄存器模型可以是与所述第一寄存器表单解析结果所包括的一个或者多个寄存器满足一一对应关系,也就是为所述第一寄存器表单解析结果所包括的一个或者多个寄存器分别地生成寄存器模型,实现对每一个寄存器各自的后门访问操作分别地彼此独立地进行定制和管理。进一步地,所述至少一个寄存器后门访问类中的每一个寄存器后门访问类定义与该寄存器后门访问类对应的寄存器路径和与该寄存器后门访问类对应的寄存器模型所对应的至少一种后门访问操作。这里,因为寄存器后门访问类定义了与该寄存器后门访问类对应的寄存器路径,因此后续在编译建模阶段就可以用于检测是否存在寄存器路径错误,例如可以通过先写再读的方式来测试寄存器地址匹配的情况,又例如通过前门访问操作配置寄存器之后再通过后门访问操作来判断寄存器路径(例如硬件描述语言地址)映射的寄存器变量值是否改变的方式。这意味着,通过在编译建模阶段就可以检测出是否存在寄存器路径错误,包括可以检测出用先写再读的方式难以检测出错误的情况(例如寄存器的原本地址与硬件实现的对应地址位置不一致),如此,不需要等到仿真执行阶段才能发现问题,从而有利于提高对问题的定位效率。进一步地,基于所述第一寄存器表单解析结果,生成至少一个寄存器模型和与所述至少一个寄存器模型一一对应的至少一个寄存器后门访问类。因此,可以通过定制寄存器后门访问类,从而灵活地设定寄存器后门访问类,也就是与该寄存器后门访问类对应的寄存器模型所对应的至少一种后门访问操作。如此,可以结合寄存器类型、访问属性、定位等各种参考因素,提供定制化的寄存器后门访问类以及相应的寄存器后门访问操作的组合。例如,可以设定寄存器后门访问类提供与寄存器类型对应的读写操作,如对于可读可写类型的寄存器,在可读可写类型寄存器的相应的寄存器后门访问类中,可以设定读操作用于通过设定的寄存器路径返回寄存器值以及进行可读可写类型访问属性的状态检查,还可以设定写操作用于通过设定的寄存器路径直接赋值。再例如,对于只读类型的寄存器,在只读类型的寄存器的相应的寄存器后门访问类中,可以设定读操作用于通过设定的寄存器路径返回寄存器值以及进行只读类型访问属性的状态检查,另外可以设定写操作不进行直接赋值而是提示在试图用后门访问操作对只读类型寄存器进行写操作(可以发出警告、反馈错误或者给出其他指示)。因此,基于各个寄存器的访问属性、定位、寄存器定义等,可以提供各个寄存器各自的定制化的寄存器后门访问类,有利于拓展和满足芯片验证的多样化需求。相比于通过直接编程接口进行寄存器后门访问操作,这种通过直接编程接口实现寄存器后门访问操作的方式,只有在仿真阶段才能调用直接编程接口和相关函数,这样就导致对问题的定位效率低下,而且受限于可以调用的内置函数,不利于进行拓展也难以满足芯片前端验证的多样化需求。
继续参阅图2,在步骤S206,将所述至少一个寄存器后门访问类中的每一个寄存器后门访问类赋予所述至少一个寄存器模型中与该寄存器后门访问类对应的寄存器模型。如此,实现了拓展原本的寄存器模型,通过赋予可定制化的寄存器后门访问类到相应的寄存器模型,后续可以用于实现对每一个寄存器用例各自的后门访问操作分别地且独立地进行定制和管理。而且,如上所述,基于各个寄存器的访问属性、定位、寄存器定义等,可以提供各个寄存器各自的定制化的寄存器后门访问类,有利于拓展和满足芯片验证的多样化需求;并且,在编译建模阶段就可以检测出是否存在寄存器路径错误,不需要等到仿真执行阶段才能发现问题,从而有利于提高对问题的定位效率。接着,在步骤S208,在编译建模阶段,利用所述至少一个寄存器模型,生成与所述一个或者多个寄存器一一对应的一个或者多个寄存器用例,并且,至少在所述编译建模阶段结束之前,利用所述至少一个寄存器模型各自被赋予的寄存器后门访问类,检测所述一个或者多个寄存器用例各自是否存在寄存器路径错误。如此,利用了已经赋予了寄存器后门访问类的寄存器模型,也就是具备了拓展后的对寄存器后门访问操作进行定制和管理能力的寄存器模型,从而生成相应的寄存器用例。这样得到的寄存器用例,可以在编译建模阶段,也就是至少在所述编译建模阶段结束之前,利用所述至少一个寄存器模型各自被赋予的寄存器后门访问类,检测所述一个或者多个寄存器用例各自是否存在寄存器路径错误。因为将寄存器路径写在了自定义的寄存器后门访问类的读写方法中,在编译建模阶段,就可以发现用于寄存器后门访问操作的寄存器模型的自定义类中的错误,包括其中的寄存器路径错误例如不存在对应的硬件描述语言路径等,这样不用等到仿真执行阶段才能在调用内置函数时发现错误,从而有利于提高对问题的定位效率。接着,在步骤S210,在仿真执行阶段,利用所述一个或者多个寄存器用例各自对应的寄存器模型被赋予的寄存器后门访问类所定义的后门访问操作,实现对所述一个或者多个寄存器用例的寄存器后门访问操作组合。上面提到,基于各个寄存器的访问属性、定位、寄存器定义等,可以提供各个寄存器各自的定制化的寄存器后门访问类,有利于拓展和满足芯片验证的多样化需求。这里,通过高度可定制的寄存器后门访问类以及其所定义的后门访问操作,可以用于实现对所述一个或者多个寄存器用例的寄存器后门访问操作组合,例如将寄存器后门访问操作与寄存器前门访问操作还有其他操作协作,下面会详细说明这一点。总之,图2所示的用于寄存器后门访问的方法,在编译建模阶段就可以检测出是否存在寄存器路径错误,不需要等到仿真执行阶段才能发现问题,从而有利于提高对问题的定位效率,提供可定制的寄存器后门访问类以及可定制的寄存器后门访问操作,从而有利于结合寄存器类型、访问属性、定位等各种参考因素进而拓展和满足芯片验证的多样化需求。
在一种可能的实施方式中,所述方法还包括:至少在所述编译建模阶段开始之前,用自定义宏替换所述至少一个寄存器模型各自被赋予的寄存器后门访问类所定义的寄存器路径。所述至少一个寄存器后门访问类中的每一个寄存器后门访问类定义与该寄存器后门访问类对应的寄存器路径和与该寄存器后门访问类对应的寄存器模型所对应的至少一种后门访问操作。这里,因为寄存器后门访问类定义了与该寄存器后门访问类对应的寄存器路径,因此后续在编译建模阶段就可以用于检测是否存在寄存器路径错误,例如可以通过先写再读的方式来测试寄存器地址匹配的情况,又例如通过前门访问操作配置寄存器之后再通过后门访问操作来判断寄存器路径(例如硬件描述语言地址)映射的寄存器变量值是否改变的方式。这意味着,通过在编译建模阶段就可以检测出是否存在寄存器路径错误,包括可以检测出用先写再读的方式难以检测出错误的情况(例如寄存器的原本地址与硬件实现的对应地址位置不一致),如此,不需要等到仿真执行阶段才能发现问题,从而有利于提高对问题的定位效率。进一步地,可以用自定义宏来替换寄存器路径,这样后续在编译建模阶段,可以提高自动化效率,降低编译难度。
在一种可能的实施方式中,针对所述至少一个寄存器后门访问类中的每一个寄存器后门访问类,该寄存器后门访问类所定义的至少一种后门访问操作基于与该寄存器后门访问类对应的寄存器模型的寄存器类型确定。在一种可能的实施方式中,当给定寄存器模型的寄存器类型是可读可写寄存器类型时,与所述给定寄存器模型对应的寄存器后门访问类所定义的至少一种后门访问操作包括寄存器读操作和第一寄存器写操作,其中,所述寄存器读操作用于通过与所述给定寄存器模型对应的寄存器后门访问类所定义的寄存器路径访问并返回寄存器值以及对所返回的寄存器值进行状态检查,所述第一寄存器写操作用于通过与所述给定寄存器模型对应的寄存器后门访问类所定义的寄存器路径直接赋值。在一些实施例中,当所述给定寄存器模型的寄存器类型是只读寄存器类型时,所述给定寄存器模型对应的寄存器后门访问类所定义的至少一种后门访问操作包括所述第一寄存器读操作和第二寄存器写操作,其中,所述第二寄存器写操作用于发出对不支持写操作的寄存器类型发起写操作的警告。如此,对于可读可写寄存器类型的寄存器和只读寄存器类型的寄存器,通过定制寄存器后门访问类,从而灵活地设定与该寄存器后门访问类对应的寄存器模型所对应的至少一种后门访问操作。如此,可以结合寄存器类型、访问属性、定位等各种参考因素,提供定制化的寄存器后门访问类以及相应的寄存器后门访问操作的组合。
在一种可能的实施方式中,针对所述至少一个寄存器后门访问类中的每一个寄存器后门访问类,该寄存器后门访问类所定义的至少一种后门访问操作基于与该寄存器后门访问类对应的寄存器模型的寄存器类型、访问属性、应用场景确定。基于各个寄存器的访问属性、定位、寄存器定义等,可以提供各个寄存器各自的定制化的寄存器后门访问类,有利于拓展和满足芯片验证的多样化需求。在一种可能的实施方式中,第一寄存器后门访问类属于所述至少一个寄存器后门访问类,所述第一寄存器后门访问类所定义的至少一种后门访问操作包括寄存器读操作前置回访操作,其中,所述寄存器读操作前置回访操作用于,在每次通过所述第一寄存器后门访问类所定义的寄存器路径执行寄存器读操作之前,统计通过所述第一寄存器后门访问类执行过的寄存器读操作的次数。在一种可能的实施方式中,第二寄存器后门访问类属于所述至少一个寄存器后门访问类,所述第二寄存器后门访问类所定义的至少一种后门访问操作包括寄存器读操作后置回访操作,其中,所述寄存器读操作后置回访操作用于,在每次通过所述第二寄存器后门访问类所定义的寄存器路径执行寄存器读操作之后,统计通过所述第一寄存器后门访问类执行过的寄存器读操作的次数。在一种可能的实施方式中,第三寄存器后门访问类属于所述至少一个寄存器后门访问类,所述第三寄存器后门访问类所定义的至少一种后门访问操作包括寄存器写操作前置回访操作,其中,所述寄存器写操作前置回访操作用于,在每次通过所述第三寄存器后门访问类所定义的寄存器路径直接赋值之前,统计通过所述第三寄存器后门访问类执行过的直接赋值的次数。在一种可能的实施方式中,第四寄存器后门访问类属于所述至少一个寄存器后门访问类,所述第四寄存器后门访问类所定义的至少一种后门访问操作包括寄存器写操作后置回访操作,其中,所述寄存器写操作后置回访操作用于,在每次通过所述第四寄存器后门访问类所定义的寄存器路径直接赋值之后,统计通过所述第四寄存器后门访问类执行过的直接赋值的次数。在一种可能的实施方式中,第五寄存器后门访问类属于所述至少一个寄存器后门访问类,所述第五寄存器后门访问类所定义的至少一种后门访问操作包括寄存器值变化监控操作,其中,所述寄存器值变化监控操作用于实时监控与所述第五寄存器后门类对应的寄存器模型的寄存器值的变化并当所述寄存器值发生变化时生成触发信号。在一种可能的实施方式中,第六寄存器后门访问类属于所述至少一个寄存器后门访问类,所述第六寄存器后门访问类所定义的至少一种后门访问操作包括寄存器镜像值更新操作,其中,所述寄存器镜像值更新操作用于控制与所述第六寄存器后门访问类对应的寄存器模型的域段镜像值更新。应当理解的是,这些实施方式或者实施例中提及的寄存器后门访问类以及其定义的后门访问操作,仅为示例性。通过自定义的后门访问类,可以为每一个寄存器提供定制化的后门访问操作,而且可以结合宏生成的方式来在生成后门访问类时替换脚本生成寄存器路径,进而可以灵活地应对各种需求。例如,待测设计可能定义了多个需要满足定位需求的只读类型寄存器,对于这些只读类型寄存器,是无法采用先写后读方式去进行验证。而这些只读类型寄存器一般用于记录待测设计的状态或者输入信号,因此当状态或者输入信号发生变化时,寄存器值也会相应改变,但是寄存器镜像值不会跟着改变,因此可以通过上述的寄存器后门访问类的组合来满足芯片设计前端验证中关于这些寄存器的验证需要。另外,通过将各种可定制的寄存器后门访问操作进行结合,可以实现丰富的后门访问操作组合。例如,通过后门访问操作对寄存器直接的赋值,有时候和基于真实物理访问的前门访问操作存在区别。例如,在一些情况下,通过前门访问操作来写寄存器后会触发出脉冲信号(例如触发某个存储分区的读写指针),这个脉冲信号可能在待测设计会有逻辑,但是如果进行后门访问操作来写寄存器时,则不会触发这个脉冲信号。为了能够模拟待测设计的这种行为模式,可以通过定制的寄存器后门访问类以及定制的寄存器后门访问操作,来在通过后门访问操作写寄存器之后模拟脉冲信号的触发,进而模拟了通过前门访问操作访问寄存器的行为模式。另外,通过各种可定制的寄存器后门访问操作,例如上面提到的寄存器读操作前置回访操作、寄存器值变化监控操作等等,可以结合寄存器读操作和寄存器写操作,实现各种寄存器后门访问操作组合,例如通过统计过去的操作历史来提供后续流程的判断依据等。并且,因为是通过可定制的寄存器后门访问类来记录历史,例如通过寄存器读操作前置回访操作来统计通过所述第一寄存器后门访问类执行过的寄存器读操作的次数,这样意味着在执行前或者执行后,就可以实现对操作历史的回访,并且是在同一个寄存器后门访问类里实现也就是只需要调用同一个寄存器模型,这样避免了重复执行动作,降低了编码难度,提高了执行效率。应当理解的是,上面示例性的提及了第一寄存器后门访问类、第二寄存器后门访问类还有其他寄存器后门访问类,还可以存在其他的寄存器后门访问类,可以将上述的各种后门访问操作进行增删、替换和任意组合。
在一种可能的实施方式中,对所述一个或者多个寄存器用例的寄存器后门访问操作组合包括以下一项或者多项:寄存器读操作,用于访问并返回寄存器值以及对所返回的寄存器值进行状态检查;第一寄存器写操作,用于直接赋值;第二寄存器写操作,用于发出对不支持写操作的寄存器类型发起写操作的警告;寄存器读操作前置回访操作,用于在每次执行所述寄存器读操作之前,统计执行过的所述寄存器读操作的次数;寄存器读操作后置回访操作,用于在每次执行所述寄存器读操作之后,统计执行过的所述寄存器读操作的次数;寄存器写操作前置回访操作,用于在每次直接赋值之前,统计执行过的直接赋值的次数;寄存器写操作后置回访操作,用于在每次直接赋值之后,统计执行过的直接赋值的次数。如此,可以提供各个寄存器各自的定制化的寄存器后门访问类以及可定制的寄存器后门访问操作组合,有利于拓展和满足芯片验证的多样化需求。应当理解的是,还可以存在其他的寄存器后门访问操作,可以将上述的各种后门访问操作进行增删、替换和任意组合。
在一种可能的实施方式中,所述方法还包括:在所述仿真执行阶段,通过直接编程接口,多次调用被内置在验证方法学源码中的寄存器后门访问读函数和寄存器后门访问写函数,以及,利用所述一个或者多个寄存器用例各自对应的寄存器模型被赋予的寄存器后门访问类所定义的后门访问操作,实现对所述一个或者多个寄存器用例的寄存器后门访问操作组合。如此,可以结合通过直接编程接口实现寄存器后门访问操作的方式以及通过可定制的寄存器后门访问类和可定制的寄存器后门访问操作实现寄存器后门访问操作的方式。以图2所示的用于寄存器后门访问的方法为例,通过可定制的寄存器后门访问类和可定制的寄存器后门访问操作实现寄存器后门访问操作的方式,在编译建模阶段就可以检测出是否存在寄存器路径错误,不需要等到仿真执行阶段才能发现问题,从而有利于提高对问题的定位效率,提供可定制的寄存器后门访问类以及可定制的寄存器后门访问操作,从而有利于结合寄存器类型、访问属性、定位等各种参考因素进而拓展和满足芯片验证的多样化需求。在一些特定应用场景下,可能存在新的需求,例如新的寄存器类型或者定义,这时候可以结合通过直接编程接口实现寄存器后门访问操作的方式,实现了灵活适配。
在一种可能的实施方式中,所述方法还包括:获得第二寄存器表单;解析所述第二寄存器表单得到第二寄存器表单解析结果;在所述仿真执行阶段,基于所述第二寄存器表单解析结果,通过所述直接编程接口,多次调用所述寄存器后门访问读函数和所述寄存器后门访问写函数,实现与所述第二寄存器表单对应的寄存器用例的寄存器后门访问操作组合。以图2所示的用于寄存器后门访问的方法为例,通过可定制的寄存器后门访问类和可定制的寄存器后门访问操作实现寄存器后门访问操作的方式,在编译建模阶段就可以检测出是否存在寄存器路径错误,不需要等到仿真执行阶段才能发现问题,从而有利于提高对问题的定位效率,提供可定制的寄存器后门访问类以及可定制的寄存器后门访问操作,从而有利于结合寄存器类型、访问属性、定位等各种参考因素进而拓展和满足芯片验证的多样化需求。在一些特定应用场景下,例如存在第二寄存器表单,其内容是没有被第一寄存器表单覆盖的,这时候可以通过直接编程接口实现寄存器后门访问操作的方式,在所述仿真执行阶段,基于所述第二寄存器表单解析结果,通过所述直接编程接口,多次调用所述寄存器后门访问读函数和所述寄存器后门访问写函数,实现与所述第二寄存器表单对应的寄存器用例的寄存器后门访问操作组合。
图3是本申请实施例提供的一种计算设备的结构示意图,该计算设备300包括:一个或者多个处理器310、通信接口320以及存储器330。所述处理器310、通信接口320以及存储器330通过总线340相互连接。可选地,该计算设备300还可以包括输入/输出接口350,输入/输出接口350连接有输入/输出设备,用于接收用户设置的参数等。该计算设备300能够用于实现上述的本申请实施例中设备实施例或者系统实施例的部分或者全部功能;处理器310还能够用于实现上述的本申请实施例中方法实施例的部分或者全部操作步骤。例如,该计算设备300执行各种操作的具体实现可参照上述实施例中的具体细节,如处理器310用于执行上述方法实施例中部分或者全部步骤或者上述方法实施例中的部分或者全部操作。再例如,本申请实施例中,计算设备300可用于实现上述装置实施例中一个或者多个部件的部分或者全部功能,此外通信接口320具体可用于为了实现这些装置、部件的功能所必须的通讯功能等,以及处理器310具体可用于为了实现这些装置、部件的功能所必须的处理功能等。
应当理解的是,图3的计算设备300可以包括一个或者多个处理器310,并且多个处理器310可以按照并行化连接方式、串行化连接方式、串并行连接方式或者任意连接方式来协同提供处理能力,或者多个处理器310可以构成处理器序列或者处理器阵列,或者多个处理器310之间可以分成主处理器和辅助处理器,或者多个处理器310之间可以具有不同的架构如采用异构计算架构。另外,图3所示的计算设备300,相关的结构性描述及功能性描述是示例性且非限制性的。在一些示例性实施例中,计算设备300可以包括比图3所示的更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者具有不同的部件布置。
处理器310可以有多种具体实现形式,例如处理器310可以包括中央处理器(central processing unit,CPU)、图形处理器(graphic processing unit,GPU)、神经网络处理器(neural-network processing unit,NPU)、张量处理器(tensor processingunit,TPU)或数据处理器(data processing unit,DPU)等一种或多种的组合,本申请实施例不做具体限定。处理器310还可以是单核处理器或多核处理器。处理器310可以由CPU和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specific integratedcircuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。处理器310也可以单独采用内置处理逻辑的逻辑器件来实现,例如FPGA或数字信号处理器(digital signal processor,DSP)等。通信接口320可以为有线接口或无线接口,用于与其他模块或设备进行通信,有线接口可以是以太接口、局域互联网络(local interconnect network,LIN)等,无线接口可以是蜂窝网络接口或使用无线局域网接口等。
存储器330可以是非易失性存储器,例如,只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。存储器330也可以是易失性存储器,易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhancedSDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。存储器330也可用于存储程序代码和数据,以便于处理器310调用存储器330中存储的程序代码执行上述方法实施例中的部分或者全部操作步骤,或者执行上述设备实施例中的相应功能。此外,计算设备300可能包含相比于图3展示的更多或者更少的组件,或者有不同的组件配置方式。
总线340可以是快捷外围部件互连标准(peripheral component interconnectexpress,PCIe)总线,或扩展工业标准结构(extended industry standard architecture,EISA)总线、统一总线(unified bus,Ubus或UB)、计算机快速链接(compute express link,CXL)、缓存一致互联协议(cache coherent interconnect for accelerators,CCIX)等。总线340可以分为地址总线、数据总线、控制总线等。总线340除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,图3中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
本申请实施例提供的方法和设备是基于同一发明构思的,由于方法及设备解决问题的原理相似,因此方法与设备的实施例、实施方式、示例或实现方式可以相互参见,其中重复之处不再赘述。本申请实施例还提供一种系统,该系统包括多个计算设备,每个计算设备的结构可以参照上述所描述的计算设备的结构。该系统可实现的功能或者操作可以参照上述方法实施例中的具体实现步骤和/或上述装置实施例中所描述的具体功能,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,当所述计算机指令在计算机设备(如一个或者多个处理器)上运行时可以实现上述方法实施例中的方法步骤。所述计算机可读存储介质的处理器在执行上述方法步骤的具体实现可参照上述方法实施例中所描述的具体操作和/或上述装置实施例中所描述的具体功能,在此不再赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。本申请实施例可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(如软盘、硬盘、磁带)、光介质、或者半导体介质。半导体介质可以是固态硬盘,也可以是随机存取存储器,闪存,只读存储器,可擦可编程只读存储器,电可擦可编程只读存储器,寄存器或任何其他形式的合适存储介质。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并或删减;本申请实施例系统中的模块可以根据实际需要进行划分、合并或删减。如果本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (17)
1.一种用于寄存器后门访问的方法,其特征在于,所述方法包括:
获得第一寄存器表单,其中,所述第一寄存器表单包括一个或者多个寄存器各自的寄存器地址、寄存器名称、寄存器类型、域名称、域宽度、域类型和复位值;
解析所述第一寄存器表单得到第一寄存器表单解析结果,然后,基于所述第一寄存器表单解析结果,生成至少一个寄存器模型和与所述至少一个寄存器模型一一对应的至少一个寄存器后门访问类,其中,所述至少一个寄存器后门访问类中的每一个寄存器后门访问类定义与该寄存器后门访问类对应的寄存器路径和与该寄存器后门访问类对应的寄存器模型所对应的至少一种后门访问操作;
将所述至少一个寄存器后门访问类中的每一个寄存器后门访问类赋予所述至少一个寄存器模型中与该寄存器后门访问类对应的寄存器模型;
在编译建模阶段,利用所述至少一个寄存器模型,生成与所述一个或者多个寄存器一一对应的一个或者多个寄存器用例,并且,至少在所述编译建模阶段结束之前,利用所述至少一个寄存器模型各自被赋予的寄存器后门访问类,检测所述一个或者多个寄存器用例各自是否存在寄存器路径错误;
在仿真执行阶段,利用所述一个或者多个寄存器用例各自对应的寄存器模型被赋予的寄存器后门访问类所定义的后门访问操作,实现对所述一个或者多个寄存器用例的寄存器后门访问操作组合。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
至少在所述编译建模阶段开始之前,用自定义宏替换所述至少一个寄存器模型各自被赋予的寄存器后门访问类所定义的寄存器路径。
3. 根据权利要求1所述的方法,其特征在于, 针对所述至少一个寄存器后门访问类中的每一个寄存器后门访问类,该寄存器后门访问类所定义的至少一种后门访问操作基于与该寄存器后门访问类对应的寄存器模型的寄存器类型确定。
4.根据权利要求3所述的方法,其特征在于,当给定寄存器模型的寄存器类型是可读可写寄存器类型时,与所述给定寄存器模型对应的寄存器后门访问类所定义的至少一种后门访问操作包括寄存器读操作和第一寄存器写操作,其中,所述寄存器读操作用于通过与所述给定寄存器模型对应的寄存器后门访问类所定义的寄存器路径访问并返回寄存器值以及对所返回的寄存器值进行状态检查,所述第一寄存器写操作用于通过与所述给定寄存器模型对应的寄存器后门访问类所定义的寄存器路径直接赋值。
5.根据权利要求4所述的方法,其特征在于,当所述给定寄存器模型的寄存器类型是只读寄存器类型时,所述给定寄存器模型对应的寄存器后门访问类所定义的至少一种后门访问操作包括所述第一寄存器读操作和第二寄存器写操作,其中,所述第二寄存器写操作用于发出对不支持写操作的寄存器类型发起写操作的警告。
6.根据权利要求1所述的方法,其特征在于,针对所述至少一个寄存器后门访问类中的每一个寄存器后门访问类,该寄存器后门访问类所定义的至少一种后门访问操作基于与该寄存器后门访问类对应的寄存器模型的寄存器类型、访问属性、应用场景确定。
7.根据权利要求6所述的方法,其特征在于,第一寄存器后门访问类属于所述至少一个寄存器后门访问类,所述第一寄存器后门访问类所定义的至少一种后门访问操作包括寄存器读操作前置回访操作,其中,所述寄存器读操作前置回访操作用于,在每次通过所述第一寄存器后门访问类所定义的寄存器路径执行寄存器读操作之前,统计通过所述第一寄存器后门访问类执行过的寄存器读操作的次数。
8.根据权利要求6所述的方法,其特征在于,第二寄存器后门访问类属于所述至少一个寄存器后门访问类,所述第二寄存器后门访问类所定义的至少一种后门访问操作包括寄存器读操作后置回访操作,其中,所述寄存器读操作后置回访操作用于,在每次通过所述第二寄存器后门访问类所定义的寄存器路径执行寄存器读操作之后,统计通过所述第二寄存器后门访问类执行过的寄存器读操作的次数。
9.根据权利要求6所述的方法,其特征在于,第三寄存器后门访问类属于所述至少一个寄存器后门访问类,所述第三寄存器后门访问类所定义的至少一种后门访问操作包括寄存器写操作前置回访操作,其中,所述寄存器写操作前置回访操作用于,在每次通过所述第三寄存器后门访问类所定义的寄存器路径直接赋值之前,统计通过所述第三寄存器后门访问类执行过的直接赋值的次数。
10.根据权利要求6所述的方法,其特征在于,第四寄存器后门访问类属于所述至少一个寄存器后门访问类,所述第四寄存器后门访问类所定义的至少一种后门访问操作包括寄存器写操作后置回访操作,其中,所述寄存器写操作后置回访操作用于,在每次通过所述第四寄存器后门访问类所定义的寄存器路径直接赋值之后,统计通过所述第四寄存器后门访问类执行过的直接赋值的次数。
11.根据权利要求6所述的方法,其特征在于,第五寄存器后门访问类属于所述至少一个寄存器后门访问类,所述第五寄存器后门访问类所定义的至少一种后门访问操作包括寄存器值变化监控操作,其中,所述寄存器值变化监控操作用于实时监控与所述第五寄存器后门类对应的寄存器模型的寄存器值的变化并当所述寄存器值发生变化时生成触发信号。
12.根据权利要求6所述的方法,其特征在于,第六寄存器后门访问类属于所述至少一个寄存器后门访问类,所述第六寄存器后门访问类所定义的至少一种后门访问操作包括寄存器镜像值更新操作,其中,所述寄存器镜像值更新操作用于控制与所述第六寄存器后门访问类对应的寄存器模型的域段镜像值更新。
13.根据权利要求1所述的方法,其特征在于,对所述一个或者多个寄存器用例的寄存器后门访问操作组合包括以下一项或者多项:
寄存器读操作,用于访问并返回寄存器值以及对所返回的寄存器值进行状态检查;
第一寄存器写操作,用于直接赋值;
第二寄存器写操作,用于发出对不支持写操作的寄存器类型发起写操作的警告;
寄存器读操作前置回访操作,用于在每次执行所述寄存器读操作之前,统计执行过的所述寄存器读操作的次数;
寄存器读操作后置回访操作,用于在每次执行所述寄存器读操作之后,统计执行过的所述寄存器读操作的次数;
寄存器写操作前置回访操作,用于在每次直接赋值之前,统计执行过的直接赋值的次数;
寄存器写操作后置回访操作,用于在每次直接赋值之后,统计执行过的直接赋值的次数。
14.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述仿真执行阶段,通过直接编程接口,多次调用被内置在验证方法学源码中的寄存器后门访问读函数和寄存器后门访问写函数,以及,利用所述一个或者多个寄存器用例各自对应的寄存器模型被赋予的寄存器后门访问类所定义的后门访问操作,实现对所述一个或者多个寄存器用例的寄存器后门访问操作组合。
15.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获得第二寄存器表单;
解析所述第二寄存器表单得到第二寄存器表单解析结果;
在所述仿真执行阶段,基于所述第二寄存器表单解析结果,通过直接编程接口,多次调用所述寄存器后门访问读函数和所述寄存器后门访问写函数,实现与所述第二寄存器表单对应的寄存器用例的寄存器后门访问操作组合。
16.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据权利要求1至15中任一项所述的方法。
17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据权利要求1至15中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311207182.5A CN116956789B (zh) | 2023-09-19 | 2023-09-19 | 一种用于寄存器后门访问的方法、计算设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311207182.5A CN116956789B (zh) | 2023-09-19 | 2023-09-19 | 一种用于寄存器后门访问的方法、计算设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116956789A CN116956789A (zh) | 2023-10-27 |
CN116956789B true CN116956789B (zh) | 2023-12-12 |
Family
ID=88454902
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311207182.5A Active CN116956789B (zh) | 2023-09-19 | 2023-09-19 | 一种用于寄存器后门访问的方法、计算设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116956789B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111488297A (zh) * | 2020-04-02 | 2020-08-04 | 杭州迪普科技股份有限公司 | 用于访问寄存器的方法、装置、电子设备及可读介质 |
CN114816528A (zh) * | 2022-04-30 | 2022-07-29 | 苏州浪潮智能科技有限公司 | 一种访问寄存器的方法、装置、电子设备及介质 |
CN115345101A (zh) * | 2022-08-09 | 2022-11-15 | 牛芯半导体(深圳)有限公司 | 基于uvm的芯片寄存器的验证方法 |
CN115758967A (zh) * | 2022-11-18 | 2023-03-07 | 山东云海国创云计算装备产业创新中心有限公司 | 一种验证网表寄存器功能的方法、系统、设备和存储介质 |
CN116501305A (zh) * | 2023-06-28 | 2023-07-28 | 芯耀辉科技有限公司 | 用于寄存器代码自动生成的方法、设备、介质及系统 |
-
2023
- 2023-09-19 CN CN202311207182.5A patent/CN116956789B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111488297A (zh) * | 2020-04-02 | 2020-08-04 | 杭州迪普科技股份有限公司 | 用于访问寄存器的方法、装置、电子设备及可读介质 |
CN114816528A (zh) * | 2022-04-30 | 2022-07-29 | 苏州浪潮智能科技有限公司 | 一种访问寄存器的方法、装置、电子设备及介质 |
CN115345101A (zh) * | 2022-08-09 | 2022-11-15 | 牛芯半导体(深圳)有限公司 | 基于uvm的芯片寄存器的验证方法 |
CN115758967A (zh) * | 2022-11-18 | 2023-03-07 | 山东云海国创云计算装备产业创新中心有限公司 | 一种验证网表寄存器功能的方法、系统、设备和存储介质 |
CN116501305A (zh) * | 2023-06-28 | 2023-07-28 | 芯耀辉科技有限公司 | 用于寄存器代码自动生成的方法、设备、介质及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116956789A (zh) | 2023-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5953519A (en) | Method and system for generating electronic hardware simulation models | |
US6321186B1 (en) | Method and apparatus for integrated circuit design verification | |
US10437574B2 (en) | System and method for providing code completion features for code modules | |
US6920418B2 (en) | Detecting events within simulation models | |
US9665674B2 (en) | Automating a microarchitecture design exploration environment | |
US9507680B2 (en) | Verification system and method for automated verification of register information for an electronic system | |
JP2002183234A (ja) | デジタル回路の共同シミュレーション方法 | |
US10970449B2 (en) | Learning framework for software-hardware model generation and verification | |
CN116501305B (zh) | 用于寄存器代码自动生成的方法、设备、介质及系统 | |
US8108199B2 (en) | Phase events in a simulation model of a digital system | |
CN117034821B (zh) | 用于芯片设计前端仿真验证的回归验证方法及介质 | |
CN113343629B (zh) | 集成电路验证方法、代码生成方法、系统、设备和介质 | |
US20120166168A1 (en) | Methods and systems for fault-tolerant power analysis | |
CN116956789B (zh) | 一种用于寄存器后门访问的方法、计算设备及介质 | |
CN112733478B (zh) | 用于对设计进行形式验证的装置 | |
CN104636509A (zh) | 门级仿真中验证时序问题的方法 | |
CN113760751A (zh) | 生成测试用例的方法、电子设备及存储介质 | |
CN117574822B (zh) | 用于芯片的面向优化设计测试方法、计算机设备及介质 | |
US10635766B2 (en) | Simulation employing level-dependent multitype events | |
CN116627426B (zh) | 一种硬件描述语言增量编译方法及装置 | |
CN117312176B (zh) | 一种基于uvm的芯片验证测试方法、系统及电子设备 | |
CN111539174B (zh) | 一种基于证明核的回归测试方法、存储介质及系统 | |
CN117034841B (zh) | 一种用于数模混合仿真验证的方法、计算设备及介质 | |
CN117236241A (zh) | 一种tcam封装模块的验证方法、装置和计算设备 | |
CN116302967A (zh) | 一种NVMe模型构建及测试方法及系统 |
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 |