专利名称:集成电路下层硬件映射方法、数据控制流生成方法及装置的制作方法
技术领域:
本发明涉及集成电路设计领域,尤其是一种集成电路下层硬件映射方法、数据控 制流生成方法及装置。
背景技术:
在集成电路领域,通常集成电路的设计速度滞后于集成电路制造工艺的发展速 度。尤其是集成电路的制造工艺进入纳米级以后,集成电路的设计速度已远远落后于集成 电路制造工艺的发展速度。因此,对于集成电路设计领域来说,提高设计速度是当前最为迫 切的问题之一。如图1所示,现有技术中,集成电路的设计通常包括两部分第一部分是从 基于C语言或MATLAB语言的算法描述到RTL级的描述;第二部分是从RTL级描述到标准单 元ASIC结构或门阵列现(或其它S-ASIC结构)或FPGA结构的实现过程。其中第二部分 的实现目前已有比较成熟的工具支持,其实现过程基本满足高效、快捷等要求。因此,提高 设计速度的关键点落在了第一部分的实现上,也就是从C语言或MATLAB语言等的算法描述 到RTL级的描述上,可以将这称之为集成电路下层硬件的映射方法或者高层次综合或者结 构级综合。但由于第一部分的实现主要是由技术人员根据自身对C语言或MATLAB语言的理 解,人为地将其转换为RTL级的描述。也就是说,第一部分的实现受到技术人员自身的经验 和知识水平的影响,对于不同的技术人员来说,实现的时间存在较大的差异。对于第一部分 的实现方式,国外的一些公司已经展开了相应的研究并推了一些实现工具,比如Mentor的 Catapult C、AutoESL 的 AutoPilot、Fore Design System 的 Cynthesizer、UC San Diego 的SPARK等。
发明内容
本发明要解决的主要技术问题是,提供一种集成电路下层硬件映射方法和装置, 能够提高集成电路的设计速度。本发明还提供了一种数据控制流生成方法及装置,包含数据相关性、数据可并行 性和相应控制信息的分析,能够辅助硬件电路设计人员进行电路设计。为解决上述技术问题,本发明采用的技术方案如下—种集成电路下层硬件映射方法,包括步骤程序分析步骤,用于读取描述集成电路算法的计算机语言程序,并从中识别出被 映射的执行对象和参数对象;数据控制流图生成步骤,用于将识别出的执行对象和参数对象映射成描述集成电 路算法的数据控制流图中的相应节点;算子时空图生成步骤,用于根据数据控制流图中的各节点所进行的功能处理从预 先建立的算子单元库中获取对应功能的至少一个算子单元,将数据控制流图转换成由算子 单元组成的算子时空时序约束步骤,用于根据用户规格要求和目标集成电路工艺的要求确定出总时 序约束,对算子时空图中的每个算子单元标注时间,对算子时空图的每个层级进行时序约 束;时空图压缩步骤,用于根据时间标注对算子时空图进行空间上的聚类压缩,使得 总体算法执行时间最接近于总时序约束;下层硬件映射步骤,用于根据聚类压缩后的算子时空图生成集成电路下层硬件逻 辑描述。基于上述的方法,本发明还提供一种集成电路下层硬件映射装置,包括程序分析模块,用于读取描述集成电路算法的计算机语言,并从中识别出被映射 的执行对象和参数对象;数据控制流图生成模块,用于将识别出的执行对象和参数对象映射成描述集成电 路算法的数据控制流图中的相应节点;算子时空图生成模块,用于根据数据控制流图中的各节点所进行的功能处理从预 先建立的算子单元库中取出对应功能的至少一个算子单元,将数据控制流图转换成由算子 单元组成的算子时空图;时序约束模块,用于根据用户规格需求和目标集成电路工艺的要求确定出总时 序约束,对算子时空图中的每个算子单元标注时间,对算子时空图的每个层级进行时序约 束;时空图压缩模块,用于根据时间标注对时空图进行空间上的聚类压缩,并使之总 体算法执行时间最接近于总时序约束;下层硬件映射模块,根据聚类压缩后的时空图生成集成电路下层硬件逻辑描述。本发明还提供一种数据控制流生成方法,包括步骤程序分析步骤,用于读取描述集成电路算法的计算机语言程序,根据该种计算机 语言的规则从所述计算机语言程序中识别出被映射的执行对象和参数对象,所述执行对象 包括运算指令和/或控制指令,所述参数对象包括输入数据、输出数据、中间数据中的至少 一种;数据控制流图生成步骤,用于将识别出的执行对象和参数对象映射成描述集成电 路算法的数据控制流图中的相应节点。进一步地,在所述数据控制流图生成步骤中,将所述运算表指令映射为处理框图, 将所述控制指令映射为用于标识状态、状态转移条件及状态控制信号的控制流,将所述参 数对象映射为数据流上的存储节点。其中,所述程序分析步骤包括根据该种计算机语言的规则从所述计算机语言程 序中查找出函数,对所述函数的输入输出和函数内的运算进行解析,识别出执行对象和参 数对象,在解析过程中,如果当前被解析的函数为包含下层函数的上层函数,则继续对下层 函数进行解析。进一步地,所述控制指令为循环语句中的循环指令,所述循环语句包括静态循环 语句和动态循环语句,则所述数据控制流图生成步骤包括当循环语句为静态循环语句时,根据循环次数将循环体展开,在循环体展开后带 入参数对象得到新的运算表达式,将运算表达式中的运算指令映射为处理框图,将运算表达式中的参数对象映射为数据流上的存储节点;当循环语句为可变为静态循环语句的动态循环语句时,根据调用的不同场合变动 态循环语句为静态循环语句,将其展开得到新的运算表达式,将运算表达式中的循环指令 映射为处理框图,将运算表达式中的参数对象映射为数据流上的存储节点;当循环语句为单层动态循环语句时,将循环语句的内容映射为处理框图,将循环 指令映射为状态机;当循环语句为多层动态循环语句时,分别将外层循环语句和内层循环语句的内容 映射为第一处理框图和第二处理框图,将外层循环指令映射为第一状态机,将内层循环指 令映射为第二状态机,并且所述第二处理框图和第二状态机映射在所述第一处理框图内; 或分别将外层循环语句和内层循环语句的内容映射为第一处理框图和第二处理框图,将循 环指令映射为状态机,并且所述第二处理框图映射在所述第一处理框图内,且所述状态机 的状态数等于所述循环的循环次数加一。进一步地,所述控制指令为分支控制语句中的控制指令,所述数据控制流图生成 步骤包括将所述分支控制指令映射为多路选择器,分支控制语句的内容映射为多路选择 器的输入端处理框图,分支控制语句的控制条件映射为多路选择器的控制端处理框图。进一步地,所述分支控制语句为嵌套分支控制语句,则将上层分支控制指令映射 为第一多路选择器,所述上层分支控制语句的内容映射为所述第一多路选择器的输入端 处理框图,所述上层分支控制语句的控制条件映射为所述第一多路选择器的控制端处理框 图;将下层分支控制指令映射为第二多路选择器,所述下层分支控制语句的内容映射为所 述第二多路选择器的输入端处理框图,所述下层分支控制语句的控制条件映射为所述第二 多路选择器的控制端处理框图,并且所述第一多路选择器的输出作为所述第二多路选择器 的输入。基于上述的方法,本发明还提供一种数据控制流生成装置,包括程序分析模块,用于读取描述集成电路算法的计算机语言程序,根据该种计算机 语言的规则从所述计算机语言程序中识别出被映射的执行对象和参数对象,所述执行对象 包括运算指令和/或控制指令,所述参数对象包括输入数据、输出数据、中间数据中的至少 一种;数据控制流图生成模块,用于将识别出的执行对象和参数对象映射成描述集成电 路算法的数据控制流图中的相应节点。进一步地,所述数据控制流图生成模块包括执行对象映射模块,用于将所述执 行对象中的运算指令映射为处理框图,并用于将所述执行对象中的控制指令映射为标识状 态、状态转移条件及状态控制信号的控制流;参数对象映射模块,用于将参数对象映射为数据流上的存储节点。本发明的有益效果是通过对原C程序或MATLAB程序的分析,识别出映射的执行 对象和参数对象;并将识别出的执行对象和参数对象映射成为数据控制流图,该数据控制 流图可以表示集成电路的算法;然后将数据控制流图中的各节点用算子来替代,生成算子 时空图;生成的算子时空图经过聚类压缩,使压缩后的时空图的总体执行时间最接近于总 时序约束;将压缩后的时空图生成集成电路的下层硬件电路。从而创造了一种从计算机语 言到集成电路下层硬件电路的映射工具,标准化地实现了集成电路从C或MATLAB等语言生成下层硬件的过程,实现起来方便快捷。本发明还通过对计算机语言程序进行分析得到其相应的数据相关性、数据可并行 性和相应控制信息等,从而根据这些信息生成相应的数据控制流图,并且其中控制表达式 转换方法是所有语言表达式转换的核心,其转换效率直接影响生成算法数据控制流图的数 据量。本发明方法提前将并行性因素、硬件结构例如状态机、多路选择器等考虑在内,可以 更大程度上帮助硬件工程师进行硬件设计。
图1为现有技术中的集成电路设计方法流程图;图2为ADDS算子结构示意图;图3为ADDS算子功能图;图4为存储类算子的通用结构示意图;图5为路径类算子的通用结构示意图;图6为控制类算子的通用结构示意图;图7a和图7b分别为本发明的下层硬件映射流程图和集成电路下层硬件映射装置 的一种实施例的结构框图;图8为本发明数据控制流图生成方法的一种实施例中对函数X264_me_SearCh进 行分析的流程图;图9为图8函数X264_me_search和pixel_sad_16X 16生成数据控制流图的流程 图;图10为本发明的一种实施例中的单层动态循环语句的映射结构图;图11为本发明的一种实施例中的多层动态循环语句的一种映射结构图;图12为本发明的方法的一种实施例中的多层动态循环语句的另一映射结构13为本发明的一种实施例中的分支控制语句映射的结构图;图14为本发明的一种实施例中的嵌套分支控制语句映射的结构图;图15为本实施例的函数X264_me_searCh的数据控制流图;图16为本实施例的函数pixel_sad_16X16的数据控制流图;图17为本发明的数据控制流图生成装置的一种实施例的结构框图;图18为图17的数据控制流生成模块的一种实施例的结构框图;图19为本发明的顺序相关数据流展开的一种实施例的结构图;图20为本发明的存在反馈数据流,由算子展开为局部流水线结构示意图;图21为本发明的并行数据流展开的一种实施例的结构图;图22为本实施例的函数x264_me_searCh的LO和Ll逻辑生成的算子时空图;图23a和图2 分别函数x264_me_Search的逻辑L3的第一部分和第二部分生成 的算子时空图;图M为本实施例的函数X264_me_search的逻辑L5生成的算子时空图;图25a和图25b分别为本实施例的函数x264_me_search和函pixel_sad_16X 16 的算子时空图;图^a和图^b分别为本实施例的函数X264_me_search和函数pixel_sad_16X16的时序约束示意图;图27为本实施例的函数pixel_sad_16X16聚类压缩后的时空图;图28所示为固化定制的一种实施方式原理图;图29为X264_me_search聚类压缩后的比较图。
具体实施例方式下面通过具体实施方式
结合附图对本发明作进一步详细说明。回顾集成电路设计方法学的发展历程,可以看到当集成电路制造工艺进入Ium 的时代,出现了以门阵列为基本单元的设计方法;当集成电路制造工艺进入0. 5um的时代, 出现了以标准单元为基本单元的设计方法;当集成电路制造工艺进入0. ISum的时代,出现 了以IP核为基本单元的设计方法。由此可以看出一方面集成电路的设计方法学随着集成 电路制造工艺的发展而发展,另一方面集成电路设计方法学中使用的基本单元(门、标准 单元、IP核)的单元粒度不断增大。同时,每次新的基本单元的出现,都标志着集成电路设 计方法革命性的进步。因此,可以合理预见的是,随着近十年来集成电路制造工艺的飞速进 步,尤其是集成电路制造工艺进入纳米级后,更大粒度的基本单元将出现并开启集成电路 设计的新局面,以适应集成电路制造工艺的飞速发展。算子作为集成电路组成部件中的基本单元,其粒度大于标准单元的粒度,有利于 描述集成电路算法的计算机程序语言向下层硬件映射,因此本发明采用基于算子的集成电 路设计方法,使得加速了集成电路的设计速度,以适应集成电路制造工艺的进步。本发明中,常用的算子有五类,分别是运算类算子、存储类算子、路径类算子、控制 类算子和时钟类算子。1、运算类算子。运算算子(AU)是用于实现逻辑运算或算术运算或逻辑与算术混合运算的基本单 元。它包括算术逻辑运算单元和运算配置寄存器,运算配置寄存器用于接收和存储运算配 置指令,不同的运算配置指令对应不同的算术逻辑操作,也就是说,通过运算配置指令可以 使同一个运算算子实现多种不同的功能。下面,以ADDS算子为例对运算算子进行说明。图2为ADDS算子的结构示意图,它包括用于实现加减操作的ADD单元和用于实现 移位操作的《/》单元,通过设置控制位X的参数值,可以使ADDS算子实现多种不同的功能, 比如,图3的表格示出了一种实施方式中不同控制位X值与不同操作的对应关系。像ADDS 这种可以通过控制位X实现多种不同功能的算子称为可重构算子,可重构算子由于丰富的 应用功能可以用在不同的场景中,减少了算子单元库中储存的算子数。并且可重构算子在 其执行过程中还可以通过改变控制位的方式实现动态的重构。2、存储类算子。如图4所示为存储类算子(MU)的基本结构示意图(图中CU表示控制算子)。存 储算子包括存储配置寄存器(MU configuration register)和存储单元,存储单元包括地 址产生单元、数据存储器、数据产生单元和数据输出控制单元。存储配置寄存器可以通过数 据输出控制单元配置存储算子(MU)的存储体(各种存储介质寄存器、RAM等MEM)的写入 和/或读出方式,还可以配置存储器对应的地址产生单元的工作方式。根据地址产生单元 生成的地址直接将输入数据存储到预定位置,并将需要的数据从存放位置输出。
3、路径类算子。如图5所示,为路径类算子(LU)的通用结构示意图。路径类算子LU包括路由配 置寄存器(LU configuration register)和组成路由选择单元的交换开关和数据寄存器 (REG),其中,路由配置寄存器受到控制算子CU的控制,在控制算子CU的控制作用下控制交 换开关按照期望的方式实现不同运算算子AU之间的连接。数据寄存器用于暂存运算类算 子LU和存储类算子MU的输入输出数据。4、控制类算子。如图6所示,为控制类算子(CU)的通用结构示意图。控制类算子的作用主要是将 配置信息传送到相应的配置寄存器,配置运算算子AU、存储算子MU和路径算子LU实现预定 的功能。控制算子CU的形式包括计数器、状态机和微指令三种。其中微指令结构包含译码 器、程序计数器、指令存储器和流水线控制模块等。控制算子CU通过执行简单的配置指令 向各功能单元发送配置信息,由于⑶支持的指令很少,因此指令寄存器容量小,译码器非 常简单。5、时钟类算子。时钟算子用于运算类算子、存储类算子、路径类算子和控制类算子的时钟控制信 号,时钟信号包括控制时钟起停和控制时钟频率的信号,时钟信号可以按照期望的方式配置。以上五类算子是实现以下实施方式的基础,可以理解的是,上述对根据功能将用 于集成电路设计中的算子分为五大类并非唯一的划分方式,还可以根据实际情况有针对性 进行更宽范围或更细范围的划分。在本发明的一种实施例中,提供了一种从计算机语言到集成电路下层硬件电路的 映射系统,如图7a所示为该系统的集成电路下层硬件映射方法,包括以下步骤步骤Si,对程序进行分析,即读取描述集成电路算法的计算机语言程序,根据该计 算机语言的规则从所述计算机语言程序中识别出被映射的执行对象和参数对象。专用集成 电路,用于实现特定的协议或者功能,而这些功能和协议通常首先用计算机语言程序进行 描述,其中的计算机语言通常采用C语言或MATLAB语言等。再将编写的计算机语言程序输 入到本发明的映射系统中,该映射系统根据编写程序所用计算机语言的规则从所述计算机 语言程序中识别出被映射的执行对象和参数对象。本实施方式中该执行对象包括运算指令和/或控制指令,该参数对象包括输入数 据、输出数据、中间数据中的至少一种。本实施例中的运算指令包括加、减、乘和移位等运笪弁。步骤S2,生成数据控制流图,将识别出的执行对象和参数对象映射成描述集成电 路算法的数据控制流图中的相应节点。将所述运算指令映射为处理框图,将所述控制指令 映射为用于标识状态、状态转移条件及状态控制信号的控制流,将所述输入数据、输出数据 和中间数据映射为数据流上的存储节点。步骤S3,算子时空图生成步骤,用于根据数据控制流图中的各节点所进行的处理 功能从预先建立的算子单元库中取出对应功能的至少一个算子单元,将数据控制流图转换 成由算子单元组成的算子时空图。先将数据控制流图根据其数据流相关性展开,然后将展 开后的各节点转换成可完成该节点功能的算子单元。用一个或多个算子单元的组合取代数据控制流图中的各节点,一个或多个算子单元的组合可完成与各节点相同的功能。对于如 何将数据控制流图展开,包括但不限于以下几种方式如果数据控制流图中的数据流为顺 序相关数据流结构,则将顺序相关数据流采用流水线的方式展开;如果数据控制流图中的 数据流中存在反馈,即该数据流是一个循环,则该数据流存在数据相关性,因此该数据流不 能转化为流水结构;但如果该数据流内部数据之间不存在数据相关性时,则将所述内部数 据不存在数据相关性的各数据流采用局部流水线的方式展开;如果数据控制流图中的数据 流之间不存在数据相关性,则将该数据流采用并行方式展开,并转换成由算子单元组成的 算子时空图。步骤S4,时序约束步骤,用于根据用户规格要求和目标集成电路工艺的要求确定 出总时序约束,对算子时空图中的每个算子单元标注时间。另一方面,从算子单元库中可以 提取算子时序信息,对算子时空图做时序标注,形成时序约束的对象。从而根据数据流特性 可以将时序约束具体到算子时空图的每个层级,实现对算子时空图的每个层级进行时序约 束。由于算子可以构成不同算子功能块,进而构成不同的算子功能群落,则每个算子功能群 落为一个算子层级。如果所述数据流结构为并行数据流,则将总时序约束平分给到对应的时空图中的 每个算子层级,并将每个算子层级的时序约束平分到该算子层级中的每一个算子单元。将 数据控制流中串行各节点所对应的各算子层级总的算子的基本时序单位作为总体时序约 束,按照各算子层级中最长运算路径所映射的运算算子的时序占各个算子层级中最长运算 路径所映射的算子单元对应的时序总和的比例来分配各算子层级的时序。步骤S5,时空图压缩步骤,用于根据时间标注对时空图进行空间上(即硬件资源 上或面积上)的聚类压缩,并使之总体算法执行时间最接近于总时序约束。在一种实施例中,对时空图进行压缩包括以下步骤在算子时空图中查找出属性 相同的运算类算子和/或存储属性相同的存储类算子;然后根据时间标注对运算属性相同 的运算类算子在空间上进行合并压缩和/或将存储属性相同的存储类算子在空间上进行 合并压缩;然后引入控制类算子,对压缩后的运算类算子和/或存储类运算算子生成相应 配置指令,实现运算类算子和/或存储类算子的复用。聚类压缩步骤和生成可重构算子功能块的步骤,都会产生不只一种结果。不同的 函数调用同一子函数,由于约束时间不同,所产生的聚类结果也不同。因此需要根据时间、 面积、功耗等参数进行优化,按性能(执行时间)排出顺序,恰好满足时间约束的聚类结果 表示其硬件实现代价最小,因此选择总体算法执行时间最接近于完成集成电路算法所需要 的总时序约束的时空图作为聚类压缩的优化结果。步骤S6,下层硬件映射步骤,根据聚类压缩后的时空图生成集成电路下层硬件逻 辑描述。基于上述的集成电路下层硬件映射方法,本发明还公开了一种集成电路下层硬件 映射装置,请参考图7b,本实施例的集成电路下层硬件映射装置包括程序分析模块1,用于读取描述集成电路算法的计算机语言程序,根据该计算机语 言的规则从所述计算机语言程序中识别出被映射的执行对象和参数对象;数据控制流图生 成模块2,用于将识别出的执行对象和参数对象映射成描述集成电路算法的数据控制流图; 算子时空图生成模块3,用于根据数据控制流图中的各节点所进行的处理功能从预先建立的算子单元库中取出对应功能的至少一个算子单元,从而将数据控制流图转换成由算子单 元组成的算子时空图;时序约束模块4,用于根据用户规格需求和目标集成电路工艺的要 求确定出总时序约束,对算子时空图中的每个算子单元标注时间,对算子时空图的每个层 级进行时序约束;时空图压缩模块5,用于根据时间标注对时空图时进行空间上的聚类压 缩,并使之总体算法执行时间最接近于总时序约束;下层硬件映射模块6,根据聚类压缩后 的时空图生成集成电路下层硬件电路。下面结合具体实施例对本发明的集成电路下层硬件映射方法和装置进行说明。H. 264是国际电联(ITU-T)和国际标准化组织(ISO)共同组建的联合视频组 (JVT)共同制定的数字视频编码标准。本实施例中以H. 264标准的C语言描述的X264_me_ search函数为例,对本发明的方法进行更为详细的说明。如图8所示,为对函数X264_me_search进行分析包括步骤S11、读取计算机语言程序,并在该计算机语言程序中查找函数。在本实施例中,首 先读取程序,并进行语法和词法分析,得到函数X264_me_search。S12、对该函数进行解析,得到该函数的函数调用关系以及参数对象,该参数对象 包括该函数的输入数据、输出数据、输入常量,以及该上层函数的中间数据,并对该函数的 各参数对象进行相应的数据相关性、共享存储、分布存储等信息的标注。在本实施例中,对 函数X264_me_search进行分析得到其输入变量、输出变量、输入常量和输出常量如表1所 示表1 信号名称数据类型方向说明ipixelIntIN//PIXEL—WxH续表1 ImIntIN//lambda motionpfrefuint8 t*IN//参考帧pfencumt8 t*IN//编码帧i strideIntIN//图像的宽度i—mv—rangeIntIN//运动矢量的最大 范围mvp[2]IntIN//预测运动矢量costIntOUT//satd + Im * nbitsmv[2]IntOUT//运动矢量在本实施例中,对该函数X264_me_SearCh内部分析得到其内部变量和常量,如表 2所示表2:
权利要求
1.集成电路下层硬件映射方法,其特征在于包括程序分析步骤,用于读取描述集成电路算法的计算机语言程序,根据该计算机语言的 规则从所述计算机语言程序中识别出被映射的执行对象和参数对象;数据控制流图生成步骤,用于将识别出的执行对象和参数对象映射成描述集成电路算 法的数据控制流图中的相应节点;算子时空图生成步骤,用于根据数据控制流图中的各节点所进行的功能处理从预先建 立的算子单元库中取出对应功能的至少一个算子单元,将数据控制流图转换成由算子单元 组成的算子时空图;时序约束步骤,用于根据用户规格需求和目标集成电路工艺的要求确定出总时序约 束,对算子时空图中的每个算子单元标注时间,对算子时空图的每个层级进行时序约束;时空图压缩步骤,用于根据时间标注对时空图进行空间上的聚类压缩,并使之总体算 法执行时间最接近于总时序约束;下层硬件映射步骤,根据聚类压缩后的时空图生成集成电路下层硬件逻辑描述。
2.集成电路下层硬件映射装置,其特征在于包括程序分析模块,用于读取用于描述集成电路算法的计算机语言程序,根据该计算机语 言的规则从所述计算机语言程序中识别出被映射的执行对象和参数对象;数据控制流图生成模块,用于将识别出的执行对象和参数对象映射成描述集成电路算 法的数据控制流图中的相应节点;算子时空图生成模块,用于根据数据控制流图中的各节点所进行的功能处理从预先建 立的算子单元库中取出对应功能的至少一个算子单元,将数据控制流图转换成由算子单元 组成的算子时空图;时序约束模块,用于根据用户规格需求和目标集成电路工艺的要求确定出总时序约 束,对算子时空图中的每个算子单元标注时间,对算子时空图的每个层级进行时序约束;时空图压缩模块,用于根据时间标注对时空图进行空间上的聚类压缩,并使之总体算 法执行时间最接近于总时序约束;下层硬件映射模块,根据聚类压缩后的时空图生成集成电路下层硬件逻辑描述。
3.数据控制流生成方法,其特征在于包括程序分析步骤,用于读取描述集成电路算法的计算机语言程序,根据该种计算机语言 的规则从所述计算机语言程序中识别出被映射的执行对象和参数对象,所述执行对象包括 运算指令和/或控制指令,所述参数对象包括输入数据、输出数据和中间数据中的至少一 种;数据控制流图生成步骤,用于将识别出的执行对象和参数对象映射成描述集成电路算 法的数据控制流图中的相应节点。
4.如权利要求3所述的方法,其特征在于,在所述数据控制流图生成步骤中,将所述运 算指令映射为处理框图,将所述控制指令映射为用于标识状态、状态转移条件及状态控制 信号的控制流,将所述参数对象映射为数据流上的存储节点。
5.如权利要求3或4所述的方法,其特征在于,所述程序分析步骤包括根据该种计算 机语言的规则从所述计算机语言程序中查找出函数,对所述函数的输入输出和函数内的运 算进行解析,识别出执行对象和参数对象,在解析过程中,如果当前被解析的函数为包含下层函数的上层函数,则继续对下层函数进行解析。
6.如权利要求5所述的方法,其特征在于,所述控制指令为循环语句中的循环指令,所 述循环语句包括静态循环语句和动态循环语句,所述数据控制流图生成步骤包括当循环语句为静态循环语句时,根据循环次数将循环体展开,在循环体展开后带入参 数对象得到新的运算表达式,将所述运算表达式中的运算指令映射为处理框图,将所述运 算表达式中的参数对象映射为数据流上的存储节点;当循环语句为可变为静态循环语句的动态循环语句时,根据调用的不同场合变动态循 环语句为静态循环语句,并将其展开得到新的运算表达式,将所述运算表达式中的运算指 令映射为处理框图,将所述运算表达式中的参数对象映射为数据流上的存储节点;当循环语句为单层动态循环语句时,将循环语句的内容映射为处理框图,将循环指令 映射为状态机;当循环语句为多层动态循环语句时,分别将外层循环语句和内层循环语句的内容映射 为第一处理框图和第二处理框图,将外层循环指令映射为第一状态机,将内层循环指令映 射为第二状态机,并且所述第二处理框图和第二状态机映射在所述第一处理框图内;或分 别将外层循环语句和内层循环语句的内容映射为第一处理框图和第二处理框图,将循环指 令映射为状态机,并且所述第二处理框图映射在所述第一处理框图内,并且所述状态机的 状态数等于所述循环的循环次数加一。
7.如权利要求5所述的方法,其特征在于,所述控制指令为分支控制语句中的控制指 令,所述数据控制流图生成步骤包括将所述分支控制指令映射为多路选择器,分支控制语句的内容映射为多路选择器的输 入端处理框图,将分支控制语句的控制条件映射为所述多路选择器的控制端处理框图。
8.如权利要求7所述的方法,其特征在于,所述分支控制语句为嵌套分支控制语句,则 将上层分支控制指令映射为第一多路选择器,所述上层分支控制语句的内容映射为所述第 一多路选择器的输入端处理框图,所述上层分支控制语句的控制条件映射为所述第一多路 选择器的控制端处理框图;将下层分支控制指令映射为第二多路选择器,所述下层分支控 制语句的内容所述第二多路选择器的输入端处理框图,所述下层分支控制语句的控制条件 映射为所述第二多路选择器的控制端处理框图,并且所述第一多路选择器的输出作为所述 第二多路选择器的输入。
9.数据控制流生成装置,其特征在于包括程序分析模块,用于读取描述集成电路算法的计算机语言程序,根据该种计算机语言 的规则从所述计算机语言程序中识别出被映射的执行对象和参数对象,所述执行对象包括 运算指令和/或控制指令,所述参数对象包括输入数据、输出数据和中间数据中的至少一 种;数据控制流图生成模块,用于将识别出的执行对象和参数对象映射成描述集成电路算 法的数据控制流图中的相应节点。
10.如权利要求9所述的装置,其特征在于,所述数据控制流图生成模块包括执行对象映射模块,用于将所述执行对象中运算指令映射为处理框图,并用于将所述 执行对象中的控制指令映射为标识状态、状态转移条件及状态控制信号的控制流;参数对象映射模块,用于将参数对象映射为数据流上的存储节点。
全文摘要
本发明公开了一种集成电路下层硬件映射方法及装置,通过对描述集成电路算方法的计算机语言程序进行分析,并将其映射为描述集成电路算法的数据控制流图,再转换为相应的算子时空图,并对数据控制流图进行时序约束,从而根据时序标注对算子时空图进行聚类压缩,再生成集成电路下层硬件电路逻辑描述,从而创造了一种从计算机语言到集成电路下层硬件电路逻辑描述的映射工具,标准化地实现了集成电路从C或MATLAB等语言生成下层硬件的过程,实现起来方便快捷。本发明公开的数据控制流生成方法及装置通过对计算机语言程序分析得到其相应的数据相关性、数据可并行性和相应控制信息等,从而生成相应的数据控制流图,帮助硬件工程师进行硬件设计。
文档编号G06F17/50GK102054109SQ20101062244
公开日2011年5月11日 申请日期2010年12月31日 优先权日2010年12月31日
发明者周生明, 孙亚春, 安辉耀, 张兴, 王新安, 王腾, 胡子一, 谢峥, 赵秋奇, 马芝 申请人:北京大学深圳研究生院