CN115422866A - 用于在仿真器上仿真逻辑系统设计的方法及相关设备 - Google Patents
用于在仿真器上仿真逻辑系统设计的方法及相关设备 Download PDFInfo
- Publication number
- CN115422866A CN115422866A CN202210864665.1A CN202210864665A CN115422866A CN 115422866 A CN115422866 A CN 115422866A CN 202210864665 A CN202210864665 A CN 202210864665A CN 115422866 A CN115422866 A CN 115422866A
- Authority
- CN
- China
- Prior art keywords
- sub
- condition
- control unit
- trigger condition
- block
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
- G06F30/343—Logical level
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本公开提供一种用于在仿真器上用于仿真逻辑系统设计的方法及相关设备。该方法包括:获取检测模块的描述,所述检测模块的描述包括触发条件,所述触发条件包括多个信号;将所述逻辑系统设计切割为多个块,所述多个块包括第一块和第二块,所述第一块和第二块被分别分配到第一FPGA和第二FPGA;将所述触发条件分解为与所述多个块对应的多个子条件,其中,所述子条件包括第一子条件和第二子条件,所述第一子条件对应于所述第一块,所述第二子条件对应于所述第二块;在所述多个FPGA上分别运行所述多个子条件和所述多个块以确定所述触发条件是否满足。
Description
技术领域
本公开实施例涉及计算机软件技术领域,尤其涉及一种用于在仿真器上仿真逻辑系统设计的方法及相关设备。
背景技术
仿真器(Emulator)可以仿真并且调试逻辑系统设计。逻辑系统设计可以是,例如,用于供专门应用的集成电路(Application Specific Integrated Circuit,简称ASIC)或者片上系统芯片(System-On-Chip,简称SOC)的设计。因此,在仿真器中被测试的逻辑系统设计又可以称为被测试设计(Design Under Test,简称DUT)。仿真器可以通过一个或多个可配置组件(例如,现场可编程逻辑门阵列(Field Programmable Gate Array,简称FPGA))来仿真该DUT,包括执行该DUT的各种操作,从而在制造之前就测试并验证DUT的功能。
在验证过程中,需要执行触发条件并在触发条件满足时进行信号检测。然而,为实现触发条件的判定,通常需要将触发条件编译生成对应电路结构网表并载入仿真器中,这样的方式无法对特定条件进行灵活调整;或者需要将触发条件转换为控制指令由控制单元执行判定计算,对于较为复杂的触发条件可能会过多占用仿真器资源而对仿真器的性能造成影响。
发明内容
有鉴于此,本公开提出了一种用于在仿真器上仿真逻辑系统设计的方法及相关设备。
本公开的第一方面,提供了一种用于在仿真器上仿真逻辑系统设计的方法,其中,所述仿真器包括多个FPGA。所述方法包括:获取检测模块的描述,所述检测模块的描述包括触发条件,所述触发条件包括多个信号;将所述逻辑系统设计切割为多个块,所述多个块包括第一块和第二块,所述第一块和第二块被分别分配到第一FPGA和第二FPGA;将所述触发条件分解为与所述多个块对应的多个子条件,其中,所述子条件包括第一子条件和第二子条件,所述第一子条件对应于所述第一块,所述第二子条件对应于所述第二块;在所述多个FPGA上分别运行所述多个子条件和所述多个块以确定所述触发条件是否满足。
本公开的第二方面,提供了一种用于仿真逻辑系统设计的电子设备,所述电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面所述的方法。
本公开的第三方面,提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储电子设备的一组指令,该组指令用于使所述电子设备执行第一方面所述的方法。
附图说明
为了更清楚地说明本公开或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A示出了根据本公开实施例的一种电子设备的结构示意图。
图1B示出了根据本公开实施例的示例性编译器的示意图。
图2示出了根据本公开实施例的示例性仿真系统的示意图。
图3A示出了根据本公开实施例的检测模块的示例性描述的示意图。
图3B示出了根据本公开实施例的多个查找表连接结构的示意图。
图4示出了根据本公开实施例的一种用于仿真逻辑系统设计的示例性方法的流程示意图。
图5示出了根据本公开实施例的仿真器的示意图。
图6示出了根据本公开实施例的一种用于在仿真器上仿真逻辑系统设计的示例性方法的流程示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
需要说明的是,除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
如上所述,为了实现对被测试设计(Design Under Test,简称DUT)的功能验证,常常需要执行触发条件判定并在触发条件满足时再触发下一步的信号检测操作,例如探测目标信号、获取相关信号波形等。此过程的关键即如何执行触发条件。相关技术中对于执行触发条件有两种实现方式:一种方式是将特定条件编译成对应电路结构网表并载入仿真器的可配置组件(如现场可编程逻辑门阵列,FPGA)中,通过具体电路结构实现特定条件的判断。这样的方式触发条件转换为实际电路固化在仿真器中,缺乏灵活性,无法根据实际需求对触发条件进行调整。另一种方式将特定条件转换为转换为控制指令由控制单元来执行判定计算,当触发条件较为复杂时仿真器就需要花费较多的资源来执行判定计算,这样的方式会对仿真器的性能造成影响。
鉴于此,本公开实施例提供了一种用于在仿真器上仿真逻辑系统设计的方法,通过将触发条件适应性地分解并且在对应的FPGA上运行,降低了单个FPGA的运算压力和获取数据的通信压力。同时,通过在多个FPGA利用控制单元本地化处理触发子条件的信号可以提高系统的灵活性,仅需要在控制单元进行软件配置,计算对应的信号值,而不需要对FPGA进行重新配置形成对应的硬件连接关系来专门用于获取信号值。采用本实施例提供的利用查找表的方法能够快速查询确定触发条件的值而不用耗费过多计算资源,能够有效避免执行触发条件判定对仿真器性能造成的影响,同时也方便根据实际情况对触发条件进行灵活调整,保持处理触发条件的灵活性。
图1A示出了本实施例所提供的一种电子设备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还可以包括集成为单一逻辑组件的多个处理器。如图1A所示,处理器102可以包括多个处理器102a、102b和102c。
存储器104可以配置为存储数据(例如,指令集、计算机代码、中间数据等)。例如,如图1A所示,存储的数据可以包括程序指令(例如,用于实现本公开的技术方案的程序指令)以及待处理的数据(例如,存储器104可以存储在编译过程产生的临时代码)。处理器102也可以访问存储的程序指令和数据,并且执行程序指令以对要处理的数据进行操作。存储器104可以包括易失性存储装置或非易失性存储装置。在一些实施例中,存储器104可以包括随机访问存储器(RAM)、只读存储器(ROM)、光盘、磁盘、硬盘、固态硬盘(SSD)、闪存、存储棒等。
网络接口106可以配置为经由网络向电子设备100提供与其他外部设备的通信。该网络可以是能够传输和接收数据的任何有线或无线的网络。例如,该网络可以是有线网络、本地无线网络(例如,蓝牙、WiFi、近场通信(NFC)等)、蜂窝网络、因特网、或上述的组合。可以理解的是,网络的类型不限于上述具体示例。在一些实施例中,网络接口106可以包括任意数量的网络接口控制器(NIC)、射频模块、接收发器、调制解调器、路由器、网关、适配器、蜂窝网络芯片等的任意组合。
外围接口108可以配置为将电子设备100与一个或多个外围装置连接,以实现信息输入及输出。例如,外围装置可以包括键盘、鼠标、触摸板、触摸屏、麦克风、各类传感器等输入设备以及显示器、扬声器、振动器、指示灯等输出设备。在一些实施例中,外围借口108可以连接到仿真器(emulator),用于向仿真器传输配置文件。配置文件例如可以包括门级网表、机器码等。
总线110可以被配置为在电子设备100的各个组件(例如处理器102、存储器104、网络接口106和外围接口108)之间传输信息,诸如内部总线(例如,处理器-存储器总线)、外部总线(USB端口、PCI-E总线)等。
需要说明的是,尽管上述设备仅示出了处理器102、存储器104、网络接口106、外围接口108和总线110,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本公开实施例方案所必需的组件,而不必包含图中所示的全部组件。
图1B示出了根据本公开实施例的示例性编译器120的示意图。在一些实施例中,编译器120可以运行在图1A的电子设备100上。
编译器120可以基于待编译的计算机代码来生成目标代码的计算机程序。待编译的计算机代码又可以称为源代码。在这里,源代码指逻辑系统设计的源代码。通常,编写源代码的源语言是高级编程语言。高级编程语言可以例如是C++、Java等软件编程语言或VHDL、Verilog、SystemVerilog等硬件描述语言。目标代码则可以是例如汇编代码、机器码等。
编译器120例如可以存储在图1A所示的存储器104中,并且由处理器102执行。
如图1B所示,编译器120可以包括前端122、中端124以及后端126。
前端122可以用于根据具体的源语言来分析源代码的词法、语法、语义。
在源代码的词法、语法、语义分析完成后,中端124可以将源代码转换为中间表示(或中间代码),并可以优化该中间表示。例如,中端124可以移除无用的代码、移除不可访问的代码、清除未使用的变量等。优化后的中间表示则可以被传递给后端126进行进一步处理。
后端126可以根据目标处理器(例如,图1A的处理器102)的架构来进一步优化中间表示,并生成目标代码。在一些实施例中,目标代码可以是门级网表以及机器码。门级网表可以用来配置FPGA实现预定电路和功能,而机器码可以由处理单元(例如,仿真器中的控制单元)执行。
例如,编译器120可以根据源代码生成抽象语法树,然后基于该抽象语法树生成中间表示,并最终生成与硬件体系结构相关的机器码。
可以理解的是,编译器的结构不限于图1B的示例。例如,前端122和中端124可以被合称为编译器的前端,或者,中端124和后端126可以被合称为编译器的后端。
图2示出了根据本公开实施例的示例性仿真系统200的示意图。仿真系统200可以包括电子设备100和仿真器210。例如,仿真器210可以是芯华章科技股份有限公司出品的HuaEmu仿真工具。仿真器可以包括现场可编程门级阵列(Field Programmable GateArray,FPGA)。通过将门级网表配置到仿真器的FPGA中,可以使得FPGA模拟逻辑系统设计。可以理解的是,仿真器可以包括多个FPGA,而每个FPGA可以仅模拟逻辑系统设计的一部分(例如,一个或多个模块)。
如图2所示,在电子设备100上运行的编译器120可以根据逻辑系统设计202的源代码生成包括门级网表和机器码在内的配置文件204。该配置文件204的一部分(例如,门级网表)可以经由例如电子设备100的外围接口108被载入到仿真器210的FPGA上,该配置文件204的又一部分(例如,机器码)可以经由例如电子设备100的外围接口108被载入到仿真器210的控制单元上。控制单元可以是FPGA的一部分或者独立于FPGA。
仿真器210可以根据配置文件204进行逻辑系统设计202的仿真。其中,仿真器210可以根据配置文件204执行触发条件判定,在触发条件满足时触发信号检测操作。例如,仿真器210可以执行判定“a>b&&a>c&&a&b&&a|c&&b<c”这一触发条件,响应于此触发条件成立,即表达式“a>b&&a>c&&a&b&&a|c&&b<c”的值为真时,触发信号检测操作。仿真器210可以将仿真结果206输出,其中,仿真结果206可以包括信号检测结果(例如目标信号的值、相关信号的波形等)。例如,仿真系统200可以将信号检测结果经由图1A的外围接口108输出到输出设备上(例如,显示在显示器上)。
图3A示出了根据本公开实施例的检测模块的示例性描述300的示意图。
如图3A所示,编译器120可以获取逻辑系统设计中的检测模块(monitor)的描述300。检测模块的描述300可以包括触发条件310“(a>b&&a>c&&a&b&&a|c&&c)”与触发指令“trigger”。其中,触发条件310可以是包括多个输入信号(如a,b,c等)的布尔型表达式。当触发条件310成立时即“(a>b&&a>c&&a&b&&a|c&&c)”的值为真时,检测模块可以执行触发指令“trigger”以触发信号检测操作。
编译器120可以基于检测模块的描述300生成该检测模块的网表文件(netlistfile)。在网表文件中可以包括与触发条件310相对应的第一部分。因为触发条件310具有多个输入信号(例如,信号a,b,c等)且多个输入信号之间往往具有较为复杂的运算关系,直接根据多个输入信号的值计算触发条件310整体的值较为困难。在基于检测模块的描述300生成检测模块的网表文件时,编译器120可以根据触发条件310的运算逻辑关系将其分解为多个子条件。
在一个示例中,编译器120可以将触发条件310“(a>b&&a>c&&a&b&&a|c&&c)”分解为第一子条件“(a>b)”、第二子条件“(a>c)”、第三子条件“(a&b)”、第四子条件“(a|c)”、第五子条件“(c)”以及以第一至第五这五个子条件的输出结果为输入的第六子条件“((a>b)&&(a>c)&&(a&b)&&(a|c)&&(c))”。在触发条件310分解得到的这六个子条件中,第一至第五这五个子条件属于第一级子条件,第六子条件属于第二级子条件,在第一级中的多个子条件(即,第一至第五子条件)的输出用作第二级中第六子条件的输入,而第六子条件的输出即为触发条件310的值。
在另一个示例中,编译器120可以将触发条件310“(a>b&&a>c&&a&b&&a|c&&c)”分解为第一子条件“(a>b&&a>c)”、第二子条件“(a&b&&a|c)”、第三子条件“(c)”,以第一子条件与第二子条件的输出结果为输入的第四子条件“((a>b&&a>c)&&(a&b&&a|c))”,以及以第三子条件与第四子条件的输出结果为输入的第五子条件“(((a>b&&a>c)&&(a&b&&a|c))&&(c))”。在触发条件310分解得到的这五个子条件中,第一子条件与第二子条件属于第一级子条件,第三子条件与第四子条件属于第二级子条件,第五子条件属于第三级子条件,第一级中的第一子条件、第二子条件的输出用作第二级中第四子条件的输入,第二级中的第三子条件、第四子条件的输出用作第三级中第五子条件的输入,而第五子条件的输出即为触发条件310的值。
对于触发条件310分解得到的多个子条件而言,子条件的多个输入的值与输出之间存在确定的对应关系,可以利用查找表(Look-Up-Table,LUT)根据多个输入的值直接查询确定对应的输出,因此,编译器120可以根据触发条件310分解得到的多个子条件在网表文件与触发条件310对应的第一部分中生成多个相应的查找表。与子条件相对应的,查找表也具有多个输入以及与多个输入相对应的输出。
图3B示出了根据本公开实施例的多个查找表连接结构320的示意图。
以触发条件310“(a>b&&a>c&&a&b&&a|c&&c)”为例,触发条件310可以被分解为第一子条件“(a>b&&a>c)”、第二子条件“(a&b&&a|c)”、第三子条件“(c)”、第四子条件“((a>b&&a>c)&&(a&b&&a|c))”以及第五子条件“(((a>b&&a>c)&&(a&b&&a|c))&&(c))”。编译器120可以生成分别与这五个子条件相对应的五个查找表,这五个查找表的输入、输出分别与相应的子条件的输入、输出相对应。具体地,查找表3202对应第一子条件“(a>b&&a>c)”,第一子条件具有a,b,c这三个输入以及一个输出,查找表3202也具有相对应的三个输入与一个输出。查找表3204对应第二子条件“(a&b&&a|c)”,第二子条件具有a,b,c这三个输入以及一个输出,查找表3204也具有相对应的三个输入与一个输出。查找表3206对应第四子条件“((a>b&&a>c)&&(a&b&&a|c))”,第四子条件具有两个输入以及一个输出,查找表3206也具有相对应的两个输入与一个输出。查找表3208对应第三子条件“(c)”,第三子条件具有c这一个输入以及一个输出,查找表3208也具有相对应的一个输入与一个输出。查找表3210对应第五子条件“(((a>b&&a>c)&&(a&b&&a|c))&&(c))”,第五子条件具有两个输入以及一个输出,查找表3210也具有相对应的两个输入与一个输出。
如图3B所示,编译器120所生成的五个查找表的连接关系也与五个子条件的连接关系相同。在五个子条件中,第一级中的第一子条件、第二子条件的输出用作第二级中第四子条件的输入,相应地,查找表3202、查找表3204的输出为查找表3206的输入。第二级中的第三子条件、第四子条件的输出用作第三级中第五子条件的输入,相应地,查找表3206、查找表3208的输出作为查找表3210的输入。
编译器120可以基于网表文件中与触发条件310相对应的第一部分生成配置文件(例如,图2中配置文件204)。在基于网表文件生成相应配置文件后,仿真系统200可以根据配置文件将多个查找表配置在仿真器210中。
查找表是由输入到输出的真值映射表,映射表可以通过存在在存储器中来实现。在一些实施例中,仿真系统200可以将多个查找表配置在仿真器210的控制单元的存储器中。其中,仿真器210可以包括一个或多个现场可编程逻辑门阵列(Field ProgrammableGate Array,简称FPGA),在一些实施例中,仿真系统200可以将多个查找表配置在FPGA上的控制单元(例如,控制核心(control core))中。在一些实施例中,仿真器210可以在FPGA之外进一步包括用于进行通用计算的控制单元,而查找表也可以配置在这些非FPGA的控制单元的存储器中。
在一些实施例中,仿真系统200可以将多个查找表分别配置在存储器的多个存储单元中来实现多个查找表,多个存储单元分别对应存储多个查找表的真值映射表。
通过根据配置文件将多个查找表配置在仿真器210中,仿真器210可以利用多个已配置的查找表以及触发条件310中多个输入信号的值依次查询确定相应多个子条件的值,并根据多个子条件的值确定触发条件310的值以判定触发条件310是否满足。
以图3B所示的多个查找表为例,查找表3202对应于触发条件310的第一子条件“(a>b&&a>c)”,根据第一子条件的三个输入信号a,b,c的值,利用存储在存储单元中的查找表3202相应的真值映射表可以查询确定对应于三个输入信号a,b,c的第一子条件“(a>b&&a>c)”的输出,假设为y1。查找表3204对应于触发条件310的第二子条件“(a&b&&a|c)”,根据三个输入信号a,b,c的值,利用查找表3204相应的真值映射表查询确定第二子条件“(a&b&&a|c)”的输出,假设为y2。查找表3206对应于触发条件310的第四子条件“((a>b&&a>c)&&(a&b&&a|c))”,其输入为第一子条件的输出y1与第二子条件的输出y2,根据y1,y2的值利用查找表3206相应的真值映射表查询确定第四子条件的输出。可以采用同样的方式最终确定第五子条件的输出,第五子条件的输出即为触发条件310的输出。
仿真器210中控制单元可能存在存储资源有限的情况。控制单元的存储器的存储单元数量不足以同时配置多个查找表时,仿真系统200可以先配置部分查找表,仿真器210可以利用先配置的部分查找表查询确定对应的多个子条件的输出,当多个子条件中一个子条件的输出查询确定之后,释放该子条件对应的查找表的存储单元,再利用释放的存储单元实现在先未配置的查找表。
例如,当控制单元的存储器仅包含四个存储单元,利用该控制单元来实现如图3B所示的五个查找表的情况下,仿真系统200可以先选取查找表3202、查找表3204、查找表3206与查找表3208进行配置,首先将这四个查找表配置在控制单元存储器的四个存储单元中,并利用在先配置的查找表3202、查找表3204、查找表3206与查找表3208来确定对应的第一子条件、第二子条件、第四子条件与第三子条件的输出。当第一子条件、第二子条件、第四子条件与第三子条件中的一个子条件(例如,第三子条件)的输出查询确定之后,即释放该子条件对应的查找表(例如,查找表3208)的存储单元。所释放的存储单元就可以用来配置之前未配置的查找表3210。同理,当控制单元的存储器仅包含三个存储单元时,则先选取三个查找表进行配置,当三个查找表对应三个子条件中有子条件输出查询确定,则释放相应的存储单元,所释放的存储单元用以配置之前未配置的另外两个查找表。
图4示出了根据本公开实施例的一种用于仿真逻辑系统设计的示例性方法400的流程示意图。
该用于仿真逻辑系统设计的方法400可以由图2所示的仿真系统200执行。所述仿真系统200可以包括电子设备100以及仿真器210。电子设备100可以运行编译器120等软件。所述方法400可以包括以下步骤。
在步骤402,编译器120可以获取检测模块的描述(例如,图3A所示的描述300),所述检测模块的描述可以包括触发条件(例如,图3A中的触发条件310)。
在步骤404,编译器120可以基于所述检测模块的描述生成所述检测模块的网表文件。其中,所述网表文件可以包括与所述触发条件对应的第一部分,所述第一部分可以包括与所述触发条件对应的多个查找表(例如,图3B中的查找表3202、查找表3204、查找表3206、查找表3208、查找表3210)。
在一些实施例中,编译器120可以将所述触发条件分解为多个子条件,所述多个子条件可以被分为多个级,所述多个级至少包括第一级和第二级,其中,所述第一级中的子条件的输出用作所述第二级中的子条件的输入。
在一些实施例中,编译器120可以根据所述多个子条件分别生成所述多个查找表。所述多个查找表的一个可以包括多个输入以及与所述多个输入相对应的输出。
在步骤406,编译器120可以基于所述第一部分生成配置文件(例如,图2中的配置文件204);
在步骤408,仿真系统200可以根据所述配置文件在仿真器210的控制单元中配置所述多个查找表,以根据所述多个查找表确定所述触发条件是否满足。其中,所述控制单元可以是在仿真器210中的FPGA上实现的。
在一些实施例中,仿真系统200可以在仿真器210的控制单元的存储器中利用所述存储器的多个存储单元实现所述多个查找表。
在一些实施例中,仿真器210可以利用多个查找表查询确定多个子条件的输出,响应于所述多个子条件中的一个完成处理,仿真器210可以释放该子条件对应查找表的存储单元,将所述释放的存储单元配置为未完成处理的子条件对应的查找表。
伴随着逻辑系统设计规模的增大,逻辑系统设计无法在一个FPGA上实现。因而,通常的做法是将一个逻辑系统设计分割为多个块,该多个块中包括第一块和第二块。并且在多个FPGA上分别实现。如参考图3A讨论的,触发条件310可以包括多个信号(例如,信号a、b和c)。由于逻辑系统设计202被分割,信号a和b可能被划分到了第一块,而信号c可能被划分到了第二块。
通常的做法是,在一个FPGA上配置一个控制单元(例如,处理器),并且通过片间的通信,将其他FPGA上运行的多个块中的信号引入到这个控制单元。但是,此种做法技术问题在于需要占用多个FPGA之间宝贵的通信资源,同时单个FPGA的控制单元的处理能力有限,集中在一个FPGA上进行运算对单个FPGA的计算资源要求也很高。此外,不同触发条件所涉及的信号可能不同,这就导致仿真系统200每次都需要对不同的触发条件进行分别配置。
为了解决上述技术问题,本申请的实施例还提供一种用于在仿真器上仿真逻辑系统设计的方法,其中,该仿真器可以包括多个FPGA。仿真系统200可以在该多个FPGA上实现确定触发条件是否满足。
图5示出了根据本公开实施例的仿真器210的示意图。
如图5所示,仿真器210可以包括FPGA 510和FPGA 520。逻辑系统设计202可以被分割为第一块512和第二块522。其中,触发条件310中的信号a和b被包括在第一块512中,信号c被包括在第二块522中。第一块512可以在FPGA 510上实现,第二块522可以在FPGA 520上实现。
FPGA 510上还可以配置有控制单元514和总线516。类似地,FPGA 520上还可以配置有控制单元524和总线526。控制单元514和控制单元516之间通信地耦接。
如上所述,在逻辑系统设计过于庞大的情况下,需要将逻辑系统设计202切割为多个块。图5仅示例性地示出第一块512和第二块522。可以理解的是,逻辑系统设计202可以根据需要被切割为更多块。
与第一块512和第二块522对应,触发条件310也可以被分解为多个子条件(例如,a>b&&a&b、a>c&&a|c以及c等)。这里,第一子条件可以是a>b&&a&b,并且该第一子条件对应于第一块512。第二子条件可以是c,并且该第二子条件可以对应于第二块522。
这样,可以在FPGA 510和FPGA 520上分别运行第一和第二子条件以及第一和第二块,以确定触发条件310是否满足。
在一些实施例中,可以在FPGA 510上配置控制单元514。控制单元514可以是一个小型处理器,具有一定的计算和缓存能力。控制单元514经由总线516连接到作为DUT的第一块512。第一块512在FPGA 510上运行,可以产生包括信号a和b在内的信号。控制单元514可以确定信号a和b的值,并且根据上述信号a和b的值确定第一子条件的输出值(例如,“1”或“0”)。
信号a和b的值并不一定是直接由第一块512经由总线516传输给控制单元514。在一些实施例中,控制单元514可以读取第一块512中与信号a和b关联的信号值。例如,控制单元514可以读取第一块512中关键触发器(flip-flop)的值,并且根据第一块512的描述(例如,第一块512的电路结构的描述)来计算信号a和b的值。由此可见,控制单元514无需第一块512将信号a和b直接传输到控制单元514。
这样,当需要调整触发条件310以及第一子条件时,仅需要在控制单元514进行软件配置,计算对应的信号的值,而不需要对FPGA 510进行重新配置形成对应的硬件连接关系。
在获取信号a和b的值后,控制单元514可以计算第一子条件的输出。例如,仿真系统200可以生成与第一子条件对应的第一查找表,并且在控制单元514的存储器中利用存储器的多个存储单元实现第一查找表。相关描述已经在上文提供,此处不再赘述。第一查找表的输入可以是信号a和b。
类似地,在FPGA 520上配置控制单元524,并在控制单元524上运行第二子条件(例如,“c”)以及确定第二子条件的输出值。
在一些实施例中,最终触发条件310的计算可以集中在一个控制单元上进行,例如,集中到控制单元514。因此,控制单元524可以将第二子条件的输出值发送到控制单元514,并且由控制单元514获取多个子条件的输出值,确定触发条件310是否满足。
图6示出了根据本公开实施例的一种用于在仿真器上仿真逻辑系统设计的示例性方法600的流程示意图。
该用于在仿真器上仿真逻辑系统设计的方法600可以由图2所示的仿真系统200执行。所述仿真系统200可以包括电子设备100以及仿真器210。仿真器210可以包括多个FPGA。电子设备100可以运行编译器120等软件。所述方法600可以包括以下步骤。
在步骤602,仿真系统200可以获取检测模块的描述(例如,图3A所示的描述300),所述检测模块的描述包括触发条件(例如,图3A所示的触发条件310),所述触发条件包括多个信号(例如,信号a、b和c)。
在步骤604,仿真系统200可以将所述逻辑系统设计(例如,图2所示的逻辑系统设计202)切割为多个块(例如,图5所示的块512和522),所述多个块包括第一块和第二块,所述第一块和第二块被分别分配到第一FPGA(例如,图5所示的FPGA 510)和第二FPGA(例如,图5所示的FPGA520)。
在步骤606,仿真系统200可以将所述触发条件分解为与所述多个块对应的多个子条件,其中,所述子条件包括第一子条件(例如,图3A所示的触发条件310中的“a>b&&a&b”)和第二子条件(例如,图3A所示的触发条件310中的“c”),所述第一子条件对应于所述第一块,所述第二子条件对应于所述第二块。
在步骤608,仿真系统200可以在所述多个FPGA上分别运行所述多个子条件和所述多个块以确定所述触发条件是否满足。
在一些实施例中,所述第一子条件与至少一个目标信号关联,仿真系统200在所述多个FPGA上分别运行所述多个子条件和所述多个块进一步包括:在所述第一FPGA上配置第一控制单元(例如,图5所示的控制单元514);在所述第一FPGA上运行所述第一块,以产生所述至少一个目标信号(例如,信号a和b);由所述第一控制单元确定所述至少一个目标信号的值;以及基于确定的所述至少一个目标信号的值确定所述第一子条件的第一输出值(例如,“1”或“0”)。
在一些实施例中,由所述第一控制单元确定所述至少一个目标信号的值进一步包括:由所述第一控制单元从所述第一块读取与所述至少一个目标信号关联的信号值(例如,第一块512中关键触发器(flip-flop)的值);由所述第一控制单元基于所述信号值和所述第一块的描述(例如,第一块512的电路结构的描述)确定所述至少一个目标信号的值。
在一些实施例中,仿真系统200基于确定的所述至少一个目标信号的值确定所述第一子条件的输出值进一步包括:生成与所述第一子条件对应的第一查找表,所述第一查找表的输入是所述至少一个目标信号;在所述第一控制单元的存储器中利用所述存储器的多个存储单元实现所述第一查找表。
在一些实施例中,方法600还可以包括:在所述第二FPGA(例如,图5所示的FPGA520)上配置第二控制单元(例如,图5所示的控制单元524);在所述第二控制单元上运行所述第二子条件(例如,图3A所示的触发条件310中的“c”);确定所述第二子条件的第二输出值;以及将所述第二输出值发送到所述第一控制单元。
在一些实施例中,在所述多个FPGA上分别运行所述多个子条件和所述多个块以确定所述触发条件是否满足进一步包括:由所述第一控制单元获取所述多个子条件的多个输出值;以及由所述第一控制单元基于所述多个输出值确定所述触发条件是否满足。
本公开实施例通过将触发条件适应性地分解并且在对应的FPGA上运行,降低了单个FPGA的运算压力和获取数据的通信压力。同时,通过在多个FPGA利用控制单元本地化处理触发子条件的信号可以提高系统的灵活性,仅需要在控制单元进行软件配置,计算对应的信号值,而不需要对FPGA进行重新配置形成对应的硬件连接关系来专门用于获取信号值。采用本实施例提供的利用查找表的方法能够快速查询确定触发条件的值而不用耗费过多计算资源,能够有效避免执行触发条件判定对仿真器性能造成的影响,同时也方便根据实际情况对触发条件进行灵活调整,保持处理触发条件的灵活性。
基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种电子设备,所述电子设备可以包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上任一实施例所述的用于在仿真器上仿真逻辑系统设计的方法。
需要说明的是,本公开的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本公开的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的用于在仿真器上仿真逻辑系统设计的方法。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的用于仿真逻辑系统设计的方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本公开的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本公开难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本公开难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本公开的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本公开。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本公开旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本公开的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (8)
1.一种用于在仿真器上仿真逻辑系统设计的方法,其中,所述仿真器包括多个FPGA,所述方法包括:
获取检测模块的描述,所述检测模块的描述包括触发条件,所述触发条件包括多个信号;
将所述逻辑系统设计切割为多个块,所述多个块包括第一块和第二块,所述第一块和第二块被分别分配到第一FPGA和第二FPGA;
将所述触发条件分解为与所述多个块对应的多个子条件,其中,所述子条件包括第一子条件和第二子条件,所述第一子条件对应于所述第一块,所述第二子条件对应于所述第二块;
在所述多个FPGA上分别运行所述多个子条件和所述多个块以确定所述触发条件是否满足。
2.如权利要求1所述的方法,其中,所述第一子条件与至少一个目标信号关联,在所述多个FPGA上分别运行所述多个子条件和所述多个块进一步包括:
在所述第一FPGA上配置第一控制单元;
在所述第一FPGA上运行所述第一块,以产生所述至少一个目标信号;
由所述第一控制单元确定所述至少一个目标信号的值;以及
基于确定的所述至少一个目标信号的值确定所述第一子条件的第一输出值。
3.如权利要求2所述的方法,其中,由所述第一控制单元确定所述至少一个目标信号的值进一步包括:
由所述第一控制单元从所述第一块读取与所述至少一个目标信号关联的信号值;
由所述第一控制单元基于所述信号值和所述第一块的描述确定所述至少一个目标信号的值。
4.如权利要求2或3所述的方法,其中,基于确定的所述至少一个目标信号的值确定所述第一子条件的第一输出值进一步包括:
生成与所述第一子条件对应的第一查找表,所述第一查找表的输入是所述至少一个目标信号;
在所述第一控制单元的存储器中利用所述存储器的多个存储单元实现所述第一查找表。
5.如权利要求2所述的方法,进一步包括:
在所述第二FPGA上配置第二控制单元;
在所述第二控制单元上运行所述第二子条件;
确定所述第二子条件的第二输出值;以及
将所述第二输出值发送到所述第一控制单元。
6.如权利要求5所述的方法,其中,在所述多个FPGA上分别运行所述多个子条件和所述多个块以确定所述触发条件是否满足进一步包括:
由所述第一控制单元获取所述多个子条件的多个输出值;以及
由所述第一控制单元基于所述多个输出值确定所述触发条件是否满足。
7.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1至6任意一项所述的方法。
8.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行权利要求1至6任一所述方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2021108219962 | 2021-07-21 | ||
CN202110821996.2A CN113283203A (zh) | 2021-07-21 | 2021-07-21 | 用于仿真逻辑系统设计的方法、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115422866A true CN115422866A (zh) | 2022-12-02 |
Family
ID=77286823
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110821996.2A Pending CN113283203A (zh) | 2021-07-21 | 2021-07-21 | 用于仿真逻辑系统设计的方法、电子设备及存储介质 |
CN202210864665.1A Pending CN115422866A (zh) | 2021-07-21 | 2022-07-21 | 用于在仿真器上仿真逻辑系统设计的方法及相关设备 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110821996.2A Pending CN113283203A (zh) | 2021-07-21 | 2021-07-21 | 用于仿真逻辑系统设计的方法、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN113283203A (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114329644B (zh) * | 2021-11-17 | 2023-03-24 | 芯华章科技股份有限公司 | 对逻辑系统设计进行加密仿真的方法、设备及存储介质 |
CN115291963B (zh) * | 2022-06-17 | 2025-03-04 | 芯华章科技股份有限公司 | 配置硬件资源的方法、电子设备及存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102375906B (zh) * | 2010-08-27 | 2013-07-24 | 雅格罗技(北京)科技有限公司 | 一种基于模式匹配的fpga逻辑综合方法 |
CN102375905B (zh) * | 2010-08-27 | 2013-01-16 | 雅格罗技(北京)科技有限公司 | 一种针对改进逻辑单元的集成电路的工艺映射方法 |
CN106650103B (zh) * | 2016-12-23 | 2018-05-08 | 中国人民解放军军械工程学院 | 部分双模冗余的故障检测电路的设计方法 |
JP2021009441A (ja) * | 2019-06-28 | 2021-01-28 | ルネサスエレクトロニクス株式会社 | 異常検知システム及び異常検知プログラム |
CN111931445B (zh) * | 2020-10-09 | 2020-12-29 | 芯华章科技股份有限公司 | 用于调试逻辑系统设计的方法、仿真器及存储介质 |
CN112462240B (zh) * | 2020-12-04 | 2024-08-27 | 深圳国微芯科技有限公司 | 支持跨芯片信号同步触发检测方法及装置 |
-
2021
- 2021-07-21 CN CN202110821996.2A patent/CN113283203A/zh active Pending
-
2022
- 2022-07-21 CN CN202210864665.1A patent/CN115422866A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN113283203A (zh) | 2021-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9703579B2 (en) | Debug environment for a multi user hardware assisted verification system | |
CN112100957B (zh) | 用于调试逻辑系统设计的方法、仿真器、存储介质 | |
WO2016026328A1 (zh) | 一种信息处理方法、装置及计算机存储介质 | |
CN111656321B (zh) | 用加速器的调用来动态替换软件库中的调用 | |
CN115422866A (zh) | 用于在仿真器上仿真逻辑系统设计的方法及相关设备 | |
CN112287569B (zh) | 用于仿真逻辑系统设计的方法、电子设备及存储介质 | |
US10387584B1 (en) | Streaming on hardware-software platforms in model based designs | |
CN116663467B (zh) | 断言等效硬件库的构建方法、装置、电子设备及存储介质 | |
CN112434478B (zh) | 仿真逻辑系统设计的虚拟接口的方法及相关设备 | |
Koehler et al. | Performance analysis challenges and framework for high-performance reconfigurable computing | |
CN111209203A (zh) | 一种基于源代码的模型验证方法 | |
CN112597064B (zh) | 对程序进行仿真的方法、电子设备及存储介质 | |
US9092567B2 (en) | Systems and methods for analyzing transactions in a computer system | |
CN115827568B (zh) | 获取逻辑系统设计的数据的方法、电子设备和存储介质 | |
US9619598B2 (en) | Input space reduction for verification test set generation | |
CN115827636A (zh) | 存储及从波形数据库读取逻辑系统设计的仿真数据的方法 | |
CN116911219A (zh) | 用于逻辑系统设计的仿真的方法、电子设备和存储介质 | |
CN117910398A (zh) | 仿真逻辑系统设计的方法、电子装置和存储介质 | |
CN115470125B (zh) | 基于日志文件的调试方法、设备以及存储介质 | |
CN112506806B (zh) | 用于调试程序的方法、电子设备及存储介质 | |
CN112464636B (zh) | 约束文件的比较方法、装置、电子设备和存储介质 | |
CN112232003B (zh) | 对设计进行仿真的方法、电子设备及存储介质 | |
CN116228515A (zh) | 硬件加速系统、方法及相关装置 | |
CN111240972B (zh) | 一种基于源代码的模型验证装置 | |
CN112131806A (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 |