CN117597684A - 在没有项目细节的先验知识的情况下在每个项目的基础上的故障安全软件访问许可控制 - Google Patents
在没有项目细节的先验知识的情况下在每个项目的基础上的故障安全软件访问许可控制 Download PDFInfo
- Publication number
- CN117597684A CN117597684A CN202280047415.7A CN202280047415A CN117597684A CN 117597684 A CN117597684 A CN 117597684A CN 202280047415 A CN202280047415 A CN 202280047415A CN 117597684 A CN117597684 A CN 117597684A
- Authority
- CN
- China
- Prior art keywords
- item
- software
- values
- classifier
- request
- 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
- 238000000034 method Methods 0.000 claims description 38
- 238000003860 storage Methods 0.000 claims description 26
- 239000013598 vector Substances 0.000 claims description 19
- 230000015654 memory Effects 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 15
- 238000012549 training Methods 0.000 claims description 13
- 238000005315 distribution function Methods 0.000 claims description 8
- 238000013461 design Methods 0.000 description 67
- 230000008569 process Effects 0.000 description 17
- 238000012545 processing Methods 0.000 description 15
- 238000009826 distribution Methods 0.000 description 13
- 238000012795 verification Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 238000004519 manufacturing process Methods 0.000 description 8
- 238000013145 classification model Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000000875 corresponding effect Effects 0.000 description 5
- 239000000047 product Substances 0.000 description 5
- 238000010801 machine learning Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000001459 lithography Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000002596 correlated effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000000513 principal component analysis Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 1
- 239000006227 byproduct Substances 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013440 design planning Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Storage Device Security (AREA)
Abstract
可以接收在第一项目上使用软件的请求。可以提取第一项目的特征集合的第一值集合。可以使用分类器基于第一值集合对第一项目进行分类。可以基于分类器的输出来确定是否准许在第一项目上使用软件的请求。
Description
相关申请的交叉引用
本申请要求于2021年6月4日提交的序列号为63/197,144的美国临时申请的权益,出于所有目的,该申请的内容通过引用整体并入本文。
技术领域
本公开总体上涉及一种电子设计自动化(EDA)系统。更具体地,本公开涉及一种用于在没有项目细节的先验知识的情况下在每个项目的基础上提供故障安全软件访问许可控制的系统和方法。
背景技术
对软件(例如,EDA软件)的受控访问可以通过令牌化的许可来提供,其中每个令牌可以允许在任何给定时间使用软件的单个实例。在这些许可方法中,可用令牌的数目可能会限制软件的使用次数或实例数目。
发明内容
本文中描述的实施例可以提供用于在每个项目的基础上准许软件访问的技术和系统。可以接收在第一项目上使用软件的请求。可以提取第一项目的特征集合的第一值集合。可以使用分类器基于第一值集合对第一项目进行分类。可以基于分类器的输出来确定是否准许在第一项目上使用软件的请求。可以使用存储在存储介质上的指令来实现分类器,该指令可以由处理器执行。
在本文中描述的一些实施例中,在接收在第一项目上使用软件的请求之前,当软件在第二项目上被使用时,可以提取第二项目的特征集合的多个值集合。接下来,可以使用特征集合的多个值集合来训练分类器。可以在线执行训练分类器,即,在使用分类器对项目进行分类时,可以继续训练分类器。
在本文中描述的一些实施例中,使用特征集合的多个值集合来训练分类器可以包括基于多个值集合来构造特征集合的概率分布函数。在这些实施例中,使用分类器基于第一值集合对第一项目进行分类可以包括:基于概率分布函数和第一值集合来计算概率集合,以及基于概率集合对第一项目进行分类。
在本文中描述的一些实施例中,使用特征集合的多个值集合来训练分类器可以包括将多个值集合存储为多维特征空间的向量。在这些实施例中,使用分类器基于第一值集合对第一项目进行分类可以包括:确定多维特征空间中与第一值集合相对应的第一向量的k个最近邻居,以及基于k个最近邻居对第一项目进行分类。
在本文中描述的一些实施例中,即使确定不准许在第一项目上使用软件的请求,也可以允许在第一项目上使用软件。在这些实施例中,可以对软件的输出进行加密,并且可以将在第一项目上使用软件的请求转发给仲裁器。在从仲裁器接收到准许在第一项目上使用软件的请求的响应时,可以解密软件的输出,并且可以准许在第一项目上使用软件。
附图说明
本公开可以基于以下给出的详细描述和附图来理解。附图、示例和实施例是为了说明的目的,并不限制本公开的范围。此外,这些附图不一定是按比例绘制的。
图1示出了根据本文中描述的一些实施例的IC设计项目随时间的进展。
图2示出了根据本文中描述的一些实施例的许可系统。
图3示出了根据本文中描述的一些实施例的IP特定许可系统的实现中的数据流。
图4示出了根据本文中描述的一些实施例的IP特定许可系统的过程。
图5示出了根据本文中描述的一些实施例的用于许可软件的过程。
图6示出了根据本文中描述的一些实施例的集成电路的设计、验证和制造的示例流程。
图7示出了计算机系统的示例机器,可以在该机器内执行指令的集合,该指令的集合用于使得机器执行本文中讨论的方法中的任何一种或多种方法。
具体实施方式
可能需要基于在其上使用软件的特定实体(诸如设计或项目)来启用软件访问。在本公开中,这种特定实体可以称为“对象(subject)”、“项目”或“知识产权(IP)”。这些术语可以互换使用,并且通常是指期望在其上使用经许可的软件应用的数据。例如,在集成电路(IC)设计项目的上下文中,定义IC设计的文件集合可以被称为“对象”、“项目”或“IP”。
对象级或项目级访问控制模型可以更适合客户和软件供应商。该模型可以通过允许供应商基于软件包为给定项目的复杂性带来的附加值对软件包进行定价,从而实现更好的价值捕获。对于客户来说,好处包括能够为项目所需要的特定软件功能支付定义的价格,而不是支付包含所有特征的固定费用(无论这些特征是否需要)。
在这种情况下,项目可以表示随时间变化的高度关联和/或相关的代表性意图。项目的示例包括但不限于IC设计。IC设计通常随着IC设计在IC设计流程中的进展而随时间变化。
尽管项目可以随时间变化,但该项目可以具有将其与其他项目区分开来的明确特征。具体地,可以使用一个或多个特征值来区分项目。这些特征可以是预定义的,但足够通用,使得这些特征针对给定领域中的所有项目而存在。例如,特征“项目名称”可以针对所有IC设计而存在。特征可以是数字的,也可以是文本的。
在本文中描述的一些实施例中,特征可以具有可定义范围,使得可以计算两个特征值之间的距离度量。例如,在IC设计领域,“实例计数(instance count)”是具有限制的数字特征,其允许我们标识特定IC设计。“设计名称”或“项目名称”是具有文本类型的另一特征。特征的值可以随时间而变化,例如,当IC设计被修改以满足各种设计要求时,IC设计的“实例计数”可以随时间变化。
在本公开中,术语“特征”可以是指项目的特性,而术语“特征值”可以是指给定项目的特征的特定值。例如,特征“项目名称”对于第一IC设计可以具有值“CPU”,而对于第二IC设计可以具有值“GPU”。同样,对于诸如“实例计数”等数字特征,对于第一IC设计,该值可以是1,000,337,而对于第二IC设计,该值可以是577,553。
图1示出了根据本文中描述的一些实施例的IC设计项目随时间的进展。X轴对应于IC设计成熟度,并且Y轴对应于特征值的变化。
随着IC设计随时间的推移而成熟,IC设计可以经历早期阶段102、中间阶段104和后期阶段106。例如,随着IC设计随时间的推移而成熟,IC设计可以与修订号(例如,0.1至1.0)相关联。在IC设计满足所有约束和性能目标并且准备好移交以用于制造之后,IC设计可以是完全成熟的。在一些实施例中,较早的修订(例如,修订0.1-0.3)可以不经过完整的IC设计流程,而中间和较晚的阶段(例如,修订0.4-1.0)可以经过完整的IC设计流程。然而,在其他实施例中,所有修订都可以经过完整的IC设计流程。随着IC设计的成熟(其可以包括一次或多次经过整个IC设计流程的IC设计),特征值的变化可以逐渐减小。例如,在早期阶段102中,项目的领域特定特征列表的限制在设计流程的早期可以是未知的或完全不存在的,并且随着项目的进展,可能需要对这些限制进行不断的手动细化。在中间阶段104中,平面图(floorplan)大小的变化、实例计数的变化和用户的应用使用的变化可以是已知的,并且可以落在图1中所示的范围内。在较晚的阶段106中,变化范围可以进一步收紧,如图1所示。特征的变化范围可以足够大,以在项目被修改时启用软件应用的继续使用,但是变化范围可以不会宽到允许未经许可的设计或项目运行。
本文中描述的实施例允许在每个项目的基础上(而不是在每次使用或每个实例的基础上)启用软件许可。具体地,本文中描述的一些实施例利用无监督数据收集、基于机器学习的分析,并且提供故障安全系统,该系统允许供应商在每个项目的基础上许可软件产品。本文中描述的一些实施例提供了一种软件许可系统,该软件许可系统基于机器学习分类系统,并且在项目没有固定的客观数据来标识它们的情况下可以用于基于项目的许可。
本文中描述的一些实施例提供了一种故障安全操作模式,在该模式中,可以启用所有经许可的软件操作,然而,任何输出数据(诸如被保存的数据库)都可以被加密,并且诊断数据可以被生成以供软件供应商分析。可以通过联系供应商支持并且发送诊断数据来重新启用加密的输出。诊断数据可以帮助供应商确认检测失败是否合法,从而保证对分类系统的更新或需要与客户进一步讨论。
本文中描述的实施例的优点包括但不限于:(1)预计项目将随时间而被细化,(2)不需要通用限制,(3)不需要随着项目的进展而对限制进行手动调谐,以及(4)如果系统未能检测到项目中的未知变化,则为客户使用场景提供避免停机的故障安全操作模式。
软件许可模型允许软件供应商通过启用基于许可用例的访问来实现对软件的货币化和保护。例如,如果客户和供应商以特定数目的许可作为协议的一部分签订了浮动许可协议,则客户可以访问多达商定的固定数目的许可。本文中描述的实施例可以用于软件包中的特征的许可或具有环境性质的一般限制,诸如时间段或地理限制。
本文中描述的实施例以机器学习分类系统为特征,该系统可以收集项目的特征并且构建分类器,该分类器可以在每个特征的基础上以一定的不确定度将该项目与该项目的其他版本相匹配,该不确定度与分类器中该特征的可变性相匹配。
随着项目的成熟,并且随着分类系统暴露于从项目中提取的更多特征集合,每个特征的不确定性可以减少,从而使得分类系统随时间变得更加准确。可以基于使用分类系统来匹配或分类IP的当前状态,确定通过基于项目的许可系统的软件许可的核证。
所收集的特定特征可以是特定于被许可的软件应用的,并且可以由领域专家以有监督方式或使用机器学习特征提取技术(包括但不限于主成分分析(PCA)和相关系数)以无监督方式来确定。例如,在EDA软件许可中,特征可以是技术的各方面(例如,金属堆叠、工艺角)、库(例如,单元族、驱动强度)、逻辑设计(例如,端口计数、寄存器计数、网络数目)、物理设计(例如,块大小、平均单元利用率、电压域数目)、约束(例如,时钟、多角多模场景、最高频率)。
对于这些特征中的每个特征,经许可的软件每次生成该特征时,系统都可以收集值。随时间被收集的这些特征可以导致给定IP单元的值的分布。每个特征分布可以被表示为特定IP单元的给定特征的单个概率分布函数(PDF)。在未来软件调用中从IP收集的特征可以对照特征PDF和基于IP特征分布的返回匹配概率来检查。例如,如果假定IP特征分布是正态分布的,则可以基于IP特征PDF的均值和标准偏差来计算特定IP特征的匹配概率。
在本文中描述的一些实施例中,IP特征PDF可以用于对IP项目进行分类。具体地,可以基于提取的IP特征值为IP特征集合创建联合概率分布。例如,如果个体特征的概率分布彼此独立,则可以通过乘以个体概率分布来创建联合概率分布。接下来,联合概率分布可以用于计算给定IP特征值集合的概率值。然后可以将概率值与阈值进行比较,以确定IP项目是被分类为相同IP项目还是不同IP项目。
在本文中描述的一些实施例中,每个IP特征PDF可以被视为生成分类输出的单独分类器。具体地,IP项目的特征值可以用于确定该特征值属于相同项目的概率。然后,可以将概率值与阈值进行比较以生成分类输出。在本文中描述的一些实施例中,分类输出可以是二进制的,例如,如果概率值低于阈值则为值“0”,而如果概率高于阈值则为值“1”。在其他实施例中,分类输出可以是连续值,例如,概率值可以作为分类输出被输出。可以使用一组分类器来组合不同IP特征的分类器,这可以允许一定程度的失败,同时仍然返回正匹配,从而产生分类系统,该分类系统在大多数特征保持在特征PDF的给定容差内的情况下允许一些特征发生显著变化。
在一些实施例中,对于所有项目可以存在相同的特征集合。然而,在其他实施例中,跨不同项目可以存在细微的特征差异。在这些实施例中,分类器可以用于所有的设计项目,而不管是否存在依赖于设计的特征。例如,第一项目可以包含实现定制特征的电路系统(例如,多个电源域和电源管理单元),而第二项目可以不包括这样的电路系统(例如,第二项目可以包括单个电源域,并且可以不包括任何电源管理单元)。在这些实施例中,可以在分类过程中使用不同项目的不同特征集合。
当新项目启动时,分类引擎中可以不存在提取的IP特征,因此可以没有分类器可用。用新项目对软件的第一调用可以初始化特征PDF并且开始特征收集过程以生成分类器。第一调用可能不会使得系统执行分类。相反,第一调用可能会使得以临时模式(即,等待稍后手动批准)授予许可,或者可能需要供应商颁发的新的项目密钥。随着软件用于处理项目,并且附加特征数据被生成,PDF中的数据点的数目可能会增加。PDF可以用于分类的阈值可以是数据相关的。换言之,在至少已经收集了特征的至少阈值数目的数据点之前,可以不使用特征的PDF。在本文中描述的一些实施例中,阈值可以被设置为每个特征四个或五个数据点。在一些实施例中,阈值可以是经验设置,或者可以基于事件计数过程中的不确定性的标准度量(例如,其中n是事件的数目),其中基于PDF的分类和验证可以在不确定性度量低于不确定性阈值之后开始。
本文中公开的基于项目的许可系统可以跟踪经许可的项目IP的演变,并且限制IP特性以基于该演变获得许可。本文中描述的实施例使得基于项目的许可能够自动适应可以随时间变化的IP成熟度,而无需用户手动跟踪或指定最终确定经许可的IP的基本特性的特征。
图2示出了根据本文中描述的一些实施例的许可系统。
软件供应商202可以提供软件许可204以在用户站点206处使用经许可的软件。IP特定许可系统208可以用于确保经许可的软件在用户站点206处仅用于被授予软件许可204的那些IP项目(即,IP设计项目)。
具体地,IP特定许可系统208可以包括IP特征和分类器数据库212,该IP特征和分类器数据库212可以包括IP特征收集模块214、IP分类器216、仲裁模块218和核证(certification)模块220。模块或引擎可以由执行存储在存储介质上的指令的处理器来实现。当经许可的软件在IP 210(即,IC设计项目)上被使用时,IP特定许可系统可以决定经许可的软件是否被允许在IP 210上使用。具体地,IP特征收集模块214可以从IP 210提取特征,并且将提取的特征提供给IP分类器216。IP分类器216可以确定所提取的特征是否指示IP 210是经许可的软件被授权使用的相同项目。如果是,则IP分类器216可以使得核证模块220允许经许可的软件访问IP 210。另一方面,如果提取的特征指示IP 210不是经许可的软件被授权使用的相同项目,则IP分类器216可以使仲裁模块218使得软件供应商202能够查看提取的特征并且核证经许可的软件在IP 210上的使用。仲裁模块218可以将仲裁过程的结果提供给核证模块220,该核证模块220可以允许或拒绝在IP 210上使用经许可的软件。
在本文中描述的一些实施例中,用户站点206处的用户可以在经许可的软件系统中创建新项目,这可以使得经许可的系统被首次用于新项目。在启动时,经许可的软件可以与IP特定许可系统208进行通信,以在本地核证数据库(其可以由核证模块220维护)中为新项目创建条目(其可以消耗作为软件购买商业模型的一部分在用户站点206处供应的有限项目密钥池中的项目密钥或令牌)。初始时,IP特征和分类器数据库212可以包含在项目创建时提取的初始特征集合。随着经许可的软件继续运行,IP特定许可系统208可以在多个时刻处收集项目的特征,并且随时间构建特征快照的集合。
当IP特征收集模块214已经收集一定数目(例如,最小阈值)的特征时,IP特定许可系统208可以基于为项目而收集的特征数据来构建IP分类器216。例如,IP分类器216可以使用收集的特征数据并且构建ML分类模型,该ML分类模型表示到目前为止已经收集的收集的特征值的统计分布。一旦IP分类器216已经满足有效性的最小数据量,则如果使用中的IP通过了分类检查以在到目前为止计算的统计容差内,经许可的软件就可以对项目进行操作。
在本文中描述的一些实施例中,ML分类模型可以基于收集的特征值来构造特征集合的联合概率分布。接下来,给定特征值的特定集合,ML分类模型可以确定与该特征值的特定集合相对应的概率。如果所确定的概率高于分类阈值,则ML分类模型可以将项目分类为与针对其创建联合概率分布的项目相同的项目。另一方面,如果所确定的概率低于分类阈值,则ML分类模型可以将项目分类为不同项目。在一些实施例中,可以基于特征的概率分布,为特征集合中的每个特征确定允许值的范围。例如,针对给定特征,值的范围可以是μ±α·σ,其中μ是该特征的平均值,α是经验常数,并且σ是该特征的标准偏差。接下来,取决于给定项目的每个特征值是否在允许值的范围内,ML分类模型可以对给定项目进行分类。
在一些实施例中,k近邻技术可以用于分类。提取的特征可以表示为多维特征空间中的向量,并且在收集足够的训练数据的同时,每个向量可以被标记为项目。因此,在训练阶段,提取的特征可以被存储并且可以被分类为属于相同项目。换言之,多维特征空间可以被视为具有多个向量,其中每个向量可以被标记有与该向量相对应的项目名称或项目标识符。给定多维特征空间中的向量或点,可以执行查询以确定与给定向量或点的k个最接近或k个最近向量。
在分类阶段(例如,当IP分类器216被用于对项目进行分类时),通过分配最接近未标记向量(例如,从项目中提取的特征集合)的k个样本当中最频繁的标签来对该未标记向量进行分类。值k可以是用户定义的常数。对于连续特征值,可以使用欧几里得距离度量。对于离散特征值(诸如对于文本),可以使用重叠度量或汉明距离度量来确定距离。
在一些实施例中,如果提取的特征指示IP 210不是经许可的软件被授权使用的相同项目,则IP分类器216可以允许经许可的软件以临时模式运行,在临时模式中,经许可的软件照常运行,但输出被加密。一旦软件供应商202核证经许可的软件在IP 210上的使用,加密的输出就可以被解密。
在本文中描述的一些实施例中,如果IP项目未通过分类检查(即,IP项目被分类为不同项目),则用户可以有三个选项:1)在核证系统中发起新项目(在新项目创建时使用),2)请求仲裁现有项目IP的分类失败(可能涉及来自软件供应商的人工仲裁),或者3)允许软件以临时模式完成,并且使用未加密的输出(其可以仅限于某些类型的输出数据)来预览软件的动作(类似于“演示模式”)。具体地,一些输出可以被加密,并且一些输出可以以非加密形式被提供给用户,以允许用户决定用户是否想要解锁加密的输出。
本文中描述的一些实施例可以提供可选能力,该能力可以为初始未被核证的IP提供完成后核证,或者为产生导致核证延迟到达的仲裁请求的IP提供完成后核证。在这种情况下,软件可以以临时模式运行,并且输出可以被加密,并且新到达的核证可以用于解密软件输出,从而消除了再次运行软件的需要。
图3示出了根据本文中描述的一些实施例的IP特定许可系统的实现中的数据流。
经许可的软件应用302可以包括提取器组件,该提取器组件可以从可以包含IP项目的设计数据库308收集或提取特征。组件可以由执行存储在存储介质上的指令的处理器来实现。提取的特征304然后可以被提供给分类器306(其可以由执行存储在存储介质上的指令的处理器来实现)。分类器306可以验证项目。如果分类器306将项目分类为相同项目,则经许可的软件应用302可以提供软件能力的完全启用。另一方面,如果分类器306将项目分类为新的或不同项目,则经许可的软件应用302可以提供软件能力的受限启用,并且可以在设计数据库308中创建新条目。
图4示出了根据本文中描述的一些实施例的IP特定许可系统的过程。
用户412可以调用经许可的软件410(例如,EDA软件应用)来处理项目数据424(例如,IC设计)。经许可的软件410可以从项目数据424收集特征428(例如,特征值F0、F1、F2、……、Fn),并且将特征428提供给许可引擎402。引擎(例如,许可引擎402、分类引擎406等)可以由执行存储在存储介质(例如,存储器设备)上的指令的处理器来实现。具体地,收集的特征中的一个特征可以包括项目名称(或项目标识符)。许可引擎402可以检查项目名称是否在许可数据库404中(在408处)。如果项目名称在许可证数据库404中(408处的“是”分支),并且存在用于该项目的足够的分类数据,则特征428可以被提供给分类引擎406。另一方面,如果项目名称不在许可证数据库404中(408处的“否”分支),则可以在许可数据库404中为该项目生成临时条目,并且可以指示加密开关422锁定输出426以等待供应商仲裁器414的批准(在420处)。锁定输出426可以包括加密开关422对输出426进行加密,一旦供应商仲裁器414批准访问,输出426就可以被解密。加密开关422可以由执行存储在存储介质上的指令的处理器来实现。加密开关422可以接收输入数据,并且,或者按原样输出输入数据(即,没有任何加密)或者输出输入数据的加密版本。加密开关422可以基于存储在存储器中的值来确定是否对输入数据进行加密。此外,加密开关422可以解密先前由加密开关422加密的数据。
在本文中描述的一些实施例中,特征428、到目前为止为项目而收集的特征的动态生成的PDF、以及集成匹配阈值(ensemble match threshold)(以及由分类引擎406使用的任何其他阈值)可以被存储在许可数据库404中。如果分类成功(即,分类引擎406确定经许可的软件410被授权用于项目数据424上),则经许可的软件410的输出可以被解锁,并且特征428可以用于更新分类引擎406(在418处)。解锁经许可的软件410的输出426可以包括将加密的输出(其可以在分类引擎406对项目进行分类时被不间断地生成)进行解密。基于特征428更新分类引擎406可以包括将数据点添加到特征PDF或者添加k近邻分类器的特征向量。随着项目成熟,更新分类引擎406可以缩小引起成功分类的特征值的范围。
另一方面,如果分类失败(即,分类引擎406确定经许可的软件410未被授权用于项目数据424上),则可以调用仲裁引擎416。供应商仲裁器414可以与仲裁引擎416交互,以确定经许可的软件410是否被许可以与项目数据424使用。如果供应商仲裁器414决定准许对许可软件410的访问,则仲裁引擎416可以指示加密开关422解锁输出426。
图5示出了根据本文中描述的一些实施例的用于许可软件的过程。
当软件在第一项目上被使用时,可以提取第一项目的特征集合的多个值集合(在502处)。例如,随着第一项目趋于成熟,可以为第一项目的每个修订提取值集合。可以使用特征集合的多个值集合来训练分类引擎(在504处)。在本文中描述的一些实施例中,可以基于多个值集合来确定特征集合的PDF,并且可以使用PDF来构造分类器。在一些实施例中,可以将多个值集合存储为多维特征空间的向量,并且可以使用k近邻技术来对项目进行分类。
可以接收在第二项目上使用软件的请求(在506处)。可以提取第二项目的特征集合的第一值集合(在508处)。可以使用分类引擎基于第二项目的特征集合的第一值集合对第二项目进行分类(在510处)。
分类的结果可以指示第二项目是否与第一项目相同(在512处)。如果第二项目与第一项目相同,则可以准许获准在第二项目上使用软件的请求(在516处)。例如,如果第二项目是第一项目的后续修订,则分类的结果可以指示第二项目与第一项目相同。
另一方面,如果第二项目与第一项目不相同,则可以拒绝获准在第二项目上使用软件的请求(在514处)。例如,如果第二项目不同于第一项目(但具有与第一项目相同的名称或标识符),则分类的结果可以指示第二项目与第一项目不相同。在本文中描述的一些实施例中,响应于确定不授予在第二项目上使用软件的获准,(1)可以允许在第二项目上使用软件,(2)可以对软件的输出进行加密,以及(3)可以将在第二项目上使用软件的请求转发给仲裁器。响应于从仲裁器接收到授予在第二项目上使用软件的获准的响应,(1)可以解密软件的输出,以及(2)可以授予在第二项目上使用软件的获准。
图6示出了根据本文中描述的一些实施例的集成电路的设计、验证和制造的示例流程。
EDA过程612(缩写“EDA”是指“电子设计自动化”)可以用于变换和验证表示集成电路的设计数据和指令。这些过程中的每个过程可以被结构化和启用为多个模块或操作。
流程600可以开始于利用由设计者提供的信息来创建产品创意610,使用EDA过程612来变换和验证该信息。当设计完成时,设计被流片634,这是当用于集成电路的原图(例如,几何图案)被发送到制造设施以制造掩模组的时候,掩模组随后被用于制造集成电路。在流片之后,制造半导体裸片636,并且执行封装和组装638以生产制造的IC芯片640。
电路或电子结构的规范范围可以从低级晶体管材料布局到高级描述语言。通过使用诸如VHDL、Verilog、SystemVerilog、SystemC、MyHDL或OpenVera的硬件描述语言(“HDL”),可以将高级别的表示用于设计电路和系统。HDL描述可以变换为逻辑级寄存器传输级(“RTL”)描述、门级描述、布局级描述或掩码级描述。作为更详细描述的每个较低的表示级别都会在设计描述中添加更多详细的细节。作为更详细描述的较低级别的表示可以由计算机生成、从设计库中导出、或者由另一设计自动化过程创建。SPICE(其表示“以集成电路为重点的仿真程序”)是用于指定更详细描述的较低级别的表示语言的规范语言的示例。每个级别的表示的描述包含足以供该层的对应工具(例如,形式验证工具)使用的细节。
在系统设计614期间,指定要被制造的集成电路的功能。可以针对诸如功耗、性能、面积(物理的和/或代码行)和成本降低等期望特性来优化设计。在该阶段可以将设计划分为不同类型的模块或组件。
在逻辑设计和功能验证616期间,用一种或多种描述语言指定电路中的模块或组件,并且检查规范的功能准确性。例如,可以验证电路的组件以生成与正在被设计的电路或系统的规范的要求相匹配的输出。功能验证可以使用仿真器和其他程序,诸如测试台生成器、静态HDL检查器和形式验证器。在一些实施例中,称为“模拟器”或“原型系统”的组件的专用系统被用于加速功能验证。
在用于测试的合成和设计618期间,HDL代码被变换为网表。在一些实施例中,网表可以是图结构,其中图结构的边表示电路的组件,并且图结构的节点表示组件如何互连。HDL代码和网表都是层级的制造品,EDA产品可以使用它们来验证集成电路在制造时是否按照指定的设计执行。可以针对目标半导体制造技术来优化网表。此外,可以对成品集成电路进行测试,以验证集成电路是否满足规范的要求。
在网表验证620期间,检查网表是否符合时序约束以及是否与HDL代码相对应。在设计规划622期间,针对时序和顶层布线来构造和分析集成电路的总体平面图。
在布局或物理实现624期间,发生物理放置(诸如晶体管或电容器等电路组件的定位)和布线(通过多个导体连接电路组件),并且可以执行从库中选择单元以启用特定逻辑功能。如本文中使用的,术语“单元”可以指定提供布尔逻辑函数(例如,与(AND)、或(OR)、非(NOT)、异或(XOR))或存储函数(诸如触发器或锁存器)的一组晶体管、其他组件和互连。如本文中使用的,电路“块”可以是指两个或更多个单元。单元和电路块都可以被称为模块或组件,并且被启用为物理结构和模拟两者。为所选择的单元指定参数(基于“标准单元”),诸如大小,并且使其可以在数据库中访问,以供EDA产品使用。
在分析和提取626期间,在布局级别验证电路功能,这允许对布局设计进行细化。在物理验证628期间,检查布局设计以确保制造约束是正确的,诸如DRC约束、电气约束、光刻约束,并且电路系统功能匹配HDL设计规范。在分辨率增强630期间,对布局的几何形状进行变换以改进电路设计的制造方式。
在流片期间,创建要用于生产光刻掩模的数据(在适当的情况下应用光刻增强之后)。在掩模数据准备632期间,“流片”数据用于生产光刻掩模,光刻掩模用于生产成品集成电路。
计算机系统(诸如图7中的计算机系统700)的存储子系统可以用于存储程序或数据结构,该程序和数据结构由本文所述的EDA产品中的一些或所有EDA产品使用,并且由用于开发库的单元的产品以及用于使用该库的物理和逻辑设计的产品使用。
图7示出了计算机系统700的示例机器,可以在该机器内执行指令的集合,该指令的集合用于使得机器执行本文中讨论的方法中的任何一种或多种方法。
在替代实现中,机器可以被连接(例如,联网)到LAN、内联网、外联网和/或互联网中的其他机器。机器可以在客户端服务器网络环境中以服务器或客户端机器的能力操作,作为对等(或分布式)网络环境中的对等机器操作,或者作为云计算基础设施或环境中的服务器或客户端机操作。
机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web设备、服务器、网络路由器、交换机或桥接器、或者能够执行指令的集合(顺序的或其他方式)的任何机器,这些指令指定了要由该机器执行的动作。此外,虽然说明了单个机器,但术语“机器”也应当包括单独或联合执行一组(或多组)指令以执行本文中讨论的方法中的任何一种或多种方法的任何机器集合。
示例计算机系统700包括处理设备702、主存储器704(例如,只读存储器(ROM)、闪存、动态随机存取存储器(DRAM)(诸如同步DRAM(SDRAM))、静态存储器706(例如,闪存、静态随机存取存储器(SRAM)等)和数据存储设备718,它们通过总线730彼此通信。
处理设备702表示一个或多个处理器,诸如微处理器、中央处理单元等。更具体地,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集运算(RISC)微处理器、超长指令字(VLIW)微处理器、或者实现其他指令集的处理器、或者实现指令集组合的处理器。处理设备702也可以是一个或多个专用处理设备,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理设备702可以被配置为执行用于执行本文中描述的操作和步骤的指令726。
计算机系统700还可以包括用于通过网络720进行通信的网络接口设备708。计算机系统700还可以包括视频显示单元710(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备712(例如,键盘)、光标控制设备714(例如,鼠标)、图形处理单元722、信号生成设备716(例如,扬声器)、图形处理单元722、视频处理单元728和音频处理单元732。
数据存储设备718可以包括机器可读存储介质724(也称为非暂态计算机可读介质),介质724上存储有一组或多组指令726或体现本文中描述的方法中的任何一种或多种方法或功能的软件。在计算机系统700对指令726的执行期间,指令726还可以完全或至少部分驻留在主存储器704内和/或处理设备702内,主存储器704和处理设备702也构成机器可读存储介质。
在一些实现中,指令726包括用于实现与本公开相对应的功能的指令。尽管机器可读存储介质724在示例实现中被示出为单个介质,但术语“机器可读存储介质”应当被视为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库、和/或相关联的高速缓存和服务器)。术语“机器可读存储介质”还应当被视为包括能够存储或编码指令的集合以供机器执行并且使得机器和处理设备702执行本公开的方法中的任何一种或多种的任何介质。因此,术语“机器可读存储介质”应当包括但不限于固态存储器、光学介质和磁性介质。
已经根据对计算机存储器内的数据位的操作的算法和符号表示,呈现了前述详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用来最有效地将其工作的实质传送给本领域其他技术人员的方式。算法可以是导致期望结果的一系列操作。运算是那些需要对物理量进行物理操纵的运算。这样的量可以采取能够被存储、组合、比较和以其他方式操纵的电信号或磁信号的形式。这样的信号可以称为比特、值、元素、符号、字符、术语、数字等。
然而,应当记住,所有这些和类似的术语都与适当的物理量相关联,并且只是应用于这些量的方便标签。除非从本公开中明确指出,否则应当理解,在整个描述中,某些术语是指计算机系统或类似电子计算设备的动作和过程,其将表示为计算机系统的寄存器和存储器内的物理(电子)量的数据操纵和变换为类似地表示为计算机系统的存储器或寄存器或其他这样的信息存储设备内的物理量的其他数据。
本公开还涉及一种用于执行本文中的操作的装置。该装置可以是专门为预期目的而构造的,或者它可以包括由存储在计算机中的计算机程序选择性地激活或重新配置的计算机。这样的计算机程序可以被存储在计算机可读存储介质中,诸如但不限于任何类型的盘,包括软盘、光盘、CD-ROM和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡、或适合存储电子指令的任何类型的介质,每个耦合到计算机系统总线。
本文中提出的算法和显示器与任何特定计算机或其他装置都没有内在的联系。各种其他系统可以根据本文中的教导与程序一起使用,或者可以证明构造更专门的装置来执行该方法是方便的。此外,本公开不是参考任何特定的编程语言来描述的。将理解的是,多种编程语言可以用于实现本文中描述的本公开的教导。
本公开可以作为计算机程序产品或软件提供,其可以包括其上存储有指令的机器可读介质,指令可以用于对计算机系统(或其他电子设备)进行编程以执行根据本公开的过程。机器可读介质包括用于以机器(例如,计算机)可读的形式存储信息的任何机制。例如,机器可读(例如,计算机可读)介质包括机器(例如,计算机)可读存储介质,诸如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光存储介质、闪存设备等。
在前述公开中,已经参考其具体示例实现描述了本公开的实现。很清楚的是,在不偏离如以下权利要求中所阐述的本公开的更广泛的精神和实施范围的情况下,可以对其进行各种设计修改。在本公开涉及单数时态中的一些元素的情况下,可以在附图中描绘多于一个元素,并且用相似的数字标记相似的元素。因此,本公开和附图被视为说明性意义而非限制性意义。
Claims (20)
1.一种方法,包括:
接收在第一项目上使用软件的请求;
提取所述第一项目的特征集合的第一值集合;
使用分类器基于所述第一值集合对所述第一项目进行分类;以及
由处理器基于所述分类器的输出来确定是否准许在所述第一项目上使用所述软件的所述请求。
2.根据权利要求1所述的方法,其中在接收在所述第一项目上使用所述软件的所述请求之前,所述方法还包括:
当所述软件在第二项目上被使用时,提取所述第二项目的所述特征集合的多个值集合;以及
使用所述特征集合的所述多个值集合来训练所述分类器。
3.根据权利要求2所述的方法,其中使用所述特征集合的所述多个值集合来训练所述分类器包括:基于所述多个值集合,构造所述特征集合的概率分布函数。
4.根据权利要求3所述的方法,其中使用所述分类器基于所述第一值集合对所述第一项目进行分类包括:
基于所述概率分布函数和所述第一值集合,计算概率集合;以及
基于所述概率集合对所述第一项目进行分类。
5.根据权利要求2所述的方法,其中使用所述特征集合的所述多个值集合来训练所述分类器包括:将所述多个值集合存储为多维特征空间的向量。
6.根据权利要求5所述的方法,其中使用所述分类器基于所述第一值集合对所述第一项目进行分类包括:
确定所述多维特征空间中与所述第一值集合相对应的第一向量的k个最近邻居;以及
基于所述k个最近邻居对所述第一项目进行分类。
7.根据权利要求1所述的方法,还包括:
响应于确定不准许在所述第一项目上使用所述软件的所述请求,
允许在所述第一项目上使用所述软件,
对所述软件的输出进行加密,以及
将在所述第一项目上使用所述软件的所述请求转发到仲裁器。
8.根据权利要求7所述的方法,还包括:
响应于从所述仲裁器接收到用以准许在所述第一项目上使用所述软件的所述请求的响应,
解密所述软件的所述输出,以及
准许在所述第一项目上使用所述软件的所述请求。
9.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储有指令,所述指令在由处理器执行时,使得所述处理器:
当软件在第一项目上被使用时,提取所述第一项目的特征集合的多个值集合;
使用所述特征集合的所述多个值集合来训练分类器;以及
响应于接收到在第二项目上使用所述软件的请求,
提取所述第二项目的所述特征集合的第一值集合,
使用所述分类器基于所述第一值集合对所述第二项目进行分类,以及
响应于所述分类器将所述第二项目分类为与所述第一项目相同,准许在所述第二项目上使用所述软件的所述请求。
10.根据权利要求9所述的非暂态计算机可读存储介质,其中使用所述特征集合的所述多个值集合来训练所述分类器包括:基于所述多个值集合,构造所述特征集合的概率分布函数。
11.根据权利要求10所述的非暂态计算机可读存储介质,其中使用所述分类器基于所述第一值集合对所述第二项目进行分类包括:
基于所述概率分布函数和所述第一值集合,计算概率集合;以及
基于所述概率集合对所述第二项目进行分类。
12.根据权利要求9所述的非暂态计算机可读存储介质,其中使用所述特征集合的所述多个值集合来训练所述分类器包括:将所述多个值集合存储为多维特征空间的向量。
13.根据权利要求12所述的非暂态计算机可读存储介质,其中使用所述分类器基于所述第一值集合对所述第二项目进行分类包括:
确定所述多维特征空间中与所述第一值集合相对应的第一向量的k个最近邻居;以及
基于所述k个最近邻居对所述第二项目进行分类。
14.根据权利要求9所述的非暂态计算机可读存储介质,还存储有在由处理器执行时使得所述处理器执行以下操作的指令:
响应于确定不准许在所述第二项目上使用所述软件的所述请求,
允许在所述第二项目上使用所述软件,
对所述软件的输出进行加密,以及
将在所述第二项目上使用所述软件的所述请求转发到仲裁器。
15.根据权利要求14所述的非暂态计算机可读存储介质,还存储有在由处理器执行时使得所述处理器执行以下操作的指令:
响应于从所述仲裁器接收到准许在所述第二项目上使用所述软件的所述请求的响应,
解密所述软件的所述输出,以及
准许在所述第二项目上使用所述软件的所述请求。
16.一种装置,包括:
存储器,存储有指令;以及
处理器,与所述存储器耦合并且执行所述指令,所述指令在被执行时,使得所述处理器:
接收在第一项目上使用软件的请求;
提取所述第一项目的特征集合的第一值集合;
使用分类器基于所述第一值集合对所述第一项目进行分类;以及
基于所述分类器的输出,确定是否准许在所述第一项目上使用所述软件的所述请求。
17.根据权利要求16所述的装置,其中所述指令在被执行时,使得所述处理器在接收在所述第一项目上使用所述软件的所述请求之前:
当所述软件在第二项目上被使用时,提取所述第二项目的所述特征集合的多个值集合;以及
使用所述特征集合的所述多个值集合来训练所述分类器。
18.根据权利要求17所述的装置,其中使用所述特征集合的所述多个值集合来训练所述分类器包括:基于所述多个值集合,构造所述特征集合的概率分布函数。
19.根据权利要求17所述的装置,其中使用所述特征集合的所述多个值集合来训练所述分类器包括:将所述多个值集合存储为多维特征空间的向量。
20.根据权利要求16所述的装置,其中所述指令在被执行时,使得所述处理器:
响应于确定不准许在所述第一项目上使用所述软件的所述请求,
允许在所述第一项目上使用所述软件,
对所述软件的输出进行加密,以及
将在所述第一项目上使用所述软件的所述请求转发到仲裁器;以及
响应于从所述仲裁器接收到准许在所述第一项目上使用所述软件的所述请求的所述响应,
解密所述软件的所述输出,以及
准许在所述第一项目上使用所述软件的所述请求。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163197144P | 2021-06-04 | 2021-06-04 | |
US63/197,144 | 2021-06-04 | ||
PCT/US2022/032192 WO2022256672A1 (en) | 2021-06-04 | 2022-06-03 | Fail-safe software access licensing control on a per-project basis without a priori knowledge of project details |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117597684A true CN117597684A (zh) | 2024-02-23 |
Family
ID=82458490
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280047415.7A Pending CN117597684A (zh) | 2021-06-04 | 2022-06-03 | 在没有项目细节的先验知识的情况下在每个项目的基础上的故障安全软件访问许可控制 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220391477A1 (zh) |
KR (1) | KR20240016423A (zh) |
CN (1) | CN117597684A (zh) |
WO (1) | WO2022256672A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9727706B2 (en) * | 2012-12-03 | 2017-08-08 | Softwatch Technologies 2009 Ltd. | Methods circuits apparatuses systems and associated computer executable code for metering software usage |
US9684775B2 (en) * | 2014-10-15 | 2017-06-20 | Qualcomm Incorporated | Methods and systems for using behavioral analysis towards efficient continuous authentication |
US9471285B1 (en) * | 2015-07-09 | 2016-10-18 | Synopsys, Inc. | Identifying software components in a software codebase |
US10956541B2 (en) * | 2019-06-05 | 2021-03-23 | EMC IP Holding Company LLC | Dynamic optimization of software license allocation using machine learning-based user clustering |
-
2022
- 2022-06-03 US US17/832,204 patent/US20220391477A1/en active Pending
- 2022-06-03 WO PCT/US2022/032192 patent/WO2022256672A1/en active Application Filing
- 2022-06-03 KR KR1020247000217A patent/KR20240016423A/ko unknown
- 2022-06-03 CN CN202280047415.7A patent/CN117597684A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20240016423A (ko) | 2024-02-06 |
US20220391477A1 (en) | 2022-12-08 |
WO2022256672A1 (en) | 2022-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Huang et al. | Machine learning for electronic design automation: A survey | |
Rapp et al. | MLCAD: A survey of research in machine learning for CAD keynote paper | |
Sengupta et al. | TL-HLS: methodology for low cost hardware Trojan security aware scheduling with optimal loop unrolling factor during high level synthesis | |
US10817634B2 (en) | Machine-learning circuit optimization using quantized prediction functions | |
US7203882B2 (en) | Clustering-based approach for coverage-directed test generation | |
Mohsin et al. | An FPGA-based hardware accelerator for K-nearest neighbor classification for machine learning on mobile devices | |
US10846453B1 (en) | Generating interrelated path groups by using machine learning | |
US11994979B2 (en) | Smart regression test selection for software development | |
Zhu et al. | Generalized augmented lagrangian and its applications to VLSI global placement | |
Pawlikowski | Do not trust all simulation studies of telecommunication networks | |
Gubbi et al. | Survey of machine learning for electronic design automation | |
Chen et al. | DATC RDF-2020: Strengthening the foundation for academic research in IC physical design | |
Zhuang et al. | Multi-package co-design for chiplet integration | |
Jiao et al. | Wild: A workload-based learning model to predict dynamic delay of functional units | |
US20220391477A1 (en) | Fail-safe software access licensing control on a per project basis without a priori knowledge of project details | |
Pilato et al. | On the design of scalable and reusable accelerators for big data applications | |
US11556676B2 (en) | Scalable formal security verification of circuit designs | |
US20220058328A1 (en) | Synthesis placement bounds based on physical timing analysis | |
Afzali-Kusha et al. | Energy consumption and lifetime improvement of coarse-grained reconfigurable architectures targeting low-power error-tolerant applications | |
Xie et al. | The dark side: Security concerns in machine learning for EDA | |
Xie et al. | The Dark Side: Security and Reliability Concerns in Machine Learning for EDA | |
Chhabria et al. | Encoder-decoder networks for analyzing thermal and power delivery networks | |
Chen et al. | Thermal fingerprinting of fpga designs through high-level synthesis | |
Tigadi | Survey On VLSI Design For Artificial Intelligence And Machine Learning Applications | |
US20230017872A1 (en) | Optimization of alternating büchi automata for formal verification of a circuit design |
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 |