CN104615477B - 分析fpga的方法和系统 - Google Patents
分析fpga的方法和系统 Download PDFInfo
- Publication number
- CN104615477B CN104615477B CN201410602559.1A CN201410602559A CN104615477B CN 104615477 B CN104615477 B CN 104615477B CN 201410602559 A CN201410602559 A CN 201410602559A CN 104615477 B CN104615477 B CN 104615477B
- Authority
- CN
- China
- Prior art keywords
- fpga
- computer
- daily record
- tool
- previous
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 47
- 238000003860 storage Methods 0.000 claims description 46
- 230000008569 process Effects 0.000 claims description 16
- 238000004458 analytical method Methods 0.000 claims description 10
- 238000004088 simulation Methods 0.000 claims description 9
- 238000011156 evaluation Methods 0.000 claims description 6
- 230000006399 behavior Effects 0.000 claims description 5
- 230000002123 temporal effect Effects 0.000 claims description 5
- 238000006243 chemical reaction Methods 0.000 abstract description 3
- 238000012544 monitoring process Methods 0.000 abstract description 3
- 238000013461 design Methods 0.000 description 36
- 238000010586 diagram Methods 0.000 description 22
- 238000004891 communication Methods 0.000 description 17
- 238000012360 testing method Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 12
- 238000004590 computer program Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 10
- 230000015572 biosynthetic process Effects 0.000 description 8
- 238000003786 synthesis reaction Methods 0.000 description 8
- 238000013478 data encryption standard Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 238000001514 detection method Methods 0.000 description 5
- 238000005259 measurement Methods 0.000 description 5
- 235000008733 Citrus aurantifolia Nutrition 0.000 description 4
- 235000011941 Tilia x europaea Nutrition 0.000 description 4
- 230000009172 bursting Effects 0.000 description 4
- 239000004571 lime Substances 0.000 description 4
- 229910001338 liquidmetal Inorganic materials 0.000 description 4
- 230000005055 memory storage Effects 0.000 description 4
- 239000000047 product Substances 0.000 description 4
- 241001269238 Data Species 0.000 description 3
- 230000009471 action Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000003556 assay Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 241001589086 Bellapiscis medius Species 0.000 description 1
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- RWSOTUBLDIXVET-UHFFFAOYSA-N Dihydrogen sulfide Chemical compound S RWSOTUBLDIXVET-UHFFFAOYSA-N 0.000 description 1
- 235000012364 Peperomia pellucida Nutrition 0.000 description 1
- 240000007711 Peperomia pellucida Species 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000004907 flux Effects 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 210000003127 knee Anatomy 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000000246 remedial effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000452 restraining effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000002194 synthesizing effect Effects 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/3185—Reconfiguring for testing, e.g. LSSD, partitioning
- G01R31/318516—Test of programmable logic devices [PLDs]
- G01R31/318519—Test of field programmable gate arrays [FPGA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
- G06F30/3312—Timing analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
- G06F30/23—Design optimisation, verification or simulation using finite element methods [FEM] or finite difference methods [FDM]
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Debugging And Monitoring (AREA)
Abstract
如此处描述的那样,一种工具记录系统中所有非确定性源的日志(或踪迹)。在多数情况下,只需记录系统所有入口和出口点上的全部转换和确切时间戳便足够了。使用此信息,可通过仿真重建硬件系统的周期精确级执行。与允许监视设计中少量信号的CHIPSCOPE和SIGNALTAP不同,此工具提供对整个系统的可见性。
Description
本发明涉及计算机仿真,特别地,涉及在现场可编程门阵列(FPGA)中实现的用于分析所述FPGA的方法和系统。
背景技术
存在多种可用于在仿真中检验硬件描述语言(HDL)设计的工具。多数功能错误可通过仿真被检测和修复,在仿真中设计中的每个位可在每个时钟转换上被观察。但是,一旦设计进入现场可编程门阵列(FPGA),可观察性通常便会降低。
最难发现的错误是那些很难再现的错误。这些错误一般是因为在部署中(而非在测试中)出现意外数据值,或者因为系统的各种物理组件的非确定性行为导致的微妙的时间相关的属性。
一般而言,工具用于记录芯片而非仿真程序中各种信号的值。
发明内容
在本发明的一方面,提供一种至少部分地在现场可编程门阵列(FPGA)中实现的用于分析所述FPGA的方法,所述方法包括:所述FPGA判定在所述FPGA中发生的多个事件;所述FPGA将时间戳与所判定的事件中的每一个关联;以及所述FPGA创建所述事件和各自时间戳的日志。
在另一实施例中,提供一种用于分析现场可编程门阵列(FPGA)的计算机程序产品,所述计算机程序产品包括上面存储程序指令的计算机可读存储介质,所述程序指令可至少部分地由所述FPGA执行以使所述FPGA执行包括以下操作的方法:判定在所述FPGA中发生的多个事件;将时间戳与所判定的事件中的每一个关联;以及创建所述事件和各自时间戳的日志。
在本发明的另一方面,提供一种计算机实现的用于基于FPGA事件和各自时间戳的日志分析现场可编程门阵列(FPGA)的系统,所述系统包括:输入元件,其被配置为接收所述日志;重放元件,其被配置为通过仿真,利用所述日志重放先前的FPGA执行;以及输出元件,其被配置为输出所述仿真。
附图说明
当结合附图阅读下面的详细描述时,本发明的各个目标、特征和优点对于本领域的技术人员来说将变得显而易见,在附图中:
图1示出根据本发明实施例的工具框架的框图。
图2示出根据本发明实施例的工具框架的框图。
图3示出根据本发明实施例的基准表。
图4示出根据本发明实施例的结果图。
图5示出根据本发明实施例的结果图。
图6示出根据本发明实施例的最大合成时钟频率表。
图7示出根据本发明实施例的日志大小记录表。
图8示出传统系统的框图。
图9示出根据本发明实施例的系统的框图。
图10示出根据本发明实施例的系统的框图。
图11示出根据本发明实施例的系统的框图。
图12示出根据本发明实施例的方法的框图。
图13示出根据本发明实施例的系统的框图。
具体实施方式
如此处描述的那样,一种工具(也称为发明工具框架或发明工具)记录系统中所有非确定性源的日志或踪迹(trace)。在多数情况下,只需记录系统所有入口和出口点上的全部转换和确切时间戳便足够了。通过使用此信息,可以通过仿真重建硬件系统的周期精确级执行。与允许监视设计中少量信号的CHIPSCOPE(ChipScope Pro软件和核。Tech.Rep.UG029(v14.3),XILINX,2012年10月)和SIGNALTAP不同(ALTERA SIGNALTAP(使用SignalTapII逻辑分析器的设计调试。Tech.Rep.QII53009-13.0.0,Altera,2013年5月。Quartus II手册,第13章)不同,发明工具的多个实施例提供对整个系统的可见性。
发明工具的多个实施例提供若干优势。首先,可按照需要的频率重放失败的执行以查找问题源。第二,开发者具有对设计的完全可见性,并且可检查仿真器中的任何信号的值(在一个示例中,只需要使用设计中的某些事件,就能通过仿真看到硬件中的一切)。可以迅速形成假设并对其进行测试和修改。这样基本消除了猜测并显著缩短了故障恢复时间。
根据本发明,在此类周期精确级重放系统中,当日志变满时,重放能力便会结束。可通过提供将日志流式传输到提供扩展容量的DRAM和/或SRAM(例如,通过CHIPSCOPE之类的工具所使用的芯片上BRAM)的能力来弱化此问题。
根据本发明,存在某些延迟的可能性:在某一点上,片外缓冲器可能溢出。但是,已经发现许多问题可通过可用的缓冲器大小有效地进行诊断。
根据本发明的实施例,对于仅在长执行中显现的错误,发明工具可通过基于快照的技术(例如,S.G.Hanono。InnerView硬件调试器:用于虚拟线仿真系统的逻辑分析工具。硕士论文,MIT,1995年)扩展,尽管快照本身可能构成可能很重要的探测效应。
现在参考根据一个实施例的工具框架的设计和实现。在该示例中,发明工具框架包括两个组件:基于FPGA的运行时组件和基于主机的踪迹处理器(被称为发明工具播放器)。基于FPGA的运行时组件在软件-硬件(SW-HW)协作设计系统中或单独的硬件系统中,在执行期间进行数据记录和检索。发明工具播放器包括测试套具(harness),该套具使用踪迹执行系统级仿真,以便以周期精确级方式重放FPGA执行。测试套具本身可以高级语言编写并且经由编程语言接口(PLI)被挂钩(hook)到待测设计(DUT)的HDL代码,或者完全使用HDL编写。
现在参考片上组件,被嵌入FPGA中的用户设计的插装(instrumentation)包括三个组件,它们处理多个通道上调试数据的记录(logging)、存储和读回。片上组件包括下面所述的记录器、后备存储器和读取器。
发明工具记录器支持可配置数量的调试通道和通道位宽。另外,每个调试通道可属于完全不同的时钟域。记录器101的高级框图在图1中示出。图1示出用于调试通道0主控制信号和数据信号(为了使图简化,未包括其余的信号)。记录器由全局信号“开始”控制。在设定(assert)“开始”之前到达的任何调试数据都被忽略。每个通道上的调试数据都具有时间戳并且在异步FIFO中排队。FIFO具有两个作用:充当临时存储,以及便利从调试时钟域到发明工具时钟域的调试数据时钟域跨越。另外,每个队列可在编译时单独地调整大小以匹配每个接口上交易(transact)数据的速率。在多个试验(在下面描述)中,每个队列被设定为存储512个条目。
现在参考图1,记录器使用急切轮询(eager Round-Robin)拓扑103选择调试队列中的一个;以循环的方式选择第一非空调试队列。通道选择的公平性可通过选择用于仅1个时钟周期的通道来确保。加权调度拓扑也会在仲裁器中构建。从FIFO检索的数据被加上通道标识符作为前缀。由于每个调试通道可具有可不同于后备存储器的宽度(猝发大小)的任意数据宽度,因此数据被馈入编排器(marshaller)105,该编排器产生与后备存储器的宽度(猝发大小)匹配的输出。编排器的输出在FIFO中排队。来自FIFO的数据然后被发送到存储控制器以写入后备存储器。
记录器101以每个调试通道上的若干统计计数器插装,这些统计计数器跟踪事件,例如,事务总数、已丢弃事务的数量、首次丢弃的时间等。这些计数器相当昂贵(就硬件而言),但是很有价值,因为精确地了解任何通道上的数据是否被丢弃以及丢弃的时间非常重要。踪迹只在任何通道上都没有任何数据被丢弃的时点之前有用。在数据被丢弃的时刻之后,踪迹将失去作用,因为在该点之后,不能以高保真度重放执行。
记录器在每当发生以下条件之一时产生“错误”信号:1)通道之一上的数据被丢弃;2)后备存储器变满。“错误”信号被用于遮蔽任何进一步将调试数据写入队列。当条件1发生时,队列中的所有未决数据被排出(drain)到后备存储器。但是,在条件2下,丢弃队列和内部寄存器中的任何数据。
现在参考后备存储器,发明工具可被配置为使用基于片上和/或片外存储的不同类型的后备存储器。FPGA板经常具有若干片外存储模块,例如SRAM、DRAM、闪存等,并且经常并非所有的存储模块被用户应用使用。在这种情况下,用户很容易利用未使用的片外存储模块并使用其作为发明工具后备存储器。在片外存储器不可用(由于它被应用使用,或者板上没有一个存储器)的情况下,可使用片上BRAM作为后备存储器。
现在参考发明工具读取器,读取器负责从后备存储器读取踪迹并将其发送到主机。踪迹读回通过Read(读取)信号控制。Read由主机经由寄存器写入来控制。图2示出读取器模块201的简单框图。读取器针对后备存储器生成读取请求和读取地址,直到所有踪迹被读取。从后备存储器读取的踪迹在异步FIFO中排队以将来自发明工具时钟域的数据发送到应用逻辑时钟域。然后对数据进行编排203以将对应于存储器宽度(猝发大小)的宽度转换为通信信道宽度。
现在参考基于主机的踪迹处理器,或者发明工具播放器,提供了一种仿真框架以使用从FPGA获取的踪迹,通过HDL仿真重放执行。在该示例中,播放器包括SYSTEMVERILOG测试套具,该测试套具读取踪迹,产生用于设计的测试向量,然后检验结果。由于踪迹针对所有接口提供精确的时间信息,因此测试套具不仅产生数据和检验结果,而且还检验每个输入和输出事务的确切时间。仿真使用的设计文件集与用于合成的设计文集完全相同。由于该示例驱动待测设计的所有外部接口,因此,该示例可运行仿真,以与用于功能仿真的方式相同的方式查看和调试设计中的任何信号。
现在参考若干案例研究。在这些案例研究中,FPGA系统中的多个功能和运行时故障已经针对在HDL以及LIME(来自IBM)HLS框架(在下面进行描述)中的本机编写的应用,通过使用发明工具分析过。
在第一案例研究中,在测试MERSENNE TWISTER应用(一种用于伪随机数生成的算法)时,发现在运行应用一段时间之后,FPGA中的用户应用开始将有缺陷(deformed)的数据包返回到主机。这导致在LIME测试套具中出现空指针异常。在主机侧基于数据日志无法进行结论性分析。设计由发明工具插装,并且已经发现用户应用响应于来自主机的触发生成极大数量的数据。但是,主机不能足够快地从FPGA排出数据。这导致反压力从FPGA服务层施加到用户应用层。通过发明工具,可确认数据包由用户应用层正确地产生,但是最可能被FPGA服务层的损坏。由于FPGA服务层由第三方提供,因此通过在更大的数据包大小上执行操作避免了该问题。
第二案例是用于MEMOCODE 2013设计(Memocode是每年组织设计竞赛的一个会议,Memocode2013是指作为Memocode2013设计竞赛一部分的设计问题)的DRAM控制器中的错误。用户设计包含计算内核和负载存储单元(LSU)。LSU负责从DRAM提取数据并将来自计算内核的结果存储到DRAM内。该MEMOCODE设计非常耗费存储器,需要230B的数据才能触发产生64B结果的计算内核。计算内核完全流水线化,从而它能够在每个周期接受320B并产生64B结果。为了最大化计算吞吐量,LSU被设计为每个周期产生一个读取请求。尽管设计在仿真中工作正常,但测试从未在FPGA中完成执行。唯一的区别是仿真使用存储控制器和存储器的理想行为模型。通过使用发明工具,发现在接受和处理多个读取请求之后,存储控制器停止返回任何数据。这导致LSU状态机发生死锁,以等待来自存储器的数据。作为补救措施,LSU被节制(throttle)以便以短猝发工作,从而在产生少量读取请求之后暂停,并等待所有请求得到处理。节制设计不会对整体性能产生影响,因为即使设计被节制,存储器带宽也能饱和。
第三案例涉及网络接口。从第三方获取10G MAC和UDP内核(UDP是网络协议)的授权以开发基于网络的应用。最初,使用环回(loopback)测试来测量10G链路的延迟和吞吐量。延迟测试迭代地执行阻塞发送和之后的阻塞接收,而吞吐量测试产生单独的、并行操作的发送和接收线程。延迟测试在该设置中工作正常,但是吞吐量测试在发送和接收一些数据包之后出现错误。使用WIRESHARK监视主机侧的10G接口,并且用发明工具对FPGA设计插装。最初怀疑错误位于FPGA中的网络栈层中的一个内,但是WIRESHARK和发明工具都显示相同数量的传出和传入数据包。这样便确认FPGA正常地执行操作,并且问题位于主机用户软件代码或主机CPU的以太网卡的网络栈中。
现在参考试验方法,其中使用六个基准评估发明工具:DES(DES是数据加密标准)、GZIP(GZIP是加密标准)、MERSENNE、N-BODY、UDP和MEMOCODE2013。这六个基准中的四个:DES、GZIP、MERSENNE和N-BODY完全使用LIME(J.Auerbach等人。用于异构计算的编译器和运行时。位于DAC第271–276页,2012年)编写。这些程序然后经由LIQUID METAL(来自IBM)HLS工具进行编译以产生VERILOG,后者然后使用FPGA向量合成工具进行合成。UDP基准在传入UDP流上实现回音(echo)。回音功能使用LIME编写,但是UDP成帧器和解帧器直接在VERILOG中实现。MEMOCODE2013(E.Nurvitadhi,Memocode 2013硬件/软件协作设计竞赛:立体匹配。位于MEMOCODE,2013)基准基于作为MEMOCODE 2013会议的一部分组织的设计竞赛。MEMOCODE 2013设计完全在VERILOG中实现。
这些基准是从不同的应用域中选择的并且是FPGA上实现的应用类型的适合代表。这些基准的选择使得发明工具的适用性可通过不同数量和不同大小的调试通道来展现。图3的表示出针对不同基准的发明工具配置。DES、GZIP、MERSENNE和N-BODY各具有2个宽度为16B的调试通道。UDP具有4个宽度分别为14B、8B、16B和16B的调试通道。MEMOCODE2013具有6个宽度分别为69B、64B、32B、32B、16B和16B的调试通道。
基准中的每一个与XILINX CHIPSCOPE以及以下三个不同的发明工具配置配对:(1)具有BRAM的发明工具;(2)具有SRAM的发明工具;(3)具有DRAM的发明工具。用于不同配置的CHIPSCOPE ILA和ICON内核(CHIPSCOPE PRO软件和内核。Tech.Rep.UG029(v14.3),Xilinx,2012年10月)使用XILINX COREGEN工具产生。用于所有基准的CHIPSCOPE ILA(除了MEMOCODE2013)具有8192的样本数据深度。对于MEMOCODE2013,使用1024的深度,因为对于其它任何配置,大量的调试通道和宽数据路径会导致BRAM资源的过度映射。为确保公平比较,发明工具/BRAM配置被设定为具有相同数量的存储,即使采用不同的纵横比。另外,发明工具/BRAM中后备存储器的数据宽度被设定为16B。这是编译时间参数,用户可设定适合应用要求的数据宽度。发明工具/BRAM深度被调整为使得总可用存储与CHIPSCOPE ICON内核共同使用的存储相同。在发明工具/SRAM和发明工具/DRAM的情况中,所用的存储配置是FPGA板提供的配置。
对于这些试验,使用NALLATECH PCIE287(Nallatech。Nallatech PCIe-287FPGA网络处理卡,2013年3月。NT190-0461版本1.7)板,该板由2个XILINX KINTEX7K325T FPGAS构成。KINTEX7K325T是中档(mid-range)7系列FPGA设备,其由50,950个切片(slice)、840个DSP切片以及890个18Kb BRAM构成(Xilinx 7系列FPGA概述。Tech.Rep.DS180,Xilinx,2013年7月)。PCIe287板上的每个FPGA被连接到一个1GB DDR3SDRAM组(bank)和3个9MB QDR-IISRAM组。该板提供8道(lane)PCIe 2.0接口以便与主机连接。该板上的每个用户FPGA也被连接到2个1G/10G以太网端口。XILINX ISE 14.5被用于合成以及比特流生成。
下面给出结果分析。第一分析是4个合成配置的静态测量分析。对于资源利用率(切片和BRAM),4个非联网LIQUID METAL基准(DES、GZIP、MERSENNE和N-BODY)几乎相同,这不奇怪,因为它们用相同的调试通道宽度和数量被插装。因此,所呈现的只是对于这些数量的一个平均的测量集,在图4中标示为“LIQUID METAL/PCIe”。
另外需要指出,因为MEMOCODE基准本身使用DRAM,并且DRAM通道被记录,所以DRAM不可用于进行记录。因此,用于MEMOCODE的DRAM结果被标示为“未知”。
图4示出以切片数表示的逻辑资源利用率。切片计数在使用其的配置中被分解为CHIPSCOPE或发明工具记录基础设施本身(“基础设施”)所需的逻辑以及用于外部存储器(“存储控制器”)的IP块。
首先,可以看出CHIPSCOPE与发明工具之间在切片利用率方面的最大差别在于存储控制器本身。特别是DRAM控制器消耗大约3000个切片,而SRAM控制器消耗大约1000个切片。DRAM控制器较大(大约3000个切片对比大约1000个切片),这是因为以下两个原因:DRAM内在地更复杂,而且它在NALLATECH板上具有更宽得多的猝发大小并且使用更多IO引脚。
第二,随着调试通道的宽度和数量增加,CHIPSCOPE和发明工具两者的切片计数器也在增加,这是可预期的。
第三,根据配置,发明工具使用的切片数可多于CHIPSCOPE,这取决于配置和存储接口成本两者。
总之,与CHIPSCOPE相比,发明工具一般消耗更多的片上逻辑,但是差别主要由存储控制器决定。在这些情况下,权衡是外部存储器提供大几个数量级的日志,如下所示。对于所使用的KINTEX 7芯片,即使最大的发明工具配置也仅消耗芯片上10.1%的切片(与用于CHIPSCOPE的1.9%相对)。在较小的器件上,开销可能成为问题。
图5示出块RAM资源利用率。当日志被存储在BRAM而非片外(CHIPSCOPE和发明工具/BRAM)中时,除了将BRAM使用按照基础设施和存储控制器分解之外,还示出了用于日志本身的BRAM使用。对于CHIPSCOPE,没有对设计的可见性,因此,所有BRAM归因于日志;可认为较小数量用于缓冲。
另外需要指出,对于MEMOCODE基准,由于日志条目较宽,因此BRAW日志针对1K条目配置(与用于其它应用的8K相比),因为否则,CHIPSCOPE或发明工具/BRAW均无法适合。
来自这些测量的主要洞察是,与记录到BRAM本身相比,当记录到外部存储器时,所使用的BRAM少很多。量化很重要。因为DRAM模块更复杂,所以与SRAM模块相比,它消耗更多的BRAM。
即使发明工具消耗更多的切片,当在片外记录时,它也消耗更少的BRAM,同时提供显著扩大的日志大小和更大的功能。
由于发明工具很复杂,因此当记录到BRAM时,存在为基础设施付出的损失。发明工具不仅记录数据,而且还记录时间戳和通道标识符,从而使得日志条目的大小变大。尤其可在两个LIQUID METAL基准(请参阅图5)中看到此情况,其中发明工具/BRAM配置消耗的BRAM几乎是CHIPSCOPE的两倍。对于MEMOCODE基准,由于通道更宽,因此时间戳消耗成比例更少的数据,并且不平衡更小。
但是,因为发明工具使用单个日志缓冲器,所以比较不完全是一对一的。当应用在不同的通道上记录可变数量的条目时,发明工具使用单个日志避免了分片(fragmentation),并且实际上可允许较低的资源利用率。
图6示出显示频率的表。为了测量调试插装对基准的合成时钟频率的影响,基准中的每一个在没有任何插装(“Base”)的情况下迭代地合成,直到实现最大时钟频率。基准然后以发明工具以及该目标频率上的三个发明工具配置进行插装。对于发明工具,由于数据记录位于不同的时钟域,因此尝试合成以在不影响基准目标频率的情况下最大化发明工具的时钟频率。
现在参考图6中的表,可看出,该表显示用于所有基准的CHIPSCOPE和三个发明工具配置的合成时钟频率。如上所述,MEMOCODE2013基准无法用于记录,因为它使用DRAM存储应用特定的数据。
基于CHIPSCOPE的设计能够满足用于除MERSENNE之外所有基准的“Base”设计的目标时钟频率。以CHIPSCOPE插装MERSENNE导致时间错误。尽管基于CHIPSCOPE的设计遭受频率劣化,以三个发明工具配置插装“Base”设计不会导致用于任何基准的频率劣化。但是,图6中的表显示了发明工具时钟域中的时钟频率随着调试通道的数量和宽度的增加而降低。
以尽可能高的频率运行发明工具逻辑减轻了调试通道缓冲器上的反压力(理想地,发明工具的频率应该与后备存储器的吞吐量匹配)。合成之后的时间报告被分析,并且发现发明工具中的最长关键路径位于来自不同通道的调试数据的选择和序列化逻辑中。
现在参考在不同记录配置下运行的基准的动态测量。
根据本发明,一个受关注的属性是执行被记录和重放所需的时长。这受到以下三个因素影响:应用执行的自然长度,日志存储器的大小,以及记录基础设施以便与数据同步以及正确地缓冲它并将它流式传输到日志的能力。
在某些情况下,如果应用和插装以较高的持续速率产生数据,则日志可能无法跟上。
结果在图7中的表中示出。对于每个配置,报告记录了多少“干净的”日志数据:即,直到记录基于以下原因停止:应用结束(“完成”),日志缓冲器变满(“溢出”),或者记录模块无法跟上(“丢弃”),此时报告包括在执行中发生此情况的真实时间。
一般而言,无论对于CHIPSCOPE还是发明工具,BRAM都受到容量限制并且总是溢出(请参阅图7中的表格)。当记录到SRAM时,发明工具导致以下三种情况中的一个:(1)就像在DES和N-BODY的情况中那样,成功地记录踪迹;(2)就像在UDP的情况中那样,导致溢出;(3)就像在GZip、MERSENNE和MEMOCODE的情况中那样,丢弃数据。数据溢出和丢弃是因为NALLATECH 287板上SRAM存储器的带宽较低。
另一方面,当与DRAM一起使用时,发明工具一般完成应用,因为DRAM具有较大的存储空间,这允许记录完整的踪迹,并且宽DRAM接口允许记录数据与被创建一样快地被流式传输出去。
图8示出传统系统的框图。如图所示,FPGA 801包括内核803、内核805、PCIe控制器807、10G MAC+网络栈809、CHIPSCOPE ILA 811、CHIPSCOPE ILA 813和CHIPSCOPE ICON815。此外,主机817经由通信设备819与CHIPSCOPE ICON 815通信。
图9示出根据一个实施例的系统的框图。如图所示,FPGA 901包括内核903、内核905、PCIe控制器907、10G MAC+网络栈909、后备存储器911(位于FPGA 901上)和发明工具913。发明工具913例如在点A、B、C和D上获取数据(例如,调试数据)。此外,发明工具913执行与后备存储器911和PCIe控制器907(该控制器转而可与FPGA之外的元件(例如,诸如膝上型计算机、桌面计算机、服务器等之类的主机)通信)的数据通信。
图10示出根据本发明的另一实施例的系统的框图。如图所示,FPGA1001包括内核1003、内核1005、PCIe控制器1007、10G MAC+网络栈1009、后备存储器1011(位于FPGA 1001的外部)和发明工具1013。发明工具1013例如在点A’、B’、C’和D’上获取数据(例如,调试数据)。此外,发明工具1013执行与后备存储器1011和PCIe控制器1007(该控制器转而可与FPGA之外的元件(例如,诸如膝上型计算机、桌面计算机、服务器等之类的主机)通信)的数据通信。
在本发明的实施例中,从FPGA到主机(包括例如处理器)的日志数据读回可在带内执行。即,数据和调试信息都可通过主机与FPGA之间的相同的通信接口传送(该带内通信可能干扰主机、FPGA和/或硬件-软件协作执行的时间行为,也可能不干扰)。
在本发明的另一实施例中,(从FPGA到主机(包括例如处理器))的日志数据读回可在带外执行。即,数据和调试信息中的每一个可通过单独立的通信接口传送。也就是说,数据可通过第一通信接口在主机与FPGA之间传送,并且调试信息可通过第二不同的通信接口(例如,用于调试的以太网接口)在主机与FPGA之间传送。在多种示例中,这可提供非侵入式读回,和/或可用于经由用于远程调试的以太网接口实现读回作为服务。
在本发明的另一实施例中,日志可在以下时间被传送到主机(包括例如处理器):(a)在硬件-软件协作执行系统的运行时期间;(b)在硬件-软件协作执行系统的执行之后;或者(c)它们的组合。
在本发明的另一实施例中,日志可通过以太网通道发送到主机(包括例如处理器)作为UDP/TCP服务。
在本发明的另一实施例中,此处描述的任何步骤可通过任何适当的所需顺序执行。
此处描述了工具的设计和实现,该工具是用于运行FPGA系统的非侵入式、FPGA不可知的调试框架。
此处描述了重放装置,该装置用于再现事件(如它们在FPGA中发生那样)的周期精确级系统范围仿真。这使得整个设计而非只是被侦测的点可见。
此处描述了静态性能评估,其示出发明工具在绝对方面和相对于XILINXCHIPSCOPE的面积和BRAM开销,并且显示出发明工具没有对时钟频率的影响。
此处描述了动态性能评估,其示出发明工具针对若干不同基准可记录和重放执行多长时间。
此处描述的那样,硬件-软件协作执行系统(该硬件-软件协作执行系统包括至少一个处理器和至少一个FPGA)中基于踪迹的执行重放可以系统、方法和/或算法的形式实现。
在一个实施例中,可执行以下操作:创建在硬件-软件边界上发生的事件(以及时间戳)的踪迹。使用踪迹,通过硬件仿真在用于调试和/或性能分析目的的主机上重放事件序列。在一个特定示例中,事件的再现是整个系统(不仅是侦测点)的事件的100%时钟周期精确级再现。在另一特定的示例中,可通过使用片外存储器存储(例如,DDR-SDRAM/QDR-SRAM)提供实际上无限的踪迹存储能力。在另一特定的示例中,踪迹可在运行时期间和/或执行结束时被传送到主机。在另一特定的示例中,可通过以太网通道远程地从FPGA收集踪迹作为UDP/TCP服务。
图11示出根据本发明实施例的计算系统1100的硬件配置。如图所示,该硬件配置具有至少一个处理器或中央处理单元(CPU)1111。CPU 1111经由系统总线1112与随机存取存储器(RAM)1114、只读存储器(ROM)1116、输入/输出(I/O)适配器1118(用于将诸如磁盘单元1121和磁带驱动器1140之类的外围设备连接到总线1112)、用户接口适配器1122(用于将键盘1124、鼠标1126、扬声器1128、麦克风1132和/或其它用户接口设备连接到总线1112)、通信适配器1134(用于将系统1100连接到数据处理网络、因特网、内联网、局域网(LAN)等)以及显示适配器1136(用于将总线1112连接到显示设备1138和/或打印机1139(例如,数字打印机等))互连。
在多个示例中,所公开的装置可用于在细粒度级别上评估性能。在多个示例中,日志可被读回到与FPGA相连的主机,和/或日志可使用网络接口从远程读回(这便利了设计的远程分析/调试)。
如此处描述的那样,多个实施例可在以下上下文中操作:编译器、开发工具、软件环境、软件测试、软件维护、编程语言、解译器、程序分析、对象技术和/或垃圾收集。
如此处描述的那样,多个实施例可在以下上下文中操作:计算机-嵌入式系统;计算机-硬件;计算机-软件;计算机-服务器;计算机-工作站。
如此处描述的那样,多个实施例可提供内部逻辑探测。
如此处描述的那样,发明工具框架可在FPGA设计中的关键点上记录数据,然后使用踪迹运行整个设计的周期精确级仿真。已经显示出,从对应用的可合成频率的影响以及运行时行为这两方面而言,发明工具对于用户应用具有非侵入性。与多数典型的备选方案不同,在一个示例中,发明工具可与来自任何供应商的FPGA结合使用。发明工具作为HLS框架的补充提供了对于调试功能和运行时错误的综合解决方案。
在另一示例中,发明工具使用通信通道,但是仅在应用结束时或者在应用空闲时使用。
在另一示例中,日志(踪迹)可实时地和/或通过批处理被发送到主机。
此处描述了用于运行中的FPGA系统的周期精确级记录和重放以执行调试和性能分析的框架。
此处描述了基于FPGA的运行时组件和基于主机的后处理器(例如,用于分析)。
此处描述了可通过周期精确级再现仿真特定通道的框架。
此处描述了使用踪迹执行周期精确级HDL仿真以进行性能分析和/或调试失败的测试案例的框架。
在另一示例中,提供装置以:(a)降低开销(例如,时间戳、源侧数据的增量(delta)编码);(b)用于记录(主机)+时间戳(FPGA);(c)用于远程调试(例如,作为网络上的服务);(d)用于推进仿真;和/或(e)用于RAS(可靠性、可用性和可服务性)支持。
此处描述了一种用于执行以下操作的工具:记录非确定性数据和时间信息,从FPGA提取此信息,以及使用此信息,以通过仿真实现整个执行的周期精确级重放。在一个示例中,这允许具有对设计的完全可见性的交互调试。
此处描述了测量,这些测量显示出发明工具不影响可合成时钟频率,从而提供完全非侵入的插装。当记录到外部存储器时,发明工具与XILINX CHIPSCOPE相比消耗较少的BRAM,同时在付出适量的额外逻辑(这主要因为存储控制器本身)的情况下记录多出若干数量级的数据并提供完全的重放能力。
图12示出至少部分地在FPGA中实现的用于分析FPGA的方法。如图12所示,该实施例的方法包括:在1201,FPGA判定在FPGA中发生的多个事件;在1203,FPGA将时间戳与所判定的事件中的每一个关联;在1205,FPGA创建事件和各自时间戳的日志。
根据本发明,任何步骤可以所述的顺序执行,或者这些步骤可以另一顺序执行。
图13示出计算机实现的用于基于事件和各自时间戳的日志分析FPGA的系统1300。该系统可包括以下元件:输入元件1301,其被配置为接收日志;重放元件1303,其被配置为通过仿真,利用日志重放先前的FPGA执行;以及输出元件1305,其被配置为输出仿真。
现在参考图13,元件中的每一个可经由系统总线1302操作地连接在一起。在一个示例中,多个元件之间的通信可以是双向通信。在另一示例中,通信可经由网络1307(例如,因特网、内部网、局域网、广域网和/或其它任何所需的通信通道)执行。在另一示例中,这些元件中的部分或全部可在属于图11所示类型的计算机系统中实现。
在另一实施例中,提供一种至少部分地在现场可编程门阵列(FPGA)中实现的用于分析FPGA的方法,所述方法包括:FPGA判定在FPGA中发生的多个事件;FPGA将时间戳与所判定的事件中的每一个关联;以及FPGA创建事件和各自时间戳的日志。
在一个示例中,所述方法进一步包括通过仿真,使用日志重放先前的FPGA执行(在一个示例中,这将再现在事件之间发生的情况)。
在另一示例中,日志被主计算机用于通过仿真重放先前的FPGA执行。
在另一示例中,通过仿真重放先前的FPGA执行被用于以下至少一项:(a)调试;(b)性能分析;以及(c)它们的组合。
在另一示例中,再现先前的FPGA执行以用于仿真是100%时钟周期精确级再现。
在另一示例中,日志被存储在以下至少一项中:(a)FPGA的内部存储器;(b)FPGA外部的存储器;以及(c)它们的组合。
在另一示例中,日志在从以下各项中选择的时间被发送到主计算机:(a)实时地,当进程在FPGA中进行时;(b)批次地,当进程在FPGA中完成之后;以及(c)它们的组合。
在另一实施例中,提供一种用于分析现场可编程门阵列(FPGA)的计算机程序产品,所述计算机程序产品包括上面存储程序指令的计算机可读存储介质,所述程序指令可至少部分地由FPGA执行以使FPGA执行包括以下操作的方法:判定在FPGA中发生的多个事件;将时间戳与所判定的事件中的每一个关联;以及创建事件和各自时间戳的日志。
在一个示例中,所述程序指令可由计算机执行以使计算机执行包括通过仿真,使用所述日志重放先前的FPGA执行的方法。
在另一示例中,日志在从以下各项中选择的时间上被发送到主计算机:(a)实时地,当进程在FPGA中进行时;(b)批次地,当进程在FPGA中完成之后;以及(c)它们的组合。
在另一实施例中,提供一种计算机实现的用于基于FPGA事件和各自时间戳的日志分析现场可编程门阵列(FPGA)的系统,所述系统包括:输入元件,其被配置为接收日志;重放元件,其被配置为通过仿真,利用日志重放先前的FPGA执行(在一个示例中,这将再现在事件之间发生的情况);以及输出元件,其被配置为输出仿真。
在另一示例中,日志在从以下各项中选择的时间被发送到主计算机:(a)实时地,当进程在FPGA中进行时;(b)批次地,当进程在FPGA中完成之后;以及(c)它们的组合。
在另一示例中,输出仿真的输出元件包括显示器。
在另一实施例中,提供一种用于分析现场可编程门阵列(FPGA)的方法,所述方法包括:判定在FPGA中发生的多个事件;将时间戳与所判定的事件中的每一个关联;创建事件和各自时间戳的日志;以及通过仿真,利用日志重放先前的FPGA执行。在一个示例中,所述判定、关联和创建中的每一个由FPGA执行,而利用日志重放由主计算机等执行。
在另一实施例中,提供一种用于分析现场可编程门阵列(FPGA)的计算机程序产品,所述计算机程序产品包括上面存储程序指令的计算机可读存储介质,所述程序指令可至少部分地由FPGA执行以使FPGA执行包括以下操作的方法:判定在FPGA中发生的多个事件;将时间戳与所判定的事件中的每一个关联;以及创建事件和各自时间戳的日志。
在另一实施例中,提供一种用于基于FPGA事件和各自时间戳的日志分析现场可编程门阵列(FPGA)的计算机系统,所述计算机系统包括:输入元件,其被配置为接收日志;重放元件,其被配置为通过仿真,利用日志重放先前的FPGA执行;以及输出元件,其被配置为输出仿真(例如,显示仿真)。
在其它示例中,多个实施例可在多个FPGA(例如,多FPGA系统)的上下文中应用。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可包括计算机可读存储介质(或媒体),其上面具有用于使处理器执行本发明的各方面的计算机可读程序指令。
计算机可读存储介质可以是可保持和存储指令以便由指令执行装置执行的有形装置。计算机可读存储介质例如可以是——但不限于——电存储器件、磁存储器件、光存储器件、电磁存储器件、半导体存储器件、或者上述的任意合适的组合。计算机可读存储介质的更具体的例子的非穷举的列表包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式紧凑盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码的器件(例如,上面记录指令的穿孔卡片或凹槽中的浮雕结构)、或者上述的任意合适的组合。如此处使用的那样,计算机可读存储介质本身不能被视为临时信号本身,例如无线电波或其它自由传播的电磁波、通过波导或其它传输介质传播的电磁波(例如,穿过光纤电缆的光脉冲),或通过线传输的电信号。
此处描述的计算机可读程序指令可被从计算机可读存储介质下载到各个计算/处理设备,或者经由网络(例如,因特网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储器件。网络可包括铜制传输电缆、光传输电缆、无线传输、路由器、防火墙、交换器、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,然后转发这些计算机可读程序指令以将其存储在各个计算/处理设备内的计算机可读存储介质中。
用于执行本发明的各操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设定数据,或其它以一种或多种程序设计语言的任意组合编写的源代码或目标代码,所述程序设计语言包括面向对象的程序设计语言—诸如Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在某些实施例中,例如包括可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电路可利用计算机可读程序指令的状态信息执行计算机可读程序指令以个性化电路,从而执行本发明的各方面。
此处参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置、或其他设备以特定方式工作,从而,存储指令的计算机可读存储介质包括内含实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而在计算机、其它可编程装置或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
需要注意,上面概述了本发明的某些目标和实施例。本发明可用于许多应用。因此,尽管描述了特定的布置和方法,但是本发明的意图和概念也适合于并且适用于其它布置和应用。所属领域的技术人员将理解,可在不偏离本发明的精神和范围的情况下实现所公开的实施例的修改。所描述的实施例应该被视为仅用于说明本发明的某些特征和应用。通过以不同的方式应用所公开的发明或者以熟悉本领域的人员了解的方式修改本发明,可实现其它有利的结果。此外,此处公开的所有示例旨在作为说明,而非限制。
Claims (18)
1.一种至少部分地在现场可编程门阵列FPGA中实现的用于分析所述FPGA的方法,所述方法包括:
所述FPGA判定在所述FPGA中发生的多个事件;
所述FPGA将时间戳与所判定的事件中的每一个关联;
所述FPGA创建所述事件和各自时间戳的日志;
计算机接收所述日志;以及
计算机使用所述日志通过仿真重放先前的FPGA执行,其中所述重放基于所述日志中的非确定性数据和时间信息。
2.根据权利要求1的所述的方法,其中所述计算机是主计算机。
3.根据权利要求1所述的方法,其中通过仿真重放先前的FPGA执行被用于以下一项:(a)调试;(b)性能分析;以及(c)它们的组合。
4.根据权利要求1所述的方法,其中为了仿真再现先前的FPGA执行是100%时钟周期精确级再现。
5.根据权利要求1所述的方法,其中所述日志被存储在以下一项中:
(a)所述FPGA的内部存储器;(b)所述FPGA外部的存储器;以及(c)它们的组合。
6.根据权利要求2所述的方法,其中所述日志在从以下各项中选择的时间被发送到所述主计算机:(a)实时地,当进程在所述FPGA中进行时;
(b)批次地,当进程在所述FPGA中完成之后;以及(c)它们的组合。
7.一种存储程序指令的计算机可读存储介质,用于分析现场可编程门阵列FPGA,所述程序指令可至少部分地由所述FPGA和计算机执行以使所述FPGA和计算机执行包括以下操作的方法:
所述FPGA判定在所述FPGA中发生的多个事件;
所述FPGA将时间戳与所判定的事件中的每一个关联;
所述FPGA创建所述事件和各自时间戳的日志;
所述计算机接收所述日志;以及
所述计算机使用所述日志通过仿真重放先前的FPGA执行,其中所述重放基于所述日志中的非确定性数据和时间信息。
8.根据权利要求7所述的计算机可读存储介质,其中所述计算机是主计算机,所述日志被所述主计算机用于通过仿真重放先前的FPGA执行。
9.根据权利要求7所述的计算机可读存储介质,其中通过仿真重放先前的FPGA执行被用于以下一项:(a)调试;(b)性能分析;以及(c)它们的组合。
10.根据权利要求7所述的计算机可读存储介质,其中为了仿真再现先前的FPGA执行是100%时钟周期精确级再现。
11.根据权利要求7所述的计算机可读存储介质,其中所述日志被存储在以下一项中:(a)所述FPGA的内部存储器;(b)所述FPGA外部的存储器;以及(c)它们的组合。
12.根据权利要求8所述的计算机可读存储介质,其中所述日志在从以下各项中选择的时间被发送到所述主计算机:(a)实时地,当进程在所述FPGA中进行时;(b)批次地,当进程在所述FPGA中完成之后;以及(c)它们的组合。
13.一种计算机实现的用于基于FPGA事件和各自时间戳的日志分析现场可编程门阵列FPGA的系统,所述系统包括:
输入元件,其被配置为接收所述日志;
重放元件,其被配置为通过仿真,利用所述日志重放先前的FPGA执行,其中所述重放基于所述日志中的非确定性数据和时间信息;以及
输出元件,其被配置为输出所述仿真。
14.根据权利要求13所述的系统,其中通过仿真重放先前的FPGA执行被用于以下一项:(a)调试;(b)性能分析;以及(c)它们的组合。
15.根据权利要求14所述的系统,其中为了仿真再现先前的FPGA执行是100%时钟周期精确级再现。
16.根据权利要求13所述的系统,其中所述日志被存储在以下一项中:
(a)所述FPGA的内部存储器;(b)所述FPGA外部的存储器;以及(c)它们的组合。
17.根据权利要求13所述的系统,其中所述计算机是主计算机,所述日志在从以下各项中选择的时间被发送到所述主计算机:(a)实时地,当进程在所述FPGA中进行时;(b)批次地,当进程在所述FPGA中完成之后;以及(c)它们的组合。
18.根据权利要求13所述的系统,其中被配置为输出所述仿真的输出元件包括显示器。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361898878P | 2013-11-01 | 2013-11-01 | |
US61/898,878 | 2013-11-01 | ||
US14/473,058 US9217774B2 (en) | 2013-11-01 | 2014-08-29 | Cycle-accurate replay and debugging of running FPGA systems |
US14/473,058 | 2014-08-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104615477A CN104615477A (zh) | 2015-05-13 |
CN104615477B true CN104615477B (zh) | 2018-03-27 |
Family
ID=53008035
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410602559.1A Active CN104615477B (zh) | 2013-11-01 | 2014-10-31 | 分析fpga的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (2) | US9217774B2 (zh) |
CN (1) | CN104615477B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8977909B2 (en) * | 2012-07-19 | 2015-03-10 | Dell Products L.P. | Large log file diagnostics system |
JP6139386B2 (ja) | 2013-11-27 | 2017-05-31 | 株式会社東芝 | プログラマブルコントローラ |
JP6517474B2 (ja) * | 2014-05-12 | 2019-05-22 | 株式会社東芝 | プログラマブルコントローラ、及び演算処理システム |
US9513984B2 (en) * | 2015-01-26 | 2016-12-06 | Hewlett Packard Enterprise Development Lp | Hardware signal logging in embedded block random access memory |
KR102251991B1 (ko) * | 2015-05-14 | 2021-05-17 | 한국전자통신연구원 | 결함 주입 및 결함 감내 분석을 위한 방법 및 장치 |
US10248585B2 (en) | 2016-06-14 | 2019-04-02 | Oracle International Corporation | System and method for filtering field programmable gate array input/output |
CN106546912B (zh) * | 2016-10-14 | 2019-06-21 | 电子科技大学 | 一种应用相关型fpga自动化测试配置方法 |
US10262095B1 (en) * | 2017-09-28 | 2019-04-16 | Cadence Design Systems, Inc. | Conversion of real number modeling code to cycle-driven simulation interface code for circuit design in digital mixed signal environments |
CN108681500B (zh) * | 2018-04-28 | 2021-09-07 | 格兰菲智能科技有限公司 | 具有事务记录能力的系统和事务记录方法 |
US11537504B2 (en) * | 2019-01-28 | 2022-12-27 | Xepic Corporation Limited | Realization of functional verification debug station via cross-platform record-mapping-replay technology |
CN112257368B (zh) * | 2019-07-02 | 2023-08-01 | 上海复旦微电子集团股份有限公司 | 时钟布局方法、装置、eda工具及计算机可读存储介质 |
US11520961B2 (en) | 2019-11-11 | 2022-12-06 | International Business Machines Corporation | Heterogeneous-computing based emulator |
CN110765711A (zh) * | 2019-12-06 | 2020-02-07 | 国微集团(深圳)有限公司 | 数字产品的仿真信号查看方法及系统 |
CN117113908B (zh) * | 2023-10-17 | 2024-02-02 | 北京开源芯片研究院 | 一种验证方法、装置、电子设备及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101221595A (zh) * | 2007-01-09 | 2008-07-16 | 国际商业机器公司 | 将设计行为和外部激励并入仿真模型反馈中的系统和方法 |
US7480610B2 (en) * | 2004-07-12 | 2009-01-20 | Mentor Graphics Corporation | Software state replay |
CN101952827A (zh) * | 2008-04-30 | 2011-01-19 | 新思科技有限公司 | 用于执行硬件仿真和验证解决方案的方法和装置 |
CN103080761A (zh) * | 2010-06-30 | 2013-05-01 | 阿尔卡特朗讯 | 用于虚拟内电路仿真的方法和设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100492007B1 (ko) | 1997-12-30 | 2005-08-29 | 매그나칩 반도체 유한회사 | 내부상태궤적비교에의한칩검증방법 |
US8479132B2 (en) | 2006-06-16 | 2013-07-02 | Synopsys, Inc. | Active trace assertion based verification system |
US9286423B2 (en) * | 2012-03-30 | 2016-03-15 | International Business Machines Corporation | Cycle accurate and cycle reproducible memory for an FPGA based hardware accelerator |
US8566768B1 (en) | 2012-04-06 | 2013-10-22 | International Business Machines Corporation | Best clock frequency search for FPGA-based design |
-
2014
- 2014-08-29 US US14/473,058 patent/US9217774B2/en active Active
- 2014-10-31 CN CN201410602559.1A patent/CN104615477B/zh active Active
-
2015
- 2015-11-13 US US14/940,686 patent/US9418187B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7480610B2 (en) * | 2004-07-12 | 2009-01-20 | Mentor Graphics Corporation | Software state replay |
CN101221595A (zh) * | 2007-01-09 | 2008-07-16 | 国际商业机器公司 | 将设计行为和外部激励并入仿真模型反馈中的系统和方法 |
CN101952827A (zh) * | 2008-04-30 | 2011-01-19 | 新思科技有限公司 | 用于执行硬件仿真和验证解决方案的方法和装置 |
CN103080761A (zh) * | 2010-06-30 | 2013-05-01 | 阿尔卡特朗讯 | 用于虚拟内电路仿真的方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
US9217774B2 (en) | 2015-12-22 |
CN104615477A (zh) | 2015-05-13 |
US9418187B2 (en) | 2016-08-16 |
US20150128100A1 (en) | 2015-05-07 |
US20160070835A1 (en) | 2016-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104615477B (zh) | 分析fpga的方法和系统 | |
Meyer | Principles of functional verification | |
Kunzli et al. | Combining simulation and formal methods for system-level performance analysis | |
US8229723B2 (en) | Performance software instrumentation and analysis for electronic design automation | |
US8073820B2 (en) | Method and system for a database to monitor and analyze performance of an electronic design | |
US10628548B2 (en) | Flow control in networking system-on-chip verification | |
Tikir et al. | PSINS: An open source event tracer and execution simulator for MPI applications | |
US8499201B1 (en) | Methods and systems for measuring and presenting performance data of a memory controller system | |
JP6653756B2 (ja) | 回路設計をデバッグするための方法および回路 | |
US11200149B2 (en) | Waveform based reconstruction for emulation | |
Sarojadevi | Performance testing: methodologies and tools | |
CN108255716A (zh) | 一种基于云计算技术的软件测评方法 | |
WO2015080742A1 (en) | Production sampling for determining code coverage | |
CN103198001A (zh) | 能够自测pcie接口的存储系统及测试方法 | |
CN116029242A (zh) | 一种云原生的硬件逻辑仿真fpga加速方法及系统 | |
US7853420B2 (en) | Performing temporal checking | |
US9946624B1 (en) | Systems and methods to capture data signals from a dynamic circuit | |
US10635769B1 (en) | Hardware and software event tracing for a system-on-chip | |
Kreku et al. | Workload simulation method for evaluation of application feasibility in a mobile multiprocessor platform | |
Merlini | Practical Debug for Dataflow Computations on One or More FPGAs | |
Ciobotaru | Characterizing, managing and monitoring the networks for the ATLAS data acquisition system | |
Zeng et al. | Exploring nonintrusive measurements of spatio‐temporal portrait of microservices | |
Sharma | Protocol-directed trace signal selection for post-silicon validation | |
Shea et al. | Optimizing bandwidth of call traces for wireless embedded systems | |
Hu et al. | System verifacation based on VMM and SOPC |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |