CN108089848A - 一种实现systemverilog中semaphore保序的控制方法与系统 - Google Patents

一种实现systemverilog中semaphore保序的控制方法与系统 Download PDF

Info

Publication number
CN108089848A
CN108089848A CN201711374252.0A CN201711374252A CN108089848A CN 108089848 A CN108089848 A CN 108089848A CN 201711374252 A CN201711374252 A CN 201711374252A CN 108089848 A CN108089848 A CN 108089848A
Authority
CN
China
Prior art keywords
key
request
value
semaphore
request source
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
CN201711374252.0A
Other languages
English (en)
Other versions
CN108089848B (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.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Zhengzhou Yunhai Information Technology Co Ltd
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 Zhengzhou Yunhai Information Technology Co Ltd filed Critical Zhengzhou Yunhai Information Technology Co Ltd
Priority to CN201711374252.0A priority Critical patent/CN108089848B/zh
Publication of CN108089848A publication Critical patent/CN108089848A/zh
Application granted granted Critical
Publication of CN108089848B publication Critical patent/CN108089848B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)

Abstract

本发明提供一种实现systemverilog中semaphore保序的控制方法与系统,它通过根据静态变量的值确定当前请求源是否等待,以及根据关联数组中的值是否为特殊值来确定当前请求源是否中断来实现semaphore的保序控制。本发明通过构造封装类,设置静态变量、关联数组、检查返回key数量函数以及保序函数,当请求申请key时,根据关联数组中的记录值,判定上一请求是否堵塞,以此来决定本次请求是否进行中断,从而保证请求的处理顺序,解决了现有systemverilog中semaphore隐含的缺陷和可能引起请求不保序的情况,充分利用了静态变量的生命周期和内建关联数组可随时增加或删除元素的特点,进行对semaphore的key返回和请求key的请求进行监管和有效控制。

Description

一种实现systemverilog中semaphore保序的控制方法与系统
技术领域
本发明涉及服务器测试领域,特别是一种实现systemverilog中semaphore保序的控制方法与系统。
背景技术
随着VLSI(Very Large Scale Integration,超大规模集成电路)逻辑规模、复杂度的提升,过去以verilog搭建testbench的方法已逐渐不能满足大规模芯片的验证需求,验证的复杂度变得越来越高,需要验证平台的功能性也越强大和全面性,高抽象性、可重用性强的高级验证方法已成为主流。而现今主流集成电路验证方法学更多以systemverilog搭建或基于systemverilog,如:UVM(Universal Verification Methodology,通用验证方法学)。线程间的通信控制作为重要部分,多个请求共享同一资源,systemverilog(简称SV语言)中的semaphore机制可以有效的控制请求源同该资源间的通信,即资源所有权归属的问题。
但若直接使用内建的semaphore,则存在两种隐含的缺陷,一种是返回semaphore的key时,并不会进行检查,若某一请求源申请一个key,在返回时,若返回两个key,并不会进行报错处理;另外一种是当请求1申请两个key,请求2申请一个key,请求1应该先于请求2发出,若请求1向semaphore发出申请key请求,此时semaphore有一个key,则请求1将被堵塞,若此时请求2发出申请,则会被分配key,从而请求2被正常发出,而导致请求1和2的顺序被打乱。
因此systemverilog内建的semaphore作为控制资源分配的重要机制存在隐性缺陷,照搬照用会因引起key返回混乱、打乱请求顺序的情况存在。
发明内容
本发明的目的是提供一种实现systemverilog中semaphore保序的控制方法与系统,旨在解决现有systemverilog中semaphore隐含的缺陷和可能引起请求不保序的情况,实现对semaphore的key返回和请求key的请求进行监管和有效控制。
为达到上述技术目的,本发明提供了一种实现systemverilog中semaphore保序的控制方法,它通过根据静态变量的值确定当前请求源是否等待,以及根据关联数组中的值是否为特殊值来确定当前请求源是否中断来实现semaphore的保序控制。
优选地,所述的控制方法具体包括以下步骤:
S101、创建封装类,所述封装类成员包括静态变量、关联数组、检查返回key数量函数以及保序函数;
S102、统计semaphore管理的请求源,包括请求源ID以及其所要申请的key的数量;
S103、将请求源ID以及所要申请key的数量传入封装类;
S104、判断请求源ID是否为0,如果为0,则在关联数组中索引为0的位置写入特殊值,并进入步骤S106,否则进入步骤S105;
S105、查询关联数组中索引为请求源ID-1下的值是否为特殊值,如果为特殊值,则中断请求,否则在关联数组中索引为请求源ID的位置写入特殊值,并进入步骤S106;
S106、判断请求的key的数量是否大于静态变量,如果大于静态变量,则进入堵塞状态,否则在关联数组中索引为请求源ID的位置将特殊值修改为请求key的数量值,并将静态变量值减去所述请求key的数量值。
优选地,所述的控制方法还包括:
当请求的进程完成工作后,通过检查返回key数量函数返回请求源ID以及key的数量,查询关联数组中索引为请求源ID的记录值,如果记录值与key的数量相等,则删除关联数组中对应的记录,并将静态变量值加上返回的key的数量,否则报错。
优选地,所述静态变量的值为semaphore中剩余空闲key的数量。
优选地,所述关联数组存放每个请求源请求的key的数量。
优选地,所述特殊值为用户自定义。
本发明还提供了一种实现systemverilog中semaphore保序的控制系统,包括:
封装类创建模块,用于创建封装类,所述封装类成员包括静态变量、关联数组、检查返回key数量函数以及保序函数;
请求源统计模块,用于统计semaphore管理的请求源,包括请求源ID以及其所要申请的key的数量;
参数传入模块,用于将请求源ID以及所要申请key的数量传入封装类;
特殊值判断模块,用于查询关联数组中索引为请求源ID-1下的值是否为特殊值,如果为特殊值,则中断请求,否则在关联数组中索引为请求源ID的位置写入特殊值;
请求key数量对比模块,用于判断请求的key的数量是否大于静态变量;
请求key数量写入模块,用于在关联数组中索引为请求源ID的位置将特殊值修改为请求key的数量值,并将静态变量值减去所述请求key的数量值。
优选地,所述的控制系统还包括:
检查key返回模块,用于当请求的进程完成工作后,通过检查返回key数量函数返回请求源ID以及key的数量,查询关联数组中索引为请求源ID的记录值,如果记录值与key的数量相等,则删除关联数组中对应的记录,并将静态变量值加上返回的key的数量,否则报错。
优选地,所述静态变量的值为semaphore中剩余空闲key的数量。
优选地,所述关联数组存放每个请求源请求的key的数量。
发明内容中提供的效果仅仅是实施例的效果,而不是发明所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:
与现有技术相比,本发明通过构造封装类,设置静态变量、关联数组、检查返回key数量函数以及保序函数,当请求申请key时,根据关联数组中的记录值,判定上一请求是否堵塞,以此来决定本次请求是否进行中断,从而保证请求的处理顺序,解决了现有systemverilog中semaphore隐含的缺陷和可能引起请求不保序的情况,充分利用了静态变量的生命周期和内建关联数组可随时增加或删除元素的特点,进行对semaphore的key返回和请求key的请求进行监管和有效控制。
附图说明
图1为本发明实施例中所提供的一种实现systemverilog中semaphore保序的控制方法流程图;
图2为本发明实施例中所提供的一种实现systemverilog中semaphore保序的控制系统结构框图。
具体实施方式
为了能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
下面结合附图对本发明实施例所提供的一种实现systemverilog中semaphore保序的控制方法与系统进行详细说明。
如图1所示,本发明实施例公开了一种实现systemverilog中semaphore保序的控制方法,包括以下步骤:
S101、创建封装类,所述封装类成员包括静态变量、关联数组、检查返回key数量函数以及保序函数;
S102、统计semaphore管理的请求源,包括请求源ID以及其所要申请的key的数量;
S103、将请求源ID以及所要申请key的数量传入封装类;
S104、判断请求源ID是否为0,如果为0,则在关联数组中索引为0的位置写入特殊值,并进入步骤S106,否则进入步骤S105;
S105、查询关联数组中索引为请求源ID-1下的值是否为特殊值,如果为特殊值,则中断请求,否则在关联数组中索引为请求源ID的位置写入特殊值,并进入步骤S106;
S106、判断请求的key的数量是否大于静态变量,如果大于静态变量,则进入堵塞状态,否则在关联数组中索引为请求源ID的位置将特殊值修改为请求key的数量值,并将静态变量值减去所述请求key的数量值。
创建封装类,所述封装类成员包括静态变量、关联数组、检查返回key数量函数以及保序函数。
所述静态变量存放semaphore中剩余空闲key的数量,其初始化值等于初始分配的key的数量;所述关联数组存放每个请求的key的数量。当封装类接收到请求源ID和需要的key的数量时,直接将请求源ID作为索引将特殊值写入关联数组,所述特殊值为用户自定义,例如定义为“4’hF”,若成功获得key,则修改静态变量的值,同时修改以请求源ID作为索引的关联数组,修改为对应请求的key的数量;如果申请被堵塞,则不修改关联数组,一直保持其内容为特殊值,且不修改静态变量。
所述检查返回key数量函数,用于进程结束后,返回其所用key的数量以及请求源ID,并根据返回的ID和key的数量,从关联数组中查询,判断返回的key的数量是否等于关联数组中的记录值,不相等则说明key返回错误,进行报错处理,如果相等,则修改静态变量值,同时从关联数组中删除该条记录。
所述保序函数,用于保护请求顺序。当有请求申请key时,根据请求源ID查询封装类中关联数组该ID索引下的值,查看其是否为特殊值,如果该ID索引下存储有特殊值,则说明之前有请求处于堵塞状态,则中断当前请求,留待后续重新发起申请请求。
统计每个semaphore管理的请求源,确保每个请求源拥有独立的ID标识,在申请key之前将其ID和所要申请的key的数量传入所述封装类,由关联数组保存管理,并将ID作为关联数组的索引,并在该ID索引下对关联数组写入特殊值,当key申请实际成功时,将特殊值修改为实际申请的key数。
例如假设semaphore初始分配2个key,此时依次有三个请求,req0、req1和req2,req0请求一个key,req1请求两个key,req2请求一个key。按照systemverilog内建的smaphore机制进行key分配的控制过程如下:
当请求req0获得一个key后,此时请求key1申请获得两个key,由于semaphore可分配的key的数量不足,因此请求req1将被堵塞,后续请求req2申请获得一个key时,此时semaphore会将剩下的一个key分配给req2。由此,原本位于请求req1之后的req2却先被分配key,导致请求不保序。
而在本发明实施例中,对三个请求分别分配ID,req0、req1和req2的请求源ID分别为0,1,2,并对封装类进行初始化,将封装类中静态变量key_num的值初始化为2,设置特殊值为4’hF。
在进行请求时,将请求源ID传入封装类以及待申请的key的数量,例如请求req0,将传入ID 0以及key的数量1,判断请求源ID是否为0,如果为0,在关联数组中以0为索引下写入特殊值4’hF,若请求req0申请成功,则静态变量key_num减去请求key的数量值,即key_num-1,并将关联数组中以0为索引下的特殊值修改为请求req0申请的key的数量,即1。请求req1在申请key时,首先查询关联数组中索引为请求源ID-1下的值是否为特殊值,如果为非特殊值,则传入请求req1的ID以及待申请key的数量,并将关联数组中索引为req1的ID下的值写入特殊值,由于key_num的值为1,而请求req1申请的key数为2,则请求req1将被堵塞;当请求req2申请key时,查询首先查询关联数组中索引为请求源ID-1,即索引为1下的值是否为特殊值,当查询到该值为特殊值时,中断req2的申请。
当请求req0进程结束后,其通过检查返回key数量函数返回该请求的ID以及key的数量,即ID为0,key的数量为1。查询关联数组中索引为0的记录值,如果为1则将key返回至semaphore,静态变量key_num加上返回的key的数量,即key_num+1,并同时清除关联数组中索引为0的记录,如果不为1则进行报错处理。此时key_num的值为2,请求req1的申请过程得以继续,此后重复申请过程。
本发明实施例通过构造封装类,设置静态变量、关联数组、检查返回key数量函数以及保序函数,当请求申请key时,根据关联数组中的记录值,判定上一请求是否堵塞,以此来决定本次请求是否进行中断,从而保证请求的处理顺序,解决了现有systemverilog中semaphore隐含的缺陷和可能引起请求不保序的情况,充分利用了静态变量的生命周期和内建关联数组可随时增加或删除元素的特点,进行对semaphore的key返回和请求key的请求进行监管和有效控制。
如图2所示,本发明实施例还公开了一种实现systemverilog中semaphore保序的控制系统,包括:
封装类创建模块,用于创建封装类,所述封装类成员包括静态变量、关联数组、检查返回key数量函数以及保序函数;所述静态变量的值为semaphore中剩余空闲key的数量;所述关联数组存放每个请求源请求的key的数量;
请求源统计模块,用于统计semaphore管理的请求源,包括请求源ID以及其所要申请的key的数量;
参数传入模块,用于将请求源ID以及所要申请key的数量传入封装类;
特殊值判断模块,用于查询关联数组中索引为请求源ID-1下的值是否为特殊值,如果为特殊值,则中断请求,否则在关联数组中索引为请求源ID的位置写入特殊值;所述特殊值为用户自定义;
请求key数量对比模块,用于判断请求的key的数量是否大于静态变量;
请求key数量写入模块,用于在关联数组中索引为请求源ID的位置将特殊值修改为请求key的数量值,并将静态变量值减去请求key的数量值。
所述系统还包括检查key返回模块,用于当请求的进程完成工作后,通过检查返回key数量函数返回请求源ID以及key的数量,查询关联数组中索引为请求源ID的记录值,如果记录值与key的数量相等,则删除关联数组中对应的记录,并将静态变量值加上返回的key的数量,否则报错。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种实现systemverilog中semaphore保序的控制方法,其特征在于,它通过根据静态变量的值确定当前请求源是否等待,以及根据关联数组中的值是否为特殊值来确定当前请求源是否中断来实现semaphore的保序控制。
2.根据权利要求1所述的一种实现systemverilog中semaphore保序的控制方法,其特征在于,所述的控制方法具体包括以下步骤:
S101、创建封装类,所述封装类成员包括静态变量、关联数组、检查返回key数量函数以及保序函数;
S102、统计semaphore管理的请求源,包括请求源ID以及其所要申请的key的数量;
S103、将请求源ID以及所要申请key的数量传入封装类;
S104、判断请求源ID是否为0,如果为0,则在关联数组中索引为0的位置写入特殊值,并进入步骤S106,否则进入步骤S105;
S105、查询关联数组中索引为请求源ID-1下的值是否为特殊值,如果为特殊值,则中断请求,否则在关联数组中索引为请求源ID的位置写入特殊值,并进入步骤S106;
S106、判断请求的key的数量是否大于静态变量,如果大于静态变量,则进入堵塞状态,否则在关联数组中索引为请求源ID的位置将特殊值修改为请求key的数量值,并将静态变量值减去所述请求key的数量值。
3.根据权利要求2所述的一种实现systemverilog中semaphore保序的控制方法,其特征在于,所述的控制方法还包括:
当请求的进程完成工作后,通过检查返回key数量函数返回请求源ID以及key的数量,查询关联数组中索引为请求源ID的记录值,如果记录值与key的数量相等,则删除关联数组中对应的记录,并将静态变量值加上返回的key的数量,否则报错。
4.根据权利要求1-3中任意一项所述的一种实现systemverilog中semaphore保序的控制方法,其特征在于,所述静态变量的值为semaphore中剩余空闲key的数量。
5.根据权利要求1-3中任意一项所述的一种实现systemverilog中semaphore保序的控制方法,其特征在于,所述关联数组存放每个请求源请求的key的数量。
6.根据权利要求1-3中任意一项所述的一种实现systemverilog中semaphore保序的控制方法,其特征在于,所述特殊值为用户自定义。
7.一种实现systemverilog中semaphore保序的控制系统,其特征在于,包括:
封装类创建模块,用于创建封装类,所述封装类成员包括静态变量、关联数组、检查返回key数量函数以及保序函数;
请求源统计模块,用于统计semaphore管理的请求源,包括请求源ID以及其所要申请的key的数量;
参数传入模块,用于将请求源ID以及所要申请key的数量传入封装类;
特殊值判断模块,用于查询关联数组中索引为请求源ID-1下的值是否为特殊值,如果为特殊值,则中断请求,否则在关联数组中索引为请求源ID的位置写入特殊值;
请求key数量对比模块,用于判断请求的key的数量是否大于静态变量;
请求key数量写入模块,用于在关联数组中索引为请求源ID的位置将特殊值修改为请求key的数量值,并将静态变量值减去请求key的数量值。
8.根据权利要求7所述的一种实现systemverilog中semaphore保序的控制系统,其特征在于,所述的控制系统还包括:
检查key返回模块,用于当请求的进程完成工作后,通过检查返回key数量函数返回请求源ID以及key的数量,查询关联数组中索引为请求源ID的记录值,如果记录值与key的数量相等,则删除关联数组中对应的记录,并将静态变量值加上返回的key的数量,否则报错。
9.根据权利要求7或8所述的一种实现systemverilog中semaphore保序的控制系统,其特征在于,所述静态变量的值为semaphore中剩余空闲key的数量。
10.根据权利要求7或8所述的一种实现systemverilog中semaphore保序的控制系统,其特征在于,所述关联数组存放每个请求源请求的key的数量。
CN201711374252.0A 2017-12-19 2017-12-19 一种实现systemverilog中semaphore保序的控制方法与系统 Active CN108089848B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711374252.0A CN108089848B (zh) 2017-12-19 2017-12-19 一种实现systemverilog中semaphore保序的控制方法与系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711374252.0A CN108089848B (zh) 2017-12-19 2017-12-19 一种实现systemverilog中semaphore保序的控制方法与系统

Publications (2)

Publication Number Publication Date
CN108089848A true CN108089848A (zh) 2018-05-29
CN108089848B CN108089848B (zh) 2021-02-09

Family

ID=62177285

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711374252.0A Active CN108089848B (zh) 2017-12-19 2017-12-19 一种实现systemverilog中semaphore保序的控制方法与系统

Country Status (1)

Country Link
CN (1) CN108089848B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5524209A (en) * 1995-02-27 1996-06-04 Parker; Robert F. System and method for controlling the competition between processors, in an at-compatible multiprocessor array, to initialize a test sequence
CN101950260A (zh) * 2010-09-10 2011-01-19 中兴通讯股份有限公司 一种处理器程序调度方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5524209A (en) * 1995-02-27 1996-06-04 Parker; Robert F. System and method for controlling the competition between processors, in an at-compatible multiprocessor array, to initialize a test sequence
CN101950260A (zh) * 2010-09-10 2011-01-19 中兴通讯股份有限公司 一种处理器程序调度方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
XINGFENG_CODER: "深入理解semaphore", 《CSDN博客》 *

Also Published As

Publication number Publication date
CN108089848B (zh) 2021-02-09

Similar Documents

Publication Publication Date Title
WO2019200701A1 (zh) 一种配置管理方法、装置、终端设备及存储介质
US20150180872A1 (en) System and method for hierarchical resource permissions and role management in a multitenant environment
WO2019109741A1 (zh) 异常数据访问的识别方法和装置
CN109614206A (zh) 区块链事务处理的装置、方法及存储介质
EP2930629A1 (en) Accessing non-relational data stores using structured query language queries
US9697042B2 (en) Extensibility of business process and application logic
CN110362409A (zh) 基于多种类型的资源分配方法、装置、设备及存储介质
CN110430180A (zh) 一种基于热插拔的物联网平台及实现方法
CN110677453A (zh) 基于ZooKeeper的分布式锁服务实现方法、装置、设备及存储介质
CN101763593A (zh) 一种实现系统审计日志的方法及装置
CN110673933A (zh) 基于ZooKeeper的分布式异步队列实现方法、装置、设备及介质
KR101905771B1 (ko) 시스템 환경 및 사용자 행동 분석 기반의 자기 방어 보안 서버와 이의 작동 방법
CN108037984A (zh) 数据分析的资源管理方法、系统以及可读存储介质
CN108959307A (zh) 可扩展数据上报方法、系统、及存储介质
CN108089848A (zh) 一种实现systemverilog中semaphore保序的控制方法与系统
US9330276B2 (en) Conditional role activation in a database
US20140250060A1 (en) Implementing a multi-column/multi-row constraint in a relational database table
CN104714813B (zh) 一种基于代理模式的android数据库延迟加载方法
US20220327242A1 (en) Data management method and apparatus
US10762088B2 (en) Automated database manager
CN112734349A (zh) 接口生成、数据调用方法、装置和电子设备
US9916412B2 (en) Automatic generation of test layouts for testing a design rule checking tool
CN111062057B (zh) 一种中立的数据应用方法、装置以及系统
CN110851483B (zh) 用于筛选对象的方法、装置、电子设备以及介质
CN106503173A (zh) Kv数据库访问方法及装置

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20210111

Address after: Building 9, No.1, guanpu Road, Guoxiang street, Wuzhong Economic Development Zone, Wuzhong District, Suzhou City, Jiangsu Province

Applicant after: SUZHOU LANGCHAO INTELLIGENT TECHNOLOGY Co.,Ltd.

Address before: Room 1601, floor 16, 278 Xinyi Road, Zhengdong New District, Zhengzhou City, Henan Province

Applicant before: ZHENGZHOU YUNHAI INFORMATION TECHNOLOGY Co.,Ltd.

GR01 Patent grant
GR01 Patent grant