发明内容
本发明提供了一种通过可重配置的平台用来设计和仿真用户设计的系统及其方法。本发明中的方法尤其适用于基于IP复用的设计方法学,例如由用户自行设计的可执行用户自己设计和来自第三方的IP核的片上系统类设计。本发明可以在由内存和一定数量的可编程逻辑器件组成的平台上实现。这里的可编程逻辑器件可以是可编程逻辑门阵列。许多定制的电路可被配置用来与用户设计交互操作,提供诸如设计调试、性能分析以及与仿真器连接等功能。
根据本发明的一个具体实施例,用来设计和仿真用户设计的系统包括:(1)具有一个与用户工作站相连的接口和一个数据通讯接口的一个系统控制器;(2)一个与该数据通讯接口相连的模拟平台,该模拟平台包括多个现场可编程逻辑器件和存储器,用以实现用户设计和第三方IP核,该平台还包括一个与目标系统的接口与用户设计在运行时交互。该数据通讯接口包括一组配置总线,一组系统访问总线和一组时钟总线。该与目标系统的接口包括一组源于可编程器件的输入/输出端口的信号。
根据本发明的一个具体实施例,使用用来设计和仿真用户设计的系统,用户应生成包含用户设计和一个或多个第三方IP核的顶层模块。用户随即综合用户设计。用户设计和第三方IP核被合理地划分成多个区块,每个区块均可由一个或多个可编程逻辑器件来实现。另外,每个可编程逻辑器件和每个IP核均被分配一个接口模块。通过该接口模块,任何一个实现在某个可编程逻辑器件内的IP核可以与其他任何一个在同一个可编程逻辑器件内的区块进行通信,也可以与在其他可编程逻辑器件内的任一区块进行通信。这些区块和接口模块随后被布局布线并物理实现在可编程逻辑器件内。
根据本发明的一个具体实施例,该被分配到各个IP核或各个可编程逻辑器件内的接口模块包括一个控制电路和一组可变数量的输入/输出单元,每个单元提供1比特的互连端口。在该实施例中,每个输入/输出单元包括一个动态可重配置的存储器模块、一个用来选择输出到1比特互连端口的输出信号多路选择器以及一定数量的锁存器,每个锁存器均可有选择性地捕获从1比特互连端口接收到的信号。该多路选择器和锁存器可以由在动态可重配置存储器模块内存储的数值来控制。该动态可重配置存储器模块可由一个或多个动态可重配置的存储器单元组成,并由一个状态机(例如,一个计数器)产生的地址来访问。动态可重配置存储器模块通常可以使用一个比用户设计使用的时钟频率更高的时钟来操作。
该接口模块可以用来实现一个输出端口、一个输入端口、一个双向端口或一个三态端口。另外,在接口模块内实现的端口类型可以被动态改变。根据指定的测试或调试情况(例如,在边界扫描操作中),接口模块也可以被配置用来将在一个可编程逻辑器件中的IP核与其他在同一或不同的可编程逻辑器件中的IP核隔离开来。
根据本发明的一个具体实施例,一个或多个可编程逻辑器件可以被分配一个验证IP核用来验证用户电路的功能。例如,这样的验证IP核可以包括一个仿真业界标准总线的操作。
根据本发明的另一个具体实施例,一个或多个可编程逻辑器件可以被分配一个性能分析IP核。例如,性能分析IP核可以包括一个用来分析总线带宽的IP核。
根据本发明的一个具体实施例,该系统提供一个配置工具用以动态重配置在一个选定的可编程逻辑器件中的逻辑电路。该配置工具也可以包括一个背板配置工具用来动态重配置在一个装有多个可编程逻辑器件的电路板上的总线。
根据本发明的一个具体实施例,该系统提供一个系统调试工具来在运行时监测和分析在多个可编程逻辑器件之间的信号。该系统调试工具可以包括一个FPGA(现场可编程门阵列)回读工具、一个系统访问总线操作工具、一个内部逻辑分析仪工具、一个带宽分析工、一个符号/事务提取工具和一个仿真器链接工具。该内部逻辑分析仪工具在一个或多个可编程逻辑器件中插入一个逻辑分析电路。符号/事务提取工具可以让用户来把一个或多个信号关联起来,设定一个符号名或设定由多个信号组成的一个事务。一个事务可由在一定时间内的一组信号波形来设定。调试工具可以侦测事务的发生并以符号名的方式向用户报告。仿真器链接工具使用户可以与一个在用户工作站上运行的仿真器程序交互,共同构造一个软/硬件协同仿真环境。
具体实施方式
图1为本发明的一个具体实施例的电可重配置原型系统100。如图所示,电可重配置原型系统100包括可扩展可重配置的原型平台103,该原型平台103可由一个或多个FPGA电路组成。可扩展可重配置原型平台103与一个目标系统104通过可编程的输入/输出端口105进行交互。这些输入/输出端口可以由FPGA驱动。可扩展可重配置原型平台103由系统控制器102通过一组或多组数据总线控制。在本实施例中,这些数据总线包括系统配置总线108、系统访问总线(SUB)107和时钟总线106。系统配置总线108是用来配置FPGA电路;系统访问总线(SUB)107是用来在系统控制器102和可扩展可重配置的原型平台103之间进行数据通信;时钟总线106为操作可扩展可重配置原型平台103提供了一个或多个时间基准。
用户工作站101为用户提供一个图形化的用户界面来操控电可重配置原型系统100的工作。通过这个图形界面,用户工作站101的一个用户可以访问用户设计,操作一个用来把用户设计转换成适用于可扩展可重配置原型平台103的配置信号的编译器,使用各种IP库,调用电子设计自动化软件和运行时软件。用户工作站101可以是一个工程用工作站或个人电脑。在本实施例中,用户工作站101与系统控制器102通过业界标准通信接口109进行通信。该接口109可以是USB、PCI、IEEE-1394(又称“火线”)或其他各种业界标准通信总线。
在本实施例中,一个用户设计可以通过常规的电路图工具输入或编辑,或者用一种行为或硬件描述语言(例如,SystemC,Verilog,System Verilog,VHDL等)来表现,然后被综合成逻辑门级的电路图。本发明可以在硬件原型系统,即电可重配置系统100里,实现对已综合的电路的仿真和验证。
图2是系统控制器102的一个框图。系统控制器102包括通信接口204,系统访问总线控制器202,时钟生成器203和配置控制器201。配置控制器201处理配置信号协议并从用户工作站101通过配置总线108传送配置数据到可扩展可重配置的原型平台103。这样,配置控制器201就可以来配置或下载一定格式的用户设计到可扩展可重配置FPGA103中的FPGA。配置总线108也可以用来将在各个FPGA中的设计回读,用以校验;或者在运行时获取用户设计中的状态信息和数据。回读操作一般是通过常规的技巧或使用供应商提供的协议,比如SelectMap和JTAG(边界扫描)。在本实施例中,配置总线108可以被用来测试在原型系统100中可扩展可重配置的原型平台103的可编程门阵列。
系统访问总线控制器通过系统访问总线(SUB)在运行时访问设计和系统特定部件中的寄存器、FIFO(先进先出队列)、存储器和其他状态单元,例如由编译器插入用户设计的特殊逻辑单元。系统访问总线107也可以用来把可扩展可重配置的原型平台103中的FPGA复位或初始化到特定的工作状态。
时钟发生器203驱动时钟总线106给FPGA阵列提供各种时钟信号。这些时钟信号的频率和占空比均可编程。这些时钟被下载在可扩展可重配置的原型平台103中的用户设计使用。
如上所述,可扩展可重配置的原型平台103可以由一个或多个可扩展的背板(或电路板)、FPGA、动态可配置的电开关组成。可扩展可重配置的原型平台103可以包含任意数量的FPGA和开关。图3所示为可扩展可重配置的原型平台103的示意图。如图3所示,一个可扩展可重配置的原型平台由FPGA 304-1到304-n构成。301-1到304-n中的每个FPGA都有超过一组的连接线与其他FPGA相连。本实施例中,一个或多个总线(例如,总线301-303)被用来互连FPGA 304-1至304-n。在这种方式下,信号可由任一FPGA连接到其他任意FPGA。总线301-303可以被设置为“全局总线”(即每个FPGA都可以访问的总线)。或者,总线301-303也可以被分配成各种配置,这样每条总线都可以被配置成为某一组特定FPGA专用。这些总线也可以通过动态可配置的电路开关相互连。这些电路开关可以由特殊的开关电路来提供,或者被配置到FPGA 304-1到304-n中。这些FPGA可以被配置成为一个层次化的结构。在这个结构中,FPGA可以被分组。这样,每组中的FPGA由一个“局部”的互连总线互连,而这些局部互连总线由一层或多层的动态可重配置开关相连。另外,每个FPGA可以有一个或多个输入或输出信号连接在输入/输出总线105上与目标系统104通信。这些输入/输出信号也可以被由一层或多层动态可配置开关互连,用作FPGA之间的信号互通。无论如何,随着技术的演进和提升,这些互连线的数量不受限制。这些互连总线和开关通常是在一个或多个背板或电路路上实现为佳。或者,任何的互连总线(例如,总线301-303,配置总线108,SUB总线107或时钟总线106中的任一)也可以由电缆、光纤或其他互连方式来实现。
一个复杂的数字系统(例如,一个片上系统或一个专用电路)通常包括多个子系统。例如,一个片上系统设计可以包括诸如一个多媒体子系统、一个信号处理子系统、一个外设控制系统和一个中央处理器。每个子系统可以被配置到一组由一条共用的局部总线连接的FPGA。然后由动态可配置开关来连接这条局部总线到系统的其他总线。这条共用的局部总线也可以是一条被设置成“关”模式(断开连接)的全局总线,这样来做为子系统中专用的局部总线。在各条局部总线之间的开关可以被配置成“开”模式来完成子系统之间的通信。全局总线可以被用来作为子系统之间的通信或FPGA之间的点对点通信。
为了把一个用户设计在可扩展可重配置的原型平台103中实现,用户在用户工作站101上使用一个编译器。图4所示为本发明的一个实施例的编译器程序的流程图。如图4所示,在步骤401中,一个系统设计者可以调用一个顶层模块生成器来为用户设计生成一个顶层模块。用户设计可以包含特殊的设计单元和第三方的IP核。这个顶层模块生成器用来帮助集成来自用户自己的库和第三方提供商的各种设计和IP核。该生成器根据标准的总线定义和用户自定义的总线和信号互连关系来自动连接用户设计单元和第三方IP核。或者,系统设计者也可以手工的创建顶层模块而不使用自动顶层模块生成器。
在步骤402中,一个系统或电路设计者使用编译器来导入(例如,使用一个“导入设计”命令)在顶层模块中的各个设计单元。这个设计通常是由一种硬件描述语言或网表形式表述。编译器检查设计的语法、可综合性和完整性(例如,是否所有在设计源码中的逻辑单元是在一个预定义的库或一个逻辑数据库里可用的或可链接获得的)。如果在一个导入的设计中有错误存在或一个逻辑块不可用,编译器软件会报告一个导入错误。根据需要,步骤402可以被重复多次,直到所有的输入源码被检查正确并被编译器接受。
在设计被导入后,在步骤403中,通过使用例如一条编译器中的“综合”命令或可被编译器调用的第三方综合工具,设计者可以综合设计中所有的硬件描述(硬件描述语言或其他格式)。在实施例中,编译器以自底向上的策略综合第三方IP核,以此来保持第三方IP核的边界信号并保持运行时性能。综合后的设计包含可以用来配置到可扩展可重配置的原型平台103中的FPGA里的网表形式(比如,EDIF文件)。在实施例中,编译器把所有EDIF文件合并到一个EDIF文件来代表用户设计。
在本实施例中,在步骤404中,当一个设计被综合后,设计者可以调用一个编译器中的“符号定义”命令开始符号定义过程。在符号定义过程中,用户可以把任何一个单独的信号或一组信号定义为一个符号。任意数量的信号都可以定义为一个符号。另外,用户也可以定义一个事务,即一组特定的符号或信号的一系列事件,或一组任意长度的波形。当信号或符号的状态转换与事务中指定的一定长度的波形相吻合时,认为该事务发生。例如,图5所示是一个存储设备的典型的“写操作”的事务波形。如图5所示,这个“写操作”事务包括了五个符号的波形:单独的信号“时钟(clk)”,“写操作(write)”,“片选(chipselect)”和总线信号“地址(address)”,“数据(data)”。在这个例子中,这个事务为两个时钟周期长。如图5所示,周期1和周期2在0纳秒到100秒之间。在这段时间内,“片选(chipselect)”和“写操作(write)”控制信号都被置为有效一个“时钟(clk)”信号的周期长。这个两个时钟周期内的信号波形定义了这个事务。为了检测事务的发生,原型系统100可以被配置成在运行时监测指定信号并将信号变化与预定的事务中的信号变化相比较。与现有技术不同的是,当事务发生被检测到时,软件会向用户报告事务的发生,而不是让用户去解读一堆信号状态。在这种方式下,事务以高阶抽象的方式向用户报告,既而被用来帮助调试。在一个实施例中,信号状态被采样并存储在一个板上的存储器中,或者是在用户工作站101上的存储器或文件中,以被用来做进一步的分析。符号和事务在调试模式下尤其有用,在调试模式下信号比较和事务检测机制都与前述的运行时完全一致。电路设计者可以按需要定义任意多的符号和事务,这样,大量的运行时信号信息可以在高抽象层次被定义,以方便调试。在调试模式下定义的符号和事务可以被转换到运行时使用和观察。
在步骤405中,用户可以用一个编译器中的“划分”命令来把设计划分到多个区块,每个区块将会在一个单独的FPGA中实现。第三方IP核也被划分并实现在各个FPGA中。一个大的IP核可以被划分到多个FPGA中。在一个实施例中,划分命令调用第三方的划分工具。由于在后文中讲到的“TAI IP单元”的互连方法,在原型系统100中的划分工具可以遵循最大化FPGA的容量利用率而不用被FPGA的管脚所限的原则来优化划分。划分工具产生在可扩展FPGA阵列中的每个FPGA的单独的网表。划分步骤405会保留所有的用户设计的所有信息和功能。或者,第三方划分器或手工划分也可以被用来划分设计。划分器可以接受设置约束条件,用以指示划分器来生成针对可扩展可重配置的原型平台103的硬件的网表。
在步骤406中,在用户设计被划分后,编译器在每个FPGA区块中插入一个定制的电路结构来提供“可测性”、“可分析性”和“互连”功能。这个被称为“TAI IP”的特制的电路结构也被插入到各个IP或一个被划分到多个FPGA的一个IP的各个部分。图6a中所示为划分后电路拓扑结构的一个逻辑视图。如图6a所示,根据本发明的一个实施例,一个包括用户设计电路和第三方IP的片上系统设计620,设计被划分到电路625-1到625-n中,每个分别对应TAI-IP 626-1到626-n。625-1到625-n中的每个电路分别是将被实现在一个FPGA中的用户设计的一个分块、一个IP或一个IP的一个部分。在某些实例中,一个用户设计的分块可以被分配到同一个FPGA。625-1到625-n中的每一块电路通过与他们相关联的TAI IP 626-1到626-n及一条或多条通信总线或通道(如图中所示总线630-1到630-02)与其他部分相互通信。(虽然在图6a中只示出两条总线,根据用户的选择和电路间的互连关系,一个通信通道可以包括一条或多条信号总线。)
图6b是一个结构框图,其所示为TAI IP 602-1到601-n被实现在可扩展可重配置的原型平台103中,用来作为FPGA 602-1到602-n之间的接口。如图6b所示,每个FPGA中的TAI IP与其他FPGA中的TAI IP相连,来提供可扩展可重配置的原型平台103中的FPGA之间的互连。而一个FPGA中的每个IP则也通过与其相关的TAI IP与分配在该FPGA中的其他电路以及其他FPGA中的电路通信。在这样的结构下,一个IP的输入和输出可以通过TAI IP来控制。例如,IP的每个输出信号可以被从用户设计上隔离,而信号状态可以被替换成固定值来方便调试。另外,IP的输入和输出信号可以被独立监测来提高可测性。
图7是本发明的一个实施例的TAI IP 700的一个框图。如图7所示,TAIIP 700包括控制电路701用以控制TAI IP结构块电路(“TAI IP单元”)702-1到702-n。每个TAI IP中的TAI IP单元的数量是一个可编程的设计参数,通常根据FPGA阵列板上需要互连的FPGA的数量、用户设计的输入输出要求和用户的指定来决定。每个TAI IP单元通过一个一位的互连端口(例如,互连端口703-1到703-n中的一个)来连接到可扩展FPGA阵列103电路板上的一条总线。基于这些要求,编译器决定所需的TAI IP单元的数量并产生所需的每个FPGA中的TAI IP中TAI IP单元和控制电路。
图8是本发明的一个实施例的TAI IP单元800。如图8所示,TAI IP单元800包括动态可重配置标记存储器801和802、多路信号选择器803、双向缓冲器806(包括输出缓冲器806a和输入缓冲器806b)和信号锁存器807。动态可重配置标记存储器801控制的数据输出信号808和与之相应的输出使能信号805的多路选择。数据输出信号809和相应的输出使能信号805包括配置在FPGA中的用户设计的输出信号和指定的内部逻辑节点信号。另外,固定信号810(包括一个固定的“0”和一个固定的“1”)也可以被信号输出多路选择器选中来通过互连端口703传递。在这样的结构下,一个输出信号可以在任何时刻输出到互连端口703上。数据输出信号809中的未分配信号可以被连上任意的值。如后文所述,这样的组织使得运行时的增量信号配置不需要完全的重编译。未使用的输出使能信号被分配一个“使无效”的信号状态,这样可以防止无意地输出一个值到互连端口703。
动态可重配置标记存储器802控制一组信号锁存器,每个锁存器可以被选中来锁存互连端口703上的输入信号。如上所述,互连端口703通过一位的互连总线从其他FPGA接收到信号。信号锁存器807的输出信号驱动信号808,信号808被连接到用户设计中的元件的输入端口。输入信号808中未分配的信号可以被留空。
动态可重配置标记存储器801和802由控制记数器寻址,这样动态可重配置标记存储器801和802可以在运行时由SUB总线107加载。多路选择器804控制双向缓冲器806的方向,由此来决定互连总线703是一个输入端口、一个输出端口或一个双向端口。多路选择器804的选择信号可以在运行时被改变动态配置端口类型。如图8中所示的实施例,多路选择器803和804同时由动态可重配置标记存储器801产生的控制信号控制,并选择同样数量的信号。在这种配置下,相应的多路选择器803和804的输入信号被选中。这样的结构当然不是必需的。多个多路选择器也可以由动态可重配置标记存储器801的输出字中的不同字段来控制,用来选择设计输出信号809和输出使能信号805。
一个三态输出端口可以通过把数据输出信号作为信号809中的一个,并把相应的输出使能信号作为相应的输出使能信号805中的一个来实现。当相应的输出使能信号被置为无效时即得到高阻态。相似地,一个双向信号可以通过同时作为数据输出信号809和数据输入信号808以及把相应的输出使能信号作为输出使能信号805中的一个来实现。编译器确保双向端口被正确的映射,这样相应的动态可重配置标记存储器中的相应的地址总是被同时选中。在一个实施例中,双向信号被映射到动态可重配置标记存储器801和802中的相同地址。
一个TAI IP(例如,TAI IP 601-1到601-n中的任一个)可以工作在一个比用户设计更快的时钟。以这个快时钟来控制增大或减小计数器,并由计数器产生用来访问动态可重配置标记存储器801和802的地址。每个计数器有一个可以编程的最大和最小的计数值。通常,当计数器达到最大或最小计数值时,计数器轮回计数。当达到计数上限时,计数器被复位到零。当计数器在一个用户设计的时钟周期内至少被复位一次,用户设计的输入输出信号和要被锁存的信号都已经被正确的传送。在这个实施例中,每个计数器中的最大或最小计数值可以通过SUB 107在运行时编程。这样每个快时钟周期内可以被交互的信号可以动态可变。由于动态可重配置标记存储器801和802可以由用户或由实时软件通过SUB 107来写入,互连端口703的输入或输出信号就可以以用户时钟为依据动态地调整。这样的能力使得信号值或连接可以在测试或调试模式下可变。
在TAI IP被插入后,在步骤407中,编译器调用布局布线程序来处理每个FPGA的网表。布局布线程序通常是FPGA供应商定制的程序,用来把每个网表转换成一个二进制文件或一个文本文件。这个输出的文件可以下载到可扩展可重配置的原型平台103中的FPGA中去。在一个实施例中,布局布线程序可以在多于一个用户工作站或处理器上运行来并行处理FPGA的布局布线任务。布局布线后的二进制或文本文件可以被存储在用户工作站104上,留待实时软件的进一步处理。
一个IP库可以包括除了TAI IP以外的其他提供电路验证、电路调试和性能分析功能的IP。系统设计者可以把一个或多个这样的IP加入用户设计。把这样的IP加入用户设计可以由系统设计者指示编译器或由手工在用户设计的源代码中实例化这些IP来完成。
用作电路验证的IP(验证IP)可以包括诸如仿真一个USB总线或PCI总线的电路,用来验证与一个USB总线或PCI总线有交互的用户设计的工作。用在原型系统100中的验证IP使用户或实时软件可以通过SUB 107访问验证IP的创建者或提供商提供的工作信息。通常,验证IP监测用户设计的行为,检查用户设计与标准通信或信号协议的兼容性,或是将用户设计的行为与一个特定的行为模式(正确的模式)相比较。验证IP可以提供分析报告和错误或警告信息给用户或实时软件。
例如,用作调试的IP核(调试IP核)包括完成一个内部逻辑分析仪功能的IP核(内部逻辑分析仪IP核)或一个数据流/状态分析器。这些IP核使系统设计者可以在运行时调试已配置好的系统。例如,一个内部逻辑分析仪IP核可以用来在指定的触发点采样用户设计中的信号值并存储到存储器单元用作后续分析。运行软件可以在运行时访问并操作这些调试IP核。
用作性能分析的IP核(性能分析IP核)可以包括用来做带宽分析的IP核。这些IP核可以用来收集性能信息并分析用户设计的性能。与其他IP核一样,性能分析IP核可以通过SUB 107与用户或运行时软件通信来共同完成性能分析。
在运行系统100中的运行软件可包括一个动态配置工具集和一个系统调试工具集。动态配置工具集接收用户命令来配置可扩展可重配置的原型平台103中的FPGA,背板和TA IPs修改操作模式,交互和甚至实时地设计功能。在一个实施例中,在对FPGA命令做出响应后,FPGA配置工具读取二进制或者ASCII的FPGA配置文件并将文件传送至系统控制器102中的配置控制器201。FPGA配置工具可单独配置一个或多个可扩展可重配置的原型平台103中的FPGA,甚至所需一个FPGA中的部分。例如,用户可修改一个FPGA中的逻辑块。使用FPGA配置工具可将修改的逻辑块下载至FPGA中,而不需要重新配置别的FPGA。
响应一个电路板配置命令,背板配置工具配置电路板上或者可扩展可重配置的原型平台103中背板上的可配置开关。典型地,任一开关可设置成“开”状态或“关”状态。当开关处于“开”状态时,开关导通。当开关处于“关”状态时,开关断开。背板配置工具可以用作诸如选择性地将部分互联总线配置成本地总线。
响应一个TAI IP配置命令,TAI IP配置工具生成用于通过SUB 107存储在TAI IP单元中的一个或多个动态可重配置标记存储器中的数据。这些数据代表了FPGA之间的互连关系或用户的特殊需求。例如,某用户可能希望给一个指定的FPGA的某个输入信号提供一个为“1”的值而不用重编译。为了达到这样的效果,TAI IP配置工具重新计算所需要的标记存储器内的值来产生这个输入值,同时把修改后的标记存储器的值写入特定的动态可重配置标记存储器。
系统调试工具集收集和分析设计和调试信息,并设置特殊的条件和信号来实时操纵用户设计的工作。在一个实施例中,系统调试工具集包括(a)一个FPGA回读工具,(b)一个SUB访问工具,(c)一个内部逻辑分析工具,(d)一个带宽分析工具,(e)一个符号/事务提取工具和(f)一个仿真链接工具。
FPGA回读工具在运行时读取指定的FPGA的内容或用户设计中指定信号的状态。FPGA回读工具可以从提供商处获得并使用提供商指定的协议,诸如JTAG或SelectMAP,来读取指定FPGA的内容。许多FPGA提供商提供工具来读取FPGA中的任一个寄存器或存储器单元的内容。在这个实施例中,当数据从FPGA回读后,FPGA回读工具把这些信息转译成信号值并映射到用户设计中的信号名和符号。通过这样的方式,就可以得到FPGA内任何信号的完全可观察性。
SUB访问工具被用来访问与SUB 107相连的用户设计中的或原型系统100中的元件。元件都被映射到地址空间,这样用SUB访问工具来访问元件就是通过发出命令,地址和数据到系统控制器102中的SUB控制器202来读或写元件中的数据。在一个实施例中,SUB 107被扩展为可以读写可扩展可重配置的原型平台103电路板中的任何元件。
内部逻辑分析仪工具为原型系统100中内嵌的逻辑分析仪设置触发条件。这个逻辑分析仪是一个下载在可扩展可重配置的原型平台103中的一个或多个FPGA里的特殊的IP(内部逻辑分析仪IP)。这个逻辑分析仪IP可以提供与传统的逻辑分析仪相同的功能。在FPGA里与TAI IP共同作用,这个逻辑分析仪IP可以提供大量信号的采样并处理大量的触发条件。在一个实施例中,这个内部逻辑分析仪工具在内嵌的逻辑分析仪IP内设置触发条件,等待触发条件或事件的发生,然后从逻辑分板仪IP中内嵌的采样存储器中读取采样到的信号数据并把相关采样数据转译成用户定义的符号的形式。在一个实施例中,这个内部逻辑分析仪工具设置一个逻辑分析仪IP内嵌的复杂的事件状态机。这个事件状态机根据采得的信号数据工作来帮助调试。内部逻辑分析仪工具与逻辑分析仪IP一起为用户提供了实时监测信号的功能(例如,在线运行模式下)而不会干扰用户设计的运行状况。
符号/事务提取工具把采样得到的信号数据解释为符号和事务级的信息。符号/事务提取工具把采样得到的信号数据映射为符号和事务并以符号的形式表现给用户。例如,在前文描述的一个总线“写操作”事务中,当符号/事务提取工具发现一个“写操作”事务的实例,一条消息被创建来提供给用户总线“写操作”事务的发生时间、“写操作”事务中写操作的地址和数据。这样的能力是有十分有价值的,比如对于固件设计者在设计和调试固件程序时。
仿真器链接工具把用户工作站101上运行的仿真器与可扩展可重配置的原型平台103里的配置的用户设计相连接来完成一个硬件/软件的协同仿真。仿真器链接工具可以通过各种现有方式来访问仿真器。比如,在一个实施例中,一个PLI或VPI接口被用来提供与Verilog仿真器的通信,一个FLI接口被用来提供与VHDL仿真的通信,一个SCEMI接口被用来提供与有SCEMI接口的仿真器的通信。仿真器链接工具也可以支持其他标准接口或用户定义的接口。
上文的详细描述说明了本发明的一些特定实施例,但本发明并不限于这些实施例。在本发明的范围内可有多种修改和替换均不超出本发明的揭露以及保护范围。