著录项信息
专利名称 | 使用综合用于有效数据加载和下载的基于分组的协议的逻辑的硬件辅助的设计验证系统 |
申请号 | CN01820983.1 | 申请日期 | 2001-10-19 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2004-11-03 | 公开/公告号 | CN1543618 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F17/50 | IPC分类号 | G;0;6;F;1;7;/;5;0查看分类表>
|
申请人 | 快速转动设计系统公司 | 申请人地址 | 美国加利福尼亚州
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 快速转动设计系统公司 | 当前权利人 | 快速转动设计系统公司 |
发明人 | T·奥卡米 |
代理机构 | 中国专利代理(香港)有限公司 | 代理人 | 吴立明;王忠忠 |
摘要
提供增加用户的设计中的寄存器和存储器的可访问性的一个系统,该用户的设计经历在一个硬件辅助设计验证系统中的功能验证。使用一个基于分组的协议执行在一个主工作站和硬件加速器之间的数据传输操作,以便在逻辑模拟期间向在目标验证下设计(DUV)中的该寄存器和存储器加载数据和由其下载数据。该方法和设备综合接口逻辑到该DUV中以对在该目标DUV中的寄存器和存储器提供更多的访问,该DUV是在该硬件加速器的辅助之下进行模拟的。
发明的领域\n本发明一般涉及数字硬件设计验证系统,特别涉及使用一个硬件加 速器于逻辑模拟的硬件辅助的设计验证系统。\n 发明的背景\n在现代化电子工业中,许多数字硬件设计是用一种硬件说明语言描 述的。例如,在1996年由IEEE公布的“基于Verilog硬件说明语言的IEEE 标准硬件说明语言”中定义的该IEEE标准1364-1995硬件说明语言是 流行的硬件说明语言之一。用这样一种硬件说明语言写的数字硬件设计 在它被编译以产生用于制作的最终基本表格之前为了其所要求的功能度 不得不加以验证。该设计验证任务长期与逻辑模拟相关。\n一个硬件辅助设计验证系统使用一个硬件加速器为要求比基于软件 的验证系统能提供的性能更高的一类设计验证任务增强逻辑模拟性能。 该硬件加速器是由大量逻辑处理器组成的专业化的逻辑模拟机器,每个 逻辑处理器具有可模拟一个逻辑门的能力。例如,1981年12月15日授 于Cocke等的名称为“逻辑模拟机器”的美国专利U.S.4,306,286公开了 这样一种逻辑模拟机器。要指出有可能不使用这样的一个硬件加速器来 执行验证。\n用作一个硬件加速器的一类硬件器件是来自California,San Jose的 Quickturn Design Systems公司(本发明的受让人)的CobaltTM产品。 在一个典型的硬件辅助设计验证系统中,该硬件加速器被连接到一个主 工作站,其运行一个验证控制程序,以便将该编译的验证下设计(在此 还称为“DUV”或“用户设计”)装入到该硬件加速器,初始逻辑模拟, 终止逻辑模拟中,并从该硬件加速器下载该模拟结果。用户相对于期望 结果校验该模拟结果以了解该DUV是否已被模拟为所期望的。在设计 验证的早期阶段,当该用户发现该模拟结果不正确时,对该用户而言, 相对容易发现在该DUV中的问题。但是,在后来的设计验证阶段调整 DUV变得更加困难。由于该问题,在逻辑模拟期间,用户经常想校验在 该DUV中的某些键控信号(Key Signal)的中间值。为满足来自该用 户的这样的一个要求,该设计验证系统对信号的能见度操作提供支持, 以使得在逻辑模拟期间在该DUV中的信号对该用户可见或可访问。\n一个基于软件的验证系统对信号能见度操作提供这样的支持是容易 的,但是对于一个硬件辅助的验证系统就不很容易了,这是因为它要求 在主工作站和模拟该DUV的硬件加速器之间的额外的通信。\n通常通过一个很一般的I/O接口例如SCSI接口初始加载该DUV到 该硬件加速器中。在逻辑模拟期间有可能使用该I/O接口访问该DUV中 少量信号。在该情况下,在该硬件加速器中的该接口控制程序首先识别 该要求的信号,定位它们,读出其值,然后将它送回该主工作站。\n信号能见度操作通常不仅包括审查一个特定信号的中间值的操作, 而且还包括存储一个逻辑值于该信号上用于后续模拟步骤。使用这些基 本操作,用户可以审查一个寄存器的值或通过访问一组相应于该寄存器 位的信号存储一个值于该寄存器上。通过访问一组有关的寄存器,该用 户还可写入数据到一个存储器或从一个存储器读出数据。\n为利用该先进的半导体芯片技术的优点,增加DUV的数量包括大 容量存储器。用常规的信号能见度操作,可采取长时间从该DUV中的 大容量存储器加载或下载数据,因为该基本信号能见度操作基于低等级 审查或在单个信号上的储存操作。\n为加速DUV中的寄存器和存储器的加载和下载操作,一个硬件辅 助的设计驱证系统可使用在该主工作站和专用于信号能见度操作的该硬 件加速器之间的一个专用的通信频道。为了在访问在该硬件加速器模拟 的DUV中的请求的信号的情况下使开销最小,该专门的通信频道被直 接连接到输入和输出数据缓冲器,后者依次直接接口该DUV而没有任 何接口控制程序。\n在1998年2月24日授权于Fogg,Jr等的美国专利5,721,953中公 开了具有数据缓冲的接口方案之一,该专利的发明名称为“Interface for Logic Simulation Using Parallel Bus for Concurrent Transfers and Having F1F0 Buffers for Sending Data to Receiving Units When Ready”,其讨论了关于具有F1F0或在该主计算机和该 逻辑模拟机器之间提供F1F0缓冲器的接口以使该接口延迟最小。美国专 利5,721,953的公开全部包括在此作为参考。\n输出信号被分派到输出数据缓冲器的位,而输入信号被分派到输入 数据缓冲器的位。对于一个审查操作(即,观察或读出一个信号值), 该验证控制程序启动一个数据传送装置将该储存在该输出数据缓冲器中 的信号值传送到该主工作站并选择该请求的信号的值。对于一个储存操 作(即,写一个信号的值),该验证控制程序汇编该值以储存和启动一 个数据传送装置将它们传送到在该硬件加速器中的该输入数据缓冲器。 当编辑该DUV用于逻辑模拟时综合附加的写和逻辑元件用于接口到该 DUV。\n综合用于信号能见度操作的写和逻辑元件不是该DUV的部分,而 是虚拟元件同该DUV合并用于逻辑模拟。如在一篇技术论文中所描述 的那样,虚拟逻辑元件通常用于产生输入到该DUV并校验该模拟输出 的测试台,该技术论文为Beece等于1998年6月在刊物Procceedings of the 25th ACM/IEEE Design Automation Conference上公布,其题目 为“The IBM Engineering Verification Engine”。\n只要对于信号能见度操作可见信号的数量相对少,则静态分配该输 入和输出信号到该输入和输出数据缓冲器的位是可接受的。然而对于大 量可见信号是不理想的,因为对物理上可利用数据缓冲器位的数量存在 一定的限制。\n为有效地增加可见信号,对该DUV中的信号的可访问性问题的一 个解决方案是对在该数据缓冲器内的每一位时分多路复用两个或多个信 号,以便有效地增加可见的信号数。时分多路复用多个信号的一种方法 在1997年1月21日授权于Agarwal等的美国专利U.S.5,596,742中公开, 该专利的名称为“Virtual Interconnections for Reconfigurable Logic System”,其讨论了一种灵巧地多路复用多根逻辑导线中的每根物理导 线并使这些连结流水线化的编辑技术。另一种截然不同于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 Pia Multiplexing”,其公开了一个集成电路,用于实施重新配置逻辑到一个 输入/输出管脚以增加有效I/O管脚适用性,该逻辑具有时分多路复用至 少两个信号的一个输入/输出缓冲器电路。U.S.5,596,742,5,960,191和 6,020,760全部包括在此作为参考。\n虽然这些时分多路复用方法能有效地通过该数据缓冲器增加可见信 号的数量,但是不能解决访问该DUV中的寄存器和存储器的执行问题。 组合被要求来访问一个寄存器或存储器的信号能够减小由于对在一个组 中的信号收集和散开该位值而引起的开销。然而该信号组合方法将强加 某些限制于时分多路复用多个信号,因为所有在一个组中的信号不得不 在同一时间可被看见,和可存在很多这样的信号组,和可存在若干由两 个或多个组共享的某些信号。\n使用该低电平审查和存储操作,在信号分组或不进行信号分组的情 况下要求某些步骤访问一个寄存器;要求更多的步骤访问一个存储器字。 因此,对于该验证控制程序期待提取一个很长的时间来加载/下载大量数 据到/从一个存储器。这样的耗费时间的加载和下载操作将明显降低整个 模拟性能,使模拟的效率大为降低,例如将模拟若干时钟周期。\n如果一个DUV包括许多大容量存储器,这种性能降低将变得非常 严重,用该硬件加速器将有效地使倍增模拟性能为零。希望提供一种方 法和设备来减小数据负载和下载所要求的时间。还希望提供一种方法和 设备以便更容易访问该寄存器和存储器。\n 发明概况\n本发明使用一个新的基于分组的协议执行该主工作站和该硬件加速 器之间的数据传送操作,以便向一个验证下目标设计(也称为目标设计 或用户的设计中)的寄存器和存储器加载数据和由其下载数据。该协议 是基于可变大小请求和响应分组。一个请求分组是由该主工作站到该硬 件加速器的一个输入分组并包括命令,变元,和任意数据,而一个响应 分组是由该硬件加速器到该主工作站的一个输出分组并包括来自该DUV 中的目标寄存器或存储器的读出数据。\n在本发明的一个实施例的一个方面,用于编辑一个用户的设计的一 种方法是公开在所有在用户的设计中的存储器和寄存器都被识别的场 合。在识别该存储器和寄存器之后,可访问性逻辑综合到用户的设计中。 该可访问性逻辑包括对该存储器和寄存器的访问端口。在本发明的另一 方面,一个唯一识别符被分配到该用户的设计中的每个存储器和寄存器。 在本发明的再一方面,该可访问性逻辑包括选择逻辑。该选择逻辑适于 接收该唯一的识别符并选择在该用户的设计中特定的一个存储器或寄存 器。在本发明的再一方面,可访问性逻辑包括从该用户的设计中的特定 的一个存储器或寄存器读出的逻辑或写入到其中的逻辑。在本发明的再 一方面,该可访问性逻辑包括解码逻辑,其从一个主工作站接收命令并 控制对该用户的设计中的存储器和寄存器读写数据的执行。\n为处理该请求的和响应的分组,一个协议接口逻辑用在该目标DUV 中的寄存器和存储器的大小参数在编辑时间进行综合并在运行时间用该 目标DUV模拟。该综合的协议接口逻辑包括寄存器分组,一个有限状 态机器,一个命令解码逻辑,一个命令执行逻辑,和一个数据读和写控 制逻辑,用于数据加载和下载操作。它解码来自在该主工作站上运行的 验证控制程序的一个请求分组并执行在该分组中的编码的命令。如果该 命令是一个数据写请求,则该协议接口逻辑将该分组中的数据写到目标 寄存器或存储器单元。如果该命令是一个数据读请求,则协议接口逻辑 从该目标寄存器或存储器单元读出数据并将响应分组中的数据送到该主 工作站。\n现在将参照附图和在权利要求中的指示更具体地描述本发明的上述 的和其他的优选特征,包括实施的不同的新细节和元件组合。应理解实 施本发明的具体方法和电路仅用说明表示并不作为对本发明的限制。如 由本专业技术人员将理解的那样,本发明的原理和特征可应用在不同的 和多个实施例中而不脱离本发明的范围。\n 附图的简要说明\n参照附图,其中表示本发明范围的说明性实施例,据此,新的特征 和优点将显而易见。\n图1是说明综合用于验证下设计或DUV示例的协议接口逻辑的主 题系统的方块图。\n图2A是在同该协议接口逻辑连接的DUV示例中的寄存器块的方块 图。\n图2B是在同该协议接口逻辑连接的DUV示例中的存储器块的方块 图。\n图3是该协议接口逻辑的分组I/O块的详细方块图。\n图4是该协议接口逻辑的存储器地址块的详细方块图。\n图5是该协议接口逻辑的读数据块的详细方块图。\n图6是由该协议接口逻辑处理的协议命令的图表。\n图7是该协议接口逻辑的命令解码块的详细方块图。\n图8是该协议接口逻辑的状态和状态转变图。\n图9是该协议接口逻辑的状态控制块的详细方块图。\n图10是该协议接口逻辑的读/写控制块的详细方块图。\n图11A是执行在该协议接口逻辑中的寄存器写命令的定时图表。\n图11B是执行该协议接口逻辑中的寄存器读命令的定时图表。\n图11C是执行该协议接口逻辑中的存储器写命令的定时图表。\n图11D是执行该协议接口逻辑中的存储器读命令的定时图表。\n图12是产生该协议接口逻辑的编辑时间步骤的流程图。\n图13是计算用于该协议接口逻辑的协议字段大小的详细流程图。\n图14是构造该协议接口逻辑的元件的详细流程图。\n图15是用于模拟具有该协议接口逻辑的DUV的运行时间操作的流 程图。\n图16是用于描述具有该协议接口逻辑的操作的常数,变量和功能的 定义和说明的代码列表。\n图17是用于发送分组到该协议接口逻辑和从其接收分组的功能的代 码列表。\n图18是用该协议接口逻辑写寄存器,读寄存器,写存储器,和读存 储器功能的代码列表。\n 发明的详细说明\n转到图,现在将描述本发明的目前优选的设备和方法。\n第一步是识别DUV中存在的存储器和寄存器,在一个实施例中第 一步包含识别所有该DUV的存储器和寄存器。在另一实施例中,该第 一步包含仅识别该DUV中存在的一子组存储器和寄存器。在该实施例 中,用户必须识别具有特定关系或兴趣的那些存储器和寄存器。仅识别 该DUV的一子组存储器和寄存器的一个优点在于该DUV能更快地编辑 以便验证。但是,仅用识别一子组存储器和寄存器,由本发明不同实施 例提供的优点将限制到那些专门的欲被识别的存储器和寄存器。如下面 将更详细讨论的那样,一旦识别了该存储器和寄存器,它们必须进行索 引,以使每个识别的存储器和寄存器具有一个唯一的识别符。\n第二步是综合将附加到该DUV的逻辑。该综合的逻辑将提供对在 第一步骤中识别的存储器和寄存器的访问。在该第二步中综合的逻辑将 在下面详细讨论。然而,一般地,该综合的逻辑将包括选择逻辑,其接 收上述讨论的唯一的识别符,使得一个特定的存储器或寄存器能被访问 以进行读或写。\n第三步骤是产生到寄存器和存储器的一个路径的步骤。该步骤也将 在下面作更详细的讨论。\n图1是本发明的一个优选实施例的方块图。图1表示该验证下设计 (DUV)30,与综合的逻辑一起为提供对该DUV 30的存储器和寄存器 的良好的访问。图1表示一个主工作站10,通过一个通信频道14连接 到一个硬件加速器20,该硬件加速器模拟验证下设计(DUV)30,和该 协议接口逻辑40综合用于该DUV 30,以便有效数据加载和下载操作。 一个控制程序11是一个验证控制程序,在该主工作站10上运行,以便 通过该协议接口逻辑40加载数据到该DUV 30中的寄存器和储存器以及 从其下载数据。一个示例性硬件加速器20是从Quickurn Design Systems公司可得到的CobaltTM产品。一个示例性控制程序11是从 Quikturn Design Systems公司可得到的PowerSuiteTM software packag。\n当该控制程序11加载数据到该DUV中的寄存器或存储器单元时, 它首先经由一根内部总线12将具有数据的一个写命令送到数据缓冲器 13,然后启动数据转移装置经由该通信频道14从该数据缓冲器13转到 在该硬件加速器20中的一个数据缓冲器21。该协议接口逻辑40接收来 自该数据缓冲器21的写命令和写数据并执行该写命令以加载该数据到该 DUV 30中的目标寄存器或存储器单元。\n当该控制程序11从该DUV 30中的一个寄存器或存储器单元下载数 据时,它首先通过内部总线12送一个读命令到数据缓冲器13中并接着 启动数据转移装置通过通信频道14从该数据缓冲器13送到在该硬件加 速器20中数据缓冲器21。该协议接口逻辑40从该数据缓冲器21接收 该读命令并执行该命令以便从该DUV 30的目标寄存器或存储器单元下 载数据到该数据缓冲器21中。储存在该数据缓冲器21中的数据接着通 过由该控制程序11启动的转移操作经由通信频道14转移到该数据缓冲 器13,该控制程序11通过内部总线12接收来自该数据缓冲器13的数 据。\n如讨论的,该协议接口逻辑40是综合用于该DUV 30的一种专门逻 辑。在目前优选实施例中,协议接口逻辑40包括分组I/O块41,状态控 制块42,命令解码块43,读/写控制块44,存储器地址块45,和读数据 块46。\n分组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。\n状态控制块42保持该协议接口逻辑40的当前状态并使状态转变。 状态控制块42接收来自命令解码块43的解码命令信息信号51和来自分 组I/O块41的命令信号50。该状态控制块42产生状态信号52到读/写 控制块44。\n该命令解码块43解码来自分组I/O块41的命令。该命令解码块43 接收来自该分组I/O块41的命令信号50并产生该解码的信息信号51到 状态控制块42和读/写控制块44。\n该读/写控制块44产生内部的和外部的读和写控制信号。该读/写控 制块44接收来自命令解码块43的解码的命令信息信号51,来自状态块 42的状态信息信号52,和来自分组I/O块41的写数据信号50。该读/写 控制块44产生内部的读和写控制信号53到该协议接口逻辑40以及读和 写控制信号54到该DUV 30中的寄存器和存储器块。\n该存储器地址块45保持存储器地址并更新它用于存储器访问操作。 该存储器地址块45从分组I/O块41接收存储器地址信号50并产生目前 存储器地址信号55到该DUV 30。\n该读数据块46从该DUV 30中的该寄存器和存储器接收数据信号56 并产生选择的数据信号57到该分组I/O块41。\n图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。RRD0<47:0>是来自REG0的48位数据信号组, RRD1<15:0>是来自REG1的16位数据信号组,和RRD2<31:0>是来自 REG2的32位数据信号组,RRD0、RRD1,和RRD2被连接到DUV逻 辑31和协议接口逻辑40作为信号组56。\n当该选择信号REGS未认定时,REG0、REG1,和REG2从该DUV 逻辑31接收写数据和控制信号32。当认定选择信号REGS时,REG0、 REG1,和REG2从该协议接口逻辑40接收写数据信号50和控制信号54。 不管该选择信号REGS,该读数据信号56被送到该DUV逻辑31和该协 议接口逻辑40。\n图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。MRD0<39:0>是来 自MEM0的40位数据信号组,和MRD1<17:0>是来自MEM1的18位数 据信号组。MRD0和MEM1连接到该DUV逻辑33和该协议接口逻辑40 作为信号组56。\n当该选择信号MEMS未认定时,存储器MEM0和MEM1从该DUV 逻辑33接收写数据,存储器地址,和写允许信号34。当认定该选择信 号MEMS时,MEM0和MEM1从该协议接口逻辑40接收写数据信号50, 存储器地址信号55,和写允许信号54。不管选择信号MEMS,该读数 据信号56送到DUV逻辑33和协议接口逻辑40。\n图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不得不 由一个合适的逻辑块取代以校验该两个数的相等性。\n一个响应分组储存在输出分组寄存器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 字段值。\n图4是在协议接口逻辑40中的存储器地址块45的目前优选实施例 的详细方块图。寄存器90保持经历地址多路复用器91的14位存储器地 址。该多路复用器选择信号MADS和该寄存器控制信号MADE在信号53 上到达。当MADS是零时,该多路复用器91选择由地址增量器92增加 的地址。当MADS是一时,该多路复用器选择在信号50上的一个存储 器地址DIN<13:0>。保持在寄存器90中的目前存储器地址MAD<13:0> 在信号55上送到DUV 30。\n图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的最后读数据。\n图6是由协议接口逻辑41解码和执行的目前优选协议命令的图表。 如图3所说明的,来自数据缓冲器21的储存在输入分组寄存器80中的 一个请求分组被分到5个字段中。3位的CMD字段编码7个命令。NOP(NO Operation)命令由CMD=0或1指定和不做任何事情但消耗至少一个时钟 周期。WR(Write Register)命令由CMD=2指定并写入由寄存器ID 或ID字段中的Rid以及DATA字段中的写数据指定的目标寄存器。RR (Read Register)命令由CMD=3指定,读在由寄存器ID或ID字段 中Rid指定的目标寄存器中的数据,并将其储存在输出分组寄存器84的 DATA字段中。\nSWM(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 块返回正常的非-存储器模式。\nSRM(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块返回正常的非-存储器模式。\n如图4中所说明的,每个WM或RM命令的执行使该存储器地址递 增1。第一存储器地址由该SWM或SRM命令储存。在该SWR命令之 后的第一WM命令写入由储存在存储器地址寄存器90中的存储器地址 指示的存储器单元,和第二WM命令写入下一个存储器单元,等等。类 似地,在该SRM命令之后的第一RM命令读由储存在存储器地址寄存 器90中的存储器地址指示的存储器单元,该第二RM命令读下一个存储 器单元,等等。\n图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上的信号被送到其他块。\n图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状态。\n图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。\n图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 上送到外部。\n图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命令的执行。\n图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命令的执行。\n储存在输出分组寄存器中的响应分组的数据转移由在主工作站10上 运行的验证控制程序11启动。在该示例性定时图表中,为简化而假定该 验证控制程序11识别在送出一个RR命令之后何时启动该数据转移以获 得读数据。如果该验证控制程序无法识别何时启动该数据转移,则它将 不得不重复数据转移操作,直到它接收一个具有不同于在先TAG定段值 的TAG字段值的响应分组为止,以表示该分组包括一个新的读数据。由 于该验证控制程序11优先识别该协议接口逻辑在它执行一个RR命令之 后的一个周期能使该寄存器数据立即进入该输出分组寄存器84,它能在 该RR命令之后送一个NOP命令和接着启动该数据转移,使得该验证控 制程序11能接收在该响应分组中的寄存器数据。或者该验证控制程序11 还能送一个不具有更新TAG字段值的命令,其实际地等效于消耗至少一 个时钟周期并接着启动数据转移的一个NOP命令。\n图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命令保持相同 的考虑。\n图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命令也可利用。\n图12是表示用来产生协议接口逻辑的编辑-时间步骤的流程图。在 150处理开始。第一步骤151编辑写在一个或多个HDL或硬件说明语言 文件中的目标设计以产生该目标设计的基本表格(netlist)。第二步骤152 校验151产生的基本表格中的寄存器和存储器的大小并基于该寄存器和 存储器的大小计算协议字段大小。第三步骤153综合用于该目标设计的 协议接口逻辑并将其附加到该基本表格。在154处理结束。\n图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处理结束。\n当应用图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位。\n图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处理结束。\n图15是模拟DUV和综合用于该DUV的协议接口逻辑操作的典型 的运行时间序列的流程图。在190处理开始。在步骤191编辑的DUV 加载到硬件加速器20。在步骤192建立与DUV的通信频道14。在步骤 193初始数据加载到该DUV的寄存器和存储器中。在步骤194该DUV 对大量周期进行模拟。在步骤195该模拟结果从该寄存器和存储器下载。 在步骤196对照期望值校验模拟结果。在步骤197处理结束。在步骤193 和195用在此公开的该协议接口逻辑40访问DUV中的寄存器和存储器。 可存在某些情况,即在该DUV中的某些寄存器和存储器在步骤194的 模拟期间被访问。\n图16-18表示用C编程语言写的码本(code listing),具有某些 忽略的本地变量说明。该C编程语言是广泛用于开发软件的已知的编程 语言。例如它在由B.W.Kernighan和D.M.Ritchie编写的由Prentice Hall 于1988年出版的“The C Programning Language(2nd edition)”中 描述。在下列码本解释中,只用于更好可读性的空格行不加陈述。\n图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” 以分别保持对请求和响应分组的指针。\n行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功能,以便 将在该主工作站的数据缓冲器中的一个分组转移到该硬件加速器:void transfer_to_hacce(int size),这里“size”是在该分组中转移的总位数, 行25说明返回不具有一个变元的值的transfer_from_haccel功能,以便将 来自该硬件加速器的一个分组转移到该主工作站中的数据缓冲器:void transfer_from_hacce(int size),这里“size”是在该分组中转移的总位 数。\n为简化性假定数据位的最大数等于或小于32。如果大于32,则该 put-bits功能的四个变元数据应当是指向保持该数据位的一个uint阵列的 一个指针。类似地,该get_bits功能的四个变元数据应当是指向保持该 数据位的一个uint阵列的一个指针。在下列码段(code fragment)中, 为简化性还假定数据位的最大数等于或小于32。如果大于32,对该代码 必须进行某些改变。但是对于那些本专业技术人员而言这是不困难的任 务。\n图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)以便将该请求分组从该主工作站的数据缓冲器转移 到该硬件加速器。\n行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_its(packet In,5+sizeId, ds,data)以提取该响应分组的DATA字段中的数据位并将它们储存到由 “data”变量指向的位置中。\n图18是四个功能的码本:writeReg,readReg,writeMem,和readMem。 行60-63定义返回不具有三个变元的值的writeReg功能:void write Reg(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)从 该目标寄存器读该数据位。\n行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命 令。\n行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个元素中。\n概括地,已提供了一个硬件辅助的验证系统,其大大地改善了对一 个用户的经受功能验证的设计的存储器和寄存器的访问。某些实施例使 用基于分组的协议执行主工作站和硬件加速器之间的数据转移以便从该 目标DUV中的寄存器和存储器加载和下载数据。该协议与一个协议接 口逻辑相关,而该逻辑在编辑时间用该目标DUV中寄存器和存储器大 小参数综合并在运行时间用该目标DUV模拟。该综合的协议接口逻辑 根据在主工作站运行的验证控制程序解码在一个请求分组中编码的请求 命令并执行它。只要该请求命令是一个读命令,则它将送在一个响应分 组中的数据到该主工作站。\n本发明的一个示例性实施例已对如在图2A和2B中所示的具有三个 寄存器和两个存储器的示例性DUV详细地作了公开,那些本专业技术 人员将理解在本发明的精神范围内可实践多种修改和变型。这样,在已 描述最佳方法和设备的同时,如对那些本专业技术人员所显见的那样, 可能有更多的实施例和应用而不脱离在此公开的创造性的概念。因此除 附加的权利要求的精神外本发明不受限制。
法律信息
- 2015-12-16
未缴年费专利权终止
IPC(主分类): G06F 17/50
专利号: ZL 01820983.1
申请日: 2001.10.19
授权公告日: 2007.05.02
- 2007-05-02
- 2005-01-05
- 2004-11-03
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| | 暂无 |
1997-10-14
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |