首页> 中国专利> 基于软件程序在处理系统上的运行而设计ASIC

基于软件程序在处理系统上的运行而设计ASIC

摘要

用于开发ASIC的系统和方法。可储存一软件程序,所述软件程序包括实现一种功能的程序指令。软件程序可以按期望的系统速度在处理系统上运行,且可基于所述运行而被验证。处理系统的至少一部分的第一硬件描述可被储存且可规定处理系统的至少一部分的实现。可产生对应于第一硬件描述的第一部分的第二硬件描述。第二硬件描述可规定在处理系统上运行的软件程序的第一部分的专用的硬件实现。第二硬件描述的产生可执行一次或多次以完全地规定ASIC。可产生实现软件程序的功能的ASIC。

著录项

  • 公开/公告号CN101517576A

    专利类型发明专利

  • 公开/公告日2009-08-26

    原文格式PDF

  • 申请/专利权人 相干罗辑公司;

    申请/专利号CN200780027938.0

  • 发明设计人 T·K·恩格;

    申请日2007-05-22

  • 分类号

  • 代理机构中国国际贸易促进委员会专利商标事务所;

  • 代理人屠长存

  • 地址 美国得克萨斯

  • 入库时间 2023-12-17 22:31:46

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2011-10-05

    授权

    授权

  • 2011-01-19

    发明专利申请更正 卷:25 号:34 页码:扉页 更正项目:申请人 误:相干罗辑公司 正:相干逻辑公司 申请日:20070522

    发明专利更正

  • 2009-10-21

    实质审查的生效

    实质审查的生效

  • 2009-08-26

    公开

    公开

说明书

技术领域

本发明涉及专用集成电路(ASIC)开发领域,且更具体地,涉 及基于软件程序设计ASIC的系统和方法。

背景技术

近来为提高功能验证效率的目的,使用高级编程语言,例如使用 “C”来描述电子系统的趋势在高级模型和低级硬件实现之间产生了更 宽的实现差距。一般地,为了对电子装置进行原型设计,高级语言程 序被手动地或自动地转变成硬件描述语言(HDL)描述,例如Verilog 或VHDL代码,综合成门级逻辑,以及最初在可编程硬件装置上测试, 例如在现场可编程门阵列(FPGA)上测试。在许多情况下,这被证明 是复杂的任务,因为大多数高级程序不包含计时信息,而计时信息是 配置可编程硬件装置或ASIC的门级逻辑实现所需要的。

借助处理器和硬连线的逻辑的混合而实现的系统同样要求有难 度的步骤来将设计分成软件(由处理器运行的高级语言程序)和硬件 (门级逻辑的HDL描述)。结果,手动转换费时且易出错。自动转换 (行为综合)常常产生效率低的逻辑。以不用定制的(off-the-shelf)、 商业上可提供的可编程装置,例如FPGA和处理器为基础的硬件原型 常常在期望的系统速度以下运行,这可导致对开发和验证的额外的挑 战。在一些情况下,由于可编程硬件装置的性能和资源的约束,为配 置可编程硬件元件而产生的代码可能显著偏离最后的ASIC要求的代 码。相应地,要求许多开发周期来将设计从基于高级编程语言的模型 转换成最后的ASIC。另外,没有很简单的分析技术(fool-proof analytical technique)来验证各种设计转换的正确性(功能上的等效 性)。因此,期望在ASIC设计的高级行为模型到物理实现的途径上 有所改进。

发明内容

下面提出了用于将软件程序转变成ASIC的系统和方法的各种 实施方式。

首先,可储存一软件程序。该软件程序可包括实现期望的ASIC 的功能的程序指令。在一个实施方式中,软件程序可用高级计算语言, 例如用C语言来写。可选择地,软件程序可用图像化编程语言,例如 用来自National Instruments的或来自Mathworks,Inc 的来写。

软件程序可在具有并行处理能力的处理系统上运行。在不同的实 施方式中,处理系统可按需要以单芯片或多个耦合芯片实现。例如, 处理系统可包括多个处理器和(例如,散置于处理器间的)存储介质。 可选择地,或附加地,处理系统可包括能够并行运行的多个可重构逻 辑元件。

注意在运行软件程序之前,可分析软件程序并将其分成可以在处 理系统的不同的部分上运行的部分。例如,软件程序的第一任务或部 分可在处理系统的第一部分上运行。可按需要而自动地或手动地进行 分析和划分。因此,软件程序可被划分在处理系统的各部分之中。

另外注意,软件程序可以按期望的系统速度在处理系统上运行。 例如,软件程序可以按被生成的ASIC的期望的速度运行。换言之, 处理系统可包括充足的硬件资源来以等价于目标系统速度的吞吐量 水平运行软件程序。相应地,可以按全系统速度进行系统开发和调试, 而不用折衷。因此,处理系统可实时地,以期望的系统速度运行,由 此允许设计者充分地测试软件程序,而不用做有关ASIC的未来性能 的假设。

另外,在需要更多的处理能力的地方(例如,为达到期望的系统 吞吐量水平),可用最小的努力将更多的处理器、存储器及/或通信通 路添加到处理系统。快速调节处理系统的规模以满足系统要求的能力 可向系统设计提供快速转变的原型设计能力。在优选的实施方式中, 软件程序重新分配在处理系统上可自动地并对用户来说透明地执行。

相应地,可根据软件程序在处理系统上的运行来对软件程序进行 验证。在计算机系统上运行的软件开发环境可提供调试工具、性能分 析工具、任务分配工具以及通信综合工具以开发并验证系统软件程 序。随后可最优化所验证的软件以消耗最小量的处理、存储及通信资 源,这些资源构成ASIC实现的硬件基础。

可储存处理系统的第一硬件描述。第一硬件描述可规定处理系统 在硬件装置上的实现。例如,在一个实施方式中,第一硬件描述可对 应于上述处理系统的默认硬件描述。可选择地,或附加地,硬件描述 可基于处理系统的构件而被拼接在一起。第一硬件描述可使用硬件描 述语言(HDL),例如VHDL(VHSIC硬件描述语言)、Verilog等。

可产生对应于由第一硬件描述的第一部分规定的处理系统的部 分的第二硬件描述。根据上面的实例,第二硬件描述可对应于第一硬 件描述的第一部分。第二硬件描述可规定在处理系统的部分上运行的 软件程序的第一部分的专用的硬件实现(例如,特定的逻辑电路)。 在一些实施方式中,第二硬件描述可基于第一硬件描述而生成,并且 可以合并软件的硬件描述(例如,通过将软件的程序指令转变成硬件 描述,例如HDL代码)。可选择地,使用处理系统的现有体系结构和 在处理系统上运行的软件,可简单地生成第二硬件描述。因此,第二 硬件描述可描述或实现由第一硬件描述表示的硬件中一些或全部。然 而,第二硬件描述也可描述或实现软件(或其部分)以及运行软件的 硬件,其中第二硬件描述以完成在硬件上运行的软件的功能的专用的 门电路的形式规定软件/硬件。因此,如上所指出的,第二硬件描述可 规定在处理系统上运行的软件程序的部分的专用的硬件实现。

在不同的实施方式中,可一次或更多次产生第二硬件描述。举例 来说,可为处理系统的各构件或部分的至少一个子集产生第二硬件描 述。每一第二硬件描述可随后一起编译为用于ASIC的最后的硬件描 述。可选择地,按需要可产生第二硬件描述用于ASIC的全部。

产生规定在处理系统(或其部分)上运行的软件程序的部分的专 用的硬件实现的第二硬件描述可称为“硬化”软件程序的该部分及/或 处理系统的该部分。注意,硬化也可包括在ASIC上实现软件程序的 特定部分。因此,硬化可以指可编程性可针对ASIC的该特定部分而 被去除或限制。另外,如上所指出的,通过更改第一硬件描述以包括 在处理系统的部分上运行的软件,可产生第二硬件描述。

硬化ASIC的特定的部分可允许有更好的性能、更小的面积以及 更低的功耗。注意,处理系统的一个或更多的部分可以不被硬化,由 此在最后的产品上(在此情况下ASIC)允许有可编程性。这样,按需 要,可产生第二硬件描述,用于全部地或部分地硬化的最后的ASIC。 因此,通过控制硬化的量,得到的ASIC的特性可在可编程ASIC到 定制的硬连线的ASIC之间变化,获得程度变化的改进的面积、性能 和功耗。注意,要硬化的部分可由用户选择,例如使用在计算机系统 上运行的图形用户界面(GUI)。

可使用各种方法执行产生第二硬件描述(或硬化)。在一个实施 方式中,产生第二硬件描述可包括分析在处理系统上运行的软件,以 确定使用的硬件资源的实际量。在执行分析后,一个或更多的未用的 通信链路(例如逻辑和布线)或芯片IO可被去除,例如,从第一硬件 描述去除以产生第二硬件描述。因此,在一个实施方式中,第二硬件 描述基于上述分析可不包括处理系统的不同部分的硬件描述。

在一些实施方式中,具有严格的时序要求的可编程通信链路可用 专用的线路来取代。此外,指令组及/或数据的宽度可根据软件程序而 改变。

另外,可最优化数据存储器的大小和组织以适应软件所限定的功 能的确切的要求。例如,用于未用的存储器的不必要的存储器描述可 在硬化过程中从第一硬件描述去除(以产生第二硬件描述)。可选择 地,或附加地,存储器大小可被增大,存储器组织可被改变,或RAM 描述可由只读存储器(ROM)描述取代,例如,以允许最后的ASIC 的更好的性能和更小的面积。

在一些实施方式中,第一硬件描述可描述特定的处理器;硬化处 理器可包括,用来自预验证的处理器核的库的处理器的特定的描述取 代(例如,在第一硬件描述中的)处理器的描述。例如,如果(例如, ASIC的)系统需求要求浮点性能,则可使用具有内置浮点加速硬件 的处理器;不然,可从处理器描述的库选择并使用较小的定点处理器。

类似地,基于软件程序的软件需求,可定制并重构处理器描述。 例如,可通过以下方式来更改处理器描述:增加或去除指令,最优化 寄存器文件和缓存大小,添加专用硬件加速器以及寻址模式,及/或生 成定制的指令,以及其他类似的方式。在一个实施方式中,处理器的 运行控制和指令存储器可由运行特定的软件程序的功能的状态机来 取代。另外,通过替换充分匹配软件程序的计算要求的定制的数据通 路可最优化处理器描述。定制的数据通路可允许之前串行执行的,例 如,之前由第一硬件描述所描述的处理系统串行执行的操作被并行地 运行。注意,在一些实施方式中,可使用传统的行为综合技术。例如, 系统程序的部分可被划分并综合成硬连线的逻辑块。

在一些实施方式中,IP块可并入第二硬件描述及/或最后的硬件 描述中。IP块可以或可以不存在于原处理系统体系结构中。IP块还 可以是软件程序的功能的高度优化的逻辑实现。IP块(知识产权块) 可指由公司或企业产生的、需要得到使用许可的块。因此,IP块可并 入ASIC中(例如,通过将其描述包括在第二硬件描述中)。

在ASIC的一个或更多的部分被硬化之后,ASIC的电性能可被 最优化用于新的芯片拓扑(与原处理系统的拓扑相对)。电路最优化可 包括大小控制、缓冲、时钟网调整(clock net tuning)、电源/接地网 调整(power/ground net tuning)及/或其他的优化。

因此,产生第二硬件描述可包括更改第一硬件描述以最优化 ASIC。可生成并配置ASIC,且其可实现软件程序的功能。配置或生 成ASIC可包括在ASIC上实现第二硬件描述(或最后的硬件配置/多 个第二硬件配置)。例如,在用于配置ASIC的硬件描述包括状态机 时,配置ASIC可包括实现状态机。而且,配置ASIC可包括在ASIC 上实现第一硬件描述的一个或更多的部分。

附图说明

在结合下面的附图考虑下面的优选实施方式的详细描述时,可获 得对本发明的较好的理解,附图中:

图1示出了示例性的计算机系统,该系统控制待设计的目标系统 以实现本发明的各种实施方式;

图2A和2B是流程图,示出了用于基于根据一个实施方式的软 件程序设计ASIC的方法的示例性的实施方式;

图3示出了根据本发明的一个实施方式的示例性的处理系统;以 及

图4示出了根据本发明的一个实施方式的示例性的ASIC。

尽管本发明容许各种更改和替换形式,但以举例的方式在附图中 显示了发明的特定的实施方式,且对这些实施方式进行了详细的说 明。然而,应该理解,这些附图和对这些附图的详细的说明并不旨在 将发明本限制为所公开的特定的形式,而正相反,目的是包含落在由 随附的权利要求所限定的本发明的主旨和范围内的所有的更改形式、 等效形式以及可选择的形式。

具体实施方式

术语

下面是在本申请中使用的术语汇编:

存储介质——各种类型的存储装置或储存装置中的一种。术语 “存储介质”旨在包括安装介质,例如CD-ROM、软盘104或磁带装 置;计算机系统内存或随机存取存储器,例如DRAM、DDR RAM、 SRAM、EDO RAM、Rambus RAM等;或非易失性存储器,例如磁 性介质(magnetic media),例如,硬盘驱动器或光存储器。存储介 质也可包括其他类型的存储器或这些存储器的组合。另外,存储介质 可位于程序被运行的第一计算机中,及/或可以位于通过网络,例如通 过互联网连接到第一计算机的第二、不同的计算机中。在后面的举例 中,第二计算机可向第一计算机提供程序指令用于运行。术语“存储 介质”可包括两个或更多的存储介质,这些存储介质可存在于不同的 位置,例如存在于通过网络连接的不同的计算机中。

载体介质(Carrier Medium)——如上所述的存储介质,以及物 理传输介质,例如总线、网络及/或其他传送信号,例如传送电信号或 光信号的物理传输介质。

可编程硬件元件——包括各种硬件装置,所述硬件装置包括通过 可编程的或硬连线的互连装置(interconnect)连接的多个可编程功能 块。实例包括FPGA(现场可编程门阵列)、PLD(可编程逻辑电路), FPOA(现场可编程对象阵列)以及CPLD(复杂PLD)。可编程功能 块可在细粒度(组合逻辑或查找表)到粗粒度(算术逻辑单元或处理 器核)的范围内变化。可编程硬件元件也可称为“可重构逻辑”。

专用集成电路(ASIC)——该术语旨在具有其普通含义的全部 范围。术语ASIC旨在包括为特殊应用定制的集成电路,而不是通用 的可编程装置,尽管ASIC可包含可编程处理器核作为构块(building block)。手机单元(Cell phone cell)、MP3播放器芯片,以及许多 其他单功能的IC都是ASIC的实例。ASIC通常用硬件描述语言,例 如Verilog或VHDL来描述。

程序——术语“程序”旨在具有其普通含义的全部范围。术语“程 序”包括1)软件程序,其可储存在存储器中并可由处理器运行;或2) 硬件配置程序,可用于配置可编程硬件元件或ASIC。

软件程序——术语“软件程序”旨在具有其普通含义的全部范围, 且包括可储存在存储介质中并由处理器运行的任何类型的程序指令、 代码、脚本及/或数据,或以上这些的组合。示例性的软件程序包括用 基于文本的编程语言,例如C、C++、PASCAL、FORTRAN、COBOL、 JAVA、汇编语言等所写的程序;图形化程序(用图形化编程语言所 写的程序);汇编语言程序;编译成机器语言的程序;脚本;以及其他 类型的可运行的软件。软件程序可包括两个或更多的以某种形式互操 作的软件程序。

硬件配置程序——可用来编程或配置可编程硬件元件或ASIC的 程序,例如,网表或位文件(bit file)。

图形用户界面——该术语旨在具有其普通含义的全部范围。术语 “图形用户界面”通常缩写为“GUI”。GUI可包括只一个或更多的输入 GUI元件,只一个或更多的输出GUI元件,或者输入GUI元件和输 出GUI元件两者。

下面提供了GUI的不同方面的实例。下列实例以及讨论并不旨 在限制GUI的普通含义,而是提供了术语“图形用户界面”包括的内容 的实例:

GUI可包括具有一个或更多的GUI元件的单窗口,或可包括多 个单独的GUI元件(或单独的窗口,各窗口具有一个或更多的GUI 元件),其中单独的GUI元件或窗口可以可选地平铺在一起。

图形用户界面元件——图形用户界面的元件,例如用于提供输入 或显示输出。示例性的图形用户界面元件包括输入控制和输出指示 器。

计算机系统——各种类型的计算系统或处理系统中的任一种,包 括个人计算机系统(PC)、大型计算机系统、工作站、网络装置(network appliance)、Internet装置、个人数字助理(PDA)、网格计算系统或 其他装置或装置的组合。总之,术语“计算机系统”可被广泛地定义为 包括具有运行来自存储介质的指令的至少一个处理器的任何装置(或 装置的组合)。

图1——计算机系统和ASIC

图1示出了连接到目标系统100的计算机系统82,所述目标系 统100可操作以实现本发明的各种实施方式。

计算机系统82可包括至少一个存储介质,在所述存储介质上可 储存根据本发明的一个实施方式的一个或更多的计算机程序或软件 构件。例如,存储介质可储存可运行以进行在此描述的方法的一个或 更多的程序(例如,软件工具)。存储介质也可储存操作系统软件, 以及用于计算机系统的操作的其他软件。不同的实施方式还包括通过 载体介质接收或储存依据前述说明实现的指令及/或数据。

在一个实施方式中,计算机系统可储存并运行软件开发环境以控 制并观测目标系统的运行。目标系统可包括能够以期望的性能水平运 行系统软件的处理系统。目标系统软件程序可储存在计算机系统中并 下载到目标处理系统上,以实现电子系统的功能。目标系统可包括与 运行系统软件程序的处理系统执行相同功能的目标系统的专用的 ASIC实现。计算机系统主要在开发和验证阶段期间使用。目标系统 可有能力来独立地运行以实现电子系统的功能,而不用计算机系统。

如在图1中显示的,计算机系统82可包括显示装置并可连接到 目标系统100。显示装置可以是可操作的以显示用于软件开发环境的 图形用户界面(GUI)。图形用户界面可包括任何类型的图形用户界 面,例如,依赖于计算平台的图形用户界面。

图2A和2B——用于将软件程序转变成ASIC的方法

在图2A中显示的示例性的实施方式中,图2A示出了用于基于 软件程序设计ASIC的方法。图2B示出了用于将软件程序从电子系 统设计的原型阶段转变成产品ASIC(production ASIC)的方法的一 个具体的实施方式。图2A和2B中显示的方法可结合在以上附图中显 示的任何的计算机系统或装置,以及其他装置来使用。在不同的实施 方式中,显示的方法单元中的一些可同时地、以不同于所显示的顺序 进行,或者可以省略。另外的方法单元也可按需要来进行。如所显示 的,此方法可操作如下。

首先,在202中,可储存一软件程序。软件程序可包括实现期望 的ASIC的功能的程序指令。在一个实施方式中,软件程序可用高级 计算机语言来写,例如用C语言来写。可选择地,软件程序可用图像 化编程语言来写,例如用National Instruments的或 Mathworks,Inc的来写。

在204中,软件程序可在具有并行处理能力的处理系统上运行。 在不同的实施方式中,处理系统可按需要在单芯片或多个耦合的芯片 中实现。例如,处理系统可包括多个处理器和(例如,散置于处理器 间的)存储介质。可选择地,或附加地,处理系统可包括能够并行运行 的多个可重构逻辑元件。在一个实施方式中,处理系统可以是在图3 中显示的HyperX多处理器系统。因此,多处理器系统可通过使用多 个处理器来并行地运行软件程序。美国专利申请序列号10/602,292和 11/691,889描述了这样的系统以及在该系统上的软件程序的运行和部 署。因此,有关202、204和206的进一步的细节可在一个或更多的 上述参考中找到。注意,在这些参考中以及在此描述的细节不是限制 性的,且可以预见到其他实施方式。例如,按需要,可在任何数量的 处理系统上,用任何数量的语言来写软件程序,而不同于引用的文献 中所描述的或以上描述的方式。

注意,在运行软件程序之前,可对软件程序进行分析并将其分成 可以在处理系统的不同的部分上运行的部分。例如,软件程序的第一 任务或部分可在处理系统的第一部分上运行。可按需要而自动地或手 动地进行分析和划分。因此,软件程序可被划分在处理系统的各部分 之中。

另外注意,软件程序可以按期望的系统速度在处理系统上运行。 例如,软件程序可以按被生成的ASIC(例如,在下面描述的212中) 的期望的速度运行。换言之,处理系统可包括充足的硬件资源来以等 价于目标系统速度的吞吐量水平运行软件程序。相应地,可以按全系 统速度进行系统开发和调试而不用折衷。因此,处理系统可实时地以 期望的系统速度运行,由此允许设计者充分地测试软件程序,而不用 做有关ASIC的未来性能的假设。

另外,在需要更多的处理能力的地方(例如,为达到期望的系统 吞吐量水平),可用最小的努力将更多的处理器、存储器及/或通信通 路添加到处理系统。在214中,快速调节处理系统的规模以满足系统 要求的能力可向系统设计提供快速转变的原型设计能力。在优选的实 施方式中,软件程序重新分配在处理系统上可自动地并对用户来说透 明地执行。

相应地,在206中,可根据软件程序在处理系统上的运行来对软 件程序进行验证。在计算机系统82上运行的软件开发环境可提供调 试工具、性能分析工具、任务分配工具以及通信综合工具以开发并验 证系统软件程序。随后,在215中,可对经验证的软件进行优化以消 耗最小量的处理、存储及通信资源,这些资源构成216中的ASIC实 现的硬件基础。

在208中,可储存处理系统的第一硬件描述。第一硬件描述可规 定处理系统在一硬件装置(例如,214中的HyperX芯片)上的实现。 例如,在一个实施方式中,第一硬件描述可对应于上述处理系统的默 认硬件描述。可选择地,或附加地,硬件描述可基于处理系统的构件 而被拼接在一起。在一个实施方式中,可以有不同的硬件描述用于处 理系统的不同的通信链路、处理器类型、存储器等,且这些硬件描述 可根据处理系统的具体的构件及/或体系结构而被拼接在一起。第一硬 件描述可具有对应于处理系统的不同构件的一个或更多的部分。例 如,在一个实施方式中,第一硬件描述可包括描述处理器和存储器的 第一部分。因此,第一硬件描述可根据处理系统的设计而被储存。因 而第一硬件描述是这样:如果第一硬件描述在ASIC上实现,那么这 将在ASIC上产生处理系统,即,多个处理器和存储器将在ASIC上 实现。

在210中,可产生第二硬件描述,其对应于由第一硬件描述的第 一部分规定的处理系统的部分。根据上面的实例,第二硬件描述可对 应于第一硬件描述的第一部分。第二硬件描述可规定在处理系统的所 述部分上运行的软件程序的第一部分的专用的硬件实现。在一些实施 方式中,第二硬件描述可基于第一硬件描述而生成,并且可以合并软 件的硬件描述(例如,通过将软件的程序指令转变成硬件描述,例如 HDL代码)。可选择地,使用处理系统的现有体系结构和在该处理系 统上运行的软件,可简单地生成第二硬件描述。因此,第二硬件描述 可描述或实现由第一硬件描述表示的一些或所有硬件。然而,第二硬 件描述也可描述或实现软件(或其部分)以及运行该软件的硬件。因 此,如上所指出的,第二硬件描述可规定在处理系统上运行的软件程 序的部分的专用的硬件实现。

可在生成第二硬件描述的部分时进行的硬化的程度可在更优化 的处理器实现到专用的硬件电路的范围内变化。因此,在一个实施方 式中,第二硬件描述的部分相对于在第一硬件描述中规定的通用处理 器,是具有更有限的可编程性的更优化的处理器。在另一个实施方式 中,第二硬件描述的部分包括专用的逻辑,这使得如果第二硬件描述 的此部分在ASIC上实现,那么这将在ASIC上产生专用的门电路及/ 或逻辑电路,这些专用的门电路及/或逻辑电路实现在处理系统的相应 部分上运行的软件程序的第一部分的功能。这样,按不同的标准,例 如按大小、性能、成本等的要求,第二硬件描述的不同的部分可“被 硬化”成不同的程度。

按照一个特定的实例,处理系统中的处理器可被编程以计算两个 和的乘积:Z=(A+B)×(C+D),其中所有变量都储存在数据存储器 中。为在处理系统中运行该程序,可在处理器的指令存储器中装入一 程序。上述程序可包含一系列的指令以从数据存储器取出数据(A、B、 C和D),启动处理器的运行单元中的加法器和乘法器,以计算结果 (Z),并将结果存回到数据存储器。在此和的乘积的实例中,第一硬 件描述可包括描述处理器(主要由运行单元和指令存储器组成)和数 据存储器的第一部分。该第一硬件描述可限定足够灵活以执行由程序 的指令规定的任何功能的处理器。第二硬件描述可包括描述专用的电 路的对应的部分,例如描述相同的处理器和存储器的“硬化的”形式的 对应的部分,以只执行和的乘积的运算。因此,在此特定的实例中, 第二硬件描述可描述在处理系统的部分(在此情况下,处理器和存储 器)上运行的软件的部分的专用的硬件实现。

在不同的实施方式中,可一次或更多次产生第二硬件描述。举例 来说,可为处理系统的各构件或部分产生第二硬件描述。每一第二硬 件描述可随后一起编译为用于ASIC的最后的硬件描述。可选择地, 按需要可产生第二硬件描述用于整个ASIC。

产生规定在处理系统(或其部分)上运行的软件程序的部分的专 用的硬件实现的第二硬件描述可称为对软件程序的该部分及/或处理 系统的该部分进行“硬化”。注意,硬化也可包括在ASIC上实现软件 程序的特定部分(例如,如在212中所描述的,通过根据第二硬件描 述而配置ASIC)。因此,硬化可以指可编程性可针对ASIC的该特定 部分,或软件程序的该特定部分而被去除或限制。另外,如上所指出 的,通过更改第一硬件描述以包括在处理系统的部分上运行的软件, 可产生第二硬件描述。

硬化ASIC的特定的部分可允许有更好的性能、更小的面积以及 更低的功耗。注意,处理系统的一个或更多的部分可以不被硬化,由 此在最终的产品上(在此情况下ASIC)允许有可编程性。这样,按需 要,可产生第二硬件描述,用于全部地或部分地硬化的最后的ASIC。 因此,通过控制硬化的量,得到的ASIC的特性可在可编程ASIC到 定制的硬连线的ASIC之间变化,获得程度变化的改进的面积、性能 和功耗。注意,要硬化的部分可由用户选择,例如使用在计算机系统 82上运行的图形用户界面(GUI)。

可使用各种方法执行产生第二硬件描述(或硬化)。在一个实施 方式中,产生第二硬件描述可包括分析在处理系统上运行的软件,以 确定使用的硬件资源的实际量。在执行分析后,一个或更多的未用的 通信链路(例如逻辑和布线)或芯片IO可被去除,例如,从第一硬件 描述去除以产生第二硬件描述。因此,在一个实施方式中,第二硬件 描述基于分析可不包括处理系统的不同部分的硬件描述。

在一些实施方式中,具有严格的时序要求的可编程通信链路可用 专用的线路来取代。此外,指令组及/或数据的宽度可根据在202中储 存的软件程序而改变。

另外,可最优化数据存储器的大小和组织以适应软件所限定的功 能的确切的要求。例如,用于未用的存储器的不必要的存储器描述可 在硬化过程中从第一硬件描述去除(以产生第二硬件描述)。可选择 地,或附加地,存储器大小可被增大,存储器组织可被改变,或RAM 描述可由只读存储器(ROM)描述取代,例如,以允许最后的ASIC 的更好的性能和更小的面积。

在一些实施方式中,第一硬件描述可描述特定的处理器;硬化处 理器可包括,用来自预验证的处理器核的库的处理器的特定的描述取 代(例如,在第一硬件描述中的)处理器的描述。例如,如果(例如, ASIC的)系统需求要求浮点性能,则可使用具有内置浮点加速硬件 的处理器;不然,可从处理器描述的库选择并使用较小的定点处理器。

类似地,基于在202中储存的软件的软件需求,可定制并重构处 理器描述。例如,可通过以下方式来更改处理器描述:增加或去除指 令,最优化寄存器文件和缓存大小,添加专用硬件加速器以及寻址模 式,及/或生成定制的指令,以及其他类似的方式。在一个实施方式中, 处理器的运行控制和指令存储器可由运行特定的软件程序的功能的 状态机来取代。另外,通过替换充分匹配软件程序的计算要求的定制 的数据通路,可最优化处理器描述。定制的数据通路可允许操作被并 行地运行,而这些操作之前是串行执行的,例如,由第一硬件描述所 描述的处理系统串行执行。注意,在一些实施方式中,可使用传统的 行为综合技术。例如,系统程序的部分可被划分并合成为硬连线的逻 辑块。

在一些实施方式中,IP块可并入第二硬件描述及/或最后的硬件 描述中。IP块可以或可以不存在于原处理系统体系结构中。IP块还 可以是软件程序的功能的高度优化的逻辑实现。IP块(知识产权块) 可指由公司或企业产生的、需要得到使用许可的块。因此,IP块可并 入ASIC中(例如,通过将其描述包括在第二硬件描述中)。

在ASIC的一个或更多的部分被硬化之后(及/或在ASIC在212 中被生成或配置后),ASIC的电性能可被最优化用于新的芯片拓扑 (与原处理系统的拓扑相对)。电路最优化可包括大小控制、缓冲、时 钟网调整、电源/接地网调整及/或其他的优化。

因此,产生第二硬件描述可包括更改第一硬件描述以最优化 ASIC。因为更改并没有改变系统的功能,所以包括形式验证技术的验 证技术和测试可用来验证第一硬件描述,可用来验证第二硬件描述。

在212中,可生成或配置ASIC,且其可实现软件程序的功能。 配置或生成ASIC可包括在ASIC上实现第二硬件描述(或最后的硬 件配置/多个第二硬件配置)。例如,在用于配置ASIC的硬件描述包 括状态机时,配置ASIC可包括实现状态机。而且,配置ASIC可包 括在ASIC上实现第一硬件描述的一个或更多的部分。

图4——示例性的专用集成电路(ASIC)

图4示出了使用本发明开发的示例性的ASIC的方块图。如所显 示的,ASIC可包括一个或更多的可编程部分,在图4中以HyperX结 构402、404和406示出。ASIC的可编程部分保持与原处理器结构基 本相似。如上所指出的,在一些实施方式中,在完全硬连线的ASIC 的情况下,最后确定的ASIC可根本不包含可编程部分。对于硬化的 部分,可应用从全定制布线(full custom layout)到标准单元布局布 线(standard cell place & route)范围内的各种物理实现技术。ASIC 也可包括I/O框架400以及一个或更多的硬化的IP块408和410。图 4的ASIC可根据上述的系统和方法生成。

结构化ASIC设计

在一个实施方式中,可使用结构化ASIC方法生成或配置ASIC。 结构化ASIC是具有预定的基础电路(base circuit)和布线结构的特 殊形式的ASIC。结构化ASIC旨在通过对芯片制造工艺的金属层、 通孔层或其他的顶部材料层的定制进行限制来减少设计时间和成本。 结构化ASIC的实例包括LSI的RapidChip、NEC的ISSP以及 Fujitsu的AccelArray。结构化ASIC虽然由于基于预制的结构 (pre-fabricated based fabric)的使用而掩模成本较低且制造时间较 短,但其还是与传统ASIC一样,本身存在设计门级逻辑时相同的风 险和复杂性及其相关的时序收敛问题。

目前的结构化ASIC基础结构大多由无特定用途的门电路 (uncommitted gate)来填充以支持金属层定制。需要以HDL编写的 系统的描述。为生成/实现ASIC,可使用逻辑综合工具以将HDL转 变成门级网表。相应地,门电路可随后通过生成定制的金属掩模而被 布局及连接。

硬化定制ASIC时使用的许多技术(例如上面所描述的,以及类 似的内容)在掩模可编程结构化ASIC实现中应用得同样好。在结构 化ASIC实现的一个实施方式中,基础阵列包括处理器,例如上述处 理器系统的处理器、存储器巨集(memory macro)、IO以及其他预 定义的IP块,因而生成直接由高级编程语言驱动而不是由HDL驱动 的结构化的ASIC。

在另一个实施方式中,无特定用途的门电路被添加到处理器系统 的基础结构以便于定制逻辑的生成。附加地,或可选择地,金属掩模 定制可用来形成通信链路。在一个实施方式中,金属层定制也可用来 形成不同类型、大小和组织的存储器块。此外,金属层定制被用来生 成定制的逻辑块。

在另一个实施方式中,处理器系统中的各处理器(或至少处理器 的子集)的特性可借助金属层定制而被定制。例如,可通过增加/去除 指令,包括/排除浮点硬件,调整寄存器文件大小及/或缓存大小,及/ 或包括专用硬件加速器更改一个或更多的处理器。

在一些实施方式中,一个或更多的ASIC部分可以是基于原处理 结构而预定义并预制在ASIC芯片上的,且可通过金属层上不同的互 连装置容易地定制。再举一个例子,结构化ASIC可已经包括内置的 IP块。

在另一个实施方式中,当使用结构化ASIC时,用来验证软件程 序的处理系统可以是结构化ASIC的软件或硬件仿真器。通过在实质 上类似于最后的结构化ASIC的平台上开发软件程序,从软件程序到 结构化ASIC的映射被简化。由于在结构化ASIC上可提供的减少的 硬化可能性,第一硬件描述可不包含处理系统的完全实现,因为相同 的处理硬件已预制在结构化ASIC上。这种情况下,尽管使用结构化 ASIC方法,硬化的程度变化仍有可能,但第二硬件描述也可只包含 需要用来定制通信的信息。

硬化过程的自动化

如上所指出的,不同软件工具可储存在计算机系统82上,用于 辅助上面图2A和2B中描述的硬化过程并使之自动化。下面的内容描 述了可以使用的示例性的工具的特定的实施方式。

软件开发——输入、可视化、模拟以及调试用户程序。这些工具 可包括连接到硬件参考设计的设备,用于软件/硬件协同设计和调试。

软件分析——分析计算资源的利用、储存资源的利用、通信资源 的利用、IO资源的利用、数据流以及数据业务。

任务分配——建立数据处理、存储器访问以及通信开销的成本函 数的模型。这些工具可以分配任务并将工作荷载分发到不同的处理器 以获得处理和通信之间的最佳平衡,并获得最佳的面积、性能、等待 时间和功耗。

虚拟原型(Virtual Prototyping)——基于软件的实际资源需求 最优化设计以及在假设(what-if)分析中,向用户提供快速的面积/ 性能/功率反馈。硅虚拟原型技术的实例可在6,145,117号美国专利中 找到,该专利特此以引用方式并入,就如同在此充分并完全阐明的一 样。

存储器产生——产生不同大小和组织的存储器以实现最优化过 程的决策。

通信综合——在芯片上的块之间产生最优化通信路径以实现最 优化过程的决策。

I/O综合——产生最优化IO框架以适合系统的确切的要求。

定制数据通路综合——产生定制的通信通路以取代HyperX处 理器的普通的数据处理单元。

自动布图规划生成(Automatic Floorplan Creation)——基于时 序、电源、布线拥塞度(routing congestion),以及信号完整性分析 产生最优化的布图规划。布图规划者可将硬块(hard block)、软块 (soft block)、时钟网、电源/接地网络、IO以及设计约束并入适合 于商用的物理实现工具,例如来自Cadence和Synopsys的工具的种 子布图规划(seed floorplan)中。

时序最优化——最优化电路的电性能以满足作为硬化处理器的 结果的新的时序约束。

设计验证——验证硬化的设计的功能的正确性。这些工具可辅助 验证在整个物理转变过程中没有无意地改变设计意图。

行为综合——将处理器的高级程序代码综合成HDL描述,用 于硬连线的逻辑实现。商用行为综合工具的实例包括来自Mentor Graphics、Forte Design Systems以及Synforna的软件。

状态机产生——产生状态机以取代处理器的指令存储器、指令运 行以及排序逻辑。

可重构处理器产生——基于软件需求,例如基于上述软件程序的 软件需求来重构处理器。例如,增加/去除指令、最优化寄存器文件和 缓存大小、添加专用硬件加速器以及生成定制指令在处理器定制中是 众所周知的技术。Tensilica的可配置的处理器体系结构是用来构建可 重构处理器的商用工具的实例。

因此,使用在此描述的系统和方法,上述软件工具中的一个或更 多个可用来自动化或辅助生成ASIC。注意,这些工具只是示例性的, 且其他工具也是可以预见的。

尽管已经相当详细地描述了上面的实施方式,但对本领域技术人 员来说,一旦上述公开被充分地理解,则许多的变化形式和更改将变 得很明显。期望下列权利要求解释为包括所有这样的变化的形式和更 改。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号