CN112860226A - 获取逻辑系统设计的初始状态的方法、电子设备及介质 - Google Patents

获取逻辑系统设计的初始状态的方法、电子设备及介质 Download PDF

Info

Publication number
CN112860226A
CN112860226A CN202110119421.6A CN202110119421A CN112860226A CN 112860226 A CN112860226 A CN 112860226A CN 202110119421 A CN202110119421 A CN 202110119421A CN 112860226 A CN112860226 A CN 112860226A
Authority
CN
China
Prior art keywords
module
modules
system design
logic system
period
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
CN202110119421.6A
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.)
Xinhuazhang Technology Co ltd
Original Assignee
Xinhuazhang 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 Xinhuazhang Technology Co ltd filed Critical Xinhuazhang Technology Co ltd
Priority to CN202110119421.6A priority Critical patent/CN112860226A/zh
Publication of CN112860226A publication Critical patent/CN112860226A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • 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/313Logic programming, e.g. PROLOG programming language
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

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)
  • Computer Security & Cryptography (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

本公开实施例提供的获取逻辑系统设计的初始状态的方法、电子设备及介质,所述逻辑系统设计包括多个模块,所述多个模块包括第一模块和第二模块,所述方法包括:获得所述多个模块的运行周期;基于所述多个模块的运行周期,确定所述逻辑系统设计的系统运行周期;基于所述系统运行周期分别生成所述多个模块的复位信号;以及基于所述多个模块的复位信号分别获得所述多个模块的初始状态,可以用于设置模块的相应状态以供验证等,克服现有技术的问题且简单高效。

Description

获取逻辑系统设计的初始状态的方法、电子设备及介质
技术领域
本说明书一个或多个实施例涉及计算机软件技术领域,尤其涉及一种获取逻辑系统设计的初始状态的方法、电子设备及介质。
背景技术
在逻辑系统的设计中,需要对逻辑系统设计进行测试和验证。被测试和验证的逻辑系统设计可以被称为待测设计(Device Under Test,DUT)。
验证一个逻辑系统设计的方法有很多种。其中,形式验证是一种证明或证伪逻辑系统设计的形式属性的正确性的方法。例如,假定逻辑系统设计的设计是正确的,那么一个示例性的形式属性就必然正确。在这个前提下,如果通过形式验证可以证伪该形式属性,则证明了逻辑系统设计存在缺陷,需要修改设计。例如,形式验证可以通过证明该形式属性存在反例来尝试证伪该形式属性,或者证明该形式属性永远正确来证明该形式属性。
为了进行形式验证,需要将逻辑系统设计抽象地转换为数学形式。例如,可以将逻辑系统设计的运行转换为包括各种状态转换的状态机。状态机在各个状态之间的跳转就代表了逻辑系统设计的运行。通过证明状态机存在错误的状态或者状态始终正确就可以相应地证伪或证明一个形式属性。
为了驱动状态机的运行,需要确定状态机的初始状态。由于形式验证并不完整地仿真逻辑系统设计。因此,在形式验证中,逻辑系统设计的系统运行周期是未指定的,故而初始状态也是未知的。当前的逻辑系统设计通常包括多个模块,而各个模块的运行周期可能是不同的。因此,如何确定系统运行周期,并进而利用同一个系统运行周期来确定各个模块的初始状态用于形式验证是亟待解决的问题。
因此,需要提供一种获取逻辑系统设计的初始状态的方法和设备。
发明内容
有鉴于此,本说明书一个或多个实施例的目的在于提出一种获取逻辑系统设计的初始状态的方法、电子设备及介质。
本公开的第一个方面,提供了一种用于获取逻辑系统设计的初始状态的方法,所述逻辑系统设计包括多个模块,所述多个模块包括第一模块和第二模块,所述方法包括:获得所述多个模块的运行周期;基于所述多个模块的运行周期,确定所述逻辑系统设计的系统运行周期;基于所述系统运行周期分别生成所述多个模块的复位信号;以及基于所述多个模块的复位信号分别获得所述多个模块的初始状态。
本公开的第二方面,提供了一种电子设备,包括:存储器,用于存储一组指令;以及至少一个处理器,配置为执行该组指令以进行第一方面所述的方法。
本公开的第三方面,提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储电子装置的一组指令,该组指令用于使所述电子装置执行第一方面所述的方法。
本公开实施例提供的获取逻辑系统设计的初始状态的方法、电子设备及介质,方法包括:获取逻辑系统设计的初始状态的方法,其中,所述逻辑系统设计包括多个模块,所述多个模块包括第一模块和第二模块,所述方法包括:获得所述多个模块的运行周期;基于所述多个模块的运行周期,确定所述逻辑系统设计的系统运行周期;基于所述系统运行周期分别生成所述多个模块的复位信号;以及基于所述多个模块的复位信号分别获得所述多个模块的初始状态,可以用于设置模块的相应状态以供验证等,克服现有技术的问题且简单高效。
附图说明
为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书一个或多个实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本公开实施例所提供的一种示例性电子设备的结构示意图。
图2示出了本公开实施例所提供的一种获取逻辑系统设计的初始状态的方法的流程示意图。
图3示出了本公开实施例中示例性的确定逻辑系统设计的系统运行周期的流程示意图。
图4示出了本公开实施例中示例性的基于系统运行周期获得模块的复位信号的流程示意图。
图5示出了本公开实施例所提供的多个模块的运行信号的波形示意图。
图6示出了本公开实施例中示例性的获取模块的初始状态的流程示意图。
图7示出了本公开实施例中形式验证的应用场景示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
需要说明的是,除非另外定义,本说明书一个或多个实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本说明书一个或多个实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
在验证逻辑系统设计的方法中,例如形式验证,由于逻辑系统设计的系统运行周期是未指定的,故而初始状态也是未知的。当前的逻辑系统设计通常包括多个模块,而各个模块的运行周期可能是不同的。
在一些实施例中,逻辑系统设计可以是集成电路设计。在集成电路设计领域,通常可以通过硬件描述语言(如Verilog语言或VHDL语言)编写具有特定逻辑运算功能的硬件电路系统。或者,在其它实施例中,逻辑系统设计也可以是软件开发中所需编写的软件系统或硬件系统,例如电子硬件的固件(Firmware)、微码(microcode)、区块链系统中使用的智能合约等,并非以集成电路设计为限。只要该逻辑系统设计的运行可以用状态机的各个状态的切换来描述,那么本公开提供方法和设备均是可以适用的。
逻辑系统设计通常包括多个模块,每个模块在实例化之后可以对应于集成电路中的某个实体部分。例如,逻辑电路设计是关于芯片的,则其所包含的多个模块可以是该芯片中的多个功能模块;或者,逻辑电路设计是关于芯片中的某个功能电路模块,则逻辑系统设计中的各模块可能是功能电路模块中的部分电路。
形式验证是通过判断逻辑系统设计的状态机所运行状态的是否错误或始终正确,以证伪或证明相关的形式属性。例如,在基于断言(assertion)的形式验证中,获得对应逻辑系统设计的预期功能的断言,通过形式验证工具对比逻辑系统设计实现预期功能的描述与断言的一致性,从而判断逻辑系统设计是否满足要求。以集成电路设计为例,可以基于集成电路设计的硬件语言描述代码生成断言,并进行属性检查。示例性地,生成断言的方法可以包括:Verilog断言(SystemVerilog Assertion,SVA)、性质描述语言(PropertySpecification language,PSL)或开放验证库(Open Verification Library,OVL)等。
在静态的形式验证中,由于逻辑系统设计的系统运行周期是未指定的,令逻辑系统设计的初始状态(对应于其中多个模块处于初始状态)也是未知的,导致基于初始状态的逻辑系统设计的功能无法获得准确的验证;鉴于此,本公开的实施例中可以提供获取逻辑系统设计的初始状态的方法。
在一些实施例中,获取逻辑系统设计的初始状态的方法可以应用在电子设备上。
图1示出了本实施例所提供的一种电子设备100的结构示意图。电子设备100例如可以是计算机主机。该电子设备100可以包括:处理器102、存储器104、网络接口106、外围接口108和总线110。其中处理器102、存储器104、网络接口106和外围接口108通过总线110实现彼此之间在设备内部的通信连接。
处理器102可以是中央处理器(Central Processing Unit,CPU)、图像处理器、神经网络处理器(NPU)、微控制器(MCU)、可编程逻辑器件、数字信号处理器(DSP)、应用专用集成电路(Application Specific Integrated Circuit,ASIC)或者一个或多个集成电路。处理器102可以用于执行与本公开描述的技术相关的功能。在一些实施例中,处理器102还可以包括集成为单一逻辑组件的多个处理器。如图1所示,处理器102可以包括多个处理器102a、102b和102c。
存储器104可以配置为存储数据(例如,指令集、计算机代码、中间数据等)。例如,如图1所示,存储的数据可以包括程序指令(例如,用于实现本公开的技术方案的程序指令)以及待处理的数据(例如,存储器104可以存储在编译过程产生的临时代码);例如,通过处理器102运行存储器104中的程序指令,例如运行EDA设计软件的指令,EDA设计软件中可以包括各种工具,其中可以存在能执行本公开实施例中的获取初始状态的方法的工具,例如形式验证工具等。处理器102也可以访问存储的程序指令和数据,并且执行程序指令以对要处理的数据进行操作。存储器104可以包括易失性存储装置或非易失性存储装置。在一些实施例中,存储器104可以包括随机访问存储器(RAM)、只读存储器(ROM)、光盘、磁盘、硬盘、固态硬盘(SSD)、闪存、存储棒等。
网络接口106可以配置为经由网络向电子设备100提供与其他外部设备的通信。该网络可以是能够传输和接收数据的任何有线或无线的网络。例如,该网络可以是有线网络、本地无线网络(例如,蓝牙、WiFi、近场通信(NFC)等)、蜂窝网络、因特网、或上述的组合。可以理解的是,网络的类型不限于上述具体示例。在一些实施例中,网络接口106可以包括任意数量的网络接口控制器(NIC)、射频模块、接收发器、调制解调器、路由器、网关、适配器、蜂窝网络芯片等的任意组合。
外围接口108可以配置为将电子设备100与一个或多个外围装置连接,以实现信息输入及输出。例如,外围装置可以包括键盘、鼠标、触摸板、触摸屏、麦克风、各类传感器等输入设备以及显示器、扬声器、振动器、指示灯等输出设备。
总线110可以被配置为在电子设备100的各个组件(例如处理器102、存储器104、网络接口106和外围接口108)之间传输信息,诸如内部总线(例如,处理器-存储器总线)、外部总线(USB端口、PCI-E总线)等。
需要说明的是,尽管上述设备仅示出了处理器102、存储器104、网络接口106、外围接口108和总线110,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本公开实施例方案所必需的组件,而不必包含图中所示的全部组件。
图2示出了本公开实施例所提供的一种用于逻辑系统设计的示例性获取初始状态的方法的流程示意图。
本公开实施例提供一种用于逻辑系统设计的示例性的获取初始状态的方法200,方法200可以由图1所示的电子设备100执行。例如,由在电子设备100上运行的形式验证工具执行,例如芯华章科技股份有限公司出品的GalaxFV形式验证工具等;或者,由在电子设备100上运行的用于电子自动化设计(EDA)软件中的其它工具执行等。方法200可以包括以下步骤。
在步骤S202中,获得多个模块的运行周期的描述。
在步骤S204中,基于多个模块的运行周期,确定逻辑系统设计的系统运行周期。
在步骤S206中,基于系统运行周期分别生成多个模块的复位信号。
在步骤S208中,基于多个模块的复位信号分别获得多个模块的初始状态。
在一些实施例中,逻辑系统设计中各模块的时钟信号的描述,可以存在于逻辑系统设计相关的配置文件中。在一些实施例中,逻辑系统设计的描述和配置文件是单独文件。在步骤S202中,可以从配置文件中读取出各个模块的时钟信号的描述,以获取相应的运行周期。
对于一个逻辑系统设计而言,其内部各个模块的运行周期虽然可能不同,但相互之间是存在关系的。由于逻辑系统设计都可以投射为实际的软件或硬件系统,而实际的软件或硬件系统的运行周期总是来自于一个系统运行周期。例如,对于一个芯片设计,其多个模块的运行周期是由一个系统时钟决定的。因此,逻辑系统设计的模块的运行周期可以根据逻辑系统设计的系统运行周期计算得到。例如,系统运行周期是各个模块的运行周期的公约数等。
图3示出了本公开实施例中实施例性的确定逻辑系统设计的系统运行周期的流程示意图。在一些实施例中,图3所示出的流程300可以实现于图2中步的步骤S204,以确定逻辑系统设计的系统运行周期。
图3所示出的流程300包括:
步骤S302:确定多个模块的运行周期的公约数。
步骤S304:基于公约数确定逻辑系统设计的系统运行周期。
举例来说,多个模块中的“多个”指的是模块数量在两个以上。在具体实施例中,多个模块包括第一模块和第二模块,或者还可以包括更多数量的模块,例如第三模块、第四模块等。需说明的是,此处的第一、第二的序号只是泛指。
举例来说,第一模块的运行周期为200,第二模块的运行周期为300,第三模块的运行周期为400,这些运行周期的公约数包括10、50、100等,皆可以用于确定系统运行周期。可以理解的是,上述运行周期的单位可以在配置文件中设定。例如,上述运行周期的单位可以设置为10ns、100ps之类。
在集成电路设计中,运行周期可以是时钟周期。逻辑系统设计的系统运行周期是系统时钟信号的系统时钟周期,每个模块的运行周期是模块的时钟信号的时钟周期,每个模块的时钟信号可以根据系统时钟信号生成,例如通过分频分成。其中,分频指获得原频率整数分之一的频率的信号,如原频率1/N信号,就叫N分频。实现分频的软件或电路可以称为“分频器”。
逻辑系统设计的初始状态对应于其中各个模块的初始状态。以芯片设计为例,芯片所包含的多个模块中可以具有寄存器,在模块处于初始状态,其寄存器都会被赋予相应的初始值,如全为“0”,全为“1”,或部分为“0”及部分为“1”。模块的初始状态可以例如由逻辑系统设计的初始块(initialblock)来定义。每个模块的复位信号用于获得模块的初始状态,通过分别生成每个模块的复位信号以分别获得各个模块的初始状态,从而获得逻辑系统设计的初始状态。
图4示出了本公开实施例中实施例性的基于系统运行周期获得模块的复位信号的流程示意图。在一些实施例中,图4所示出的流程400可以实现于图2中的步骤S206,以实现基于系统运行周期分别生成多个模块的复位信号。
图4中的流程400包括:
步骤S402:基于系统运行周期和第一模块的第一运行周期确定第一分频倍数;
步骤S404:基于系统运行周期和第二模块的第二运行周期确定第二分频倍数;
步骤S406:根据第一分频倍数和第二分频倍数配置分频器以分别生成第一模块和第二模块的运行信号;以及
步骤S408:基于第一模块和第二模块的运行信号,分别生成第一模块和第二模块的复位信号。
以逻辑系统设计为集成电路设计为例,集成电路设计的运行信号可以是时钟信号,运行周期即时钟周期。设系统时钟信号为mclk,第一模块的时钟信号为clk1,第二模块的时钟信号为clk2,第三模块的时钟信号为clk3,clk1的第一分频倍数为2,clk1的第二分频倍数为3,clk3的第三分频倍数为4,即clk1的频率是mclk频率1/2,clk2的频率是mclk频率的1/3,clk3的频率是mclk频率的1/4。
设clk1的运行周期为200,clk2的运行周期为300,clk3的运行周期为400。这些运行周期的公约数有10、50、100等。这些公约数可以被称为公约周期。其中,最大公约周期为100。在一些实施例中,可以将系统时钟mclk的时钟周期设置为100,以得到分频倍数2、3、4,即clk1的频率是mclk频率的2分频结果,clk2的频率是mclk频率的3分频结果,clk3的频率是mclk频率的4分频结果。
可以理解的是,采用其他公约周期也可以实现分频效果。例如,如果选择50作为系统运行周期,则相应的clk1、clk2和clk3的分频倍数需为4、6及8;如果选择10作为系统运行周期,则相应的clk1、clk2和clk3的分频倍数需为20、30及40。
此外,在一些实施例中,分频器可以由循环移位寄存器实现。以周期为50的系统时钟信号为例,以下展示循环移位寄存器实现分频器的硬件语言描述,例如Verilog等。
首先,可以参考以下实现4分频分频器的代码段,假设对应的时钟信号为clk1。
Figure BDA0002921437360000081
Figure BDA0002921437360000091
在此段描述中,定义了通过4位的循环移位寄存器实现4分频时钟信号。其初始值为4’b1100,即4位2进制,取值为“1100”,b表示二进制,“1”可以表示高电平,“0”对应表示低电平。tmpClk[3]表示4位中首位的值,clk1=tmpClk[3]即表示4位中的最高位的取值对应产生模块时钟信号clk1。从“1100”开始,如tmpClk<={tmpClk[2:0],tmpClk[3]},进行循环向左移位,从1100经历1001、0011、0110回到1100,以此为一个周期,其间tmpClk[3]的变化为“1,1,0,0”,之后clk1即以“1100,1100....”进行周期性地变化。
可以参考图5,示出了本公开实施例所提供的多个模块的运行信号的波形示意图。图5中横轴为时间,每个刻度对应一系统运行周期50,纵轴为信号值。
时钟信号clk1的信号波形可以参考图5中“clk1”所示。时钟信号clk1为基于系统运行周期的4分频的时钟信号。
可以理解的是,采用4位的循环移位寄存器是为了实现对应的4分频,而初始值为二进制“1100”是对应于50%的占空比,此仅为示例,在其它实施中可以根据实际需求加以变化,例如“1110”、“1101”对应75%占空比等,并非以此为限。
原理相似的,可以参考以下实现6分频的分频器的代码段,假设对应的时钟信号为clk2。
Figure BDA0002921437360000092
可以理解的是,对应要实现6分频,故采用6位的循环移位寄存器,实现clk2,依旧是要实现50%占空比,选择初始值二进制“111000”。相应的,向左循环移位而产生的信号波形如图5中的“clk2”波形所示,“111000111000...”。
类似的,可以利用初始值为8’b11110000的循环移位寄存器生成8分频的clk3,其信号波形可以参考如图5中的“clk3”所示。
上述示例中tmpClk的初始值(先“1”后“0”)配合向左循环移位可以实现电平先高后低的时钟信号,初始值和循环移位的方向皆可以根据实际信号需求加以变化的。例如,如果需要电平先低后高的时钟信号,可以将上述示例中tmpClk的初始值设置成例如4’b0011,6’b000111,8’b00001111,维持向左循环移位,即可形成如图5中时钟信号的波形clk1’(以“0011”为周期),clk2(以“000111”为周期),clk3(以“00001111”为周期)。
可以理解的是,循环移位的方向也是可以根据需要变化的。例如,对于初始值为4’b0011的循环移位寄存器,进行向右循环移位,同样可以实现上述要求电平先高后低的clk1。
为确保每个模块的复位,在一些示例中,可以在每个模块的给定时长内令复位信号有效。该给定时长与模块的运行周期有关,而可以通过系统运行周期来进行度量。例如,在模块初始的3个运行周期中有效,而假设某个模块的运行周期是系统运行周期的4倍,且系统运行周期设为50,则该模块中复位信号有效的给定时长为3×4×50=600,在该模块初始的600的给定时长钟复位信号有效。
在一些实施例中,以集成电路设计的一个示例性模块为例,将一个有效的复位信号设置为在前3个运行周期(cycle0,cycle1和cycle2)保持高电平有效。因此,对于该示例性模块,其复位信号的有效周期为3个运行周期。如以下的代码示例,其中reset=1’b1,reset表示复位信号,reset取值为“1”表示复位信号有效。
initial begin
reset=1’b1;
end
always@(posedge clk)begin
if(cycle==0)begin
reset=1’b1;
end
if(cycle==1)begin
reset=1’b1;
end
if(cycle==2)begin
reset=1’b1;
end
End
进一步举例说明,若每个模块采用相同的分频倍数,例如4分频,且在模块初始3个运行周期内有效,那么可以令复位信号在每个模块的4×3=12个系统运行周期内有效。因此,对于给定模块,根据分频倍数和该模块的复位信号的有效周期,可以基于系统运行周期来生成该给定模块的复位信号。
在另外示例中,若各时钟模块的运行周期不同,也可以利用系统运行周期来分别为每个模块度量复位信号的给定时长,以分别在每个模块的给定时长中令复位信号有效。例如,假设多个模块中有采用相对系统时钟信号4分频、6分频和8分频的运行信号,则对应的运行周期分别为系统运行周期的4倍、6倍和8倍,故采用4分频运行信号的模块的在其初始的4×3=12个系统运行周期内有效,采用6分频运行信号的模块的在其初始的6×3=18个系统运行周期内有效,采用8分频运行信号的模块的在其初始的8×3=24个系统运行周期内有效。
图6示出了本公开实施例中实施例性的获取模块的初始状态的流程示意图。图6所示出的流程600可以用于图2中的步骤S208,以获取模块的初始状态。
在此实施例中,为获得更准确的模块的初始状态,可以在通过复位信号对模块复位后,可以再令模块运行给定数量的周期,使模块产生给定的状态。该给定的状态可以被用作形式验证的初始状态。可以理解的是,模块的复位状态也可以用作形式验证的初始状态。
如图6所示,流程600可以包括:
步骤S602:基于第一模块的复位信号将第一模块复位;并且
步骤S604:以给定的周期数量仿真第一模块,以获取第一模块的初始状态。
此实施例中的第一模块为泛指,表示多个模块中的每个模块都可以按图6中所示步骤获得初始状态。
在仿真中,可以令模块的状态值进行变化。例如,在模块按给定的周期数量仿真时,通过一个计数器(counter)以根据给定的周期数量进行计数,并将计数值附加到模块的状态值上,例如随模块的运行周期的行进,将计数器的值设置成模块中寄存器的值,或者加和到寄存器的值等。
需说明的是,上述实施例中对运行周期的取值表示,如200、300、400等皆为示例性的表示值,其形式并非以此为限。在一些实施例中,运行周期也可以表示成某个时间单位和的倍数的形式。例如,使用系统运行周期System Period来表示这个时间单位,而clk1的运行周期可以表示为2倍的System Period,即2×System Period。
另外,当逻辑系统设计为软件系统设计时,运行周期可以为程序运行的循环周期等,并非以上述集成电路设计为限。
如本公开上述实施例所揭示,在没有逻辑系统设计的系统运行周期的情形下,利用多个模块的运行周期之间关系以计算出系统运行周期,以用于计算各模块的复位信号,以获得各个模块的初始状态,对应获得逻辑系统设计的初始状态。逻辑系统设计的初始状态可用于形式验证。
图7示出了本公开实施例中形式验证的应用场景示意图。
在集成电路设计的示例中,电子设备(例如图1中的电子设备)可以执行指令以运行形式验证工具702。形式验证工具702可以根据记载逻辑系统设计的硬件语言描述的配置文件701,获取各个模块的运行周期的信息,并根据它们之间的关系确定系统运行周期,例如根据各模块的运行周期的公约周期得到系统运行周期。示例性地,形式验证工具702可以调用仿真工具703以进行逻辑系统设计的仿真工作。该仿真工具根据系统运行周期获取例如第一模块和第二模块的运行信号,基于运行信号分别生成第一模块、第二模块的复位信号。通过复位信号复位第一模块和第二模块,并获得模块的初始状态(例如可以参考图6的流程得到模块的初始状态)。仿真工具703可以将所获取的每个模块的初始状态逐个返回给形式验证工具702,或者将所获取的逻辑系统设计的初始状态返回给形式验证工具702,以由形式验证工具702根据初始状态的逻辑系统设计进行例如形式验证。
需说明的是,所述形式验证工具702与仿真工具703之间可以是相互独立的软件工具;或者,两者也可以集成为一种软件工具,比如形式验证工具702中集成有仿真工具703的仿真功能。
此外,图7所示出的实现只是一种示例,并不对本公开实施例中获取逻辑系统设计的初始状态的方法的实现方式产生限制。
本公开实施例提供的获取逻辑系统设计的初始状态的方法、电子设备及介质,方法包括:获取逻辑系统设计的初始状态的方法,其中,逻辑系统设计包括多个模块,多个模块包括第一模块和第二模块,方法包括:获得多个模块的运行周期;基于多个模块的运行周期,确定逻辑系统设计的系统运行周期;基于系统运行周期分别生成多个模块的复位信号;以及基于多个模块的复位信号分别获得多个模块的初始状态,可以用于设置模块的相应状态以供验证等,克服现有技术的问题且简单高效。
需要说明的是,本说明书一个或多个实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本说明书一个或多个实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本公开实施例还提供存储了指令的计算机可读存储介质。该指令在被电子设备执行时用于进行上述方法。该计算机可读存储介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述对本公开特定实施例进行了描述。其他实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本说明书一个或多个实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本说明书一个或多个实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本说明书一个或多个实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本说明书一个或多个实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本说明书一个或多个实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本说明书一个或多个实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (10)

1.一种用于获取逻辑系统设计的初始状态的方法,其中,所述逻辑系统设计包括多个模块,所述多个模块包括第一模块和第二模块,所述方法包括:
获得所述多个模块的运行周期;
基于所述多个模块的运行周期,确定所述逻辑系统设计的系统运行周期;
基于所述系统运行周期分别生成所述多个模块的复位信号;以及
基于所述多个模块的复位信号分别获得所述多个模块的初始状态。
2.根据权利要求1所述的方法,其中,确定所述逻辑系统设计的系统运行周期进一步包括:
确定所述多个模块的运行周期的公约数;
基于所述公约数确定所述逻辑系统设计的系统运行周期。
3.根据权利要求1所述的方法,其中,基于所述系统运行周期分别生成所述多个模块的复位信号进一步包括:
基于所述系统运行周期和所述第一模块的第一运行周期确定第一分频倍数;
基于所述系统运行周期和所述第二模块的第二运行周期确定第二分频倍数;
根据所述第一分频倍数和所述第二分频倍数配置分频器以分别生成所述第一模块和所述第二模块的运行信号;以及
基于所述第一模块和所述第二模块的运行信号,分别生成所述第一模块和所述第二模块的复位信号。
4.根据权利要求3所述的方法,其中,所述分频器由循环移位寄存器实现。
5.根据权利要求1所述的方法,其中,基于所述多个模块的复位信号分别获得所述多个模块的初始状态进一步包括:
基于所述第一模块的复位信号将所述第一模块复位;并且
以给定的周期数量仿真所述第一模块,以获取所述第一模块的初始状态。
6.根据权利要求1所述的方法,其中,所述逻辑系统设计是集成电路设计,并且所述运行周期是时钟周期。
7.根据权利要求1所述的方法,其中,所述多个模块的初始状态用于所述逻辑系统设计的形式验证。
8.根据权利要求2所述的方法,其中,所述公约数是所述多个模块的运行周期的最大公约数。
9.一种电子设备,包括:
存储器,用于存储一组指令;以及
至少一个处理器,配置为执行该组指令以进行如权利要求1至8中任一项所述的方法。
10.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储电子设备的一组指令,该组指令用于使所述电子设备执行权利要求1至8中任一所述方法。
CN202110119421.6A 2021-01-28 2021-01-28 获取逻辑系统设计的初始状态的方法、电子设备及介质 Pending CN112860226A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110119421.6A CN112860226A (zh) 2021-01-28 2021-01-28 获取逻辑系统设计的初始状态的方法、电子设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110119421.6A CN112860226A (zh) 2021-01-28 2021-01-28 获取逻辑系统设计的初始状态的方法、电子设备及介质

Publications (1)

Publication Number Publication Date
CN112860226A true CN112860226A (zh) 2021-05-28

Family

ID=75986203

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110119421.6A Pending CN112860226A (zh) 2021-01-28 2021-01-28 获取逻辑系统设计的初始状态的方法、电子设备及介质

Country Status (1)

Country Link
CN (1) CN112860226A (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102064826A (zh) * 2010-12-22 2011-05-18 烽火通信科技股份有限公司 一种全数字时钟产生电路及全数字时钟产生方法
CN102427365A (zh) * 2011-09-30 2012-04-25 上海微小卫星工程中心 时钟变换与锁定方法及其电路
CN108073762A (zh) * 2016-11-17 2018-05-25 英特尔公司 用于利用经延迟的初始化来验证经重定时的电路的方法
CN108446424A (zh) * 2017-02-02 2018-08-24 英特尔公司 用于为重定时的电路系统自动实现补偿重置的方法和装置
CN110785761A (zh) * 2017-05-17 2020-02-11 美商新思科技有限公司 存在时钟动态重编程时仿真时间线的压缩方法
CN111931445A (zh) * 2020-10-09 2020-11-13 芯华章科技股份有限公司 用于调试逻辑系统设计的方法、仿真器及存储介质
CN112069754A (zh) * 2020-09-08 2020-12-11 海光信息技术股份有限公司 芯片设计方法、系统、设备以及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102064826A (zh) * 2010-12-22 2011-05-18 烽火通信科技股份有限公司 一种全数字时钟产生电路及全数字时钟产生方法
CN102427365A (zh) * 2011-09-30 2012-04-25 上海微小卫星工程中心 时钟变换与锁定方法及其电路
CN108073762A (zh) * 2016-11-17 2018-05-25 英特尔公司 用于利用经延迟的初始化来验证经重定时的电路的方法
CN108446424A (zh) * 2017-02-02 2018-08-24 英特尔公司 用于为重定时的电路系统自动实现补偿重置的方法和装置
CN110785761A (zh) * 2017-05-17 2020-02-11 美商新思科技有限公司 存在时钟动态重编程时仿真时间线的压缩方法
CN112069754A (zh) * 2020-09-08 2020-12-11 海光信息技术股份有限公司 芯片设计方法、系统、设备以及存储介质
CN111931445A (zh) * 2020-10-09 2020-11-13 芯华章科技股份有限公司 用于调试逻辑系统设计的方法、仿真器及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
胡迎刚编著, 成都:西南交通大学出版社 *

Similar Documents

Publication Publication Date Title
CN111931445B (zh) 用于调试逻辑系统设计的方法、仿真器及存储介质
CN112632880B (zh) 用于逻辑系统设计的编译方法、电子设备及存储介质
CN112100957B (zh) 用于调试逻辑系统设计的方法、仿真器、存储介质
CN112417798B (zh) 一种时序测试方法、装置、电子设备及存储介质
CN112287569B (zh) 用于仿真逻辑系统设计的方法、电子设备及存储介质
CN103116069B (zh) 芯片频率的测试方法、装置及系统
US8401828B1 (en) Methods and systems for analog object fetch in mixed-signal simulation
CN108335718A (zh) 一种测试方法及装置
CN107784185B (zh) 一种门级网表中伪路径的提取方法、装置及终端设备
CN107844678B (zh) 包含IP/Memory时序路径的spice仿真方法
US9483593B2 (en) Method for decomposing a hardware model and for accelerating formal verification of the hardware model
CN115827568B (zh) 获取逻辑系统设计的数据的方法、电子设备和存储介质
CN115470125B (zh) 基于日志文件的调试方法、设备以及存储介质
CN113760751B (zh) 生成测试用例的方法、电子设备及存储介质
CN112860226A (zh) 获取逻辑系统设计的初始状态的方法、电子设备及介质
US11386251B2 (en) Logic simulation verification system, logic simulation verification method, and program
CN115906730A (zh) 验证逻辑系统设计的方法、设备及存储介质
CN112506806B (zh) 用于调试程序的方法、电子设备及存储介质
CN114546823A (zh) 用于重现逻辑系统设计的调试场景的方法及相关设备
CN112989736B (zh) 用于检测修改设计的错误实例的方法、设备及存储介质
CN112131806A (zh) 验证设计的编译方法、电子设备及存储介质
CN114169287B (zh) 生成验证环境的连接示意图的方法、电子设备及存储介质
CN109901054A (zh) 定浮点转换电路的功能覆盖率模型测试点提取方法及系统
CN116738906B (zh) 实现循环电路的方法、电路、装置和存储介质
CN114185396A (zh) 设计的时钟域转换方法、验证系统及存储介质

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
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20210528