CN117907812A - 电路检测方法及装置、电子设备、存储介质、程序产品 - Google Patents

电路检测方法及装置、电子设备、存储介质、程序产品 Download PDF

Info

Publication number
CN117907812A
CN117907812A CN202410318993.0A CN202410318993A CN117907812A CN 117907812 A CN117907812 A CN 117907812A CN 202410318993 A CN202410318993 A CN 202410318993A CN 117907812 A CN117907812 A CN 117907812A
Authority
CN
China
Prior art keywords
module
output
combinational logic
detection
input
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
Application number
CN202410318993.0A
Other languages
English (en)
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.)
Innoda Chengdu Electronic Technology Co ltd
Original Assignee
Innoda Chengdu Electronic 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 Innoda Chengdu Electronic Technology Co ltd filed Critical Innoda Chengdu Electronic Technology Co ltd
Priority to CN202410318993.0A priority Critical patent/CN117907812A/zh
Publication of CN117907812A publication Critical patent/CN117907812A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Tests Of Electronic Circuits (AREA)

Abstract

本申请涉及电子电路领域,尤其涉及一种电路检测方法及装置、电子设备、存储介质、程序产品。该方法包括:获取与待检测电路对应的设计文件;以设计文件中的模块为单位进行环路检测,其中,响应于在环路检测过程中检测到预定模块,在检测结果指示预定模块的输入到输出仅包含组合逻辑门的情况下,从预定模块的输入直接跳转到预定模块的输出,并从预定模块的输出继续向前传播信号;在检测结果指示预定模块的输入到输出包含非组合逻辑门的情况下,将预定模块的输出作为新的起始点,并从新的起始点重新开始向前传播信号,预定模块是指已经完成环路检测的模块。本申请大大减少了检查次数和检查时间,进而可以高效的完成待检测电路的环路检测。

Description

电路检测方法及装置、电子设备、存储介质、程序产品
技术领域
本申请涉及电子电路领域,尤其涉及一种电路检测方法及装置、电子设备、存储介质、程序产品。
背景技术
在集成电路的设计中,除了特殊的设计意图(例如伪随机数生成器、可测性设计旁路(Design for Test Bypass,缩写为DFT Bypass)逻辑等)之外,应该尽量避免出现组合逻辑环路,部分原因如下:1、组合逻辑环路违反了同步设计原则,很容易产生振荡、毛刺、时序违规,从而使整个系统变得极不稳定,例如,使电路陷入死锁状态,以很高的频率形成振荡电路;2、组合逻辑环路实现的逻辑功能完全依赖于环路上的组合逻辑门的延迟和布线延迟,如果这些延迟发生变化,原来的逻辑功能将会发生彻底的改变,而且改变后的功能很难预测,影响设计功能的正确性,导致这种设计基本没有可移植性。
目前常见的组合逻辑环路检测方法有以下几种:1、从一个组合逻辑门的扇出(fanout)检测是否有信号到达它本身,即检测是否有信号从一个组合逻辑门的输出到达它的输入,以确定是否存在组合逻辑环路;2、沿着信号传递的方向去遍历整个电路,通过打标签的方式,对同一个组合逻辑门打两次标签,则表示找到组合逻辑环路。然而,如果待检测电路中组合逻辑门的数量达到一定规模,利用这些方法检测组合逻辑环路时,会导致巨大的时间消耗。
发明内容
本申请提供一种电路检测方法及装置、电子设备、存储介质、程序产品,以至少解决相关技术进行组合逻辑环路的检测时,会导致巨大的时间消耗的问题。
根据本申请实施例的第一方面,提供一种电路检测方法,包括:获取与待检测电路对应的设计文件;以设计文件中的模块为单位进行环路检测,其中,响应于在环路检测过程中检测到预定模块,基于预定模块的检测结果,从预定模块的输出开始继续检测,预定模块是指已经完成环路检测的模块;其中,基于所述预定模块的检测结果,从预定模块的输出开始继续检测,包括:在检测结果指示预定模块的输入到输出仅包含组合逻辑门的情况下,从预定模块的输入直接跳转到预定模块的输出,并从预定模块的输出继续向前传播信号;在检测结果指示预定模块的输入到输出包含非组合逻辑门的情况下,将预定模块的输出作为新的起始点,并从新的起始点重新开始向前传播信号。
根据本申请实施例的第二方面,提供一种电路检测装置,包括:获取单元,被配置为获取与待检测电路对应的设计文件;检测单元,被配置为以设计文件中的模块为单位进行环路检测,其中,响应于在环路检测过程中检测到预定模块,基于预定模块的检测结果,从预定模块的输出开始继续检测,预定模块是指已经完成环路检测的模块;其中,基于所述预定模块的检测结果,从预定模块的输出开始继续检测,包括:在检测结果指示预定模块的输入到输出仅包含组合逻辑门的情况下,从预定模块的输入直接跳转到预定模块的输出,并从预定模块的输出继续向前传播信号;在检测结果指示预定模块的输入到输出包含非组合逻辑门的情况下,将预定模块的输出作为新的起始点,并从新的起始点重新开始向前传播信号。
根据本申请实施例的第三方面,提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为执行指令,以实现根据本申请的电路检测方法。
根据本申请实施例的第四方面,提供了一种计算机可读存储介质,当计算机可读存储介质中的指令被至少一个处理器运行时,促使至少一个处理器执行如上根据本申请的电路检测方法。
根据本申请实施例的第五方面,提供了一种计算机程序产品,包括计算机指令,计算机指令被处理器执行时实现根据本申请的电路检测方法。
本申请的实施例提供的技术方案至少带来以下有益效果:
根据本申请的电路检测方法及装置、电子设备、存储介质、程序产品,以待检测电路的设计文件中的模块为单位进行环路检测,并结合已完成环路检测的预定模块的检测结果,对待检测电路进行环路检查,使得待检测电路中未检测的模块可以复用预定模块的检测结果,即在复用预定模块的检测结果的过程中,考虑了预定模块在其输入到输出的路径上仅包含组合逻辑门和包含非组合逻辑门的两种情况,这两种情况分别代表连通的信号路径和断开的信号路径,从而可以方便用户在复用预定模块时,更便捷的判断是否存在组合逻辑环路,如在包含非组合逻辑门的情况下,代表当前信号路径断开,也即包含预定模块的这部分电路,不会存在组合逻辑环路,所以跳过该预定模块,则将预定模块的输出作为新起始点,并从该新起始点重新开始向前传播信号,以便继续判断当前路径的预定模块后面是否还存在组合逻辑环路;而在仅包含组合逻辑门的情况下,代表当前信号路径是连通的,也即包含预定模块的这部分电路,可能会存在组合逻辑环路,所以跳过预定模块并从预定模块的输出继续向前传播信号,以便继续判断当前路径是否存在组合逻辑环路。通过本申请,针对待检测电路中相同类别的模块,只需检测一次并记录相应的检测结果,后续相同类型的其他模块可以直接复用相应的检测结果即可,由于待检测电路中相同类型的模块无需重复检查,从而大大减少了检查次数和检查时间,进而可以高效的完成待检测电路的环路检测。因此,本申请解决了相关技术进行组合逻辑环路的检测时,会导致巨大的时间消耗的问题。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理,并不构成对本申请的不当限定。
图1是相关技术中组合逻辑环路与非组合逻辑环路的示意图;
图2是根据一示例性实施例示出的一种电路检测方法的流程图;
图3是根据一示例性实施例示出的一种层级划分形式的示意图;
图4是根据一示例性实施例示出的一种层级划分结果的示意图;
图5是根据一示例性实施例示出的一种组合逻辑环路检测的示意图;
图6是根据一示例性实施例示出的一种待检测电路的示意图;
图7是根据一示例性实施例示出的一种电路检测装置的框图;
图8是根据本申请实施例的一种电子设备800的框图。
附图标记说明:
70-获取单元;72-检测单元;800-电子设备;801-存储器;802-处理器。
具体实施方式
为了使本领域技术人员更好地理解本申请的技术方案,下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在此需要说明的是,在本申请中出现的“若干项之中的至少一项”均表示包含“该若干项中的任意一项”、“该若干项中的任意多项的组合”、“该若干项的全体”这三类并列的情况。例如“包括A和B之中的至少一个”即包括如下三种并列的情况:(1)包括A;(2)包括B;(3)包括A和B。又例如“执行步骤一和步骤二之中的至少一个”,即表示如下三种并列的情况:(1)执行步骤一;(2)执行步骤二;(3)执行步骤一和步骤二。
随着制造技术和设计技术的进步,电子系统的设计方法发生了深刻的变革,从电子计算机辅助设计(Computer Aided Design,缩写为CAD)、电子计算机辅助工程(ComputerAided Engineering,缩写为CAE)到电子设计自动化(Electronic Design Automation,缩写为EDA),电子系统的设计的自动化程度越来越高,设计的复杂性也越来越强。
集成电路EDA是指利用计算机辅助设计软件,来完成超大规模集成电路芯片的功能设计、综合、验证、物理设计(包括布局、布线、版图、设计规则检查等)等流程的设计方式。目前,EDA技术已成为现代电子设计的有力工具,没有EDA技术的支持,要完成超大规模集成电路的设计和制造是不可想象的,集成电路设计人员需要使用EDA工具设计几十万到数百亿晶体管的复杂集成电路,以减少设计偏差、提高流片成功率及节省流片费用。
逻辑门(logic gate)是在集成电路上的基本门级元件,例如非门(NOT)、或门(OR)、或非门(NOR)、与门(AND)、异或门(XOR)、同或门(XNOR)等。逻辑门电路从高层次上可分为组合逻辑电路和时序逻辑电路:
组合逻辑电路(combinational logic):任意时刻的输出仅仅取决于当前时刻的输入,与电路之前的历史状态无关(即无记忆能力),逻辑中不牵涉跳变沿信号的处理,例如多路选择器、编码器、译码器、移位器、比较器等;
时序逻辑电路(sequential logic):输出不仅取决于当前的输入,还取决于电路的历史状态,电路里面有存储元件用于记忆状态信息,例如触发器、锁存器等;从电路行为上讲,不管输入如何变化,仅当时钟的上升沿或下降沿到达时,才有可能使输出发生变化。
而组合逻辑环路(combinational loop),即组合逻辑门的反馈环路,是指不经过任何时序逻辑电路(例如寄存器等),而直接将组合逻辑电路的输出信号反馈到其输入节点而形成的环路。组合逻辑环路与非组合逻辑环路的示例如图1所示,其中,D表示数据输入引脚(data input pin),SET表示置位输入引脚(set pin),CLR表示复位输入引脚(clearpin),>表示时钟引脚(clock pin),Q表示数据输出引脚(data output pin),表示Q的反向输出,如Q输出为1,则/>输出为0,反之,Q输出为0,则/>输出为1。
目前,在集成电路设计中,设计人员利用EDA工具读入设计文件(例如Verilog文件)之后,EDA工具会针对设计文件的代码中的组合逻辑门进行组合逻辑环路的检测,当检测到不符合设计意图的组合逻辑环路时,EDA工具通常会对组合逻辑环路进行报警或者割断处理。常见的检测方法有以下几种:1、从一个组合逻辑门的扇出(fanout)检测是否有信号到达它本身,即检测是否有信号从一个组合逻辑门的输出到达它的输入;2、沿着信号传递的方向去遍历整个电路,通过打标签的方式,对同一个组合逻辑门打两次标签则表示找到组合逻辑环路。然而,如果待检测电路中组合逻辑门的数量达到一定规模,利用这些方法检测组合逻辑环路时,会导致巨大的时间消耗。尤其是,Verilog设计中的模块(module)普遍存在复用的情况,这些检测方法在信号传递方向上检查时,难以考虑到同一module在其他module中多次例化时的复用情形,从而会对复用的module内部重复检查多次,这无疑是低效率的。
针对上述问题,本申请提供了一种电路检测方法及装置、电子设备、存储介质、程序产品,以待检测电路的设计文件中的模块为单位进行环路检测,并结合已完成环路检测的预定模块的检测结果,对待检测电路进行环路检查,使得待检测电路中未检测的模块可以复用预定模块的检测结果,从而针对待检测电路中相同类别的模块,只需检测一次并记录相应的检测结果,后续相同类型的其他模块可以直接复用相应的检测结果即可,由于待检测电路中相同类型的模块无需重复检查,从而大大减少了检查次数和检查时间,从而可以高效的完成待检测电路的环路检测,避免产生巨大的时间消耗。
下面,将参照附图详细描述根据本申请的示例性实施例的电路检测方法及装置。
需要说明的是,根据本申请的示例性实施例的电路检测方法可以应用于集成电路电子设计自动化(Electronic Design Automation,EDA)软件,例如,用户终端上可以加载有集成电路EDA软件,用户可以在用户终端上使用集成电路EDA软件读取集成电路设计文件,并且对设计文件执行该电路检测方法。
上述用户终端可以是诸如平板电脑、笔记本电脑、数字助理、可穿戴设备等,然而,上面环路检测方法的实施场景仅是一示例场景,根据本申请的示例性实施例的电路检测方法还可以应用于其他应用场景,例如也可以是用户在用户终端(例如,手机、台式电脑、平板电脑等)通过网络向服务器请求电路检测,服务器可以通过执行根据本申请的示例性实施例的环路检测方法来完成环路检测,这里,服务器可以是独立服务器,也可以是服务器集群,还可以是云计算平台或虚拟化中心。
尽管在本申请的实施例中以示例的方式描述了集成电路EDA软件在示例场景下的应用,但是本申请的实施例不限于此,也可以适用于集成电路EDA软件的其他应用场景。
图2是根据一示例性实施例示出的一种电路检测方法的流程图,如图2所示,电路检测方法包括以下步骤:
在步骤S201中,获取与待检测电路对应的设计文件。
具体地,在集成电路芯片设计中,电子电路的功能和行为等是通过硬件描述语言(Hardware Description Language,缩写为HDL)来描述的,即包含了待检测电路的电子电路的功能和行为的设计文件,是通过硬件描述语言描述数字系统硬件的结构和行为的文本形式,例如可以表示逻辑电路图、逻辑表达式,以及数字逻辑系统所完成的逻辑功能等,从而可对算法级、寄存器传输级、门级、开关级等多种抽象设计层次进行建模。目前,常用的HDL有verilog HDL、VHDL(Very High Speed Integrated Circuit HDL)、System VerilogHDL等,对此本申请并不进行限定。
作为示例,以硬件描述语言是Verilog HDL(简称Verilog)为例,集成电路设计人员可以使用Verilog HDL进行集成电路芯片设计,此时的设计文件为Verilog设计文件(也可以称为Verilog文件),其中,Verilog文件通常由若干模块(module)组成,模块是层次化设计的基本构件,并且模块之间可以嵌套,即顶层模块(top module)由子模块构成,子模块由下级子模块构成,例如图3所示。
Verilog文件中的模块可以具有以下特点:模块的实际意义是代表硬件电路上的逻辑实体;每个模块都实现特定的功能;模块之间是并行运行的;模块是分层的,高层模块通过调用、连接低层模块的实例(instance)来实现复杂的功能;各模块连接完成整个系统需要一个顶层模块。
Verilog文件中的每个模块都可以包括以下各部分内容:
模块声明:使用module和endmodule来标记模块的开始和结束,在module和endmodule之间的代码都属于本模块;
模块名:如果将某个模块命名为A,则模块名A就是例化该模块时的声明凭证;
端口列表:对于模块的电路结构中的每个对外端口,都需要分别定义一个名称;
端口定义:明确每个端口的输入输出类型,例如,输入端口input、输出端口output、双向端口inout;其中,顶层模块中定义了设计的主输入(primary input)和主输出(primary output);
逻辑定义:通过例化各种门级元件以及元件之间的连接关系来定义模块的逻辑功能;
信号类型声明:信号类型可以是reg(寄存器)型或wire(线网)型,例如,模块内某个或门的输出端连接至某个与门的输入端,该或门和该与门之间的连线是个内部信号,则可以定义一个wire信号类型or_wire。
在Verilog文件中,一个模块可以被其他模块调用,以实现层次化设计。具体而言,使用module定义一个模块,然后在其他模块中调用该模块即可实现模块例化。模块例化的语法格式可以如下示例代码所示,在该示例代码中,module_name是被实例化的模块名,mod_1和mod_2是实例化的对象名,通过实例化对象名和模块名,verilog编译器可以识别出需要连接哪些输入输出端口。
module module_name(input a, output b)
//端口声明
//模块内部逻辑
endmodule
module top;
//例化模块
module_name mod_1(.a(input_a), .b(output_b));
module_name mod_2(.a(input_b), .b(output_c));
//其他逻辑
endmodule
作为示例,在集成电路设计中,设计人员可以利用EDA工具读入设计文件(例如Verilog文件),EDA工具可以针对设计文件中待检测电路进行组合逻辑环路的检测,对此本申请并不进行限定。
返回图2,在步骤S202中,以设计文件中的模块为单位进行环路检测,其中,响应于在环路检测过程中检测到预定模块,基于预定模块的检测结果,从预定模块的输出开始继续检测,预定模块是指已经完成环路检测的模块;其中,基于所述预定模块的检测结果,从预定模块的输出开始继续检测,包括:在检测结果指示预定模块的输入到输出仅包含组合逻辑门的情况下,从预定模块的输入直接跳转到预定模块的输出,并从预定模块的输出继续向前传播信号;在检测结果指示预定模块的输入到输出包含非组合逻辑门的情况下,将预定模块的输出作为新的起始点,并从新的起始点重新开始向前传播信号。
作为示例,在以设计文件中的模块为单位进行环路检测的过程中,如果遇到已经完成环路检测的模块,则可以直接复用该模块的检测结果,即无需再次对模块进行检测,直接对其他模块继续进行检测,进而避免了对已经完成检测的模块重复检测,从而大大减少了检查次数和检查时间。
作为示例,可以通过模块名来确定当前检测的模块是否与预定模块属于同一类别的模块,如果属于同一类别的模块,则表示当前检测的模块已经完成了环路检测,此时无需对当前检测的模块再次进行环路检测,直接复用预定模块的检测结果即可,如此可以减少环路检测过程要检测的模块的数量,降低了检测次数和检查时间。
作为示例,在步骤S202中,复用预定模块的检测结果的过程中,考虑了预定模块在其输入到输出的路径上仅包含组合逻辑门和包含非组合逻辑门的两种情况,这两种情况分别代表连通的信号路径和断开的信号路径,从而可以方便用户在复用预定模块时,更便捷的判断是否存在组合逻辑环路,如在包含非组合逻辑门的情况下,代表当前信号路径断开,也即包含预定模块的这部分电路,不会存在组合逻辑环路,所以跳过该预定模块,则将预定模块的输出作为新起始点,并从该新起始点重新开始向前传播信号,以便继续判断当前路径的预定模块后面是否还存在组合逻辑环路;而在仅包含组合逻辑门的情况下,代表当前信号路径是连通的,也即包含预定模块的这部分电路,可能会存在组合逻辑环路,所以跳过预定模块并从预定模块的输出继续向前传播信号,以便继续判断当前路径是否存在组合逻辑环路。
需要说明的是,若该预定模块包含多个输入,只有在预定模块的所有输入对应的路径上都存在非组合逻辑门情况下,才将预定模块的输出作为新起始点,并从该新起始点重新开始向前传播信号,否则需要对每个输入对应的路径分别进行处理,例如,某个输入对应的路径如果仅包含组合逻辑门,则该条路径需要按上述第二种情况(仅包含组合逻辑门的情况)进行处理,某个输入对应的路径如果包含非组合逻辑门,则该条路径需要按上述第一种情况(包含非组合逻辑门的情况)进行处理。
根据本申请的示例性实施例,以设计文件中的模块为单位进行环路检测,可以包括:基于设计文件中模块之间的关系,对待检测电路进行层级划分;按最低层级向最高层级的顺序,以设计文件中的模块为单位,对每个层级进行环路检测。通过本实施例,基于模块之间的关系,对待检测电路进行层级划分,并按最低层级向最高层级的顺序,对每个层级包含的模块进行环路检测,由于高层级的模块可以调用低层级的模块,使得可以方便的复用前面检查过的模块的检测结果,且可以避免重复检测相同的线路,进一步的减少了检查次数和检查时间,从而可以更高效完成待检测电路的环路检测。
作为示例,可以将待检测电路中无法往下探索内部结构的作为叶节点的逻辑单元划分为最低层级,将顶层模块(top module)划分为最高层级。top module下的module为次高层级,module内的module为更低一层,直到划分到无法往下的作为叶节点的逻辑单元为止,其中,作为叶节点的逻辑单元可以是待检测电路中触发器、寄存器等各种无法再往下探索内部结构的单元。
作为示例,仍以硬件描述语言是Verilog HDL(简称Verilog)为例,可以使用EDA工具读取用户提供的Verilog文件,并对Verilog文件进行分析,从Verilog文件的所有模块中分析确定出模块彼此之间的嵌套关系(也即调用关系),基于该嵌套关系划分层级,从顶层模块开始一直往下划分直到leaf instance(也即上述作为叶节点的逻辑单元)为止。
根据本申请的示例性实施例,基于设计文件中模块之间的关系,对待检测电路进行层级划分,可以包括:将设计文件中的顶层模块划分至最高层级,并根据设计文件中模块之间的调用关系自上而下地对其余模块进行层级划分,其中,被划分至最低层级的模块中不再调用任何模块。通过本实施例的划分方式划分层级,由于高层级的模块可以调用低层级的模块,从而方便复用前面检查过的模块的检测结果。
根据本申请的示例性实施例,顶层模块通过调用其他模块来实现待检测电路的完整电路功能,被划分至中间层级和最低层级的模块分别用于实现待检测电路的部分电路功能。
作为示例,如图4所示,顶层模块为最高层级,该模块通过调用下层模块来实现待检测电路的完整电路功能;模块A(module A)和模块B(module B)位于-1层级,每个模块用于实现待检测电路的部分电路功能,且还调用了低于本层级的其他层级的模块,如模块C(module C);module C位于-2层级,也即最低层级,也用于实现待检测电路的部分电路功能,但是module C位于最低层级,不再调用任何模块。在module A和module B内的所有leafinstance同位于-1层,在module C内的所有leaf instance同位于-2层。
需要说明的是,在将待检测电路划分完层级后,可以从最低层级开始进行环路检测,直至检测完最高层级,下面先说明最低层级的环路检测过程:
最低层级中同种类型的模块中第一个进行环路检测的模块在检测组合逻辑环路的同时,也需要确定模块的输入和输出之间的关系,即如果模块中仅包含纯组合逻辑电路,也即仅包含组合逻辑门,记录该模块的输入和输出之间的关系为通过,如果模块中包含非组合逻辑门,则不记录该模块的输入和输出之间的关系。
根据本申请的示例性实施例,按最低层级向最高层级的顺序,以设计文件中的模块为单位,对每个层级进行环路检测,可以包括:针对最低层级中同一类别的模块中的第一个进行环路检测的第一模块,执行如下处理:以第一模块的输入为起始点,按信号向前传播的顺序进行检测,直至检测到第一模块的输出;基于信号的信号路径,确定第一模块是否存在组合逻辑环路;响应于第一模块的输入到输出仅包含组合逻辑门,在第一模块的检测结果中记录第一模块的输入到输出的关系为通过;响应于第一模块的输入到输出包含非组合逻辑门,在第一模块的检测结果中不记录第一模块的输入到输出的关系。通过本实施例,最低层级的模块同样需要确定输入和输出的关系,方便上层的模块调用该关系。
作为示例,从最低层级的模块(module)的输入(input)开始,朝着该模块的输出(output)方向进行信号传播检查,若遇到非组合逻辑门则停止信号传播,以非组合逻辑门的输出作为新的起始点,从该新的起始点开始重新进行信号传播检查,以便检查该模块中该非组合逻辑门后面的路径。如果最低层级module的input到output有且仅通过组合逻辑门,则在检测结果中记录相应input到output的关系为通过,否则不做记录;如果根据上面的检测环路的方式检查到该模块包含组合逻辑门环路,也可以记录在检测结果中,还可以直接报告给用户,对此本申请并不进行限定。
根据本申请的示例性实施例,基于信号的信号路径,确定第一模块是否存在组合逻辑环路,可以包括:确定第一模块是否包含组合逻辑门;响应于确定第一模块包含至少一个组合逻辑门,检测从至少一个组合逻辑门出发的每个信号路径,将从至少一个组合逻辑门中一个组合逻辑门出发并且返回到组合逻辑门本身的信号路径确定为组合逻辑环路,并在第一模块的检测结果中记录第一模块包含组合逻辑环路。通过本实施例,可以方便、快速完成最低层级中同种类型的模块中第一个进行环路检测的模块的环路检测过程,从而方便后续其他同类型的模型调用该检测结果。
作为示例,可以采用相关技术中的检测方法,如可以通过如下任一种检测方法,对最低层级中同种类型的模块中第一个进行环路检测的模块进行组合逻辑环路的检测:1、从一个组合逻辑门的扇出(fanout)检测是否有信号到达它本身,即检测是否有信号从一个组合逻辑门的输出到达它的输入,来找到组合逻辑环路;2、沿着信号传递的方向去遍历整个电路,通过打标签的方式,对同一个组合逻辑门打两次标签则表示找到组合逻辑环路;对于检测组合逻辑环路的方法,本申请并不进行限定,只要可以检测出组合逻辑环路即可。
再有,被划分在最低层级的多个module,往往是被不同的上层module所调用或者由不同类别的module例化而来,导致各个最低层级module之间通常没有相互关联,所以需要依据各个最低层级module所在区块,分别检查每一个最低层级的module。若检查到某个最低层级的module时,发现该module已经存在相应的检测结果,则可以跳过对该module的检查,利用之前的检查结果即可。
作为示例,如图4所示的层级划分中,已经确定最低层级为-2层,此时可以从最低层级进行环路检测,例如,可以先从module A内的第一个例化的module开始进行环路检测,该module为module C,确认从module C的input到output的关系,如果module C的input到output有且仅通过组合逻辑门,则在检测结果中记录相应input到output的关系为通过,否则不做记录,并且在确认的过程中检测module C是否存在组合逻辑环路,如果module C存在组合逻辑门环路,也可以记录在检测结果中,还可以直接报告给用户。然后,对module A内的第二个例化的module进行环路检测,由于该module也是module C,此时已经存在module C的相关记录,则可以跳过对这一个module C的检测,利用之前的检查结果即可。同理,module B内-2层的两个例化的module也是module C,由于已经存在module C的相关记录,同样可以利用之前的检查结果,至此完成了最低层级的模块的检测。
需要说明的是,在对待检测电路划分完层级后,可以从最低层级开始进行环路检测,直至检测完最高层级,上面已经说明最低层级的环路检测过程,下面继续说明除了最低层级之外的每个层级的环路检测过程:
根据本申请的示例性实施例,按最低层级向最高层级的顺序,以设计文件中的模块为单位,对每个层级进行环路检测,可以包括:对于除了最低层级之外的每个层级包含的每个模块,执行如下处理:以当前模块的输入为起始点,按信号向前传播的顺序进行检测,直至检测到当前模块的输出,基于信号的信号路径,确定当前模块是否存在组合逻辑环路,其中,在检测到预定模块的情况下,基于预定模块的检测结果,从预定模块的输出开始继续检测;响应于当前模块的输入到输出仅包含组合逻辑门,在当前模块的检测结果中记录当前模块的输入到输出的关系为通过;响应于当前模块的输入到输出包含非组合逻辑门,在当前模块的检测结果中不记录当前模块的输入到输出的关系。通过本实施例,对于除了最低层级之外的每个层级包含的每个模块,可以模块的输入为起点,按信号向前传播的顺序进行检测,直至检测到模块的输出,在检测过程中结合前面检测过的模块的检测结果,确定当前模块的检测结果,从而实现了对已检测模块的检测结果的复用,减少了检测时间和检测次数。
作为示例,如图4所示的层级划分中,根据上述实施例已经检查完最低层级moduleC及其内部的所有leaf instance,还记录了module C的input和output之间是否存在纯组合逻辑电路。接下来,对比module C更高层级的module A进行环路检测,同样从module A的input朝着output方向进行信号传播检测并基于信号路径确认是否存在环路。在对moduleA的环路检测过程中,如果遇到已检测过的module C,可以基于module C的检测结果,从module C的输出开始继续检测。在module A检测结束后,如果module A的input到output有且仅通过组合逻辑门,则记录module A相应input到output的关系为通过,否则不做记录,如果有检查到组合逻辑门环路也可以记录到module A的检测结果中,还可以直接报告给用户,对此本申请并不进行限定。
其他层级的检测与中间层module A相同,当回归到最高层级的时候,已经知晓比最高层级低一层级的所有module的input和output的关系,从而可以复用低一层级的所有module的检测结果。
根据本申请的示例性实施例,基于预定模块的检测结果,从预定模块的输出开始继续检测,可以包括:在检测结果记录预定模块的输入到输出的关系为通过的情况下,从预定模块的输入直接跳转到预定模块的输出,并从预定模块的输出继续向前传播信号;在检测结果未记录预定模块的输入到输出的关系的情况下,将预定模块的输出作为新的起始点,并从新的起始点重新开始向前传播信号。通过本实施例,加入了记录和不记录两种情况,也即预定模块在其输入到输出的路径上仅包含组合逻辑门和包含非组合逻辑门的两种情况,这两种情况分别代表连通的信号路径和断开的信号路径,从而可以方便用户在复用预定模块时,更好判断当前模块是否存在组合逻辑环路,如在不记录关系的情况下,代表信号路径断开,也即包含预定模块的这部分电路,不会存在组合逻辑环路,所以从预定模块的输出作为新起始点,并从该新起始点重新开始向前传播信号,以便继续判断当前模块中预定模块后面是否还存在组合逻辑环路。
作为示例,仍如图4所示的层级划分中,在对module A的环路检测过程中,如果遇到已检测过的module C,则查看module C的检测结果,如果检测结果中记录相应input到output的关系为通过,则从module C的input直接跳转到其对应的output,然后继续向前传播信号,检测接下来的路径;如果检测结果中未记录相应input到output的关系,则停止信号传播,并以module C的输出为新的起始点,重新开始向前传播信号,检测接下来的路径。
根据本申请的示例性实施例,在检测到非组合逻辑门的情况下,将非组合逻辑门的输出作为新的起始点,并从新的起始点重新开始向前传播信号;在检测到组合逻辑门的情况下,信号经过组合逻辑门继续向前传播信号。通过本实施例,在检测当前模块的过程中,检测到非组合逻辑门,代表信号路径断开,也即包含非组合逻辑门的这部分电路,不会存在组合逻辑环路,所以从非组合逻辑门的输出作为新起始点,并从该新起始点重新开始向前传播信号,以便继续判断非组合逻辑门后面是否还存在组合逻辑环路;而在检测到组合逻辑门时,代表信号路径是连通的,也即包含该组合逻辑门的这部分电路,可能存在组合逻辑环路。
作为示例,仍如图4所示的层级划分中,在对module A的环路检测过程中,如果遇到非组合逻辑门,则停止信号传播,并以非组合逻辑门的输出为新的起始点,重新开始向前传播信号,检测接下来的路径;如果遇到组合逻辑门,则信号经过组合逻辑门继续向前传播信号,继续当前路径的检测。
根据本申请的示例性实施例,基于信号的信号路径,确定当前模块是否存在组合逻辑环路,可以包括:在检测到的所有预定模块的检测结果记录相应的预定模块的输入到输出的关系均为通过的情况下,响应于当前模块不包含非组合逻辑门,信号再次经过任一预定模块或任一组合逻辑门,确定当前模块包含组合逻辑环路,并在当前模块的检测结果中记录当前模块包含组合逻辑环路;在任一预定模块的检测结果未记录相应预定模块的输入到输出的关系的情况下,响应于当前模块在任一预定模块后包含至少一个组合逻辑门,信号再次经过至少一个组合逻辑门中任一个组合逻辑门,确定当前模块包含组合逻辑环路,并在当前模块的检测结果中记录当前模块包含组合逻辑环路;在检测到非组合逻辑门的情况下,响应于当前模块在非组合逻辑门后包含至少一个组合逻辑门,信号再次经过至少一个组合逻辑门中任一个组合逻辑门,确定当前模块包含组合逻辑环路,并在当前模块的检测结果中记录当前模块包含组合逻辑环路;在检测到组合逻辑门的情况下,响应于当前模块不包含非组合逻辑门,信号再次经过任一组合逻辑门,确定当前模块包含组合逻辑环路,并在当前模块的检测结果中记录当前模块包含组合逻辑环路。
通过本实施例,在预定模块记录、不记录以及遇到非组合逻辑门、组合逻辑门的情况下,可以根据各自的情况确定当前模块是否组合逻辑环路,尤其引入记录和不记录两种情况,从而可以方便简化整个检测过程。
作为示例,如图5所示,假设module C记录了相应input到output的关系为通过,模块D(module D)未记录相应input到output的关系,其中,C表示组合逻辑门,如此依靠记录的关系,可以非常明确的确定输入A1(inA1)到输出A1(oA1)包含了一个组合逻辑环路,而输入A2(inA2)到输出A2(oA2)中module D相当于一个非组合逻辑门,虽然也包含了一个环路,但是该环路不属于组合逻辑环路,因此,由于本申请记录了通路关系,故不管模块内部结构多复杂,也可以依据已检测模块的通道关系,进行跳转,并得到正确的检测结果,不仅简化了检测操作,也加快了检测效率。
根据本申请的示例性实施例,当前模块包含多个输入和/或多个输出,电路检测方法还可以对于当前模块包含的多个输入中的每个输入,执行如下处理:以当前输入为起始点,按信号向前传播的顺序进行检测,直至检测到与当前输入相应的输出,其中,在检测到预定模块,基于预定模块的检测结果,从预定模块的输出开始继续检测。通过本实施例,在当前模块具有多个输入和/或多个输出时,以输入及相应的输出为单位进行检测,并复用输入及输出对应的检测结果,可以避免复用错误。
根据本申请的示例性实施例,预定模块包含多个输入和/或多个输出,在检测到预定模块的情况下,基于预定模块的检测结果,从预定模块的输出开始继续检测,可以包括:在检测到预定模块的任一第一输入,基于预定模块的检测结果,从与第一输入相应的第一输出开始继续检测。通过本实施例,在预定模块具有多个输入和/或多个输出时,以输入及相应的输出为单位进行检测,并复用输入及输出对应的检测结果,同样可以避免复用错误。
根据本申请的示例性实施例,基于预定模块的检测结果,从与第一输入相应的第一输出开始继续检测,可以包括:在检测结果记录第一输入至第一输出的关系为通过的情况下,从第一输入直接跳转到第一输出,并从第一输出继续向前传播信号;在检测结果未记录第一输入至第一输出的关系的情况下,将第一输出作为新的起始点,并从新的起始点重新开始向前传播信号。通过本实施例,加入了记录和不记录两种情况,这两种情况分别代表连通的信号路径和断开的信号路径,从而可以方便用户在复用预定模块中时,更好判断当前模块是否存在组合逻辑环路,如在不记录关系的情况下,代表信号路径断开,也即包含预定模块的这部分输入和输出的电路,不会存在组合逻辑环路,所以从该输出作为新起始点,并从该新起始点重新开始向前传播信号,以便继续判断预定模块后面是否还存在组合逻辑环路。
为了更好的理解上述实施例,下面结合图6所示的待检测电路对本申请的进行详细的说明,本申请的技术方案主要包含如下步骤:
1、读取如图6所示的待检测电路的Verilog文件;
2、根据读取到的设计文件,确认module之间的关系,进行层级划分:
a)确认最高层级为顶层模块,最高层级的下一层级有三个module,分别为两个module A和一个module B,一个leaf instance C,C表示组合逻辑门;
b)确认module A的层级下具有两个module C和4个leaf instance C;并确认在module A下的最低层级为module C,module C的层级具有3个leaf instance C和1个leafinstance S,S表示时序逻辑单元;
c)按对module A同样的操作,对module B的层级进行划分,确认module B层级下具有一个module C、3个leaf instance C和1个leaf instance S,并确认module B下的最低层级为module C,同样地,module C的层级具有3个leaf instance C和1个leafinstance S。
3、在划分层级后,从module A下最低层级的module C开始检查:
a)以module C的输入C1(inC1)为起始点,开始按信号传播方向进行环路检测,直至输出C1(oC1),具体地,确定module C的inC1到oC1是否包含组合逻辑门,如果包含至少一个组合逻辑门,检测从至少一个组合逻辑门出发的每个信号路径,将从至少一个组合逻辑门中一个组合逻辑门出发并且返回到组合逻辑门本身的信号路径确定为组合逻辑环路,并在module C的检测结果中记录module C包含组合逻辑环路。
需要说明的是,在检测过程中遇到非组合逻辑门则停止信号传播,并以非组合逻辑门的输出作为新的起始点,开始重新向前传播信号。
b)如果module C的输入到输出仅包含组合逻辑门,在module C的检测结果中还可以记录module C的输入到输出的关系为通过,如果module C的输入到输出包含非组合逻辑门,在module C的检测结果中不记录module C的输入到输出的关系。根据图6可知,inC1到oC1是纯组合逻辑电路,故在module C的检测结果中记录module C的输入到输出的关系为通过,即module C的inC1可以直接跳转到oC1;而输入C2(inC2)到输出(oC2)存在时序逻辑单元,所以在module C的检测结果中不记录module C的输入到输出的关系,至此module C的检测完成。
c)module A层级下的另一个例化module也是module C,所以可以直接跳过该module,不对其做内部检查;而且如果一个module C内部存在环路,则同样证明另一个module C也存在,可以进行多次报错。
4、经过上面的步骤,module A层级下的最低层级检测完毕,现在开始检测moduleA层级:
a)以module A的输入A(inA)为起始点,开始按信号传播方向进行环路检测,直至输出A1(oA1)和输出A2(oA2),如果检测过程中,遇到module C的inC1,则直接跳转到oC1,遇到inC2停止信号传播,以oC2为新的起始点,重新开始重新信号传播,以检查后面的路径。
b)根据图6可知,module A的inA到oA1仅有纯组合逻辑电路,故在module A的检测结果中记录inA到oA1的关系为通过,而不记录module C的inA到oA2的关系,因为该路径上存在时序逻辑电路。
5、至此module A的检测完成后,开始进行module B的检测。
a)同样先检测module B内部的最低层级,即module C的层级。但是module C已经检测过,所以可以跳过对module C的检测,直接回到module B的层级,进行module B的层级的检测。
b)分别以module B的输入B1(inB1)和输入B2(inB2)为起始点,开始按信号传播方向进行环路检测,直至输出B1(oB1)。根据图6可知,module B的inB1到oB1仅存在纯组合逻辑电路,故在module B的检测结果中记录inB1到oB1的关系为通过,但不记录inB2到oB1的关系,因为该路径上存在时序逻辑电路。
6、经过上面的步骤,最高层级下的module内部都检测完毕,开始进行最高层级的检测。
a)以顶层模块的主输入1(PI1)为起始点,开始按信号传播方向进行环路检测,直至主输出1(PO1),在检测过程中遇到module A的inA则直接跳转到oA1,而oA1和inB2连接,则停止信号传播,并以module B的oB1作为新的起始点,开始重新信号传播,以检查后面的路径。
b)根据图6可知,oB1连接到了另一个例化module A的inA,可以直接跳转到oA1,从oA1又连接到了module B的inB1,而inB1可以直接跳转到oB1,此时可以发现组合逻辑门的循环路径。
7、至此,最高层级已经检查完毕,即待检测电路的组合逻辑环路检测结束。
因此,针对图6所示的待检测电路,如果使用相关技术中的检测方法,需要去检测每个leaf instance之间的连接关系,遇到同样的module也会进行内部检测。而使用本申请的技术方案,module C只需要检测了一次,就达到了检测5个module C的效果,针对module复用的情况大大减少了检查次数和检查时间。
综上,本申请提供了一种使用层级关系找到设计文件中组合逻辑环路的方法,该方法在读取到用户的Verilog文件后,根据设计文件中module(模块)的关系,将待检测电路各个部分进行层级划分,然后基于划分的层级,自下而上地进行组合逻辑环路的检测。通过本申请对用户提供的设计文件进行检测,能快速确认相应的待检测电路是否存在组合逻辑环路,具体而言,通常Verilog文件的module普遍存在复用的情况,且对于这些module只需要做一次检测并记录相应的输入输出关系,当检测到已经检测过的module时,不再需要做检测,可以直接应用前面得到结果。本申请针对module复用的情况越多,效果越明显,大大提高EDA程序的运行效率,同时,可以有效的减少检测次数,达到减少检测时间的效果,最差的效果也是和目前的检测方法相当,不会出现恶化。
图7是根据一示例性实施例示出的一种电路检测装置的框图。参照图7,该装置包括获取单元70和检测单元72。
获取单元70,被配置为获取与待检测电路对应的设计文件;检测单元72,被配置为以设计文件中的模块为单位进行环路检测,其中,响应于在环路检测过程中检测到预定模块,基于预定模块的检测结果,从预定模块的输出开始继续检测,预定模块是指已经完成环路检测的模块;其中,基于所述预定模块的检测结果,从预定模块的输出开始继续检测,包括:在检测结果指示预定模块的输入到输出仅包含组合逻辑门的情况下,从预定模块的输入直接跳转到预定模块的输出,并从预定模块的输出继续向前传播信号;在检测结果指示预定模块的输入到输出包含非组合逻辑门的情况下,将预定模块的输出作为新的起始点,并从新的起始点重新开始向前传播信号。
根据本申请的示例性实施例,检测单元72,还被配置为基于设计文件中模块之间的关系,对待检测电路进行层级划分;按最低层级向最高层级的顺序,以设计文件中的模块为单位,对每个层级进行环路检测。
检测单元72,还被配置为将设计文件中的顶层模块划分至最高层级,并根据设计文件中模块之间的调用关系自上而下地对其余模块进行层级划分,其中,被划分至最低层级的模块中不再调用任何模块。
根据本申请的示例性实施例,检测单元72,还被配置为对于除了最低层级之外的每个层级包含的每个模块,执行如下处理:以当前模块的输入为起始点,按信号向前传播的顺序进行检测,直至检测到当前模块的输出,基于信号的信号路径,确定当前模块是否存在组合逻辑环路,其中,在检测到预定模块的情况下,基于预定模块的检测结果,从预定模块的输出开始继续检测;响应于当前模块的输入到输出仅包含组合逻辑门,在当前模块的检测结果中记录当前模块的输入到输出的关系为通过;响应于当前模块的输入到输出包含非组合逻辑门,在当前模块的检测结果中不记录当前模块的输入到输出的关系。
根据本申请的示例性实施例,检测单元72,还被配置为在检测到非组合逻辑门的情况下,将非组合逻辑门的输出作为新的起始点,并从新的起始点重新开始向前传播信号;在检测到组合逻辑门的情况下,信号经过组合逻辑门继续向前传播信号。
根据本申请的示例性实施例,检测单元72,还被配置为在检测到的所有预定模块的检测结果记录相应的预定模块的输入到输出的关系均为通过的情况下,响应于当前模块不包含非组合逻辑门,信号再次经过任一预定模块或任一组合逻辑门,确定当前模块包含组合逻辑环路,并在当前模块的检测结果中记录当前模块包含组合逻辑环路;在任一预定模块的检测结果未记录相应预定模块的输入到输出的关系的情况下,响应于当前模块在任一预定模块后包含至少一个组合逻辑门,信号再次经过至少一个组合逻辑门中任一个组合逻辑门,确定当前模块包含组合逻辑环路,并在当前模块的检测结果中记录当前模块包含组合逻辑环路;在检测到非组合逻辑门的情况下,响应于当前模块在非组合逻辑门后包含至少一个组合逻辑门,信号再次经过至少一个组合逻辑门中任一个组合逻辑门,确定当前模块包含组合逻辑环路,并在当前模块的检测结果中记录当前模块包含组合逻辑环路;在检测到组合逻辑门的情况下,响应于当前模块不包含非组合逻辑门,信号再次经过任一组合逻辑门,确定当前模块包含组合逻辑环路,并在当前模块的检测结果中记录当前模块包含组合逻辑环路。
根据本申请的示例性实施例,当前模块包含多个输入和/或多个输出,检测单元72,还被配置为对于当前模块包含的多个输入中的每个输入,执行如下处理:以当前输入为起始点,按信号向前传播的顺序进行检测,直至检测到与当前输入相应的输出,其中,在检测到预定模块,基于预定模块的检测结果,从预定模块的输出开始继续检测。
根据本申请的示例性实施例,预定模块包含多个输入和/或多个输出,检测单元72,还被配置为在检测到预定模块的任一第一输入,基于预定模块的检测结果,从与第一输入相应的第一输出开始继续检测。
根据本申请的示例性实施例,检测单元72,还被配置为在检测结果记录第一输入至第一输出的关系为通过的情况下,从第一输入直接跳转到第一输出,并从第一输出继续向前传播信号;在检测结果未记录第一输入至第一输出的关系的情况下,将第一输出作为新的起始点,并从新的起始点重新开始向前传播信号。
根据本申请的示例性实施例,检测单元72,还被配置为针对最低层级中同一类别的模块中的第一个进行环路检测的第一模块,执行如下处理:以第一模块的输入为起始点,按信号向前传播的顺序进行检测,直至检测到第一模块的输出;基于信号的信号路径,确定第一模块是否存在组合逻辑环路;响应于第一模块的输入到输出仅包含组合逻辑门,在第一模块的检测结果中记录第一模块的输入到输出的关系为通过;响应于第一模块的输入到输出包含非组合逻辑门,在第一模块的检测结果中不记录第一模块的输入到输出的关系。
根据本申请的示例性实施例,检测单元72,还被配置为确定第一模块是否包含组合逻辑门;响应于确定第一模块包含至少一个组合逻辑门,检测从至少一个组合逻辑门出发的每个信号路径,将从至少一个组合逻辑门中一个组合逻辑门出发并且返回到组合逻辑门本身的信号路径确定为组合逻辑环路,并在第一模块的检测结果中记录第一模块包含组合逻辑环路。
根据本申请的示例性实施例,顶层模块通过调用其他模块来实现待检测电路的完整电路功能,被划分至中间层级和最低层级的模块分别用于实现待检测电路的部分电路功能。
根据本申请的实施例,可提供一种电子设备。图8是根据本申请实施例的一种电子设备800的框图,该电子设备包括至少一个存储器801和至少一个处理器802,所述至少一个存储器中存储有计算机可执行指令集合,当计算机可执行指令集合被至少一个处理器执行时,执行根据本申请实施例的电路检测方法。
作为示例,电子设备800可以是PC计算机、平板装置、个人数字助理、智能手机、或其他能够执行上述指令集合的装置。这里,电子设备800并非必须是单个的电子设备,还可以是任何能够单独或联合执行上述指令(或指令集)的装置或电路的集合体。电子设备800还可以是集成控制系统或系统管理器的一部分,或者可被配置为与本地或远程(例如,经由无线传输)以接口互联的便携式电子设备。
在电子设备800中,处理器802可包括中央处理器(CPU)、图形处理器(GPU)、可编程逻辑装置、专用处理器系统、微控制器或微处理器。作为示例而非限制,处理器802还可包括模拟处理器、数字处理器、微处理器、多核处理器、处理器阵列、网络处理器等。
处理器802可运行存储在存储器中的指令或代码,其中,存储器801还可以存储数据。指令和数据还可经由网络接口装置而通过网络被发送和接收,其中,网络接口装置可采用任何已知的传输协议。
存储器801可与处理器802集成为一体,例如,将RAM或闪存布置在集成电路微处理器等之内。此外,存储器801可包括独立的装置,诸如,外部盘驱动、存储阵列或任何数据库系统可使用的其他存储装置。存储器801和处理器802可在操作上进行耦合,或者可例如通过I/O端口、网络连接等互相通信,使得处理器802能够读取存储在存储器801中的文件。
此外,电子设备800还可包括视频显示器(诸如,液晶显示器)和用户交互接口(诸如,键盘、鼠标、触摸输入装置等)。电子设备的所有组件可经由总线和/或网络而彼此连接。
根据本申请的实施例,还可提供一种计算机可读存储介质,其中,当计算机可读存储介质中的指令被至少一个处理器运行时,促使至少一个处理器执行本申请实施例的电路检测方法。这里的计算机可读存储介质的示例包括:只读存储器(ROM)、随机存取可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、非易失性存储器、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、蓝光或光盘存储器、硬盘驱动器(HDD)、固态硬盘(SSD)、卡式存储器(诸如,多媒体卡、安全数字(SD)卡或极速数字(XD)卡)、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及任何其他装置,所述任何其他装置被配置为以非暂时性方式存储计算机程序以及任何相关联的数据、数据文件和数据结构并将所述计算机程序以及任何相关联的数据、数据文件和数据结构提供给处理器或计算机使得处理器或计算机能执行所述计算机程序。上述计算机可读存储介质中的计算机程序可在诸如客户端、主机、代理装置、服务器等计算机设备中部署的环境中运行,此外,在一个示例中,计算机程序以及任何相关联的数据、数据文件和数据结构分布在联网的计算机系统上,使得计算机程序以及任何相关联的数据、数据文件和数据结构通过一个或多个处理器或计算机以分布式方式存储、访问和执行。
根据本申请实施例,提供了一种计算机程序产品,包括计算机指令,计算机指令被处理器执行时实现本申请实施例的电路检测方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

Claims (16)

1.一种电路检测方法,其特征在于,包括:
获取与待检测电路对应的设计文件;
以所述设计文件中的模块为单位进行环路检测,
其中,响应于在环路检测过程中检测到预定模块,基于所述预定模块的检测结果,从所述预定模块的输出开始继续检测,所述预定模块是指已经完成环路检测的模块;
其中,所述基于所述预定模块的检测结果,从所述预定模块的输出开始继续检测,包括:
在所述检测结果指示所述预定模块的输入到输出仅包含组合逻辑门的情况下,从所述预定模块的输入直接跳转到所述预定模块的输出,并从所述预定模块的输出继续向前传播信号;
在所述检测结果指示所述预定模块的输入到输出包含非组合逻辑门的情况下,将所述预定模块的输出作为新的起始点,并从所述新的起始点重新开始向前传播信号。
2.如权利要求1所述的电路检测方法,其特征在于,所述以所述设计文件中的模块为单位进行环路检测,包括:
基于所述设计文件中模块之间的关系,对所述待检测电路进行层级划分;
按最低层级向最高层级的顺序,以所述设计文件中的模块为单位,对每个层级进行环路检测。
3.如权利要求2所述的电路检测方法,其特征在于,所述基于所述设计文件中模块之间的关系,对所述待检测电路进行层级划分,包括:
将所述设计文件中的顶层模块划分至最高层级,并根据所述设计文件中模块之间的调用关系自上而下地对其余模块进行层级划分,其中,被划分至最低层级的模块中不再调用任何模块。
4.如权利要求2所述的电路检测方法,其特征在于,所述按最低层级向最高层级的顺序,以所述设计文件中的模块为单位,对每个层级进行环路检测,包括:
对于除了所述最低层级之外的每个层级包含的每个模块,执行如下处理:
以当前模块的输入为起始点,按信号向前传播的顺序进行检测,直至检测到所述当前模块的输出,基于所述信号的信号路径,确定所述当前模块是否存在组合逻辑环路,其中,在检测到所述预定模块的情况下,基于所述预定模块的检测结果,从所述预定模块的输出开始继续检测;
响应于所述当前模块的输入到输出仅包含组合逻辑门,在所述当前模块的检测结果中记录所述当前模块的输入到输出的关系为通过;
响应于所述当前模块的输入到输出包含非组合逻辑门,在所述当前模块的检测结果中不记录所述当前模块的输入到输出的关系。
5.如权利要求4所述的电路检测方法,其特征在于,还包括:
在检测到非组合逻辑门的情况下,将所述非组合逻辑门的输出作为新的起始点,并从所述新的起始点重新开始向前传播信号;
在检测到组合逻辑门的情况下,所述信号经过所述组合逻辑门继续向前传播信号。
6.如权利要求5所述的电路检测方法,其特征在于,所述基于所述信号的信号路径,确定所述当前模块是否存在组合逻辑环路,包括:
在检测到的所有预定模块的检测结果记录相应的预定模块的输入到输出的关系均为通过的情况下,响应于所述当前模块不包含非组合逻辑门,所述信号再次经过任一预定模块或任一组合逻辑门,确定所述当前模块包含组合逻辑环路,并在所述当前模块的检测结果中记录所述当前模块包含组合逻辑环路;
在任一预定模块的检测结果未记录相应预定模块的输入到输出的关系的情况下,响应于所述当前模块在所述任一预定模块后包含至少一个组合逻辑门,所述信号再次经过所述至少一个组合逻辑门中任一个组合逻辑门,确定所述当前模块包含组合逻辑环路,并在所述当前模块的检测结果中记录所述当前模块包含组合逻辑环路;
在检测到非组合逻辑门的情况下,响应于所述当前模块在所述非组合逻辑门后包含至少一个组合逻辑门,所述信号再次经过所述至少一个组合逻辑门中任一个组合逻辑门,确定所述当前模块包含组合逻辑环路,并在所述当前模块的检测结果中记录所述当前模块包含组合逻辑环路;
在检测到组合逻辑门的情况下,响应于所述当前模块不包含非组合逻辑门,所述信号再次经过任一组合逻辑门,确定所述当前模块包含组合逻辑环路,并在所述当前模块的检测结果中记录所述当前模块包含组合逻辑环路。
7.如权利要求4所述的电路检测方法,其特征在于,所述当前模块包含多个输入和/或多个输出,所述电路检测方法还包括:
对于所述当前模块包含的所述多个输入中的每个输入,执行如下处理:
以当前输入为起始点,按信号向前传播的顺序进行检测,直至检测到与所述当前输入相应的输出,其中,在检测到所述预定模块,基于所述预定模块的检测结果,从所述预定模块的输出开始继续检测。
8.如权利要求4所述的电路检测方法,其特征在于,所述预定模块包含多个输入和/或多个输出,所述在检测到所述预定模块的情况下,基于所述预定模块的检测结果,从所述预定模块的输出开始继续检测,包括:
在检测到所述预定模块的任一第一输入,基于所述预定模块的检测结果,从与所述第一输入相应的第一输出开始继续检测。
9.如权利要求8所述的电路检测方法,其特征在于,所述基于所述预定模块的检测结果,从与所述第一输入相应的第一输出开始继续检测,包括:
在所述检测结果记录所述第一输入至所述第一输出的关系为通过的情况下,从所述第一输入直接跳转到所述第一输出,并从所述第一输出继续向前传播信号;
在所述检测结果未记录所述第一输入至所述第一输出的关系的情况下,将所述第一输出作为新的起始点,并从所述新的起始点重新开始向前传播信号。
10.如权利要求2所述的电路检测方法,其特征在于,所述按最低层级向最高层级的顺序,以所述设计文件中的模块为单位,对每个层级进行环路检测,包括:
针对所述最低层级中同一类别的模块中的第一个进行环路检测的第一模块,执行如下处理:
以第一模块的输入为起始点,按信号向前传播的顺序进行检测,直至检测到所述第一模块的输出;
基于所述信号的信号路径,确定所述第一模块是否存在组合逻辑环路;
响应于所述第一模块的输入到输出仅包含组合逻辑门,在所述第一模块的检测结果中记录所述第一模块的输入到输出的关系为通过;
响应于所述第一模块的输入到输出包含非组合逻辑门,在所述第一模块的检测结果中不记录所述第一模块的输入到输出的关系。
11.如权利要求10所述的电路检测方法,其特征在于,所述基于所述信号的信号路径,确定所述第一模块是否存在组合逻辑环路,包括:
确定所述第一模块是否包含组合逻辑门;
响应于确定所述第一模块包含至少一个组合逻辑门,检测从所述至少一个组合逻辑门出发的每个信号路径,将从所述至少一个组合逻辑门中一个组合逻辑门出发并且返回到所述组合逻辑门本身的信号路径确定为组合逻辑环路,并在所述第一模块的检测结果中记录所述第一模块包含组合逻辑环路。
12.如权利要求3所述的电路检测方法,其特征在于,所述顶层模块通过调用其他模块来实现所述待检测电路的完整电路功能,被划分至中间层级和最低层级的模块分别用于实现所述待检测电路的部分电路功能。
13.一种电路检测装置,其特征在于,包括:
获取单元,被配置为获取与待检测电路对应的设计文件;
检测单元,被配置为以所述设计文件中的模块为单位进行环路检测,其中,响应于在环路检测过程中检测到预定模块,基于所述预定模块的检测结果,从所述预定模块的输出开始继续检测,所述预定模块是指已经完成环路检测的模块;
其中,所述基于所述预定模块的检测结果,从所述预定模块的输出开始继续检测,包括:
在所述检测结果指示所述预定模块的输入到输出仅包含组合逻辑门的情况下,从所述预定模块的输入直接跳转到所述预定模块的输出,并从所述预定模块的输出继续向前传播信号;
在所述检测结果指示所述预定模块的输入到输出包含非组合逻辑门的情况下,将所述预定模块的输出作为新的起始点,并从所述新的起始点重新开始向前传播信号。
14.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至12中任一项所述的电路检测方法。
15.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的指令被至少一个处理器运行时,促使所述至少一个处理器执行如权利要求1至12中任一项所述的电路检测方法。
16.一种计算机程序产品,包括计算机指令,其特征在于,所述计算机指令被处理器执行时实现如权利要求1至12中任一项所述的电路检测方法。
CN202410318993.0A 2024-03-20 2024-03-20 电路检测方法及装置、电子设备、存储介质、程序产品 Pending CN117907812A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410318993.0A CN117907812A (zh) 2024-03-20 2024-03-20 电路检测方法及装置、电子设备、存储介质、程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410318993.0A CN117907812A (zh) 2024-03-20 2024-03-20 电路检测方法及装置、电子设备、存储介质、程序产品

Publications (1)

Publication Number Publication Date
CN117907812A true CN117907812A (zh) 2024-04-19

Family

ID=90682389

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410318993.0A Pending CN117907812A (zh) 2024-03-20 2024-03-20 电路检测方法及装置、电子设备、存储介质、程序产品

Country Status (1)

Country Link
CN (1) CN117907812A (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1508558A (zh) * 2002-12-17 2004-06-30 �Ҵ���˾ 非扫描存储器元件上的反馈循环检测方法和系统
US20090106612A1 (en) * 2007-10-17 2009-04-23 Yogesh Pandey Enhancing speed of simulation of an ic design while testing scan circuitry
US20090228751A1 (en) * 2007-05-22 2009-09-10 Tilman Gloekler method for performing logic built-in-self-test cycles on a semiconductor chip and a corresponding semiconductor chip with a test engine
US20140229778A1 (en) * 2013-02-14 2014-08-14 Lsi Corporation At-speed scan testing of interface functional logic of an embedded memory or other circuit core
CN105745623A (zh) * 2013-12-26 2016-07-06 英特尔公司 集成电路缺陷检测和修复
CN107202953A (zh) * 2016-03-16 2017-09-26 意法半导体(格勒诺布尔2)公司 在运行时间期间支持逻辑自测试模式引入的扫描链电路
CN110794292A (zh) * 2019-11-13 2020-02-14 浙江财经大学东方学院 一种扫描链动态重配置的确定型test-per-clock测试装置
CN114846763A (zh) * 2019-12-23 2022-08-02 纳格拉影像有限公司 用于检测逻辑电路中扰动的方法以及用于实现此方法的逻辑电路
WO2023283891A1 (zh) * 2021-07-15 2023-01-19 华为技术有限公司 用于仿真的方法、装置及设备
CN117250480A (zh) * 2023-11-08 2023-12-19 英诺达(成都)电子科技有限公司 组合逻辑电路的环路检测方法、装置、设备及存储介质
CN117313593A (zh) * 2023-09-28 2023-12-29 中国人民解放军国防科技大学 一种组合逻辑电路的寄存器传输级代码生成方法及系统

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1508558A (zh) * 2002-12-17 2004-06-30 �Ҵ���˾ 非扫描存储器元件上的反馈循环检测方法和系统
US20090228751A1 (en) * 2007-05-22 2009-09-10 Tilman Gloekler method for performing logic built-in-self-test cycles on a semiconductor chip and a corresponding semiconductor chip with a test engine
US20090106612A1 (en) * 2007-10-17 2009-04-23 Yogesh Pandey Enhancing speed of simulation of an ic design while testing scan circuitry
WO2009051871A1 (en) * 2007-10-17 2009-04-23 Synopsys Inc. Enhancing speed of simulation of an ic design while testing scan circuitry
US20140229778A1 (en) * 2013-02-14 2014-08-14 Lsi Corporation At-speed scan testing of interface functional logic of an embedded memory or other circuit core
CN105745623A (zh) * 2013-12-26 2016-07-06 英特尔公司 集成电路缺陷检测和修复
CN107202953A (zh) * 2016-03-16 2017-09-26 意法半导体(格勒诺布尔2)公司 在运行时间期间支持逻辑自测试模式引入的扫描链电路
CN110794292A (zh) * 2019-11-13 2020-02-14 浙江财经大学东方学院 一种扫描链动态重配置的确定型test-per-clock测试装置
CN114846763A (zh) * 2019-12-23 2022-08-02 纳格拉影像有限公司 用于检测逻辑电路中扰动的方法以及用于实现此方法的逻辑电路
WO2023283891A1 (zh) * 2021-07-15 2023-01-19 华为技术有限公司 用于仿真的方法、装置及设备
CN117377961A (zh) * 2021-07-15 2024-01-09 华为技术有限公司 用于仿真的方法、装置及设备
CN117313593A (zh) * 2023-09-28 2023-12-29 中国人民解放军国防科技大学 一种组合逻辑电路的寄存器传输级代码生成方法及系统
CN117250480A (zh) * 2023-11-08 2023-12-19 英诺达(成都)电子科技有限公司 组合逻辑电路的环路检测方法、装置、设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
倪韬雍;金乃咏;: "基于有向图深度优先遍历的组合反馈环路检测算法", 计算机应用与软件, no. 06, 15 June 2008 (2008-06-15), pages 76 - 77 *
王君虎: "高性能可测试性电路设计", 《中国优秀硕士学位论文全文数据库 信息科技辑》, 15 October 2010 (2010-10-15), pages 135 - 83 *

Similar Documents

Publication Publication Date Title
US7162706B2 (en) Method for analyzing and validating clock integration properties in circuit systems
US6378123B1 (en) Method of handling macro components in circuit design synthesis
US7587690B1 (en) Method and system for global coverage analysis
US9665674B2 (en) Automating a microarchitecture design exploration environment
US20060130029A1 (en) Programming language model generating apparatus for hardware verification, programming language model generating method for hardware verification, computer system, hardware simulation method, control program and computer-readable storage medium
US10467365B1 (en) Systems and methods for calculating common clock path pessimism for hierarchical timing analysis in an electronic design
Chappell et al. LAMP: Logic‐Circuit Simulators
US11347917B2 (en) Determining and verifying metastability in clock domain crossings
US10067183B2 (en) Portion isolation architecture for chip isolation test
Simpson FPGA design
Ataei et al. An open-source eda flow for asynchronous logic
CN117250480B (zh) 组合逻辑电路的环路检测方法、装置、设备及存储介质
US10303833B1 (en) Parallelizing timing-based operations for circuit designs
US11574101B2 (en) Techniques for providing optimizations based on categories of slack in timing paths
CN117094269B (zh) 一种验证方法、装置、电子设备及可读存储介质
CN107784185B (zh) 一种门级网表中伪路径的提取方法、装置及终端设备
US9679092B1 (en) Constraint handling for parameterizable hardware description language
US20220327269A1 (en) Computing device and method for detecting clock domain crossing violation in design of memory device
US8555228B2 (en) Tool for glitch removal
US8108821B2 (en) Reduction of logic and delay through latch polarity inversion
CN117907812A (zh) 电路检测方法及装置、电子设备、存储介质、程序产品
US8336013B2 (en) Determining an order for visiting circuit blocks in a circuit design for fixing design requirement violations
CN114861574A (zh) 一种应用于层次化物理设计的逻辑简化方法
US20140289689A1 (en) Wiring inspection apparatus and wiring inspection method
Oh et al. Efficient logic-level timing analysis using constraint-guided critical path search

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