使用综合用于有效数据加载和下载的基于分组的协议的逻辑的硬件辅助的设计验证系统的制作方法

文档序号:6476119阅读:229来源:国知局
专利名称:使用综合用于有效数据加载和下载的基于分组的协议的逻辑的硬件辅助的设计验证系统的制作方法
发明的领域本发明一般涉及数字硬件设计验证系统,特别涉及使用一个硬件加速器于逻辑模拟的硬件辅助的设计验证系统。
发明的背景在现代化电子工业中,许多数字硬件设计是用一种硬件说明语言描述的。例如,在1996年由IEEE公布的“基于Verilog硬件说明语言的IEEE标准硬件说明语言”中定义的该IEEE标准1364-1995硬件说明语言是流行的硬件说明语言之一。用这样一种硬件说明语言写的数字硬件设计在它被编译以产生用于制作的最终基本表格之前为了其所要求的功能度不得不加以验证。该设计验证任务长期与逻辑模拟相关。
一个硬件辅助设计验证系统使用一个硬件加速器为要求比基于软件的验证系统能提供的性能更高的一类设计验证任务增强逻辑模拟性能。该硬件加速器是由大量逻辑处理器组成的专业化的逻辑模拟机器,每个逻辑处理器具有可模拟一个逻辑门的能力。例如,1981年12月15日授于Cocke等的名称为“逻辑模拟机器”的美国专利U.S.4,306,286公开了这样一种逻辑模拟机器。要指出有可能不使用这样的一个硬件加速器来执行验证。
用作一个硬件加速器的一类硬件器件是来自California,San Jose的Quickturn Design Systems公司(本发明的受让人)的CobaltTM产品。在一个典型的硬件辅助设计验证系统中,该硬件加速器被连接到一个主工作站,其运行一个验证控制程序,以便将该编译的验证下设计(在此还称为“DUV”或“用户设计”)装入到该硬件加速器,初始逻辑模拟,终止逻辑模拟中,并从该硬件加速器下载该模拟结果。用户相对于期望结果校验该模拟结果以了解该DUV是否已被模拟为所期望的。在设计验证的早期阶段,当该用户发现该模拟结果不正确时,对该用户而言,相对容易发现在该DUV中的问题。但是,在后来的设计验证阶段调整DUV变得更加困难。由于该问题,在逻辑模拟期间,用户经常想校验在该DUV中的某些键控信号(Key Signal)的中间值。为满足来自该用户的这样的一个要求,该设计验证系统对信号的能见度操作提供支持,以使得在逻辑模拟期间在该DUV中的信号对该用户可见或可访问。
一个基于软件的验证系统对信号能见度操作提供这样的支持是容易的,但是对于一个硬件辅助的验证系统就不很容易了,这是因为它要求在主工作站和模拟该DUV的硬件加速器之间的额外的通信。
通常通过一个很一般的I/O接口例如SCSI接口初始加载该DUV到该硬件加速器中。在逻辑模拟期间有可能使用该I/O接口访问该DUV中少量信号。在该情况下,在该硬件加速器中的该接口控制程序首先识别该要求的信号,定位它们,读出其值,然后将它送回该主工作站。
信号能见度操作通常不仅包括审查一个特定信号的中间值的操作,而且还包括存储一个逻辑值于该信号上用于后续模拟步骤。使用这些基本操作,用户可以审查一个寄存器的值或通过访问一组相应于该寄存器位的信号存储一个值于该寄存器上。通过访问一组有关的寄存器,该用户还可写入数据到一个存储器或从一个存储器读出数据。
为利用该先进的半导体芯片技术的优点,增加DUV的数量包括大容量存储器。用常规的信号能见度操作,可采取长时间从该DUV中的大容量存储器加载或下载数据,因为该基本信号能见度操作基于低等级审查或在单个信号上的储存操作。
为加速DUV中的寄存器和存储器的加载和下载操作,一个硬件辅助的设计驱证系统可使用在该主工作站和专用于信号能见度操作的该硬件加速器之间的一个专用的通信频道。为了在访问在该硬件加速器模拟的DUV中的请求的信号的情况下使开销最小,该专门的通信频道被直接连接到输入和输出数据缓冲器,后者依次直接接口该DUV而没有任何接口控制程序。
在1998年2月24日授权于Fogg,Jr等的美国专利5,721,953中公开了具有数据缓冲的接口方案之一,该专利的发明名称为“Interface forLogic Simulation Using Parallel Bus for Concurrent Transfersand Having F1F0 Buffers for Sending Data to ReceivingUnits When Ready”,其讨论了关于具有F1F0或在该主计算机和该逻辑模拟机器之间提供F1F0缓冲器的接口以使该接口延迟最小。美国专利5,721,953的公开全部包括在此作为参考。
输出信号被分派到输出数据缓冲器的位,而输入信号被分派到输入数据缓冲器的位。对于一个审查操作(即,观察或读出一个信号值),该验证控制程序启动一个数据传送装置将该储存在该输出数据缓冲器中的信号值传送到该主工作站并选择该请求的信号的值。对于一个储存操作(即,写一个信号的值),该验证控制程序汇编该值以储存和启动一个数据传送装置将它们传送到在该硬件加速器中的该输入数据缓冲器。当编辑该DUV用于逻辑模拟时综合附加的写和逻辑元件用于接口到该DUV。
综合用于信号能见度操作的写和逻辑元件不是该DUV的部分,而是虚拟元件同该DUV合并用于逻辑模拟。如在一篇技术论文中所描述的那样,虚拟逻辑元件通常用于产生输入到该DUV并校验该模拟输出的测试台,该技术论文为Beece等于1998年6月在刊物Procceedings ofthe 25thACM/IEEE Design Automation Conference上公布,其题目为“The IBM Engineering Verification Engine”。
只要对于信号能见度操作可见信号的数量相对少,则静态分配该输入和输出信号到该输入和输出数据缓冲器的位是可接受的。然而对于大量可见信号是不理想的,因为对物理上可利用数据缓冲器位的数量存在一定的限制。
为有效地增加可见信号,对该DUV中的信号的可访问性问题的一个解决方案是对在该数据缓冲器内的每一位时分多路复用两个或多个信号,以便有效地增加可见的信号数。时分多路复用多个信号的一种方法在1997年1月21日授权于Agarwal等的美国专利U.S.5,596,742中公开,该专利的名称为“Virtual Interconnections for Reconfigurable LogicSystem”,其讨论了一种灵巧地多路复用多根逻辑导线中的每根物理导线并使这些连结流水线化的编辑技术。另一种截然不同于Agarwal公开的时分多路复用方法在1999年9月28日授权于Sample等的美国专利U.S.5,960,191中公开,该专利的名称为“Emulation System With Time-Multipexed Interconnect”,其讨论了时分多路复用多个设计信号到物理逻辑芯片管脚和印刷电路板的一个硬件仿真系统。另一个有关时分多路复用的公开是公开在于2000年2月1日授于Sample等的美国专利6,020,760中,该专利的名称为“I/O Buffer Circuit With PiaMultiplexing”,其公开了一个集成电路,用于实施重新配置逻辑到一个输入/输出管脚以增加有效I/O管脚适用性,该逻辑具有时分多路复用至少两个信号的一个输入/输出缓冲器电路。U.S.5,596,742,5,960,191和6,020,760全部包括在此作为参考。
虽然这些时分多路复用方法能有效地通过该数据缓冲器增加可见信号的数量,但是不能解决访问该DUV中的寄存器和存储器的执行问题。组合被要求来访问一个寄存器或存储器的信号能够减小由于对在一个组中的信号收集和散开该位值而引起的开销。然而该信号组合方法将强加某些限制于时分多路复用多个信号,因为所有在一个组中的信号不得不在同一时间可被看见,和可存在很多这样的信号组,和可存在若干由两个或多个组共享的某些信号。
使用该低电平审查和存储操作,在信号分组或不进行信号分组的情况下要求某些步骤访问一个寄存器;要求更多的步骤访问一个存储器字。因此,对于该验证控制程序期待提取一个很长的时间来加载/下载大量数据到/从一个存储器。这样的耗费时间的加载和下载操作将明显降低整个模拟性能,使模拟的效率大为降低,例如将模拟若干时钟周期。
如果一个DUV包括许多大容量存储器,这种性能降低将变得非常严重,用该硬件加速器将有效地使倍增模拟性能为零。希望提供一种方法和设备来减小数据负载和下载所要求的时间。还希望提供一种方法和设备以便更容易访问该寄存器和存储器。
发明概况本发明使用一个新的基于分组的协议执行该主工作站和该硬件加速器之间的数据传送操作,以便向一个验证下目标设计(也称为目标设计或用户的设计中)的寄存器和存储器加载数据和由其下载数据。该协议是基于可变大小请求和响应分组。一个请求分组是由该主工作站到该硬件加速器的一个输入分组并包括命令,变元,和任意数据,而一个响应分组是由该硬件加速器到该主工作站的一个输出分组并包括来自该DUV中的目标寄存器或存储器的读出数据。
在本发明的一个实施例的一个方面,用于编辑一个用户的设计的一种方法是公开在所有在用户的设计中的存储器和寄存器都被识别的场合。在识别该存储器和寄存器之后,可访问性逻辑综合到用户的设计中。该可访问性逻辑包括对该存储器和寄存器的访问端口。在本发明的另一方面,一个唯一识别符被分配到该用户的设计中的每个存储器和寄存器。在本发明的再一方面,该可访问性逻辑包括选择逻辑。该选择逻辑适于接收该唯一的识别符并选择在该用户的设计中特定的一个存储器或寄存器。在本发明的再一方面,可访问性逻辑包括从该用户的设计中的特定的一个存储器或寄存器读出的逻辑或写入到其中的逻辑。在本发明的再一方面,该可访问性逻辑包括解码逻辑,其从一个主工作站接收命令并控制对该用户的设计中的存储器和寄存器读写数据的执行。
为处理该请求的和响应的分组,一个协议接口逻辑用在该目标DUV中的寄存器和存储器的大小参数在编辑时间进行综合并在运行时间用该目标DUV模拟。该综合的协议接口逻辑包括寄存器分组,一个有限状态机器,一个命令解码逻辑,一个命令执行逻辑,和一个数据读和写控制逻辑,用于数据加载和下载操作。它解码来自在该主工作站上运行的验证控制程序的一个请求分组并执行在该分组中的编码的命令。如果该命令是一个数据写请求,则该协议接口逻辑将该分组中的数据写到目标寄存器或存储器单元。如果该命令是一个数据读请求,则协议接口逻辑从该目标寄存器或存储器单元读出数据并将响应分组中的数据送到该主工作站。
现在将参照附图和在权利要求中的指示更具体地描述本发明的上述的和其他的优选特征,包括实施的不同的新细节和元件组合。应理解实施本发明的具体方法和电路仅用说明表示并不作为对本发明的限制。如由本专业技术人员将理解的那样,本发明的原理和特征可应用在不同的和多个实施例中而不脱离本发明的范围。
附图的简要说明参照附图,其中表示本发明范围的说明性实施例,据此,新的特征和优点将显而易见。


图1是说明综合用于验证下设计或DUV示例的协议接口逻辑的主题系统的方块图。
图2A是在同该协议接口逻辑连接的DUV示例中的寄存器决的方块图。
图2B是在同该协议接口逻辑连接的DUV示例中的存储器块的方块图。
图3是该协议接口逻辑的分组I/O块的详细方块图。
图4是该协议接口逻辑的存储器地址块的详细方块图。
图5是该协议接口逻辑的读数据块的详细方块图。
图6是由该协议接口逻辑处理的协议命令的图表。
图7是该协议接口逻辑的命令解码块的详细方块图。
图8是该协议接口逻辑的状态和状态转变图。
图9是该协议接口逻辑的状态控制块的详细方块图。
图10是该协议接口逻辑的读/写控制块的详细方块图。
图11A是执行在该协议接口逻辑中的寄存器写命令的定时图表。
图11B是执行该协议接口逻辑中的寄存器读命令的定时图表。
图11C是执行该协议接口逻辑中的存储器写命令的定时图表。
图11D是执行该协议接口逻辑中的存储器读命令的定时图表。
图12是产生该协议接口逻辑的编辑时间步骤的流程图。
图13是计算用于该协议接口逻辑的协议字段大小的详细流程图。
图14是构造该协议接口逻辑的元件的详细流程图。
图15是用于模拟具有该协议接口逻辑的DUV的运行时间操作的流程图。
图16是用于描述具有该协议接口逻辑的操作的常数,变量和功能的定义和说明的代码列表。
图17是用于发送分组到该协议接口逻辑和从其接收分组的功能的代码列表。
图18是用该协议接口逻辑写寄存器,读寄存器,写存储器,和读存储器功能的代码列表。
发明的详细说明转到图,现在将描述本发明的目前优选的设备和方法。
第一步是识别DUV中存在的存储器和寄存器,在一个实施例中第一步包含识别所有该DUV的存储器和寄存器。在另一实施例中,该第一步包含仅识别该DUV中存在的一子组存储器和寄存器。在该实施例中,用户必须识别具有特定关系或兴趣的那些存储器和寄存器。仅识别该DUV的一子组存储器和寄存器的一个优点在于该DUV能更快地编辑以便验证。但是,仅用识别一子组存储器和寄存器,由本发明不同实施例提供的优点将限制到那些专门的欲被识别的存储器和寄存器。如下面将更详细讨论的那样,一旦识别了该存储器和寄存器,它们必须进行索引,以使每个识别的存储器和寄存器具有一个唯一的识别符。
第二步是综合将附加到该DUV的逻辑。该综合的逻辑将提供对在第一步骤中识别的存储器和寄存器的访问。在该第二步中综合的逻辑将在下面详细讨论。然而,一般地,该综合的逻辑将包括选择逻辑,其接收上述讨论的唯一的识别符,使得一个特定的存储器或寄存器能被访问以进行读或写。
第三步骤是产生到寄存器和存储器的一个路径的步骤。该步骤也将在下面作更详细的讨论。
图1是本发明的一个优选实施例的方块图。图1表示该验证下设计(DUV)30,与综合的逻辑一起为提供对该DUV 30的存储器和寄存器的良好的访问。图1表示一个主工作站10,通过一个通信频道14连接到一个硬件加速器20,该硬件加速器模拟验证下设计(DUV)30,和该协议接口逻辑40综合用于该DUV 30,以便有效数据加载和下载操作。一个控制程序11是一个验证控制程序,在该主工作站10上运行,以便通过该协议接口逻辑40加载数据到该DUV 30中的寄存器和储存器以及从其下载数据。一个示例性硬件加速器20是从Quickurn DesignSystems公司可得到的CobaltTM产品。一个示例性控制程序11是从Quikturn Design Systems公司可得到的PowerSuiteTMsoftware packag。
当该控制程序11加载数据到该DUV中的寄存器或存储器单元时,它首先经由一根内部总线12将具有数据的一个写命令送到数据缓冲器13,然后启动数据转移装置经由该通信频道14从该数据缓冲器13转到在该硬件加速器20中的一个数据缓冲器21。该协议接口逻辑40接收来自该数据缓冲器21的写命令和写数据并执行该写命令以加载该数据到该DUV 30中的目标寄存器或存储器单元。
当该控制程序11从该DUV 30中的一个寄存器或存储器单元下载数据时,它首先通过内部总线12送一个读命令到数据缓冲器13中并接着启动数据转移装置通过通信频道14从该数据缓冲器13送到在该硬件加速器20中数据缓冲器21。该协议接口逻辑40从该数据缓冲器21接收该读命令并执行该命令以便从该DUV 30的目标寄存器或存储器单元下载数据到该数据缓冲器21中。储存在该数据缓冲器21中的数据接着通过由该控制程序11启动的转移操作经由通信频道14转移到该数据缓冲器13,该控制程序11通过内部总线12接收来自该数据缓冲器13的数据。
如讨论的,该协议接口逻辑40是综合用于该DUV 30的一种专门逻辑。在目前优选实施例中,协议接口逻辑40包括分组I/O块41,状态控制块42,命令解码块43,读/写控制块44,存储器地址块45,和读数据块46。
分组I/O块41保持来自该主工作站10的命令和写数据于其输入分组寄存器(在图1中未示)中。分组I/O块41还保持来自该DUV 30的信息和读数据于其输出分组寄存器(图1中未示)中。该分组I/O块41接收来自数据缓冲器21的命令和写数据信号22以及来自读数据块46的读数据信号57。该分组I/O块41送控制信息和读数据信号23到数据缓冲器21以及送命令和数据信号50到状态控制块42,命令解码块43,读/写控制块44,存储器地址块45,和DUV 30。
状态控制块42保持该协议接口逻辑40的当前状态并使状态转变。状态控制块42接收来自命令解码块43的解码命令信息信号51和来自分组I/O块41的命令信号50。该状态控制块42产生状态信号52到读/写控制块44。
该命令解码块43解码来自分组I/O块41的命令。该命令解码块43接收来自该分组I/O块41的命令信号50并产生该解码的信息信号51到状态控制块42和读/写控制块44。
该读/写控制块44产生内部的和外部的读和写控制信号。该读/写控制块44接收来自命令解码块43的解码的命令信息信号51,来自状态块42的状态信息信号52,和来自分组I/O块41的写数据信号50。该读/写控制块44产生内部的读和写控制信号53到该协议接口逻辑40以及读和写控制信号54到该DUV 30中的寄存器和存储器块。
该存储器地址块45保持存储器地址并更新它用于存储器访问操作。该存储器地址块45从分组I/O块41接收存储器地址信号50并产生目前存储器地址信号55到该DUV 30。
该读数据块46从该DUV 30中的该寄存器和存储器接收数据信号56并产生选择的数据信号57到该分组I/O块41。
图2A表示三个寄存器例REG0、REG1,和REG2,它们都在示例性DUV 30中,而该访问逻辑被综合到该DUV 30中以允许对那些寄存器的读和写。寄存器REG0、REG1,和REG2可能已经在上述第一步骤中加以识别,在该例中,寄存器REG0、REG1和REG2分别是48位,16位,和32位的寄存器60,63,和66,其允许说明本发明不同实施例的灵活性。在该DUV 30中,寄存器REG0、REG1,和REG2从DUV逻辑31接收写数据和控制信号32并产生读数据信号56到该DUV逻辑31。综合数据多路复用器61,64,和67和控制多路复用器62,65,和68并附加到DUV 30,使得该协议接口逻辑40可加载数据到寄存器REG0、REG1,和REG2和从它们下载数据。该多路复用器61,62,64,65,67,和68由在来自该协议接口逻辑40的信号组54中的选择信号REGS控制。REG0、REG1,和REG2是在来自该协议接口逻辑40的信号组54中的寄存器写控制信号并分别连接到控制多路复用器62,65,和68。DIN<47:0>是来自该协议接口逻辑40的48位数据信号组50并连接到数据多路复用器61,64,和67。RRDO<47:0>是来自REG0的48位数据信号组,RRD1<15:0>是来自REG1的16位数据信号组,和RRD2<31:0>是来自REG2的32位数据信号组,RRD0、RRD1,和RRD2被连接到DUV逻辑31和协议接口逻辑40作为信号组56。
当该选择信号REGS未认定时,REG0、REG1,和REG2从该DUV逻辑31接收写数据和控制信号32。当认定选择信号REGS时,REG0、REG1,和REG2从该协议接口逻辑40接收写数据信号50和控制信号54。不管该选择信号REGS,该读数据信号56被送到该DUV逻辑31和该协议接口逻辑40。
图2B表示在该DUV 30中的两个存储器例MEM0和MEM1,它们表示在一个示例性DUV 30中,和访问逻辑被综合到该DUV 30中,以允许对这些存储器进行读和写。存储器MEM0和MEM1可能已在上述第一步骤中识别。MEM0是存储器70,具有40位数据和8位地址,而MEM1是存储器74,具有18位数据和14位地址。选择这些数据大小和地址长度以便说明本发明的灵活性并且不限制能在该DUV 30中存在的存储器的类型。在该DUV 30中MEM0和MEM1从该DUV逻辑33接收写数据,存储器地址,和写允许信号34并产生读数据信号56到DUV逻辑33。数据多路复用器71和75,地址多路复用器72和76、和写允许多路复用器73和77被综合并附加到该DUV 30,使得该协议接口逻辑40可加载数据到MEM0和MEM1和从其下载数据。该多路复用器71,72,73,75,76,和77由在来自该协议接口逻辑41的信号组54中的选择信号MEMS所控制。MWE0 MWE1是在来自该协议接口逻辑40的信号组54中的存储器写允许信号并分别连接到写允许多路复用器73和77。DIN<39:0>是来自该协议接口逻辑40的40位数据信号组50并连接到数据多路复用器71和75。MAD<13:0>是来自该协议接口逻辑40的14位地址信号组55并连接到地址多路复用器72和76。MRDO<39:0>是来自MEM0的40位数据信号组,和MRD1<17:0>是来自MEM1的18位数据信号组。MRD0和MEM1连接到该DUV逻辑33和该协议接口逻辑40作为信号组56。
当该选择信号MEMS未认定时,存储器MEM0和MEM1从该DUV逻辑33接收写数据,存储器地址,和写允许信号34。当认定该选择信号MEMS时,MEM0和MEM1从该协议接口逻辑40接收写数据信号50,存储器地址信号55,和写允许信号54。不管选择信号MEMS,该读数据信号56送到DUV逻辑33和协议接口逻辑40。
图3是该协议接口逻辑40中的分组I/O块41的详细方块图。在该数据缓冲器21中的请求分组经由信号22移动到输入分组寄存器80用于命令的执行。在目前的一个优选实施例中,储存在该寄存器80中的请求分组被分到五个字段中1位的TAG,3位的CMD,1位的END,2位的ID,和48位的DATA段。这些字段的长度并不限于这些特定的长度并可按特定系统的需要建立。在CMD,END,ID,和DATA字段中的值在信号50上送到其他的块。在TAG字段中的值送到1位寄存器81,其保持在先周期的TAG值。在寄存器80的TAG字段中的值在“异-或”门82相对储存在寄存器81中的在先TAG值进行校验,以便在信号83上产生NEWIN用于表示是否一个新的分组已到达该寄存器80中。如果NEWIN是一,该寄存器80已从数据缓冲器21接收到一个新的分组。虽然在图3的示例性分组I/O块41中TAG字段的大小在该特定实施例中是1位,但是它可以多于2位,在该情况下,该“异-或”门82不得不由一个合适的逻辑块取代以校验该两个数的相等性。
一个响应分组储存在输出分组寄存器84中,然后在信号23上送到数据缓冲器21。在该特定实施例中,该响应分组在该寄存器84中被分到三个字段中1位的TAG,6位的UNUSED,和48位的DATA字段。这些字段的长度并不限制到这些特定的长度和可以根据一个特定系统的需要建立。信号57的值被储存到寄存器84的DATA字段中。在UNUSED字段中的值并不使用和通常为零。TAG字段的值由NOT门85触发。在信号86上的NEWOWT控制寄存器84,使得仅当NEWOUT认定时该寄存器84储存一个新数据和一个新tag位。虽然在该特定实施例中,在该示例性分组I/O块41中该TAG字段的大小是1位,但它可以多于2位。在该情况下,该NOT门85不得不由一个合适的逻辑块取代以更新该TAG字段值。
图4是在协议接口逻辑40中的存储器地址块45的目前优选实施例的详细方块图。寄存器90保持经历地址多路复用器91的14位存储器地址。该多路复用器选择信号MADS和该寄存器控制信号MADE在信号53上到达。当MADS是零时,该多路复用器91选择由地址增量器92增加的地址。当MADS是一时,该多路复用器选择在信号50上的一个存储器地址DIN<13:0>。保持在寄存器90中的目前存储器地址MAD<13:0>在信号55上送到DUV 30。
图5是在协议接口逻辑40中的目前优选的读数据块46的详细方块图。三个寄存器读数据RRD0<47:0>,RRD1<15:0>,和RRD2<31:0>在信号56上传送到一个寄存器数据多路复用器93,其由信号53上的RRDS<1:0>控制。RRDS<1:0>的值0,1,和2分别选择RRD0,RRD1和RRD2。两个存储器读数据MRD0<39:0>和MRD<17:0>在信号56上送到存储器数据多路复用器94,其由信号53上的MRDS控制。MRDS的值0和1分别选择MRD0和MRD1。来自多路复用器93和94的数据送到另一个数据多路复用器95,其由一个选择信号MRS所控制。MRS的值1和0分别选择多路复用器93的输出和多路复用器94的输出。多路复用器95的输出是在信号57上送到分组I/O块41的最后读数据。
图6是由协议接口逻辑41解码和执行的目前优选协议命令的图表。如图3所说明的,来自数据缓冲器21的储存在输入分组寄存器80中的一个请求分组被分到5个字段中。3位的CMD字段编码7个命令。NOP(NOOperation)命令由CMD=0或1指定和不做任何事情但消耗至少一个时钟周期。WR(Write Register)命令由CMD=2指定并写入由寄存器ID或ID字段中的Rid以及DATA字段中的写数据指定的目标寄存器。RR(Read Register)命令由CMD=3指定,读在由寄存器ID或ID字段中Rid指定的目标寄存器中的数据,并将其储存在输出分组寄存器84的DATA字段中。
SWM(Select Write Memorg)和WM(Write Memorg)命令用于将数据以连续模式加载到一个存储器。该SWM命令由CMD=4指定并将ID字段中的存储器ID或MID储存到图10的存储器ID寄存器130中和将DATA字段中的开始地址储存到图4的存储器地址寄存器90中。该SWM命令的执行以存储器写模式赋予该协议接口逻辑40。该WM命令由CMD=5指定,并将DATA字段中的写数据写入到由存储器ID寄存器130指示的目标存储器中;该目标写存储器地址是储存在存储器地址寄存器90中的地址。当该WM命令写该最后数据于该目标存储器中时,值一被赋予在该END字段中;否则,值零被赋予在该END字段中。当该协议接口逻辑40处存储器写模式状态时,该WM命令仅仅是接受的和执行的命令。该END字段的最后数据指示赋予该协议接口逻辑40块返回正常的非-存储器模式。
SRM(Select Read Memory)和RM(Read Memory)命令用于将数据以连续模式从一个存储器下载该SRM命令由CMD=6指定并储存ID字段中的存储器ID或MID到存储器ID寄存器130中和将DATA字段中的开始地址储存到存储器地址寄存器90中。该SRM命令的执行以存储器读模式赋予该协议接口逻辑40。该RM命令由CMD=7指定并从由存储器ID寄存器130指示的目标存储器读数据;该目标读存储器地址是储存在存储器地址寄存器90中的地址。从该目标存储器单元读出的数据储存在输出分组寄存器84的DATA字段中。当该RM命令从该目标存储器读该最后数据时,值一被赋予在该END字段中;否则值零被赋予在该END字段中。当该协议接口逻辑40处于存储器读模式状态时,该RM命令是仅仅接受和执行的命令。该END字段的最后数据指示赋于该协议接口逻辑40块返回正常的非-存储器模式。
如图4中所说明的,每个WM或RM命令的执行使该存储器地址递增1。第一存储器地址由该SWM或SRM命令储存。在该SWR命令之后的第一WM命令写入由储存在存储器地址寄存器90中的存储器地址指示的存储器单元,和第二WM命令写入下一个存储器单元,等等。类似地,在该SRM命令之后的第一RM命令读由储存在存储器地址寄存器90中的存储器地址指示的存储器单元,该第二RM命令读下一个存储器单元,等等。
图7是该协议接口逻辑40中的目前优选的命令解码块43的详细方块图。在信号50上的来自输入分组寄存器80的CMD字段的CMD<2:0>送到解码器100产生6个信号,它们同信号83上的NEWIN相与以在AND门101产生WR命令信号CMDWR,在AND门102产生RR命令信号CMDRR,在AND门103产生SMW命令信号CMDSMW,在AND门104产生WN命令信号CMDWM,在AND门105产生SRM命令信号CMDSRM,以及在AND门106产生RM命令信号CMDRM命令信号,所有在信号51上的信号被送到其他块。
图8是该协议接口逻辑40的状态和状态转移图。存在三个状态NM(非-存储器),MW(存储器写),和MR(存储器读)状态,分别由110,111,和112表示。当模拟在该硬件加速器20上开始时,协议接口逻辑40进入NM状态。执行NOP,WR,和RR命令不改变状态。在该NM状态执行SWM命令将NM状态改变到MW状态。执行END=0时的WM命令和NOP命令不改变状态;执行END=1时的WM命令将MW状态改变到NM状态。在NM状态执行SRM命令将NM状态改变到MR状态。执行END=0时的RM命令和NOP命令不改变状态;执行END=1时的RM命令将MR状态改变到NM状态。
图9是该协议接口逻辑40中的目前优选的状态控制块42的详细方块图。目前状态STATE储存在状态寄存器120中并送到状态转移控制121以产生返回储存在该状态寄存器120中的下一个状态。输入到该状态转移控制121的信号包括在信号51上的CMDSWM和CMDSRM,由在信号51上的CMDRM和在信号51上的END在AND门122相与产生的信号,和在信号51上的CMDWM和在信号50上的END在AND门123相与产生的信号。该状态转移控制121实现在图8中说明的状态转移。该目前状态STATE在解码器124解码以产生在信号52上的三个状态信号STATENM,STATEMW,和STATEMR。
图10是在该协议接口逻辑40中的目前优选的读/写控制块44的详细方块图。该读/写控制块44从输入信号50,52,和51产生输出控制信号54,53,和86。在信号50上的来自输入分组寄存器80的ID字段的ID<1:0>送到控制逻辑131和存储器ID寄存器130。从该存储器ID寄存器130输出的MID也送到该控制逻辑131。该控制逻辑131由(CMDWR+CMDRR)*STATENM产生寄存器读数据选择信号REGS,由(CMDWR*STATENM*(ID=0)产生寄存器写允许0信号RWE0,由CMDWR*STATENM*(ID=1)产生寄存器写允许1信号RWE1,由CMDWR*STATENM*(ID=2)产生寄存器写允许2信号,由STATEMW+STATEMR产生存储器读数据选择信号MEMS,由CMDWM*STATEWM*(MID=0)产生存储器写允许0信号MWE0,由CMDWM*STATEWM*(MID=1)产生存储器写允许1信号MWE1,由MEMS产生存储器/寄存器选择信号MRS,(CMDSWM+CMDSRM)*STATENM产生存储器地址选择信号MADS,由MEMS+MADS产生存储器地址允许信号MADE,和由CMDRR*STATENM+CMDRM*STATEMR产生NOUT,这里“+”是逻辑OR操作符,“*”是逻辑AND操作符,和“=”是相等性操作符。来自该控制逻辑131的REGS,RWE0,RWE1,RWE2,MWE0,和MWE1在信号54上送到外部。来自该控制逻辑是131的MRS,MADS,和MADE在信号53上送到外部。来自该控制逻辑131的NOUT储存在1位寄存器132中,从该寄存器132的输出NEWOUT在信号86上送到外部。
图11A是在该协议接口逻辑40中的执行寄存器写命令的示例性定时图表。行140(CYCLE),141(NEWIN),142(CMD),143(DIN),和144(REG)分别表示时钟周期,NEWIN信号值,命令,写数据,和目标寄存器值。四个WR命令和写数据A,B,C,和D分别在周期N,N+1,N+3,和N+4到达。该写数据A,B,C,和D分别在周期N+1,N+2,N+4和N+5被储存到目标寄存器中。在该示例性定时图表中假定执行一个WR命令将耗费一个周期。如果执行一个WR命令耗费二个或更多个周期,则要求一个简单的控制逻辑中断下一个命令的执行,直到完成该WR命令的执行。
图11B是在协议接口逻辑40中的执行寄存器读命令的示例性定时图表。行145(POUT)和146(TRANSFER)分别表示储存在输出分组寄存器84中的读数据和从硬件加速器20转移到主工作站10的数据。在周期N到达的命令RR从目标寄存器读数据A并在周期N+1将它储存到输出分组寄存器84的DATA字段中。在周期N+2数据转移将在该输出分组寄存器84中具有该寄存器数据的响应分组经由数据缓冲器21送到主工作站10。在周期N+3到达的RR命令将从目标寄存器读出数据B并在周期N+4将它储存到该输出分组寄存器84的DATA字段中。在周期N+5数据转移将在该输出分组寄存器84中的具有寄存器数据的响应分组经由数据缓冲器21送到主工作站10。在该示例性定时图表中假定执行一个RR命令耗费一个周期。如果执行一个RR命令耗费两个或更多个周期,则要求一个简单控制逻辑中断下一个命令的执行,直到完成该RR命令的执行。
储存在输出分组寄存器中的响应分组的数据转移由在主工作站10上运行的验证控制程序11启动。在该示例性定时图表中,为简化而假定该验证控制程序11识别在送出一个RR命令之后何时启动该数据转移以获得读数据。如果该验证控制程序无法识别何时启动该数据转移,则它将不得不重复数据转移操作,直到它接收一个具有不同于在先TAG定段值的TAG字段值的响应分组为止,以表示该分组包括一个新的读数据。由于该验证控制程序11优先识别该协议接口逻辑在它执行一个RR命令之后的一个周期能使该寄存器数据立即进入该输出分组寄存器84,它能在该RR命令之后送一个NOP命令和接着启动该数据转移,使得该验证控制程序11能接收在该响应分组中的寄存器数据。或者该验证控制程序11还能送一个不具有更新TAG字段值的命令,其实际地等效于消耗至少一个时钟周期并接着启动数据转移的一个NOP命令。
图11C是在该协议接口逻辑40中的连续模式存储器写操作的示例性定时图表。行147(MAD)和148(MEM)分别表示该目标存储器的存储器地址和数据。在周期N到达的SWM命令在周期N+1将第一写存储器地址10储存到储存器地址寄存器90。在周期N+1协议接口逻辑40进入到存储器写模式。在周期N+1随写数据A第一WM命令到达。在周期N+1,该写数据A被储存在该目标存储器的存储器单元10。在周期N+1存储器地址递增1,和在周期N+2更新的存储器地址11被储存到存储器地址寄存器90。在周期N+2随写数据B到达的第二WM命令在周期N+2在目标存储器的存储器单元11写数据B。在周期N+3存储器地址递增1,和更新的存储器地址12被储存到存储器地址寄存器90中。在周期N+4随写数据C到达的第三MW命令在周期N+4在目标存储器的存储器单元12写数据C。在周期N+4存储器地址递增1,和在周期N+5,更新的存储器地址13储存到存储器地址寄存器90中。在该示例性定时图表中,假定一个SWM命令执行耗费一个周期并使存储器地址立即在下一周期进入存储器地址寄存器90。如果执行一个SWM命令耗费两个或更多个周期,则要求一个简单的控制逻辑去中断下一命令的执行直到完成该SWM命令的执行为止。对一个WM命令保持相同的考虑。
图11D是在该协议接口逻辑40中的连续模式存储器读操作的示例性定时图表。在周期N到达的SRM命令在周期N+1将第一读存储器地址10储存到存储器地址寄存器90。在周期N+1该协议接口逻辑40进入到存储器读模式。在周期N+1第一RM命令到达和在周期N+1从目标存储器的存储器单元10读数据A并将它储存到输出分组寄存器84的DATA字段中。在周期N+1存储器地址递增1,和在周期N+2储存更新的存储器地址11。在周期N+3数据转移经由数据缓冲器21将在输出分组寄存器84中具有该存储器数据的响应分组送到主工作站10。类似地,在周期N+4到达第二RM命令从目标存储器的存储单元11读数据B并在周期N+5将它储存在该输出分组寄存器84的DATA字段中。在周期N+4存储器地址递增1,和在周期N+5储存更新的存储器地址12。在周期N+6数据转移经由数据缓冲器21将在输出分组寄存器84中具有该存储器数据的响应分组送到主工作站10。在该示例性定时图表中,假定执行一个SRM命令占用一个周期并在下一周期使该存储器地址立即进入存储器地址寄存器90。如果执行一个SRM命令占用两个或更多周期,则要求一个简单控制逻辑去中断下一命令的执行,直到完成该SRM命令的执行为止。对一个RM命令保持相同的考虑。再者,在该示例性定时图表中,为简单性假定该验证控制程序11识别何时在送一个RM命令之后启动该数据转移得到每个存储器数据。如果该验证控制程序11无法识别何时启动数据转移得到在一个响应分组中的一个有效存储器数据,则对一个RR命令所讨论的选择对一个RM命令也可利用。
图12是表示用来产生协议接口逻辑的编辑-时间步骤的流程图。在150处理开始。第一步骤151编辑写在一个或多个HDL或硬件说明语言文件中的目标设计以产生该目标设计的基本表格(netlist)。第二步骤152校验151产生的基本表格中的寄存器和存储器的大小并基于该寄存器和存储器的大小计算协议字段大小。第三步骤153综合用于该目标设计的协议接口逻辑并将其附加到该基本表格。在154处理结束。
图13是图12中步骤152的详细流程图,以便根据该目标设计的基本表格计算该协议字段的大小。在160处理开始。步骤161调用CountNumOfRegs功能以求得在该基本表格中表示成变量“Nr”的寄存器数并分配一个唯一的识别符到每个寄存器。步骤162调用CountNumOfMems功能以求得在该基本表格中表示成变量“Nm”的存储器数并分配一个唯一的识别符到每个存储器。步骤163调用“max”功能比较Nr和Nm值并分配该较大的值到变量Ns。步骤164调用具有由用Ns值调用的log2功能返回的结果的“Ceil”功能计算表示Ns最大值所要求的位数并将它分配到变量Nsl,步骤165调用“findWidestRegData”功能求得在该基本表格中最宽寄存器数据的位数并将它分配到变量“Rd”。步骤166调用“findWidestMemData”功能求得在该基本表格中最宽存储器数据的位数并将它分配到变量“Md”。步骤167调用“findWidestMemAddress”功能求得在该基本表格中最宽存储器地址的位数并将它分配到变量“Ma”。步骤168调用“max”功能比较Rd,Md和Ma值并将最大值分配到变量Nd。步骤169分配1到变量sizeTag用于TAG字段尺寸,分配3到变量sizeCmd用于CMD字段尺寸,分配1到变量sizeEnd用于END字段尺寸,分配Nsl值到sizeId用于ID字段尺寸,和分配Nd值到变量sizeData用于DATA字段尺寸。在170处理结束。
当应用图2A和2B中所说明的示例性DUV 30时,如图3中所说明的那样分别计算Nr=3,Nm=2,Ns=3,Nsl=2,Rd=48,Md=40,Ma=14,和Nd=48,和设置ID和DATA字段大小到2和48位。
图14是图12的步骤153的详细的流程图,其构造一个协议接口逻辑的组成部分。在171处理开始。步骤172调用具有“Nsl”和“Nd”值的“CreatePacketIoBlock”功能产生如图3所说明的分组I/O块41。Nsl和Nd的值确定了输入和输出分组寄存器80和84的大小以及ID和DATA字段信号50和57的数量。步骤173调用“CreateCommandDecodeBlock”功能产生如图7中所示的命令解码块43。该块43与DUV无关。步骤174调用“CreateStateControlBlock”功能产生如图8和9中所说明的状态控制块42。该块42也与DUV无关。步骤175调用具有Ma值的“CreateMemoryAddressBlock”功能产生如图4中所说明的存储器地址块45。Ma值确定了存储器地址寄存器90的大小。步骤176调用具有Nd值的“CreateReadDataBlock”功能产生如图5所示的读数据块46。Nd值确定了从寄存器和存储器的读数据57的最大尺寸。步骤177调用具有Nsl,Nr,和Nm的值的“CreateReadWriteControlBlock”功能产生如图10中说明的读/写控制块44。Nsl的值确定了ID信号50的数和存储器ID寄存器130的大小。Nr和Nm的值分别确定了寄存器写允许信号的数和存储器写允许信号的数。步骤178调用“modifyRegBlockInDuv”功能以附加数据和控制多路复用器(参见例如图2A中的61,62,63,64,65,66,67)到DUV中的寄存器,只要在该DUV中存在至少一个寄存器。如图2A所说明的,附加到DUV的多路复用器允许该协议接口逻辑能直接访问DUV中的任一寄存器,步骤179调用“modifyMemBlockInDuv”功能以附加数据和控制多路复用器(参见例如图2B中的71,72,73,75,76,77)到DUV中的存储器,只要在该DUV中存在至少一个存储器。如图2B所说明的附加的多路复用器允许该协议接口逻辑能直接访问DUV中的任一存储器。在步骤180处理结束。
图15是模拟DUV和综合用于该DUV的协议接口逻辑操作的典型的运行时间序列的流程图。在190处理开始。在步骤191编辑的DUV加载到硬件加速器20。在步骤192建立与DUV的通信频道14。在步骤193初始数据加载到该DUV的寄存器和存储器中。在步骤194该DUV对大量周期进行模拟。在步骤195该模拟结果从该寄存器和存储器下载。在步骤196对照期望值校验模拟结果。在步骤197处理结束。在步骤193和195用在此公开的该协议接口逻辑40访问DUV中的寄存器和存储器。可存在某些情况,即在该DUV中的某些寄存器和存储器在步骤194的模拟期间被访问。
图16-18表示用C编程语言写的码本(code listing),具有某些忽略的本地变量说明。该C编程语言是广泛用于开发软件的已知的编程语言。例如它在由B.W.Kernighan和D.M.Ritchie编写的由Prentice Hall于1988年出版的“The C Programning Language(2ndedition)”中描述。在下列码本解释中,只用于更好可读性的空格行不加陈述。
图16是用于描述具有协议接口逻辑的操作的主要常数,变量,和功能的定义和说明的码本。行1-7定义七个常数CMD_NOP,CMD_WR,CMD_RR,CMD_SWM,CMD_WM,CMD_SRM,和CMD_RM,分别用于七个协议命令NOP(No Operation),WR(Write Register),RR(Read Register),SWM(Select Writc Memory),WM(Write Mamory),SRM(Select Read Memory),和RM(Read Memory)。行10定义“uint”为“unsigned int.”,行11和12说明“int”变量“sizeId”和“sizeData”以分别保持响应分组的ID和DATA字段的大小。行14和15说明具有初始值零的“uint”变量“tagOut”和tagIn”以分别保持用于输出和输入分组的TAG值。行17和18说明“uint”指针变量“packet Out”和“packetIn”以分别保持对请求和响应分组的指针。
行20-25说明六个外部的实用功能。行20说明返回不具有四个变元的值的Put_bits功能,以便将该数据位放到目标分组中voidput_bits(uint*packet,int pos,int size,uint data),这里“packet”是指向目标分组的指针,“POS”是在该目标分组中数据的第一位的位置,“size”是拷贝的数据位的数,和“data”保持拷贝的数据位。行21说明返回不具有四个变元的值的get_bits功能,以便从该目标分组得到该数据位voidget_bits(uint*packet,int pos,int size,uint*data),这里“packet”是指向目标分组的指针,“pos”是在该目标分组中的数据位的第一位的位置,“size”是拷贝的数据位的数,和“data”保持来自该目标分组的数据位。行22说明返回不具有两个变元的值的Copy_to_dbuff功能,以便拷贝一个分组到主工作站中的数据缓冲器中voidcopy_to_dbuff(int size,uint*packet),这里“size”是在该分组中拷贝的总位数和“packet”是指向保持该分组位的位置的指针。行23说明返回不具有两个变元的值的copy_from_dbuff功能,以便从该主工作站中的数据缓冲器拷贝一个分组voidcopy_from_dbuff(int size,uint*packet),这里“size”是在该分组中拷贝的总位数和“packet”是指向保持该拷贝的分组数据的位置的指针。行24说明返回不具有一个变化的值的transfer_to_haccel功能,以便将在该主工作站的数据缓冲器中的一个分组转移到该硬件加速器voidtransfer_to_hacce(int size),这里“size”是在该分组中转移的总位数,行25说明返回不具有一个变元的值的transfer_from_haccel功能,以便将来自该硬件加速器的一个分组转移到该主工作站中的数据缓冲器voidtransfer_from_hacce(int size),这里“size”是在该分组中转移的总位数。
为简化性假定数据位的最大数等于或小于32。如果大于32,则该put-bits功能的四个变元数据应当是指向保持该数据位的一个uint阵列的一个指针。类似地,该get_bits功能的四个变元数据应当是指向保持该数据位的一个阵列的一个指针。在下列码段(code fragment)中,为简化性还假定数据位的最大数等于或小于32。如果大于32,对该代码必须进行某些改变。但是对于那些本专业技术人员而言这是不困难的任务。
图17是送一个请求分组到该协议接口逻辑和从其接收一个响应分组两功能的码本。行30-41定义返回不具有五个变元的值的SendPacket功能,以便送一个请求分组到该硬件加速器void sendPacket(uint cmd,uint end,uint id,int ds,uint data),这里“cmd”是CMD字段值,其是在图16中行1-7处定义的七个命令常数之一,“end”是ENd字段位指示该分组是否为最后存储器访问命令,“id”是ID字段值指示目标寄存器/存储器ID,“ds”是传送的数据位数,“data”保持传送的数据位。行32通过附加5(用于TAG,CMD,和END字段的总位数),值“sizeId”,和“ds”值计算请求分组的总位数并将其分配到一个变量“ps”。行33反相“tagOut”的一位值并将它返回储存到用于该请求分组的“tagOut”。行34调用put_bits(packetOut,0,1,tagOut),以拷贝“tagOut”的值到由“packetOut”指向的请求分组的TAG字段中。行35调用put_bits(packetOut,1,3,cmd),以拷贝“cmd”值到由“packetOut”指向的请求分组的CMD字段中。行36调用put_bits(packetOut,4,1,end),以拷贝“end”的值到由“packetOut”指向的请求分组的ENd字段中。行37调用put_bits(packetOut,5,sizeId,id),以拷贝“id”值到由“packetOut”指向的请求分组的ID字段中。行38调用put_bits(packetOut,5+sizeId,ds,data),以拷贝“data”中的数据位到由“packetOut”指向的请求分组的DATA字段中。行39调用copy_to_dbuff(ps,packetOut),以拷贝由“packetOut”指向的请求分组到主工作站的数据缓冲器。行40调用transfer_to_hacce(ps)以便将该请求分组从该主工作站的数据缓冲器转移到该硬件加速器。
行43-54定义返回不具有两个变元的receivePacket功能,以便从硬件加速器接收具有数据的响应分组void receivePacket(int ds,uint*data),这里“ds”是在一个响应分组中的总位数和“data”是指向保持该响应分组数据位的位置的指针。行45通过附加5,sizeId值,和“ds”值计算该响应分组的总位数并将它分配到变量“ps”。行46-51编码一个“while”循环以从该硬件加速器读取一个有效响应分组。行47调用transfer_from_haccel(ps)将一个分组从该硬件加速器转移到主工作站中的数据缓冲器。行48调用copy_from_dbuff(ps,packet In),以拷贝一个分组从该数据缓冲器到由“packetIn”指向的位置。行49调用get_bits(packetIn,0,1,&tag),以提取该分组的TAG字段值并将其储存在变量“tag”中。行50相对“tagIn”值比较“tag”值,该“tagIn”值储存在先的“tag”值并离开“while”循环,只要这两值是不相同的,从而意味着该接收的分组是新的且有效;否则,该操作在行47-50重复。行52将该新“tag”值储存到“tagIn”中。行53调用get_bits(packet In,5+sizeId,ds,data)以提取该响应分组的DATA字段中的数据位并将它们储存到由“data”变量指向的位置中。
图18是四个功能的码本writeReg,readReg,writeMem,和readMem。行60-63定义返回不具有三个变元的值的writeReg功能void writeReg(uint rid,int ds,uint data),这里“rid”是目标寄存器ID,“ds”是写的数据位数,而“data”保持写的数据位。在行62,该writeReg功能调用sendPacket(CMD_WR,O,rid,ds,data)以便送具有该数据位的一个RW命令分组写。行65-69定义返回不具有三个变元的值的readReg功能void readReg(uint rid,int ds,uint data),这里“rid”是目标寄存器ID,“ds”是读的位数,而“data”保持从该目标寄存器读的数据位。在行67该readReg功能调用sendPacket(CMD_RR,O,rid,O,Null)送不具有数据的一个RR命令分组和在行68调用receivePackt(ds,data)从该目标寄存器读该数据位。
行71-80定义返回不具有六个变元的writeMem功能void write Mem(uint mid,int as,uint start,int nw,int ds,uint*data),这里“mid”是目标存储器ID,“as”是存储器地址位数,“start”是开始存储器地址,“nw”是写的存储器字的数,“ds”是每个存储器字的位数,和“data”是指向保持该存储器字写的阵列的指针。在行74,该writeMem功能调用sendPacket(CMD_SWM,O,mid,as,start)送具有目标存储器ID和开始存储器地址的一个SWM命令。在行75,在设置初始值零到变量“end”之后,在行76-79该writeMem功能进入到一个“for”循环,以便在行77-78重复该操作用于写的存储器字数。行77设置值一到该变量“end”,只要第i次迭代是最后的一次。行78调用sendPacket(CMD_WM,O,end,ds,data[i])从该数据阵列的第i个元素送具有该存储器字的一个WM命令。
行82-92定义返回不具有六个变元的readMem功能void read Mem(uint mid,int as,uint start,int nw,int ds,uint*data),这里“mid”是目标存储器ID,“as”是地址位数,“start”是开始存储器地址,“nw”是读的存储器字数,“ds”是每个存储器字的位数,和“data”是指向保持从目标存储器读出的存储器字的阵列的指针。在行85,该readMem功能调用sendPacket(CMD_SRM,O,mid,as,start)送具有目标存储器ID和开始存储器地址的一个SRM命令。在行86设置初始值零到变量“end”后,在行87-91该readMem功能进入“for”循环,以便在行88-90重复该操作用于读的存储器字数。行88设置值一到变量“end”,只要第i次迭代是最后的一次。行89调用sendPacket(CMD_RM,O,end,ds,data[i])送一个RM命令从该目标存储器的读该第i个存储器字。行90调用receivePacket(ds,&data[i])接收该第i个存储器字并将它储存到该数据阵列的第i个元素中。
概括地,已提供了一个硬件辅助的验证系统,其大大地改善了对一个用户的经受功能验证的设计的存储器和寄存器的访问。某些实施例使用基于分组的协议执行主工作站和硬件加速器之间的数据转移以便从该目标DUV中的寄存器和存储器加载和下载数据。该协议与一个协议接口逻辑相关,而该逻辑在编辑时间用该目标DUV中寄存器和存储器大小参数综合并在运行时间用该目标DUV模拟。该综合的协议接口逻辑根据在主工作站运行的验证控制程序解码在一个请求分组中编码的请求命令并执行它。只要该请求命令是一个读命令,则它将送在一个响应分组中的数据到该主工作站。
本发明的一个示例性实施例已对如在图2A和2B中所示的具有三个寄存器和两个存储器的示例性DUV详细地作了公开,那些本专业技术人员将理解在本发明的精神范围内可实践多种修改和变型。这样,在已描述最佳方法和设备的同时,如对那些本专业技术人员所显见的那样,可能有更多的实施例和应用而不脱离在此公开的创造性的概念。因此除附加的权利要求的精神外本发明不受限制。
权利要求
1.一种为读和写而用于编辑一个用户的设计以允许对在该用户的设计中的存储器和寄存器更大量访问的方法,包括识别在该用户的设计中的所有存储器和寄存器;综合可访问性逻辑于该用户的设计中,所说访问性逻辑产生对该存储器和寄存器的访问端口。
2.权利要求1的方法还包括分配一个唯一的识别符到该用户的设计中的每个存储器和寄存器的步骤。
3.权利要求2的方法,其中所说可访问性逻辑包括选择逻辑,所说选择逻辑适于接收所说唯一识别符并选择该用户的设计中的存储器和寄存器的特定的一个。
4.权利要求3的方法,其中所说可访问性逻辑包括从该用户的设计中的存储器和寄存器的所说特定的一个读或向其写的逻辑。
5.权利要求4的方法,其中所说可访问性逻辑包括译码逻辑,其从一个主机接收命令并控制执行对该用户的设计中的存储器和寄存器的读和写数据。
6.一个用于验证一个目标设计的硬件辅助设计验证系统,所说验证系统具有与一个硬件加速器通信的一个主工作站,该目标设计包括寄存器和存储器,该主工作站加载数据到该寄存器和存储器或从其下载数据,包括综合到该逻辑电路中的协议逻辑,所说协议逻辑包括一个输入分组寄存器,与所说主工作站通信;一个输出分组寄存器,与所说主工作站通信;命令解码逻辑,所说命令解码逻辑解码在所说输入分组寄存器中的一个命令,以识别在所说目标设计中的一个特定操作,寄存器或存储器单元;写命令执行逻辑,写储存在所说输入分组寄存器中的数据到在所说目标设计中的所说寄存器或存储器单元中用于在所说命令解码逻辑中解码的一个写命令;读命令执行逻辑,从所说目标设计中的所说寄存器或存储器单元读数据并储存所说数据于所说输出分组寄存器中用于在所说命令解码逻辑中解码的一个读命令;以及接口逻辑,接口在所说目标设计中的所说寄存器和存储器。
7.权利要求6的硬件辅助设计验证系统,其中所说协议逻辑包括确定来自所说输入分组寄存器的数据是否为新的以及控制激活命令译码和执行。
8.一种综合基于分组的协议逻辑的方法,当使用一个硬件加速器执行功能验证时用于提供对在一个目标设计中的寄存器和存储器访问,包括确定一个请求分组的固定尺寸,所说请求分组包括标记,命令,和数据终止字段;计算在该目标设计中存在多少寄存器;计算在该目标设计中存在多少存储器;确定所说请求分组的一个最大识别字段尺寸;确定在该目标设计中该寄存器的一个最大数据位数;确定在该目标设计中该存储器的一个最大数据位数;确定在该目标设计中该存储器的一个最大地址位数;确定一个最大位数,送该寄存器数据,存储器数据,和存储器地址到该目标设计以确定所说请求分组的数据字段大小。
9.权利要求8的方法,进一步包括步骤产生连接到该硬件加速器中的一个输入数据缓冲器的一个输入分组寄存器;产生连接到该硬件加速器中的一个输出数据缓冲器的一个输出分组寄存器;产生一个命令解码块以解码在所说输入分组寄存器中的一个命令;产生一个执行逻辑以执行在所说解码块中解码的一个命令;以及产生接口逻辑,以访问在所说目标设计中的寄存器和存储器。
10.权利要求9的方法,进一步包括步骤产生一个存储器识别寄存器,以识别在目标设计中的存储器;产生一个存储器地址寄存器,以提供一个目前存储器地址用于访问;在执行一个存储器读命令或一个存储器写命令之后递增所说目前存储器;产生一个有限状态机器指示该基于分组的协议逻辑是处于非存储器模式,连续存储器写模式,或连续存储器读模式;以及产生一个状态转换控制,当所说连续存储器操作终止时其选择所说非存储器模式,当所说连续存储器写操作启动时,所说状态转换控制进而选择所说连续存储器写模式,当所说连续存储器读操作启动时,所说状态转换控制进而选择所说连续存储器读模式。
全文摘要
提供增加用户的设计中的寄存器和存储器的可访问性的一个系统,该用户的设计经历在一个硬件辅助设计验证系统中的功能验证。使用一个基于分组的协议执行在一个主工作站和硬件加速器之间的数据传输操作,以便在逻辑模拟期间向在目标验证下设计(DUV)中的该寄存器和存储器加载数据和由其下载数据。该方法和设备综合接口逻辑到该DUV中以对在该目标DUV中的寄存器和存储器提供更多的访问,该DUV是在该硬件加速器的辅助之下进行模拟的。
文档编号G06F17/50GK1543618SQ01820983
公开日2004年11月3日 申请日期2001年10月19日 优先权日2000年10月20日
发明者T·奥卡米, T 奥卡米 申请人:快速转动设计系统公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1