CN101771408A - 一种fpga硬件构件的生成方法及装置 - Google Patents

一种fpga硬件构件的生成方法及装置 Download PDF

Info

Publication number
CN101771408A
CN101771408A CN201010002017A CN201010002017A CN101771408A CN 101771408 A CN101771408 A CN 101771408A CN 201010002017 A CN201010002017 A CN 201010002017A CN 201010002017 A CN201010002017 A CN 201010002017A CN 101771408 A CN101771408 A CN 101771408A
Authority
CN
China
Prior art keywords
hardware component
net table
fpga
logical block
hardware
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201010002017A
Other languages
English (en)
Other versions
CN101771408B (zh
Inventor
兰巨龙
李鹏
汪斌强
黄万伟
王婷
邬钧霆
王保进
于婧
李印海
曲剑
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
PLA Information Engineering University
Original Assignee
PLA Information Engineering University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by PLA Information Engineering University filed Critical PLA Information Engineering University
Priority to CN2010100020172A priority Critical patent/CN101771408B/zh
Publication of CN101771408A publication Critical patent/CN101771408A/zh
Application granted granted Critical
Publication of CN101771408B publication Critical patent/CN101771408B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种FPGA硬件构件的生成方法,该方法包括:获取对应FPGA硬件构件的元构件;对所述元构件进行预处理,生成针对所述元构件的逻辑块网表;利用所述逻辑块网表进行硬件构件布局,生成硬件构件网表;根据所述硬件构件网表进行布线;生成可下载到FPGA的硬件构件配置信息文件。本发明还公开了一种FPGA硬件构件的生成装置。通过本发明,能够加快整个FPGA硬件构件的开发进程。

Description

一种FPGA硬件构件的生成方法及装置
技术领域
本发明涉及计算机网络技术领域,更具体地说,涉及一种FPGA硬件构件的生成方法及装置。
背景技术
随着IP(Intemet Protocol,网络之间互连的协议)网络的蓬勃发展、新的应用不断涌现,用户对网络带宽的要求也越来越高。运营商采用OC-192(10Gbps)接口的光纤传输大大提高了光传输网络的容量,而路由器作为网络的主要节点设备,其处理速度就成为网络通信的主要瓶颈之一。
在核心路由器设计中,转发引擎往往成为限制路由器性能提高的瓶颈,这不仅是因为其功能的复杂性,更重要的是因为数据包的可用时间单元(ATU,available time unit)不断地减少。例如:网络接口速率为10Gbp时,对40字节IP包而言,IP包的ATU仅为32ns,而当速率为40Gbps时,ATU仅为8ns。ATU指的是路由器处理单个任务的最大允许时间,在进行各种任务的处理时,要求每一任务必须在ATU时间内完成,否则将导致数据包阻塞和丢弃。要在这么短的时间里完成复杂的IP报文处理,必须采用流水线设计。考虑到FPGA(Field Programmable Gate Array,现场可编程阵列)不仅有可编程能力,而且具有较高的灵活性,便于实现多业务支持。同时,由于其可编程性是通过硬件实现的,因此可以提供较高的处理速度,所以核心路由器一般选择了FPGA作为转发引擎的核心器件。
传统的FPGA电路设计需要经过如图1所示的处理流程。其中,逻辑综合把描述FPGA功能的硬件描述语言翻译成最基本的与或非门的连接关系(网表),并根据要求(约束条件)优化生成门级网表。
映射的主要作用是将门级网表映射到具体型号FPGA内部的器件上(例如查找表(LUT)、触发器(FF)等),生成基本元件级网表。
装箱的目标就是把LUT和FF等电路功能元件进行组合,尽可能地放到具体型号FPGA内部的逻辑块中(逻辑块由若干LUT、FF组成),生成逻辑块网表。
布局布线根据用户约束和物理约束,对逻辑块进行实际的布局,并根据设计连接,对布局后的模块进行布线。最后生成可直接下载到FPGA中的配置信息文件。
传统对FPGA上的硬件构件开发时,将用户编写的针对整个硬件构件的硬件描述语言统一进行逻辑综合、映射、装箱和布局布线处理。用户开发每个构件时都要将针对每个构件的硬件描述语言统一进行FPGA电路设计流程处理。
由于专业领域的差异,目前市场上各设备制造商针对不同的网络环境(如电信网、互联网或广电网)设计不同的网络设备。而基于技术垄断和商业利益的考虑,即使对于同一网络环境的设备制造商来说,其设备的内部接口一般也是不公开的。各厂家生产的网络设备对于用户和其他厂商来说是封闭的,没有开放的操作接口。除了生产厂家外,用户和其他厂家均无法了解该网络设备的底层构成如硬件构件的具体情况。用户无法对设备进行修改、扩展或升级,这种工作只能由原厂家才能完成。
上述现象使得用户无法根据设备工作的具体网络环境和功能需求对设备底层的硬件构件进行修改,从而导致在不同的网络环境下需要配备不同的设备。对于设备中的可重构硬件体来说,其无法通过下载不同的硬件构件来适应不同的网络环境或同一网络环境下的不同业务应用,带来资源的浪费,限制了硬件体的可重构应用范围。
为了避免上述情形的出现,现有技术中提出一种基于硬件元构件的硬件构件开发装置,通过该装置用户可以有效开发出适应不同网络环境、不同业务应用的硬件构件,充分利用网络设备底层可重构硬件体资源,降低网络设备的成本,增强其灵活性和扩展性。该装置分为三层,分别为统一操作层、个体操作层和硬件抽象函数适配层,如图2所示。
统一操作层包含所有用户都可调用的开放的统一操作接口,该接口提供统一的控制信息协议标准、数据交换承载等标准。用户开发构件的符合上述标准的指令通过开放的统一操作接口到达硬件抽象函数适配层。该标准指令携带目的构件的位置信息、网络环境信息和功能信息。
个体操作层包含驱动函数存储单元和硬件元构件库。驱动函数存储单元用于存储对应于各种可重构硬件体类型的驱动函数。硬件元构件库包含用户可以调用的与网络环境相对应的硬件元构件。
硬件抽象函数适配层包含抽象适配函数存储单元、第一执行单元和第二执行单元,向下屏蔽设备底层不同可重构硬件体操作接口的差异,向上连接开放的统一操作接口。第一执行单元:根据标准指令中的位置信息确定抽象适配函数存储单元中相应的抽象适配函数,利用该抽象适配函数调用个体操作层中对应的驱动函数;根据标准指令中的网络环境信息在个体操作层中对应的硬件元构件库中确定和标准指令中的功能信息相应的硬件元构件,利用驱动函数调用这些硬件元构件,生成可下载到可重构硬件体的硬件构件。第二执行单元:当个体操作层中硬件元构件库中没有与标准指令中功能信息相应的硬件元构件时,接收用户根据功能信息并利用驱动函数编写的硬件编程程序,生成硬件元构件并存储于所述硬件元构件库中,已备后续使用。
该硬件构件生成装置向外提供规范开放的统一操作接口,屏蔽了设备底层不同可重构硬件体操作接口的差异性。用户通过该装置开发构件时,不必考虑设备底层可重构硬件体的不同操作接口,只需向该装置开放的统一操作接口发送标准指令,从而大幅度减轻了开发硬件构件的难度。
然而,描述硬件构件的硬件描述语言映射到硬件电路要经过逻辑综合、映射、装箱和布局布线阶段的处理,传统方案不考虑元构件的组成而将整个硬件构件设计进行统一处理。而可重构设备要经常以元构件为基本单位进行硬件构件开发,不考虑元构件的组成而将整个硬件构件设计进行统一处理效率低下。
发明内容
有鉴于此,本发明实施例提供一种FPGA硬件构件的生成方法及装置,以便加快整个FPGA硬件构件的开发进程。
本发明实施例提供一种FPGA硬件构件的生成方法,所述方法包括:
获取对应FPGA硬件构件的元构件;
对所述元构件进行预处理,生成针对所述元构件的逻辑块网表;
利用所述逻辑块网表进行硬件构件布局,生成硬件构件网表;
根据所述硬件构件网表进行布线;
生成可下载到FPGA的硬件构件配置信息文件。
优选的,所述对所述元构件进行预处理包括:
生成针对所述元构件的硬件描述语言;
对所述元构件对应的硬件描述语言进行逻辑综合处理,生成对应所述元构件的门级网表;
对所述门级网表进行映射处理,生成对应所述元构件的基本元件级网表;
对所述基本元件级网表进行装箱处理,生成对应所述元构件的逻辑块网表。
优选的,所述利用所述逻辑块网表进行硬件构件布局包括:
根据所述元构件的流水线处理模式,将对应所述元构件的逻辑块布局到相应元构件的初始位置;
采用模拟退火算法对布局到相应元构件的初始位置的逻辑块进行二次布局。
优选的,所述方法还包括:
建立元构件库,以存储对应所述元构件的逻辑块网表。
优选的,当所述硬件构件分别对应不同型号的FPGA时,所述建立元构件库具体为:建立针对所述不同型号的FPGA的元构件分库,以存储相应FPGA的元构件的逻辑块网表。
相应地,本发明还提供了一种FPGA硬件构件的生成装置,所述装置包括:
元构件获取模块,用于获取对应FPGA硬件构件的元构件;
逻辑块网表模块,用于对所述元构件进行预处理,生成针对所述元构件的逻辑块网表;
硬件构件网表模块,用于利用所述逻辑块网表进行硬件构件布局,生成硬件构件网表;
布线模块,用于根据所述硬件构件网表进行布线;
配置信息文件模块,用于生成可下载到FPGA的硬件构件配置信息文件。
优选的,所述逻辑块网表模块具体包括:
硬件描述语言子模块,用于生成针对所述元构件的硬件描述语言;
门级网表子模块,用于对所述元构件对应的硬件描述语言进行逻辑综合处理,生成对应所述元构件的门级网表;
基本元件级网表子模块,用于对所述门级网表进行映射处理,生成对应所述元构件的基本元件级网表;
逻辑块网表子模块,用于对所述基本元件级网表进行装箱处理,生成对应所述元构件的逻辑块网表。
优选的,所述硬件构件网表模块具体包括:
初始布局子模块,用于根据所述元构件的流水线处理模式,将对应所述元构件的逻辑块布局到相应元构件的初始位置;
二次布局子模块,用于采用模拟退火算法对布局到相应元构件的初始位置的逻辑块进行二次布局;
硬件构件网表生成子模块,用于根据所述二次布局的布局结果,生成硬件构件网表。
优选的,所述装置还包括:
元构件库建立模块,用于建立元构件库,以存储对应所述元构件的逻辑块网表。
优选的,当所述硬件构件分别对应不同型号的FPGA时,所述元构件库建立模块还用于:建立针对所述不同型号的FPGA的元构件分库,以存储相应FPGA的元构件的逻辑块网表。
同现有技术相比,本发明提供的技术方案开发硬件构件时直接调用的是元构件的逻辑块网表,通过对该逻辑块网表进行布局布线阶段的处理,最终生成可下载到FPGA的硬件构件配置信息文件,从而能够省略FPGA逻辑综合、映射、装箱阶段,加快整个硬件构件的开发进程。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中FPGA电路设计流程示意图;
图2为现有技术中一种基于硬件元构件的硬件构件开发装置结构示意图;
图3为本发明实施例提供的一种FPGA硬件构件的生成方法步骤流程示意图;
图4为本发明实施例提供的一种对所述元构件进行预处理的步骤示意图;
图5为本发明实施例提供的一种经过预处理之后的硬件构件开发步骤流程示意图;
图6为本发明实施例提供的对可重构路由器中转发模块FPGA的硬件构件的布局示意图;
图7为本发明实施例提供的一种FPGA硬件构件的生成装置结构示意图;
图8为图7中逻辑块网表模块的结构示意图;
图9为图7中硬件构件网表模块的结构示意图;
图10为本发明实施例提供的另一种FPGA硬件构件的生成装置结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面首先对本文出现的技术名词或术语进行解释,以方便本领域技术人员对本文技术方案的理解。
硬件元构件:指示进行一种或几种基本功能的硬件编程程序,例如查表程序。在FPGA中,硬件元构件有如下几种状态:用户设计的描述元构件功能的硬件描述语言、经过FPGA开发工具各阶段(逻辑综合、映射、装箱)处理后的各级网表(门级网表、基本元件级网表、逻辑块网表)。
硬件构件:针对整个FPGA的硬件编程程序,可由硬件元构件组成。硬件构件有如下几种状态:用户设计的描述整个硬件构件功能的硬件描述语言、经过FPGA开发工具各阶段(逻辑综合、映射、装箱)处理后的各级网表(门级网表、基本元件级网表、逻辑块级网表)以及经过布局布线阶段处理后生成的可下载到FPGA的硬件构件配置信息文件。
现有技术中,描述FPGA硬件构件的硬件描述语言映射到硬件电路要经过逻辑综合、映射、装箱、布局布线阶段的处理,最终生成可下载到FPGA的配置信息文件。一般传统的流程是将描述硬件构件的整个硬件描述语言统一进行以上处理步骤,不考虑元构件的组成。这样将导致生成硬件构件时只能在硬件构件对应的硬件描述语言生成阶段直接调用元构件的硬件描述语言来加速硬件构件对应的硬件描述语言生成进度,后续的FPGA逻辑综合、映射、装箱、布局布线阶段同原有的开发方式,没有利用元构件的特性来加速开发进程;除此之外,硬件元构件是硬件构件开发时基本的粒度单元,考虑到网络节点设备一般采用流水线的方式来满足高速报文的处理,硬件构件内部的元构件之间往往也采用流水线的连接方式,各个元构件功能固定、相对独立,可考虑单独进行FPGA逻辑综合、映射、装箱后再直接调用,这样硬件构件开发时直接调用的是元构件的逻辑块网表,可省略FPGA逻辑综合、映射、装箱阶段处理,加快整个硬件构件的开发进程。
由此,本发明提供一种FPGA硬件构件的生成方法,参照图3所示,首先对该方法的如下流程进行简单介绍:
步骤301、获取对应FPGA硬件构件的元构件;
步骤302、对所述元构件进行预处理,生成针对所述元构件的逻辑块网表;
步骤303、利用所述逻辑块网表进行硬件构件布局,生成硬件构件网表;
步骤304、根据所述硬件构件网表进行布线;
步骤305、生成可下载到FPGA的硬件构件配置信息文件。
网络节点设备一般采用流水线的方式来满足高速报文的处理,硬件构件内部的元构件之间往往也采用流水线的连接方式。此处的流水线技术指的是首先将数据处理分成时长尽量相等的几个部分,而且部分与部分之间的数据流是单向传递,然后通过在每相邻两个部分之间增加数据缓冲,形成一系列流水级。在前一个数据单元流过一个流水级而进入下一个流水线进行操作的同时,下一个数据单元可以同时进入当前流水线级别进行处理,数据以同步平移的方式沿流水线方向流动,于是流水线的各个级别完全并行的操作。在未使用流水线时,一个数据单元的输入需等待上一个数据单元完全处理完,而使用流水线之后,一个数据单元的输入只需其上一数据单元将一个流水级处理完。在理想情况下,流水线级数划分成多少,系统吞吐率就能增加多少倍。与并行结构相比,流水结构中可以允许数据依赖关系,但只允许顺着流水线的单方向依赖关系。同样是提高多倍的吞吐率,流水线的提高倍数受到电路逻辑的限制。因为在流水线中,系统吞吐率是由最长的流水级决定,但需要注意的是,划分流水线的级别增大到一定量以后,程序员就很难保证各流水级时延均匀分布,从而影响吞吐率的提高。
本发明中,将硬件元构件作为硬件构件开发时基本的粒度单元。考虑到网络节点设备一般采用流水线的方式来满足高速报文的处理,硬件构件内部的元构件之间往往也采用流水线的连接方式,各个元构件功能固定、相对独立。因此,可考虑单独进行FPGA逻辑综合、映射、装箱后再直接调用,这样硬件构件开发时直接调用的是元构件的逻辑块网表,根据元构件的逻辑块级网表来生成针对整个硬件构件的逻辑块网表,然后对该逻辑块网表进行布局布线阶段的处理最终生成可下载到FPGA的硬件构件配置信息文件可省略FPGA逻辑综合、映射、装箱阶段处理,加快整个硬件构件的开发进程。
为了便于对本发明进一步的理解,下面结合本发明的具体实施方式对本发明进行详细描述。
在本发明的技术方案的实现过程中,如图4所示,对所述元构件进行预处理的过程可以包括以下步骤:
步骤401、生成针对所述元构件的硬件描述语言;
通常,使用VHDL语言或者Verilog语言对各种元构件的功能进行描述;
步骤402、对所述元构件对应的硬件描述语言进行逻辑综合处理,生成对应所述元构件的门级网表;
该步骤中,逻辑综合处理把描述FPGA功能的硬件描述语言翻译成最基本的与或非门的连接关系,即网表,并根据具体的要求(约束条件)优化生成门级网表;
步骤403、对所述门级网表进行映射处理,生成对应所述元构件的基本元件级网表;
该步骤中,将门级网表映射到FPGA内部的器件上,例如查找表、触发器,生成基本元件级网表;
步骤404、对所述基本元件级网表进行装箱处理,生成对应所述元构件的逻辑块网表。
该步骤中,通过把LUT和FF等电路功能元件进行组合,尽可能地放到FPGA内部的逻辑块中,其中,逻辑块由若干LUT、FF组成,进而生成逻辑块网表。
在本发明的一个优选实施例技术方案中,可以建立元构件库,以存储对应所述元构件的逻辑块网表。通过建立元构件库,使得在后续硬件开发时可以直接调用逻辑块网表。
需要说明的是,不同厂家生产的FPGA的开发工具是不一样的,各个开发工具之间没有兼容性。同一厂家生产的不同型号的FPGA网表结构也是不同的,不同型号的FPGA映射过程中对应的元器件以及装箱过程中对应的逻辑块的结构一般不尽相同。除了步骤401中生成的针对各种元构件的硬件描述语言可以被所有型号的FPGA开发工具直接调用外,其他步骤生成的各种元构件网表只针对一种特定型号的FPGA。但是从可重构设备本身来讲,硬件电路板都是固定的,用户开发硬件构件所对应的FPGA是固定不变的,因此,可以认为存储在元构件库中的各种元构件的逻辑块网表是对应该FPGA的。
当假设可重构设备中有多个不同型号的FPGA对应的硬件构件需要开发时,这时需要在元构件库中分别建立针对不同型号FPGA的元构件分库,元构件分库中包含相应FPGA对应的元构件逻辑块网表。后续硬件构件开发时调用的是相应元构件分库中的元构件逻辑块网表。
在本发明的技术方案的实现过程中,如图5所示,为经过预处理之后的硬件构件开发步骤流程,该开发过程可以包括:
步骤501、分析硬件构件所需的各种元构件类型;
例如:以开发可重构路由器中转发模块FPGA的硬件构件为例,通过分析可以获知,该硬件构件应该由输入报头预处理模块、查表模块、输出报文组装模块组成;
步骤502、在元构件库中调用所需的各种元构件逻辑块级网表;
例如:同上例,在元构件库中调用报头预处理、查表、输出报文组装元构件的逻辑块网表;
步骤503、根据元构件之间的连接关系生成硬件构件对应的逻辑块网表;
例如:同上例,根据所设计的硬件构件功能将调用的报头预处理、查表、输出报文组装元构件逻辑块网表组合成统一的硬件构件逻辑块网表。
需要说明的是,如果该硬件构件中的某些功能没有对应的元构件能进行描述,则需要用户对这些功能用硬件描述语言进行描述,利用相应的FPGA开发工具生成相应的逻辑块网表,然后根据所设计的硬件构件功能与调用的元构件逻辑块网表一起组合成统一的硬件构件逻辑块网表。
步骤504、利用生成的硬件构件逻辑块级网表进行硬件构件布局;
传统硬件构件布局基于模拟退火算法,考虑组成硬件构件的元构件之间的流水线特性,采用二次布局方法能提高整个布局算法的运算速度。在本发明的一个优选实施例技术方案中,利用所述逻辑块网表进行硬件构件布局可以包括:
(a)根据所述元构件的流水线处理模式,将对应所述元构件的逻辑块布局到相应元构件的初始位置;
因为硬件元构件之间采用流水线的处理模式,初始布局时改变原有算法的任意逻辑块的初始布局,以元构件之间的流水线特性为出发点,结合输入输出元构件与可编程器件输入、输出接口的互联关系以及中间元构件与外部存储单元的互联关系,将逻辑块初始布局到各自的元构件初始位置。
例如:同上例,将硬件构件逻辑块网表中对应报头预处理、查表、输出报文组装元构件的逻辑块初始布局到各自与外部端口相连的位置。如图6所示,为对可重构路由器中转发模块FPGA的硬件构件的布局示意图。其中,报头预处理元构件对应的逻辑块初始布局到FPGA左侧靠近输入端口的位置,输出报文组装元构件对应的逻辑块初始布局到FPGA右侧靠近输出端口的位置,而查表元构件由两部分组成,分别为IPv4查表和IPv6查表,两部分查表功能为并行处理关系(这里假设可重构路由器支持IPv4/IPv6双栈协议)。IPv4查表对应的逻辑块初始布局到FPGA上侧靠近存储IPv4表项的存储设备TCAM1端口的位置。IPv6查表对应的逻辑块初始布局到FPGA下侧靠近存储IPv6表项的存储设备TCAM2端口的位置。
(b)采用模拟退火算法对布局到相应元构件的初始位置的逻辑块进行二次布局;
FPGA布局算法确定装箱后逻辑块在FPGA中的具体物理位置。最常用的布局算法为模拟退火算法。
模拟退火的基本概念为:如果一个铁棒被彻底加热后,其内部的原子就会随机运动。如果这时马上放入水中冷却,随机运动的原子就会组成微小的高能量晶体,则铁棒变得易碎且容易破裂。如果铁棒被放在空气中慢慢的冷却,原子就会慢慢组合成较大的低能量晶体,这时铁棒则变的有张力,不易破裂。逻辑块在FPGA中的布局过程就模拟该退火过程。首先,逻辑块在FPGA中反复随机转换位置就类似原子在铁棒中的运动。其次,决定布局质量的代价函数类似原子的能量状态。最常用的代价函数为逻辑块之间的曼哈顿距离。最后,每次循环布局过程类似不同的温度,循环到最后温度也就降低到最低。
通过基于硬件元构件二次布局方法不仅能提高整个布局质量而且能够减少布局算法的计算量从而加快整个布局速度。
步骤505、利用布局后的硬件构件网表进行布线;
考虑到元构件间的流水线特性,采用二级布线方案进行布线:
(c)由于流水线设计,可以将元构件之间的路径设为关键路径,在布线时应当首先保证这些关键路径的优先布线寻路;
例如:同上例,对布局后的报头预处理、查表、输出报文组装元构件之间的逻辑块连线优先布线。
(d)然后进行各元构件内部的布线寻路;
例如:同上例,对布局后的报头预处理、查表、输出报文组装元构件内部的逻辑块进行布线。
步骤506、生成可下载到FPGA的硬件构件配置信息文件。
例如:同上例,最终生成可下载到可重构路由器中转发模块FPGA中的硬件构件配置信息文件。
可见,本发明通过将元构件提前进行预处理,对各种元构件的硬件描述语言经过逻辑综合、映射、装箱处理后,生成各元构件的逻辑块网表;各元构件对应的逻辑块级网表存储在元构件库中,以备后续硬件构件开发时直接调用;硬件构件开发时,在分析硬件构件所需的各种元构件类型后,从元构件库中调用所需的各种元构件逻辑块级网表,然后根据元构件之间的连接关系生成硬件构件对应的逻辑块网表;随后对该硬件构件对应的逻辑块网表进行布局布线处理,布局时考虑元构件和硬件物理资源位置之间的关系,将各元构件对应的逻辑块网表放置在相应物理资源上来加速布局的进程并保证布局的质量;最后生成可下载到FPGA的硬件构件配置信息文件。
由于网络节点设备一般采用流水线的方式来满足高速报文的处理,硬件构件内部的元构件之间往往也采用流水线的连接方式,各个元构件功能固定、相对独立。本发明利用上述特点,对各元构件的硬件描述语言经逻辑综合、映射、装箱后再直接调用,这样硬件构件开发时直接调用的是元构件的逻辑块网表,可省略FPGA逻辑综合、映射、装箱阶段,加快整个硬件构件的开发进程。
相应上述方法实施例,本发明还提供了一种FPGA硬件构件的生成装置,如图7所示,所述装置具体包括:
元构件获取模块701,用于获取对应FPGA硬件构件的元构件;
逻辑块网表模块702,用于对所述元构件进行预处理,生成针对所述元构件的逻辑块网表;
硬件构件网表模块703,用于利用所述逻辑块网表进行硬件构件布局,生成硬件构件网表;
布线模块704,用于根据所述硬件构件网表进行布线;
配置信息文件模块705,用于生成可下载到FPGA的硬件构件配置信息文件。
在本发明的一个优选实施例中,如图8所示,所述逻辑块网表模块702具体包括:
硬件描述语言子模块7021,用于生成针对所述元构件的硬件描述语言;
门级网表子模块7022,用于对所述元构件对应的硬件描述语言进行逻辑综合处理,生成对应所述元构件的门级网表;
基本元件级网表子模块7023,用于对所述门级网表进行映射处理,生成对应所述元构件的基本元件级网表;
逻辑块网表子模块7024,用于对所述基本元件级网表进行装箱处理,生成对应所述元构件的逻辑块网表。
此外,优选的,如图9所示,所述硬件构件网表模块703具体包括:
初始布局子模块7031,用于根据所述元构件的流水线处理模式,将对应所述元构件的逻辑块布局到相应元构件的初始位置;
二次布局子模块7032,用于采用模拟退火算法对布局到相应元构件的初始位置的逻辑块进行二次布局;
硬件构件网表生成子模块7033,用于根据所述二次布局的布局结果,生成硬件构件网表。
在本发明的另一个优选实施例中,如图10所示,所述装置还包括:
元构件库建立模块706,用于建立元构件库,以存储对应所述元构件的逻辑块网表。
需要说明的是,当所述硬件构件分别对应不同型号的FPGA时,所述元构件库建立模块还用于:建立针对所述不同型号的FPGA的元构件分库,以存储相应FPGA的元构件的逻辑块网表。
对于方法实施例而言,由于其基本相应于装置实施例,所以描述得比较简单,相关之处参见装置实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明实施例的精神或范围的情况下,在其它实施例中实现。因此,本发明实施例将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种现场可编程阵列FPGA硬件构件的生成方法,其特征在于,所述方法包括:
获取对应FPGA硬件构件的元构件;
对所述元构件进行预处理,生成针对所述元构件的逻辑块网表;
利用所述逻辑块网表进行硬件构件布局,生成硬件构件网表;
根据所述硬件构件网表进行布线;
生成可下载到FPGA的硬件构件配置信息文件。
2.根据权利要求1所述的FPGA硬件构件的生成方法,其特征在于,所述对所述元构件进行预处理包括:
生成针对所述元构件的硬件描述语言;
对所述元构件对应的硬件描述语言进行逻辑综合处理,生成对应所述元构件的门级网表;
对所述门级网表进行映射处理,生成对应所述元构件的基本元件级网表;
对所述基本元件级网表进行装箱处理,生成对应所述元构件的逻辑块网表。
3.根据权利要求1所述的FPGA硬件构件的生成方法,其特征在于,所述利用所述逻辑块网表进行硬件构件布局包括:
根据所述元构件的流水线处理模式,将对应所述元构件的逻辑块布局到相应元构件的初始位置;
采用模拟退火算法对布局到相应元构件的初始位置的逻辑块进行二次布局。
4.根据权利要求1-3中任一项所述的FPGA硬件构件的生成方法,其特征在于,所述方法还包括:
建立元构件库,以存储对应所述元构件的逻辑块网表。
5.根据权利要求4所述的FPGA硬件构件的生成方法,其特征在于,当所述硬件构件分别对应不同型号的FPGA时,所述建立元构件库具体为:
建立针对所述不同型号的FPGA的元构件分库,以存储相应FPGA的元构件的逻辑块网表。
6.一种FPGA硬件构件的生成装置,其特征在于,所述装置包括:
元构件获取模块,用于获取对应FPGA硬件构件的元构件;
逻辑块网表模块,用于对所述元构件进行预处理,生成针对所述元构件的逻辑块网表;
硬件构件网表模块,用于利用所述逻辑块网表进行硬件构件布局,生成硬件构件网表;
布线模块,用于根据所述硬件构件网表进行布线;
配置信息文件模块,用于生成可下载到FPGA的硬件构件配置信息文件。
7.根据权利要求6所述的FPGA硬件构件的生成装置,其特征在于,所述逻辑块网表模块具体包括:
硬件描述语言子模块,用于生成针对所述元构件的硬件描述语言;
门级网表子模块,用于对所述元构件对应的硬件描述语言进行逻辑综合处理,生成对应所述元构件的门级网表;
基本元件级网表子模块,用于对所述门级网表进行映射处理,生成对应所述元构件的基本元件级网表;
逻辑块网表子模块,用于对所述基本元件级网表进行装箱处理,生成对应所述元构件的逻辑块网表。
8.根据权利要求6所述的FPGA硬件构件的生成装置,其特征在于,所述硬件构件网表模块具体包括:
初始布局子模块,用于根据所述元构件的流水线处理模式,将对应所述元构件的逻辑块布局到相应元构件的初始位置;
二次布局子模块,用于采用模拟退火算法对布局到相应元构件的初始位置的逻辑块进行二次布局;
硬件构件网表生成子模块,用于根据所述二次布局的布局结果,生成硬件构件网表。
9.根据权利要求6-8中任一项所述的FPGA硬件构件的生成装置,其特征在于,所述装置还包括:
元构件库建立模块,用于建立元构件库,以存储对应所述元构件的逻辑块网表。
10.根据权利要求9所述的FPGA硬件构件的生成装置,其特征在于,当所述硬件构件分别对应不同型号的FPGA时,所述元构件库建立模块还用于:建立针对所述不同型号的FPGA的元构件分库,以存储相应FPGA的元构件的逻辑块网表。
CN2010100020172A 2010-01-05 2010-01-05 一种fpga硬件构件的生成方法及装置 Expired - Fee Related CN101771408B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2010100020172A CN101771408B (zh) 2010-01-05 2010-01-05 一种fpga硬件构件的生成方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2010100020172A CN101771408B (zh) 2010-01-05 2010-01-05 一种fpga硬件构件的生成方法及装置

Publications (2)

Publication Number Publication Date
CN101771408A true CN101771408A (zh) 2010-07-07
CN101771408B CN101771408B (zh) 2012-05-02

Family

ID=42504062

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010100020172A Expired - Fee Related CN101771408B (zh) 2010-01-05 2010-01-05 一种fpga硬件构件的生成方法及装置

Country Status (1)

Country Link
CN (1) CN101771408B (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102012856A (zh) * 2010-11-30 2011-04-13 中国人民解放军信息工程大学 自动生成硬件构件仿真工程的方法和装置
CN102156789A (zh) * 2011-04-27 2011-08-17 迈普通信技术股份有限公司 Fpga约束文件自动生成系统及方法
CN103366029A (zh) * 2012-03-31 2013-10-23 中国科学院微电子研究所 一种现场可编程门阵列芯片布局方法
CN103366028A (zh) * 2012-03-31 2013-10-23 中国科学院微电子研究所 一种现场可编程门阵列芯片布局方法
CN104125146A (zh) * 2014-08-07 2014-10-29 中国人民解放军信息工程大学 一种业务处理方法及装置
CN104348479A (zh) * 2013-07-31 2015-02-11 京微雅格(北京)科技有限公司 现场可编程逻辑门阵列芯片布局优化方法
CN106156402A (zh) * 2016-06-15 2016-11-23 深圳市紫光同创电子有限公司 Fpga逻辑块阵列的版图布局方法及版图布局
CN106411316A (zh) * 2016-09-06 2017-02-15 北京深维科技有限公司 一种查找表工艺映射方法
CN109543217A (zh) * 2018-10-16 2019-03-29 成都华微电子科技有限公司 串行等效的fpga并行布局方法
CN112379868A (zh) * 2020-11-12 2021-02-19 无锡沐创集成电路设计有限公司 基于可重构芯片的网络数据包处理的编程方法
CN112866307A (zh) * 2019-11-12 2021-05-28 广东高云半导体科技股份有限公司 通过无线通信块提供fpga无线编程下载的方法和系统
CN113408223A (zh) * 2021-05-19 2021-09-17 无锡中微亿芯有限公司 一种基于智能分析的芯片设计方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6678646B1 (en) * 1999-12-14 2004-01-13 Atmel Corporation Method for implementing a physical design for a dynamically reconfigurable logic circuit
WO2003088095A1 (fr) * 2002-04-17 2003-10-23 Fujitsu Limited Procede de mise au point de circuits integres, support de stockage de programmes contenant un procede de mise au point de circuits integres, systeme de mise au point simultanee d'asic et de circuit logique programmable, et programme et procede de mise au point
JP4568143B2 (ja) * 2005-02-28 2010-10-27 株式会社東芝 安全系装置の検証方法およびその検証方法で検証された安全系装置
CN101441674B (zh) * 2008-12-15 2010-08-11 浙江大学 基于fpga的动态可重构系统的分片配置方法

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102012856A (zh) * 2010-11-30 2011-04-13 中国人民解放军信息工程大学 自动生成硬件构件仿真工程的方法和装置
CN102156789A (zh) * 2011-04-27 2011-08-17 迈普通信技术股份有限公司 Fpga约束文件自动生成系统及方法
CN102156789B (zh) * 2011-04-27 2013-01-02 迈普通信技术股份有限公司 Fpga约束文件自动生成系统及方法
CN103366029A (zh) * 2012-03-31 2013-10-23 中国科学院微电子研究所 一种现场可编程门阵列芯片布局方法
CN103366028A (zh) * 2012-03-31 2013-10-23 中国科学院微电子研究所 一种现场可编程门阵列芯片布局方法
CN103366028B (zh) * 2012-03-31 2016-03-16 中国科学院微电子研究所 一种现场可编程门阵列芯片布局方法
CN103366029B (zh) * 2012-03-31 2016-04-06 中国科学院微电子研究所 一种现场可编程门阵列芯片布局方法
CN104348479A (zh) * 2013-07-31 2015-02-11 京微雅格(北京)科技有限公司 现场可编程逻辑门阵列芯片布局优化方法
CN104125146B (zh) * 2014-08-07 2017-06-16 中国人民解放军信息工程大学 一种业务处理方法及装置
CN104125146A (zh) * 2014-08-07 2014-10-29 中国人民解放军信息工程大学 一种业务处理方法及装置
CN106156402A (zh) * 2016-06-15 2016-11-23 深圳市紫光同创电子有限公司 Fpga逻辑块阵列的版图布局方法及版图布局
CN106411316A (zh) * 2016-09-06 2017-02-15 北京深维科技有限公司 一种查找表工艺映射方法
CN106411316B (zh) * 2016-09-06 2019-03-05 京微齐力(北京)科技有限公司 一种查找表工艺映射方法
CN109543217A (zh) * 2018-10-16 2019-03-29 成都华微电子科技有限公司 串行等效的fpga并行布局方法
CN109543217B (zh) * 2018-10-16 2023-05-02 成都华微电子科技股份有限公司 串行等效的fpga并行布局方法
CN112866307A (zh) * 2019-11-12 2021-05-28 广东高云半导体科技股份有限公司 通过无线通信块提供fpga无线编程下载的方法和系统
CN112866307B (zh) * 2019-11-12 2023-05-30 广东高云半导体科技股份有限公司 通过无线通信块提供fpga无线编程下载的方法和系统
CN112379868A (zh) * 2020-11-12 2021-02-19 无锡沐创集成电路设计有限公司 基于可重构芯片的网络数据包处理的编程方法
CN112379868B (zh) * 2020-11-12 2021-06-18 无锡沐创集成电路设计有限公司 基于可重构芯片的网络数据包处理的编程方法
CN113408223A (zh) * 2021-05-19 2021-09-17 无锡中微亿芯有限公司 一种基于智能分析的芯片设计方法
CN113408223B (zh) * 2021-05-19 2022-08-30 无锡中微亿芯有限公司 一种基于智能分析的芯片设计方法

Also Published As

Publication number Publication date
CN101771408B (zh) 2012-05-02

Similar Documents

Publication Publication Date Title
CN101771408B (zh) 一种fpga硬件构件的生成方法及装置
CN107689931A (zh) 一种基于国产fpga的实现以太网交换功能系统及方法
CN105068818B (zh) 生成渠道包的方法、装置与批量生成渠道包的方法、系统
US8065130B1 (en) Method for message processing on a programmable logic device
Yazdinejad et al. P4 to SDNet: Automatic generation of an efficient protocol-independent packet parser on reconfigurable hardware
CN102033987A (zh) 一种fpga元构件布局区域分配方法
CN104050146B (zh) 一种微控制单元mcu芯片
CN106559339B (zh) 一种报文处理方法及装置
US11023377B2 (en) Application mapping on hardened network-on-chip (NoC) of field-programmable gate array (FPGA)
CN103873291A (zh) 用于配置软件定义的网络的方法和设备
Vipin et al. Mapping adaptive hardware systems with partial reconfiguration using CoPR for Zynq
Bhat et al. Routable technology mapping for LUT FPGAs
Rygielski et al. Modeling and prediction of software-defined networks performance using queueing petri nets
CN107168744B (zh) 用于数字信号处理器芯片文件加载的系统及方法
US7331002B2 (en) Navigating breakpoints in a program in a debugging mode
CN107529352A (zh) 用于软件定义的数据中心网络的协议独立的可编程交换机(pips)
US6751783B1 (en) System and method for optimizing an integrated circuit design
CN105791237A (zh) 协议转化方法和装置
CN101321132A (zh) 网络处理器的接口板自适应方法和装置
CN104836688B (zh) 网络装置及其虚拟配置底层设备的方法
Mariño et al. Loopback strategy for in-vehicle network processing in automotive gateway network on chip
Khattak et al. TOSwitch: Programmable and high-throughput switch using hybrid switching chips
Karras et al. Designing protocol processing systems with Vivado high-level synthesis
Olenev et al. Co-modeling of embedded networks using systemc and SDL: From theory to practice
CN116033043A (zh) 一种协议处理方法、装置及设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120502

Termination date: 20200105

CF01 Termination of patent right due to non-payment of annual fee