模拟数字电路设计的方法和模拟引擎的制作方法

文档序号:6611495阅读:219来源:国知局
专利名称:模拟数字电路设计的方法和模拟引擎的制作方法
技术领域
本发明涉及通过以压缩格式存储数据和以后通过包括自适应解 压缩和数据转换的数据解压缩读出数据来扩展嵌入式存储器的有效容 量。
背景技术
在电路设计过程中,设计者首先用形式化硬件描述语言加以描述
来定义(define)设计,这样的定义采取数据文件的形式。
在设计的物理实现的过程中随后的阶段之一巷冬辑检验(logic verification)。在逻辑检验阶段中,逻辑设计者测试i殳计,以确定逻 辑设计是否满足规定/要求。逻辑检验的一种方法是模拟(simulation )。 在模拟过程中,应用軟件程序或硬件引擎(模拟器(simulator)) 来模仿或模拟电路设计的运行。在模拟期间,设计者可以获得正在测 试的设计的动态状态的瞬像(snapshot)。模拟器将比设计的最后实 现慢得多地模仿设计的运行。对于速度可能是一个抑制因素的软件模 拟器尤其如此。
为了取得接近实时的模拟速度,人们开发出了专用硬件加速模拟 引擎。这些引擎由计算机、附属硬件单元、编译器、和运行时促进程 序組成。
硬件加速模拟引擎销售商开发出两种主要引擎:基于FPGA的引 擎和基于ASIC的引擎。
基于现场可编程门阵列(FPGA)的模拟引擎采用放置在通过IO 线网络连接的多个板上的一组FPGA芯片。每个FPGA芯片被编程以 模拟设计的特定分段。虽然这些引擎正取得接近实时的速度,但它们 的容量受FPGA大小的限制。
基于专用集成电路(ASIC)的模拟引擎采用放置在一个或多个 板上的一组ASIC芯片。这些芯片包括两个主要部件逻辑评估单元 (LEU )和指令存储器(IM) 。 LEU起利用存储在IM中的指令编程 的FPGA的作用。设计的单次步骤的模拟分多个模拟步骤实现。在这 些模拟步骤的每一个中,从IM中读取指令行,用于重新配置LEU。 模拟步骤通过使配置的LEU采取单个步骤并评估它代表的设计片段 (piece)而完成。
基于ASIC的模拟引擎需要执行多个步骤来模拟设计单次步骤, 因此,它们固有地慢于基于FPGA的引擎,但间隙缩小了。换来的是, 它们的容量较大。
硬件加速ASIC模拟引擎是专用大规模并行计算机。它们采用设 计成并行地评估正在测试的设计片段的一组专用ASIC芯片。这些芯 片由两个主要部分构成指令存储器(IM)和逻辑评估单元(LEU)。 IM存储代表指定的设计片段的程序。在模拟过程中,按顺序从IM中 读出该程序,将它馈送到LEU。 一旦接收到来自IM的指令,LEU就 模仿该指定设计片段的动作。
像指令存储器(IM)那样的嵌入式存储单元的容量可以通过以 压缩格式存储数据来扩展。为了读取这样的压缩数据,需要采用解压 缩单元。
E.G.Nikolova, D.J.Mulvaney, V.A.Chouliaras, J丄.J.L.Niiftez等 人在文章'A Novel Code Compression/Decompression Approach for High-performance SoC Design,, IEEE Seminar on SoC Design, Test and Technology, Cardiff University, Cardiff, UK, 2 S印tember 2005中 提出了解压缩的硬件解决方案。
Nikolova等人提出的解决方案不可用于要求极高吞吐量(需要 400 Gb/s,实现取得100Mb/s)、恒定解压缩速度、小实现规模、和 小延迟的实现。
IM存储代表设计的指定片段的程序。在模拟过程中,按顺序从 IM中读出该程序,将它馈送到LEU。 一旦接收到来自IM的指令,
LEU就模仿该指定设计片段的动作。
指定给单个模拟芯片或芯片组的正在测试的设计片段的大小极 大地影响硬件加速ASIC模拟引擎的有效性(速度,容量)。这些片 段越大,模拟器越有效。IM的物理大小受技术约束限制。最好利用 压缩将更多的指令存储在IM中。这些因素中的许多因素受技术约束 束缚。
无疑,需要提高基于ASIC的硬件加速模拟引擎的容量。

发明内容
容量问题可以通过本发明的方法、系统和程序产品解决。具体地 说,该方法、系统和程序产品提供也称为存储器模块的指令存储器 (IM)与可以是一个或多个单独ASIC芯片的逻辑评估单元(LEU) 之间的硬件设计语言(HDL)的解压缩。IM存储高度压缩的HDL程 序。HDL程序代表用于模拟和测试的指定设计片段。在模拟过程中, 按顺序从IM中读出该4呈序,将它馈送到LEU。 一旦接收到来自IM 的指令,LEU将模仿该指定设计片段的动作。 在我们的解决方案中实现如下特殊特征 -可以用硬件或软件程序实现压缩器。 -将压缩数据存储在IM中,然后多次读取压缩数据。 -数据(指令流)的统计特性是已知的,压缩器/解压缩器可以 利用它。


在结束本说明书之后,在权利要求书中具体指出和清楚要求了与 本发明有关的主题。通过结合附图对本发明的优选实施例进行如下详 细描述,本发明的上述和其它目的、特征和优点将显而易见,在附图 中
图1是示出与模拟引擎连接的主计算机的本发明实现的高级示意 图。例示的模拟引擎具有存储器模块、解压缩器、和从解压缩器到用
于快速模拟的ASIC芯片的互连线,ASIC输出到达主机总线和主机接
图2是解压缩器实现的高级示意图。解压缩器处在存储器模块与 到ASIC芯片的互连线之间。例示的解压缩器包括压缩数据緩冲器、 查找表、串行化器、和解压缩数据緩冲器阵列;
图3例示了串行化器介于查找表与解压缩数据緩沖器阵列之间的 解压缩器的内部结构;和
图4例示了解压缩数据緩冲器介于串行化器与到ASIC芯片的互 连线之间的解压缩器的内部结构的进一步方面。
具体实施例方式
图1是示出主计算机103与模拟引擎101连接、驱动模拟引擎 101、和接收来自模拟引擎101的输出的本发明实现的高级示意图。例 示的模拟引擎101具有存储器模块111、解压缩器211、和从解压缩器 到用于快速模拟的ASIC芯片109的互连线121, ASIC输出到达主机 总线107和主机接口 105,并且返回到主计算机103。
操作中,可以将本发明的方法、系统、和程序产品植入模拟引擎 101中,用于数字电路的硬件描述语言模拟。这包含存储数字电路的 压缩硬件描述语言模型的存储器模块111、解压缩数字电路的压缩硬 件描述语言模型的解压缩器211、从解压缩器211到运行硬件描述语 言模拟的ASIC芯片109的互连线121、和位于ASIC芯片109与主计 算机103之间的用于将测试向量发送到ASIC芯片109和从其接收输 出的主机总线107和主机接口 105。
图2是解压缩器211的实现的高级示意图。解压缩器211位于存 储器模块111与到ASIC芯片109的互连线121之间。例示的解压缩 器211包括压缩数据緩冲器221、查找表231、串行化器311、和解压 缩数据緩冲器阵列411。
图3例示了串行化器311介于查找表231与解压缩数据緩冲器阵 列411之间的解压缩器211的内部结构。
图4例示了解压缩数据緩冲器411介于串行化器311与到ASIC 芯片109的互连线121之间的解压缩器211的内部结构的进一步方面。
利用数据的统计特性,导出一组255个令牌。每个令牌具有长度 1、 2、 3或6。对每个令牌指定唯一代码。压缩器用它的相应代码取代 在指令流中找到的每个令牌。将特殊代码'Oxfr插在不是令牌的一部.分 (并且未用代码取代)的每个字节之前。这种称为固定库霍夫曼 (Huffman)编码的压缩技术是一种工业标准。
硬件解压缩器211采用查找表231将代码翻译成令牌,并且采用 一组移位緩冲器351来收集解压缩数据并实现恒速解压缩。
查找表231被模型化成只包含恒定的条目,查找表231的实际大 小仅为542个逻辑门。解压缩器单元的总大小近似等于128 * 128阵列 的大小。在一种实现中,IM111是多个较小的存储器。这有利于在短 时间内读取极大量数据。这些存储器中的每一个都配有专用解压缩器 单元。
从IM中每次16个字节( 一个IM行)地取出压缩数据流(CDS ), 并且将它传递给解压缩单元(DU) 211,以便扩展它。DU211将数据 存储在内部压缩数据緩冲器(CDB )221中。每次1个字节地读取CDB 221,并且将字节传递给将代码翻译成相应令牌的查找表(LUT)231。 令牌的长度是O、 1、 2、 3或6个字节。将令牌传递给将令牌收集在移 位緩冲器351中的串行化器311。为了避免解压缩时间的不确定性, 将未压缩数据存储在DU内部的一列解压缩数据緩冲器411 (解压缩 数据緩冲器阵列)(它们中的每一个具有16个字节的大小)中。最后, 以先进先出的方式恒速地从解压缩数据緩冲器阵列411中取出数据。 解压缩数据流(DDS )是DU 211的输出。
例示在图3中的串行化器311采用长度6 + 16 + 6个字节的移位 緩沖器351 ( SB )。将LUT 231的输出存储在SB 351的最左6个字 节中。在存储了代码之后,将整个SB 351向右移动0、 1、 2、 3或6 个字节(0、 8、 16、 24或48位)。这个动作通过将5->1多路复用器 341应用于SB的最右16 + 6个字节的每个位完成。多路复用器的输入
线是SB351的向左0、 8、 16、 24或48个位的位。所有多路复用器共 享选择器值这些值是从LUT 231中读取的用于对读取代码的长度 331进行编码的3个位。
例示在图3中的串行化器311采用两个计数器SB大小计数器 361和解压缩数据緩冲器阵列活动(active)緩冲器计数器461。
SB大小计数器361记录存储在SB341中的字节数。它被初始化 成0,并且用LUT 231传递给串行化器的字节数更新。如果SB大小 计数器361达到16,触发刷新(flush )。
图4例示了解压缩数据緩冲器411介于串行化器311与到ASIC 芯片109的互连线121之间的解压缩器的内部结构的进一步方面。在 发生刷新的情况下,同时将解压缩数据緩冲器阵列411的每个緩沖器 441的内容复制到解压缩数据緩冲器阵列的下一个緩冲器中,将16个 字节从SB 341复制到解压缩数据緩冲器阵列的第一緩冲器中,并从 SB大小计数器361中减去16。并且,将解压缩数据緩冲器阵列活动 緩冲器计数器461递增。
解压缩数据緩冲器阵列活动緩冲器计数器461在解压缩过程开始 时被初始化成0,如上所述在发生刷新的情况下被递增,而当解压缩 数据緩冲器阵列的緩冲器被写出到DDS中时递减。这后一种情况每 8ns—次定期发生。写入DDS中的緩冲器由解压缩数据緩沖器阵列活 动緩冲器计数器选择。
如果在解压缩数据緩沖器阵列活动緩冲器计数器是4的时候发生 刷新(上溢(overflow)事件),中止DU的操作8ns。如果发生定期 DDS写入的时候解压缩数据緩沖器阵列活动緩沖器计数器是O (下溢 (underflow)事件),那么,产生错误标志。在解压缩过程中,软件 压缩器生成不会发生下溢事件的CDS。
这里描述的电路图只不过是例子。可以对这里所述的这些图形或 步骤(或操作)做出许多改变而不偏离本发明的精神。
本发明的能力可以用硬件实现。另外,本发明或它的各种实现可 以是软件实现。当用软件实现时,可以通过程序代码提供具体体现可
被机器执行实现本发明的能力的指令的至少 一个程序、可被机器读取 的至少一个程序存储设备。
本发明可以通过拥有例如为了模拟i殳备或系统在HDL代码存储 与HDL代码处理之间压缩和解压缩HDL代码的系统和方法实现。压 缩和解压缩可以在一个专用处理器或一組处理器中实现,或在一个专 用处理器或具有专用代码的专用处理器中实现。该代码执行也可以称 为代码的一系列机器可读指令。这些指令可以驻留在各种类型的信号 承栽媒体中。关于这一点,本发明的一个方面涉及包含一个或多个信 号承载媒体的程序产品,所述信号承载媒体具体实现可被数字处理装 置执行来完成使为了模拟设备或系统在HDL代码存储与HDL代码处 理之间压缩和解压缩HDL代码的系统和方法成为软件应用的方法, 从而实现为了模拟设备或系统在HDL代码存储与HDL代码处理之间 压缩和解压缩HDL代码的系统的机器可读指令的程序。
这种信号承栽媒体可以包含例如服务器中的存储器。服务器中的 存储器可以是非易失性存储器、数据盘、甚至下栽到处理器加以安装 的销售商服务器上的存储器。可替代地,指令可以实现在像光数据存 储盘那样的信号承载媒体中。可替代地,指令可以存储在各种各样机 器可读数据存储媒体的任何一种中,这些机器可读数据存储媒体可以 包括,例如,"硬盘"、RAID阵列、RAMAC、磁数据存储盘(譬如软 盘)、磁带、数字光带、RAM、 ROM、 EPROM、 EEPROM、闪速 存储器、磁光存储器、纸质穿孔卡片、或包括像数字和/或模拟通信链 路那样的传输媒体的任何其它适用信号承载媒体,数字和/或模拟通信 链路可以是电的、光的、和/或无线的。举例来说,机器可读指令可以 包含从像"C+十"、Java、 Pascal、 ADA、 assembler等那样的语言编译 的软件目标代码。
另外,程序代码可以例如被压缩、被编码、或被压缩和编码,并 且可以包括可执行代码、脚本代码、和像Zip码和cab码那样用于安 装的向导代码(wizards)。正如这里使用的那样,术语"驻留在信号 承栽媒体中或上的机器可读指令或代码,,包括上述所有传递手段。
虽然已经描述了本发明的优选实施例,但应该明白,无论现在还 是将来,本领域的普通技术人员都可以作出在所附权利要求书的范围 之内的各种改进和提高。这些权利要求应该理解为适当保护如上所述 的发明。
权利要求
1.一种用于数字电路的硬件描述语言模拟的模拟引擎,包含a)用于存储数字电路的压缩硬件描述语言模型的存储器模块;b)用于解压缩数字电路的压缩硬件描述语言模型的解压缩器;c)从解压缩器到用于运行硬件描述语言的ASIC芯片的互连线;和d)位于ASIC芯片与主计算机之间、用于将测试向量发送到ASIC芯片并从ASIC芯片接收测试输出的主机总线和主机接口。
2. 根据权利要求l所述的模拟引擎,其中,所述解压缩器包含a) 压缩数据緩沖器;b) 用于将令牌与硬件描述代码的单元相关联的查找表;c) 串行化器;和d) 解压缩数据緩冲器阵列;并且解压缩器串联在存储器模块与到ASIC芯片的互连线之间。
3. 根据权利要求2所述的模拟引擎,其中,所述串行化器包含a) 用于利用指定给每个令牌的唯一代码将硬件描述语言代码 Huffman编码成令牌的查找表装置;和b) 用于解压和收集数据的一组移位緩冲器。
4. 根据权利要求l所述的模拟引擎,包含a) 用于存储数字电路的压缩硬件描述语言模型的存储器模块;b) 用于解压缩数字电路的压缩硬件描述语言模型的解压缩器, 所述解压缩器包含i) 压缩数据緩冲器;ii) 用于将令牌与硬件描述代码的单元相关联的查找表;iii) 串行化器,所述串行化器包含用于利用指定M个 令牌的唯一代码将硬件描述语言代码Huffman编码成令牌的查 找表装置;和用于解压和收集数据的一组移位緩冲器;和iv) 解压缩数据緩沖器阵列;并且 解压缩器串联在存储器模块与到ASIC芯片的互连线之间;c)从解压缩器到用于运行硬件描述语言的ASIC芯片的互连线;和d他于ASIC芯片与主计算机之间、用于将测试向量发送到ASIC 芯片和从ASIC芯片接收测试输出的主机总线和主机接口 。
5. —种在具有指令存储器和逻辑评估单元的模拟器中模拟数字 电路设计的方法,包括如下步骤a) 将数字电路设计的压缩硬件描述语言文件存储在指令存储器中;b) 解压缩硬件描述语言文件;c) 在逻辑评估单元中处理解压缩硬件描述语言文件;和d) 从逻辑评估单元中恢复模拟输出。
6. 根据权利要求5所述的方法,其中,解压缩硬件描述语言文 件包含如下步骤a) 将压缩硬件描述语言代码传递给压缩数据緩冲器;b) 将压缩硬件描述语言代码转换成令牌;c) 对令牌进行串行化,以便对串行化的硬件描述语言代码进行 解压缩从而形成解压缩硬件描述语言代码;d )将解压缩硬件描述语言代码存储在解压缩数据緩冲器阵列中;和e) 将解压缩数据緩冲器阵列的内容作为输入提供给逻辑评估单元。
7. 才艮据权利要求5所述的方法,包含如下步骤a) 将数字电路设计的压缩硬件描述语言文件存储在指令存储器中;b) 通过如下步骤解压缩硬件描述语言文件i) 将压缩硬件描述语言代码传递给压缩数据緩冲器;ii) 将压缩硬件描述语言代码转换成令牌;iii) 对令牌进行串行化,以便对串行化的硬件描述语言代码进行解压缩从而形成解压缩硬件描述语言代码;iv) 将解压缩硬件描述语言代码存储在解压缩数据緩沖器 阵列中;v) 将解压缩数据緩沖器阵列中的緩冲器的内容复制到解 压缩数据緩沖器阵列的下一个緩沖器中;和vi) 将解压缩数据緩冲器阵列的内容作为输入提供给逻辑 评估单元;c) 在逻辑评估单元中处理解压缩硬件描述语言文件;和d) 从逻辑评估单元中恢复模拟输出。
全文摘要
本发明提供了以压缩格式存储数据和以后通过包括自适应解压缩和数据转换的数据解压缩读出数据来扩展嵌入式存储器的有效容量的方法、系统、和程序产品。本发明提供了为了模拟设备或系统在HDL代码存储与HDL代码处理之间压缩和解压缩HDL代码的系统和方法。
文档编号G06F17/50GK101369289SQ200710141180
公开日2009年2月18日 申请日期2007年8月13日 优先权日2006年10月27日
发明者小约翰·H.·维斯特曼, 托马斯·J.·特里特, 格诺特·E.·京特, 维克特·S.·久里斯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1