CN109800534A - Fpga设计电路图生成方法、装置、计算机设备及存储介质 - Google Patents

Fpga设计电路图生成方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN109800534A
CN109800534A CN201910113973.9A CN201910113973A CN109800534A CN 109800534 A CN109800534 A CN 109800534A CN 201910113973 A CN201910113973 A CN 201910113973A CN 109800534 A CN109800534 A CN 109800534A
Authority
CN
China
Prior art keywords
initial
netlist
devices
component
initial devices
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
CN201910113973.9A
Other languages
English (en)
Other versions
CN109800534B (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.)
Guangdong High Cloud Semiconductor Technologies Ltd Co
Gowin Semiconductor Corp
Original Assignee
Guangdong High Cloud Semiconductor Technologies Ltd Co
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 Guangdong High Cloud Semiconductor Technologies Ltd Co filed Critical Guangdong High Cloud Semiconductor Technologies Ltd Co
Priority to CN201910113973.9A priority Critical patent/CN109800534B/zh
Publication of CN109800534A publication Critical patent/CN109800534A/zh
Application granted granted Critical
Publication of CN109800534B publication Critical patent/CN109800534B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

本发明公开一种FPGA设计电路图生成方法、装置、计算机设备及存储介质。该方法包括:获取用户设计网表,依据用户设计网表中的连接线遍历网表输入管脚、原始器件和网表输出管脚,获取目标二维网表;基于每一原始器件对应的器件类型、器件输入管脚和器件输出管脚,获取器件描述数据;基于器件描述数据确定标准显示区域;基于目标二维网表和标准显示区域,构建原始器件分布图;依据每一原始器件对应的连接线的数量,获取行间距和列间距;基于行间距、列间距和器件描述数据更新原始器件分布图,获取目标器件分布图;在目标器件分布图上相应位置生成对应的连接线,获取FPGA设计电路图。该方法可生成连线结构清晰、复杂度较低的设计电路图。

Description

FPGA设计电路图生成方法、装置、计算机设备及存储介质
技术领域
本发明涉及FPGA开发技术领域,尤其涉及一种FPGA设计电路图生成方法、装置、计算机设备及存储介质。
背景技术
在FPGA开发过程中,可在FPGA编程开发工具中根据用户设计的网表,自动画出并显示相应的设计电路,方便用户了解设计的网表结构,方便进行设计调试,提高设计效率,缩短设计周期。
在传统FPGA编程开发工具显示设计电路时,由于设计电路中涉及较多器件和用于实现器件之间相互连接的连接线(net),连接线的连线结构复杂,多个连接线在连线过程中会出现交错,使其设计电路结构较复杂,而连线结构的复杂性会增加软件内存占用,降低设计电路的开发效率。尤其是在大模板FPGA设计电路中,这种现象更严重,会大幅度增加点线复杂度并提高软件内存占用。
发明内容
本发明实施例提供一种FPGA设计电路图生成方法、装置、计算机设备及存储介质,以解决当前FPGA电路设计中存在的设计电路中连线结构复杂的问题。
一种FPGA设计电路图生成方法,包括:
获取用户设计网表,所述用户设计网表包括网表输入管脚、网表输出管脚、原始器件和连接线;
依据所述连接线遍历所述网表输入管脚、所述原始器件和所述网表输出管脚,获取所述用户设计网表对应的目标二维网表;
基于每一所述原始器件对应的器件类型、器件输入管脚和器件输出管脚,获取每一所述原始器件对应的器件描述数据;
基于每一所述原始器件对应的器件描述数据,确定所述原始器件对应的器件显示区域,并基于所述器件显示区域确定标准显示区域;
基于所述目标二维网表和所述原始器件对应的标准显示区域,构建原始器件分布图;
依据所述原始器件分布图中的每一所述原始器件对应的连接线的数量,获取任意相邻两行的行间距和任意相邻两列的列间距;
基于所述行间距、所述列间距和每一原始器件对应的器件描述数据,更新所述原始器件分布图,获取目标器件分布图;
依据预设的连线规则在所述目标器件分布图上相应位置生成对应的连接线,获取FPGA设计电路图。
一种FPGA设计电路图生成装置,包括:
用户设计网表获取模块,用于获取用户设计网表,所述用户设计网表包括网表输入管脚、网表输出管脚、原始器件和连接线;
目标二维网表获取模块,用于依据所述连接线遍历所述网表输入管脚、所述原始器件和所述网表输出管脚,获取所述用户设计网表对应的目标二维网表;
器件描述数据获取模块,用于基于每一所述原始器件对应的器件类型、器件输入管脚和器件输出管脚,获取每一所述原始器件对应的器件描述数据;
标准显示区域确定模块,用于基于每一所述原始器件对应的器件描述数据,确定所述原始器件对应的器件显示区域,并基于所述器件显示区域确定标准显示区域;
原始器件分布图构建模块,用于基于所述目标二维网表和所述原始器件对应的标准显示区域,构建原始器件分布图;
行列间距获取模块,用于依据所述原始器件分布图中的每一所述原始器件对应的连接线的数量,获取任意相邻两行的行间距和任意相邻两列的列间距;
目标器件分布图获取模块,用于基于所述行间距、所述列间距和每一原始器件对应的器件描述数据,更新所述原始器件分布图,获取目标器件分布图;
设计电路图获取模块,用于依据预设的连线规则在所述目标器件分布图上相应位置生成对应的连接线,获取FPGA设计电路图。
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述FPGA设计电路图生成方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述FPGA设计电路图生成方法的步骤。
上述FPGA设计电路图生成方法、装置、计算机设备及存储介质,依据用户设计网表中的连接线遍历网表输入管脚、原始器件和网表输出管脚,以生成反映网表输入管脚、原始器件和网表输出管脚相对位置关系的目标二维网表,以便基于这种相对位置关系最终生成的FPGA设计电路图中的相对位置。再根据原始器件对应的器件类型、器件输入管脚和器件输出管脚确定器件描述数据,以确定其在最终生成的FPGA设计电路图中的器件显示区域,使得FPGA设计电路图中的器件大小比例更符合实际情况。基于原始器件对应的器件显示区域确定标准显示区域,以便根据标准显示区域确定任意相邻两行的行间距和任意相邻两列的列间距,从而使得FPGA设计电路图中的行间距和列间距的距离适中,既不会因为连接线过于密集而影响后续FPGA开发的效率,也不会因为连接线过少而导致空间浪费。最后,依据预设的连线规则在目标器件分布中行间距和列间距对应的位置生成对应的连接线,以使最终形成的FPGA设计电路图结构清晰,以降低连接线的连线结构的复杂度,并有效降低内存占用。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中FPGA设计电路图生成方法的一流程图;
图2是本发明一实施例中FPGA设计电路图生成方法的另一流程图;
图3是本发明一实施例中FPGA设计电路图生成方法的另一流程图;
图4是本发明一实施例中FPGA设计电路图生成方法的另一流程图;
图5是本发明一实施例中FPGA设计电路图生成方法的另一流程图;
图6是本发明一实施例中目标器件分布图的一示意图;
图7是本发明一实施例中FPGA设计电路图生成装置的一示意图;
图8是本发明一实施例中计算机设备的一示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的FPGA设计电路图生成方法,该FPGA设计电路图生成方法应用在FPGA编辑开发系统中,用于开发设计出连线结构简单的FPGA设计电路图,以降低软件内存占用,提高FPGA设计电路图的开发效率。
在一实施例中,如图1所示,提供一种FPGA设计电路图生成方法,以该方法应用在FPGA编辑开发系统为例进行说明,包括如下步骤:
S101:获取用户设计网表,用户设计网表包括网表输入管脚、网表输出管脚、原始器件和连接线。
其中,用户设计网表是用户自主设计的网表结构。FPGA编程开发系统可根据该用户设计网表设计出连线结构简单的FPGA设计电路图,以实现便于FPGA开发的目的。
网表输入管脚是用户设计网表对外的输入管脚,可以理解为该用户设计网表中预留的与其他外部电路连接并接受该外部电路的信号输入的管脚。本实施例中,用户设计网表可以设置有至少一个网表输入管脚,用于接收外部电路通过至少一个网表输入管脚输入的信号。具体地,每一网表输入管脚对应一扇出系数(即fanout)。扇出系数(即fanout)指模块直接调用的下级模块的个数,于本实施例中,网表输入管脚的扇出系数是用于定义一个网表输入管脚通过连接线连接的元器件的数量,即能够驱动的信号数量。例如,若一网表输入管脚通过连接线连接3个原始器件,则其扇出系数为3。
网表输出管脚是用户设计网表对外的输出管脚,可以理解为该用户设计网表中预留的与其他外部电路连接并向该外部电路输出信号的管脚。本实施例中,用户设计网表可以设置有至少一个网表输出管脚,用于向外部电路通过至少一个网表输出管脚输出信号。
原始器件是用户设计网表中实现该用户设计网表功能所采用到的FPGA器件。在用户设计网表中设置至少一个原始器件,原始器件的数量越多,其所要设置的FPGA设计电路图越复杂。每一原始器件包括至少一个器件输入管脚和至少一个器件输出管脚。该器件输入管脚是指设置在原始器件上的用于接收信号输入的管脚。该器件输出管脚是指设置在原始器件上的用于向外输出信号的管脚。具体地,器件输入管脚通过连接线与网表输入管脚或者其他原始器件的器件输出管脚相连,器件输出管脚通过连接线与网表输出管脚或者其他原始器件的器件输入管脚相连,以实现信号传输。
连接线是用户设计网表中用于实现任意两个原始器件之间、原始器件与网表输入管脚之间或者原始器件与网表输出管脚之间进行信号传输的线。
S102:依据连接线遍历网表输入管脚、原始器件和网表输出管脚,获取用户设计网表对应的目标二维网表。
具体地,FPGA编辑开发系统依据用户设计网表,从网表输入管脚到原始器件再到网表输出管脚的连接线的连接结构,将用户设计网表转换成目标二维网表。在该目标二维网表是以二维表格的形式展示用户设计网表中的网表输入管脚、原始器件和网表输出管脚的网表。该目标二维网表具体是用于反映用户设计网表中所有网表输入管脚、原始器件和网表输出管脚的连接结构的网表。
表一目标二维网表
如表一所示的目标二维网表中,该目标二维网表包括网表输入管脚、原始器件和网表输出管脚等列名,分别用于存储用户设计网表中涉及的网表输入管脚(如in_0)、原始器件(如ins0)和网表输出管脚(如out_0)。需注意的是,目标二维网表中的网表输入管脚、原始器件和网表输出管脚具有唯一性,以避免在最终创建的FPGA设计电路图中显示两个同名的元器件,影响后续FPGA开发的进度。其中,in_0、in_1和in_2是对应的网表输入管脚的唯一标识。ins0、ins2……ins9是对应的原始器件的唯一标识。out_0、out_1和out_2是对应的网表输出管脚的唯一标识。
目标二维网表中除了列名之外的每一行数据代表可在一定程度上反映网表输入管脚、原始器件和网表输出管脚通过连接线进行信号连接的相关位置关系。例如,在第1行数据中,可采用连接线连接原始器件ins0、原始器件ins1、原始器件ins2和网表输出管脚out_0,原始器件ins0为连接线的源。在第2行数据中,可采用连接线连接网表输入管脚in_0、原始器件insX、原始器件ins3、原始器件insY和原始器件ins5,即信号在原始器件ins5结束;或者,在原始器件ins5之后还可连接网表输出管脚out_0,由于第1行数据中已经记录过网表输出管脚out_0,不再重复记录。其中,原始器件insX和原始器件insY是指在本行数据之前已经记录在目标二维网表中的原始器件(即下文所说的已遍历元器件),如本实施例中的原始器件ins0、ins1或ins2。表一中,每一行数据中最后一个原始器件之前的空白区域表示其初始元器件连接到已经记录在目标二维网表中的原始器件,为了避免重复,因此需使目标二维网表中相应区域留空,以达到将用户设计网表中所有元器件(包括网表输入管脚、原始器件和网表输出管脚)唯一存储在目标二维网表的目的。
S103:基于每一原始器件对应的器件类型、器件输入管脚和器件输出管脚,获取每一原始器件对应的器件描述数据。
其中,原始器件对应的器件类型包括已知类型和未知类型。该已知类型可以理解为器件信息已经记录在FPGA编辑开发系统中的器件类型。该未知类型可以理解为器件信息没有记录在FPGA编辑开发系统中的器件类型。该器件输入管脚是指设置在原始器件上的用于接收信号输入的管脚。该器件输出管脚是指设置在原始器件上的用于向外输出信号的管脚。原始器件对应的器件描述数据是指用于反映该原始器件对应的器件输入管脚和器件输出管脚的数量及位置的数据。
进一步地,步骤S103中基于每一原始器件对应的器件类型、器件输入管脚和器件输出管脚,获取每一原始器件对应的器件描述数据,具体包括:
若原始器件对应的器件类型为已知类型,则获取预先存储的管脚数据信息,将该管脚数据信息作为原始器件对应的器件描述数据。该管脚数据信息预先存储在FPGA编辑开发系统的存储设备中。该管脚数据信息包括该原始器件的器件输入管脚的数量、器件输入管脚在原始器件各管脚中的坐标点、器件输出管脚的数量和器件输出管脚在原始器件各管脚中的坐标点。
若原始器件对应的器件类型为未知类型,则依据原始器件对应的器件输入管脚的数量和器件输出管脚的数量,获取原始器件对应的器件描述数据。为了使所生成的FPGA设计电路图中连线结构更规范,可使每一原始器件的器件输入管脚设置在器件左侧,每一原始器件的器件输出管脚设置在器件右侧,根据位于器件左侧的器件输入管脚的数量和位于器件右侧的器件输出管脚的数量,依次标注器件输入管脚和器件输出管脚在原始器件各管脚中的坐标点。
S104:基于每一原始器件对应的器件描述数据,确定原始器件对应的器件显示区域,并基于器件显示区域确定标准显示区域。
在该FPGA编辑开发系统中,可将器件输入管脚和器件输出管脚分别设置在器件左侧和器件右侧,以使器件左右两侧分别负责信号输入和信号输出。器件描述数据包括器件输入管脚的数量和器件输出管脚的数量,在FPGA编辑开发系统编辑FPGA设计电路图时,需保证每一原始器件中各器件输入管脚和器件输出管脚之间的管脚间距相同。因此,每一原始器件的器件显示区域是依据器件输入管脚的数量和器件输出管脚的数量中的较大值,与预先设置的管脚间距确定。若某一原始器件的器件输入管脚的数量为S1,器件输出管脚的数量为S2,预先设置的管脚间距为L,则该原始器件的器件显示区域可以是以(Max(S1,S2)+1)*L。例如,一原始器件的器件输入管脚为3,器件输出管脚为4,若预先设置的管脚间距为L,则可确定该原始器件的器材显示区域为(4+1)*L为边长的正方形,以使原始器件的上下边缘与器件输入管脚或器件输出管脚的间距也为该管脚间距L。
原始器件对应的标准显示区域是从所有原始器件对应的器件显示区域中最大的器件显示区域。本实施例中,从所有原始器件对应的器件显示区域中选取最大的一个作为标准显示区域,以便后续基于该标准显示区域显示对应的原始器件。
S105:基于目标二维网表和原始器件对应的标准显示区域,构建原始器件分布图。
其中,原始器件分布图是用于显示用户设计网表中所有原始器件相对位置的分布图。在原始器件分布图中每一原始器件的大小由原始器件对应的标准显示区域确定。即在原始器件分布图中目标二维网表中确定的每一原始器件的相对位置关系绘制与标准显示区域大小相匹配的原始器件。如表一所示的目标二维网表中,需绘制10个原始器件,第1行显示3个原始器件,分别为ins0、ins1和ins2,第2行显示2个原始器件,分别为ins3和ins5,第2行显示2个原始器件,分别为ins4和ins6,第5行显示3个原始器件,分别为ins9、ins7和ins8。
S106:依据原始器件分布图中的每一原始器件对应的连接线的数量,获取任意相邻两行的行间距和任意相邻两列的列间距。
具体地,FPGA编辑开发系统需统计原始器件分布图中每一行原始器件对应的连接线的数量和每一列原始器件对应的连接线的数量,以便根据每一行原始器件对应的连接线的数量和每一列原始器件对应的连接线的数量,计算任意相邻两行的行间距和任意相邻两列的列间距。
本实施例中,在确定行间距和列间距之前,需预先定义连接线与连接线之间的统一间距为线间间距,假设为d_w;预先定义行列预留间距,即在每一原始器件对应的标准显示区域周围预留的间距,假设为d_s。在原始器件对应的标准显示区域的行列预留间距范围内不会存在任何连接线,用于区分相邻原始器件,保证不同连接线不重合,且连接线与原始器件本身图形不重合。
具体地,步骤S106中的依据原始器件分布图中的每一原始器件对应的连接线的数量,获取任意相邻两行的行间距和任意相邻两列的列间距,具体包括如下步骤:
S1061:统计与第i行中每一原始器件对应的器件输入管脚相连的连接线的第一数量,依据第一数量、预设线间间距和行列预留间距,确定第i行原始器件与第i+1行的行间距,其中,Dr=m1*d_w+2*d_s,Dr为行间距,m1为第一数量,d_w为预设线间间距,d_s为行列预留间距。
本实施例中,可采用与第i行每一原始器件对应的器件输入管脚相连的连接线的第一数量m1,确定第i行与第i+1行之间的行间距。以构建第1行和第2行之间的行间距为例进行说明,FPGA编辑开发系统统计与第1行中每一原始器件对应的器件输入管脚相连的连接线的第一数量m1,该第一数量m1是排除重复的连接线之后确定的数量。例如,在第1行中包括4个原始器件,若一条连接线与前面3个原始器件相连,另一条连接线与最后1个原始器件相连,则此时其第一数量为2,计算出的行间距Dr=2*d_w+2*d_s。
相应地,在确定第i行原始器件与第i+1行原始器件的行间距之后,可再确定每一条连接线相对于第i行原始器件对应的标准显示区域的下边缘的走线位置。若设某一连接线在第一数量m1个连接线中的序号为K,则第K条连接线在相邻两行原始器件中的行走线位置为Dr_K=d_s+K*d_w,其中,Dr_K为行走线位置。
S1062:统计与第j列中每一原始器件对应的器件输出管脚相连的连接线的第二数量,并统计与第j+1列中每一原始器件对应的器件输入管脚相连的连接线的第三数量,依据第二数量、第三数量、预设线间间距和行列预留间距,确定第j列原始器件与第j+1列原始器件的列间距,其中,Dc=(m2+m3)*d_w+2*d_s,Dc为列间距,m2为第二数量,m3为第三数量,d_w为预设线间间距,d_s为行列预留间距。
本实施例中,可采用与第j列中每一原始器件对应的器件输出管脚相连的连接线的第二数量m2、与第j+1列中每一原始器件对应的器件输入管脚相连的连接线的第三数量m3、预设线间间距d_w和行列预留间距d_s,确定第j列原始器件与第j+1列原始器件的列间距Dc。以构建第1列和第2列之间的列间距为例进行说明,FPGA编辑开发系统先统计与第1列中每一原始器件对应的器件输出管脚相连的连接线的第二数量m2,再统计与第2列中每一原始器件对应的器件输入管脚相连的连接线的第三数量m3,该第二数量m2和第三数量m3均是排除重复的连接线之后确定的数量。例如,在第1列中与所有原始器件的器件输出管脚相连的连接线的第二数量为3,在第2列中与所有原始器件的器件输入管脚相连的连接线的第三数量为2,则第1列与第2列原始器件之间的列间距为Dc=5*d_w+2*d_s。
相应地,在确定第j列原始器件与第j+1列原始器件的列间距之后,可再确定每一连接线相对于第j列原始器件对应的标准显示区域的右边缘的走线位置。若设某一连接线在(m2+m3)条连接线中的序号为Z,则第Z连接线在相邻两列原始器件中的列走线位置为Dc_Z=d_s+Z*d_w,其中,Dc_Z为列走线位置。
S107:基于行间距、列间距和每一原始器件对应的器件描述数据,更新原始器件分布图,获取目标器件分布图。
具体地,在获取任意相邻两行的行间距和任意相邻两列的列间距之后,FPGA编辑开发系统可基于行间距和列间距更新原始器件分布图,以调整原始器件分布图中的原始器件的行间距和列间距;并依据每一原始器件的器件描述数据所确定该原始器件的器件显示区域,调整原始器件分布图中的原始器件的显示区域大小,以使其生成的目标器件分布图与器件实际大小更匹配,从而获取目标器件分布图。可以理解地,该目标器件分布图中相邻两行或者相邻两列的原始器件预留足够但又不会过多的空间用于布线,使得最终形成的FPGA设计电路图布线清晰,降低连接线的连线结构。
S108:依据预设的连线规则在目标器件分布图上相应位置生成对应的连接线,获取FPGA设计电路图。
由于目标器件分布图已经预先给任意相邻两行原始器件预留足够的行间距,并预先给任意两列原始器件预留足够的列间距,以便在该行间距和列间距对应的位置进行走线(即生成对应的连接线),以使最终形成的FPGA设计电路图结构清晰,以降低连接线的连线结构的复杂度。
其中,预设的连线规则是指预先设置的用于进行走线的规则。预设的连线规则包括行走线规则和列走线规则。如上所述,行走线规则包括:若设某一连接线在第一数量m1个连接线中的序号为K,则第K条连接线在相邻两行原始器件中的行走线位置为Dr_K=d_s+K*d_w,其中,Dr_K为行走线位置,该行走线位置为第K条连接线相对于第i行原始器件对应的标准显示区域的下边缘的走线位置。列走线规则包括:若设某一连接线在(m2+m3)条连接线中的序号为Z,则第Z连接线在相邻两列原始器件中的列走线位置为Dc_Z=d_s+Z*d_w,其中,Dc_Z为列走线位置,该列走线位置是第Z条连接线相对于第j列原始器件对应的标准显示区域的右边缘的走线位置。因此,在确定第i行和第i+1行所有连接线之间的序号K和第j列和第j+1列之间所有连接线之间的序号Z时,即可确定各连接线在目标器件分布图中的走线位置。
本实施例中,在确定第i行和第i+1行所有连接线之间的序号K时,可以依据目标器件分布图中原始器件的分布位置确定其对应的器件输入管脚对应的连接线的先后顺序,依据该先后顺序确定所有连接线之间的序号K,例如,可将最初遍历的连接线的序号K设置为第1个或者倒数第1个。在确定第j列和第j+1列之间所有连接线之间的序号Z时,可依据第j列和第j+1列的原始器件在目标器件分布图中的位置关系,先依据第j列原始器件的上下分布位置关系,确定这些原始器件对应的器件输出管脚的连接线的顺序(如第j列最上面一个原始器件的序号Z为1,依次类推);再依据第j+1列原始器件的上下分布位置关系,确定剩余原始器件对应的器件输入管脚的连线线的顺序(如第j+1列最上面一个原始器件的序号为倒数第1个,依次类推)。这种连线规则使得最终形成的FPGA设计电路图的连接线数量较少且较清晰,从而降低连线结构的复杂度,以减少软件内存占用,提高电路设计的开发效率。
以1条连接线的行走线为例说明每一条连接线的具体走线情况。先遍历这条连接线对应的扇出信号点(即fanout点),该扇出信号点可以理解为与该连接线相连的连接元器件(如原始器件或网表输出管脚),计算该连接线的最大行数和最大列数;再依据该连接线的最大行数和最大列数进行走线。其中,依据连接线的最大行数和最大列数进行走线,具体是指在最大行数的下方到达最大列数的fanout点,其余fanout点都可以通过最大行数下方的连线进行局部连接。在图6所示的目标器件分布图中,在目标器件分布图中设置有3行原始器件,且第1行原始器件为4个,第2行原始器件为2个,第3行原始器件为1个。若一条从原始器件01开始的连接线,与该连接线相连的fanout点分别为原始器件02、原始器件07和原始器件04,根据这些fanout点确定的最大行数为3,最大列数为4,因此,需先生成一条从第3行原始器件的下方连接到第4列的原始器件的原始器件04的主连接线,以连接原始器件01和原始器件04,再从主连接线生成连接原始器件02和原始器件07的分连接线,以完成从原始器件01开始的连接线的走线。
本实施例所提供的FPGA设计电路图生成方法中,依据用户设计网表中的连接线遍历网表输入管脚、原始器件和网表输出管脚,以生成反映网表输入管脚、原始器件和网表输出管脚相对位置关系的目标二维网表,以便基于这种相对位置关系最终生成的FPGA设计电路图中的相对位置。再根据原始器件对应的器件类型、器件输入管脚和器件输出管脚确定器件描述数据,以确定其在最终生成的FPGA设计电路图中的器件显示区域,使得FPGA设计电路图中的器件大小比例更符合实际情况。基于原始器件对应的器件显示区域确定标准显示区域,以便根据标准显示区域确定任意相邻两行的行间距和任意相邻两列的列间距,从而使得FPGA设计电路图中的行间距和列间距的距离适中,既不会因为连接线过于密集而影响后续FPGA开发的效率,也不会因为连接线过少而导致空间浪费。最后,依据预设的连线规则在目标器件分布中行间距和列间距对应的位置生成对应的连接线,以使最终形成的FPGA设计电路图结构清晰,以降低连接线的连线结构的复杂度,并有效降低内存占用。
在一实施例中,如图2所示,步骤S102,即依据连接线遍历网表输入管脚、原始器件和网表输出管脚,获取用户设计网表对应的目标二维网表,具体包括如下步骤:
S201:依据原始器件的器件输入管脚和网表输入管脚,确定初始元器件。
其中,初始元器件是指需要进行深度遍历的第一个元器件。该初始元器件可以为器件输入管脚没有与其他元器件通过连接线相连的原始器件,也可以为网表输入管脚。可以理解地,FPGA编程开发系统将每一网表输入管脚默认为初始元器件。本实施例中,FPGA编程开发系统先遍历所有原始器件的器件输入管脚,判断是否存在器件输入管脚没有与其他元器件相连的原始器件,若存在,则将这一原始器件确定为初始元器件。
S202:基于所有初始元器件对应的扇出系数,确定初始元器件对应的遍历顺序。
扇出系数(即fanout)指模块直接调用的下级模块的个数。初始元器件包括网表输入管脚和器件输入管脚不与连接线连接的原始器件。则初始元器件的扇出系数包括原始器件的扇出系数和网表输入管脚的扇出系数。原始器件的扇出系数可以理解为该原始器件通过连接线连接的元器件的数量,相应地,网表输入管脚的扇出系数是用于该网表输入管脚通过连接线连接的元器件的数量。
遍历顺序是指针对所确定的初始元器件之间进行遍历的先后顺序。也即在后续基于初始元器件进行深度遍历过程中,需要先将遍历顺序在先的初始元器件遍历完成之后,再对遍历顺序在后的初始元器件进行遍历。本实施例中,可以依据所有初始元器件的扇出系数从小到大排序,以确定初始元器件的遍历顺序,即将扇出系数最小的初始元器件作为第一个遍历的初始元器件,依次类推。这种将扇出系数从小到大排序的方式确定的遍历顺序,可避免生成的FPGA设计电路图过于扁平化或者零散化,即避免FPGA设计电路图中前面的原始器件数量较多而后面的原始器件数量较少,使得最终生成的FPGA设计电路图结构分布更合理和简洁。
S203:依据初始元器件的遍历顺序,将初始元器件填充在二维网表模板中相应的填充区域,获取原始二维网表。
其中,二维网表模板是预先设置的用于创建二维网表的模板。该二维网表模板是N行M列的二维表格。该二维网表模板中第1行用于记录网表输入管脚、原始器件和网表输出管脚等列名,第2-N行对应一填充区域,每一行对应的填充区域用于记录一初始元器件的遍历结果的数据。该二维网表模板中包括1列网表输入管脚、1列网表输出管脚和(M-2)列原始器件。本实施例中,N和M的值根据用户设计网表的大小进行适应调整。
由于初始元器件是指需要进行深度遍历的第一个元器件,而二维网表模板中每一行对应的填充区域用于记录一初始元器件的遍历结果的数据。因此,可根据初始元器件的数量确定二维网表模板中N的值,即N=初始元器件的数量+1。相应地,步骤S203中,可依据初始元器件的遍历顺序,依次将每一初始元器件(具体是指该初始元器件的唯一标识)填充在二维网表模板中与其元器件类型相对应的填充区域,即可确定原始二维网表。可以理解地,该原始二维网表是二维网表模板填充到初始元器件的信息以确定行数的二维表格。
如表一中,初始元器件的遍历顺序依次是原始器件ins0、网表输入管脚in_0、网表输入管脚in_1和网表输入管脚in_2,则需将原始器件ins0填充在第1行和第1列原始器件对应的填充区域上,网表输入管脚in_0、网表输入管脚in_1和网表输入管脚in_2分别填充在第2、3和4行网表输入管脚对应的填充区域上。
S204:依据初始元器件的遍历顺序,逐一对初始元器件依据连接线进行深度遍历,将遍历结果填充在原始二维网表上,获取用户设计网表对应的目标二维网表。
具体地,FPGA编辑开发系统依据初始元器件的遍历顺序,逐一对每一初始元器件依据其连接线的连线结构进行深度遍历,依次将遍历到的原始器件或者原始器件和网表输出管脚对应的顺序作为遍历结果,填充在原始二维网表上,以获取可以反映用户设计网表中网表输入管脚、原始器件和输出管脚的相对位置关系的目标二维网表。即该目标二维网表是在原始二维网表上,记录所有初始元器件的遍历结果的二维网表。如表一中,原始器件ins0这一初始元器件依次遍历到原始器件ins1、原始器件ins2和网表输出管脚out_0,通过这一目标二维网表可以清楚地反映网表输入管脚、原始器件和网表输出管脚之间通过连接线连接的连线结构。
本实施例所提供的FPGA设计电路图生成方法中,依据原始器件的器件输入管脚和网表输入管脚,确定初始元器件,以确定每一个开始进行深度遍历的元器件。再基于所有初始元器件对应的扇出系数,确定初始元器件对应的遍历顺序,以优化后续生成的FPGA设计电路图的结构,避免过于扁平化和零散化。依据初始元器件的遍历顺序,将初始元器件填充在二维网表模板中相应的填充区域,以获取行数确定的原始二维网表,并确定原始二维网表中每一行对应的填充区域所需填充的遍历结果。逐一对初始元器件依据连接线进行深度遍历,将遍历结果填充在原始二维网表上,获取用户设计网表对应的目标二维网表,以使该目标二维网表可清楚明了地反映用户设计网表中涉及到网表输入管脚、原始器件和网表输出管脚等元器件的数量及部分连线结构,有助于后续生成结构优化的PFGA设计电路图。
在一实施例中,如图3所示,步骤S201,即依据原始器件的器件输入管脚和网表输入管脚,确定初始元器件,具体包括如下步骤:
S301:将用户设计网表中每一网表输入管脚确定为初始元器件,并逐一判断用户设计网表中每一原始器件的器件输入管脚是否与连接线相连。
S302:若原始器件的器件输入管脚不与连接线相连,则原始器件为初始元器件。
S303:若原始器件的器件输入管脚与连接线相连,则原始器件不为初始元器件。
本实施例中,由于网表输入管脚是用户设计网表对外的输入管脚,只能单向进行信号输入,因此,FPGA编程开发系统将每一网表输入管脚默认为初始元器件。由于用户设计网表中还可能存在无需通过连接线接受外部信号的原始器件,也即这一原始器件只有信号输出而没有信号输入,为了避免遍历过程中遗漏这一元器件,需将其作为初始元器件。因此,服务器逐一判断用户设计网表中每一原始器件的器件输入管脚是否与连接线相连,在原始器件的器件输入管脚不与连接线连接时,则该原始器件不与其他元器件通过连接线相连,认定该原始器件为初始元器件;反之,若原始器件的器件输入管脚与连接线连接,则认定该原始器件不为初始元器件,会在其他初始元器件进行深度遍历过程中被遍历到。
在一实施例中,由于初始元器件包括网表输入管脚和器件输入管脚不与连接线连接的原始器件这两种元器件类型,在确定遍历顺序过程中可以依据不同元器件类型进行分类处理。因此,如图4所示,即步骤S202,基于所有初始元器件对应的扇出系数,确定初始元器件对应的遍历顺序,具体包括如下步骤:
S401:对所有初始元器件进行分类,确定每一初始元器件对应的元器件类型。
S402:依据元器件类型对应的优先级,确定类型间顺序。
S403:基于同一元器件类型对应的初始元器件对应的扇出系数,确定类型内顺序。
S404:基于类型间顺序和类型内顺序,确定初始元器件对应的遍历顺序。
其中,元器件类型是指每一初始元器件所属的类型,本实施例中元器件类型包括原始器件和网表输入管脚这两种类型。类型间顺序是指不同元器件类型之间的遍历顺序,本实施例中原始器件优先于网表输入管脚。类型内顺序是指同一元器件类型对应的初始元器件的先后顺序。该类型内顺序可以依据该元器件类型下所有初始元器件的扇出系数从小到大排序,以达到优化生成的FPGA设计电路图,避免形成的FPGA设计电路图过于扁平。
基于类型间顺序和类型内顺序,确定初始元器件对应的遍历顺序,是指先依据类型间顺序确定不同元器件类型的初始元器件之间的遍历顺序,再对每一种元器件类型对应的初始元器件依据类型内顺序确定不同初始元器件之间的遍历顺序。例如,在原始器件这一元器件类型优先于网表输入管脚这一元器件类型时,先依据所有原始器件的类型内顺序进行排序,再依据所有网表输入管脚的类型内顺序进行排序,则所有排序结果确定为初始元器件对应的遍历顺序。这种遍历顺序的确定可以避免部分初始元器件在最终形成的FPGA设计电路图中零散分布或者过于扁平,从而达到优化FPGA设计电路图的目的。如表一中,初始元器件的遍历顺序依次是原始器件ins0、网表输入管脚in_0、网表输入管脚in_1和网表输入管脚in_2。
在一实施例中,由于两个初始元器件或者两个以上初始元器件在进行深度遍历过程中,可能会遍历到同一原始器件或者网表输出管脚,若每个初始元器件对应的遍历结果中均记录这一相同的原始器件或者网表输出管脚,会使最终形成的目标二维网表过于冗余,导致内存空间占用较大,因此,需要对遍历结果进行优化,以获取结构简单的目标二维网表。如图5所示,步骤S204中,逐一对初始元器件依据连接线进行深度遍历,将遍历结果填充在原始二维网表上,获取用户设计网表对应的目标二维网表,具体包括如下步骤:
S501:逐一对初始元器件依据连接线进行深度遍历,获取与初始元器件通过连接线相连的至少一个连接元器件,并记录每一连接元器件的遍历位置。
其中,连接元器件是与初始元器件通过连接线相连的元器件。该连接元器件可以是原始器件,也可以是网表输出管脚。每一连接元器件的遍历位置具体是指该连接元器件被对应的初始元器件遍历到的位置。即若第1个被遍历到的连接元器件,则其遍历位置为1,若第2个被遍历到的连接元器件,则其遍历位置为2……,依次类推,确定每一连接元器件的遍历位置。
由于初始元器件包括网表输入管脚和器件输入管脚不与连接线连接的原始器件这两种元器件类型,对于网表输入管脚这一元器件类型的初始元器件,依据其遍历到的连接元器件的顺序,确定其遍历位置从第1位开始计算;而对于原始器件这一元器件类型的初始元器件,依据其遍历到的连接元器件的顺序,将该初始元器件默认为第1位,与其对应的连接元器件的遍历位置从第2位开始计算,以使最终依据遍历位置确定的遍历结果与原始二维网表相匹配。
S502:若连接元器件不为已遍历元器件,则依据连接元器件的遍历位置,在原始二维网表中与遍历位置相对应的列的填充区域上填充连接元器件。
其中,已遍历元器件是指本次被初始元器件遍历之前已经被遍历过的元器件。一般来说,若一连接元器件在第一次被遍历到时,已经将该连接元器件存储在原始二维网表中,为避免在原始二维网表中重复记录已遍历元器件中,因此,该FPGA编程开发系统在每一初始元器件遍历到对应的连接元器件时,先判断其是否为已遍历元器件,以决定是否需要存储连接元器件到原始二维网表的相应位置。
具体地,若连接元器件不为已遍历元器件,则说明该连接元器件为第一次被遍历到的元器件,依据连接元器件的遍历位置,在原始二维网表中与遍历位置相对应的列的填充区域上填充连接元器件。如表一中第2行数据,原始器件ins1、原始器件ins2和网表输出管脚out_0均不为已遍历元器件,而原始器件ins0这一初始元器件位于原始器件的第1列,因此,原始器件ins1、原始器件ins2和网表输出管脚out_0的遍历位置分别为第2、第3和第4位,分别将原始器件ins1和原始器件ins2填充在原始器件的第2列和第3列,由于原始二维网表中给网表输入管脚预留一列,因此,可直接将out_0填充在相应的填充位置,以获取以原始器件ins0为初始元器件的遍历结果对应的数据。
S503:若连接元器件为已遍历元器件,则依据连接元器件的遍历位置,将原始二维网表中与遍历位置相对应的列的填充区域留空。
具体地,若连接元器件为已遍历元器件,则说明该连接元器件在此之前已经被遍历到并且记录在原始二维网表中,为了避免重复记录连接元器件的相关信息,依据连接元器件的遍历位置,将原始二维网表中与遍历位置相对应的列的填充区域留空。如表一中第3行数据,从网表输入管脚in_0这一初始元器件开始,若第1个遍历到的连接元器件为原始器件ins0,由于其已经记录在第2行数据,此时,可将第3行数据中第1列原始器件的填充区域留空,以便反映该初始元器件第1个遍历的连接元器件与遍历顺序在先的初始元器件遍历到的连接元器件相同。
S504:依据连接元器件中原始器件的遍历位置的最大值,确定原始二维网表的列数,获取用户设计网表对应的目标二维网表。
由于原始二维网表是基于N行M列的二维网表模板形成的,而二维网表模板中包括1列网表输入管脚、1列网表输出管脚和(M-2)列原始器件,因此,只需确定每一初始元器件遍历到的原始器件的数量的最大值即可确定原始二维网表的列数。而每一初始元器件遍历到的连接元器件包括原始器件,也包括网表输出管脚,因此,只需确定连接元器件中原始器件的遍历位置的最大值即可确定原始器件的列数,从而确定原始二维网表的列数。
本实施例所提供的FPGA设计电路图生成方法中,逐一对初始元器件依据连接线进行深度遍历,获取至少一个连接元器件和对应的遍历位置时,在连接元器件为已遍历元器件时,将原始二维网表中相应的填充区域留空,在连接元器件不为已遍历元器件时,在原始二维网表中相应的填充区域对应的填充其遍历位置,以便确定对应的目标二维网表,使得该目标二维网表可清楚地反映每一初始元器件所遍历到的连接元器件的相关信息,以便于后续生成FPGA设计电路图。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种FPGA设计电路图生成装置,该FPGA设计电路图生成装置与上述实施例中FPGA设计电路图生成方法一一对应。如图7所示,该FPGA设计电路图生成装置包括用户设计网表获取模块701、目标二维网表获取模块702、器件描述数据获取模块703、标准显示区域确定模块704、原始器件分布图构建模块705、行列间距获取模块706、目标器件分布图获取模块707和设计电路图获取模块708。各功能模块详细说明如下:
用户设计网表获取模块701,用于获取用户设计网表,用户设计网表包括网表输入管脚、网表输出管脚、原始器件和连接线。
目标二维网表获取模块702,用于依据连接线遍历网表输入管脚、原始器件和网表输出管脚,获取用户设计网表对应的目标二维网表。
器件描述数据获取模块703,用于基于每一原始器件对应的器件类型、器件输入管脚和器件输出管脚,获取每一原始器件对应的器件描述数据。
标准显示区域确定模块704,用于基于每一原始器件对应的器件描述数据,确定原始器件对应的器件显示区域,并基于器件显示区域确定标准显示区域。
原始器件分布图构建模块705,用于基于目标二维网表和原始器件对应的标准显示区域,构建原始器件分布图。
行列间距获取模块706,用于依据原始器件分布图中的每一原始器件对应的连接线的数量,获取任意相邻两行的行间距和任意相邻两列的列间距。
目标器件分布图获取模块707,用于基于行间距、列间距和每一原始器件对应的器件描述数据,更新原始器件分布图,获取目标器件分布图。
设计电路图获取模块708,用于依据预设的连线规则在目标器件分布图上相应位置生成对应的连接线,获取FPGA设计电路图。
优选地,目标二维网表获取模块702包括初始元器件确定单元、遍历顺序确定单元、原始二维网表获取单元和目标二维网表获取单元。
初始元器件确定单元,用于依据原始器件的器件输入管脚和网表输入管脚,确定初始元器件。
遍历顺序确定单元,用于基于所有初始元器件对应的扇出系数,确定初始元器件对应的遍历顺序。
原始二维网表获取单元,用于依据初始元器件的遍历顺序,将初始元器件填充在二维网表模板中相应的填充区域,获取原始二维网表。
目标二维网表获取单元,用于依据初始元器件的遍历顺序,逐一对初始元器件依据连接线进行深度遍历,将遍历结果填充在原始二维网表上,获取用户设计网表对应的目标二维网表。
优选地,初始元器件确定单元包括连线判断子单元、第一判断处理单元子和第二判断处理子单元。
连线判断子单元,用于将用户设计网表中每一网表输入管脚确定为初始元器件,并逐一判断用户设计网表中每一原始器件的器件输入管脚是否与连接线相连。
第一判断处理子单元,用于若原始器件的器件输入管脚不与连接线相连,则原始器件为初始元器件。
第二判断处理子单元,用于若原始器件的器件输入管脚与连接线相连,则原始器件不为初始元器件。
优选地,遍历顺序确定单元包括元器件类型确定子单元、类型间顺序确定子单元、类型内顺序确定子单元和遍历顺序确定子单元。
元器件类型确定子单元,用于对所有初始元器件进行分类,确定每一初始元器件对应的元器件类型。
类型间顺序确定子单元,用于依据元器件类型对应的优先级,确定类型间顺序。
类型内顺序确定子单元,用于基于同一元器件类型对应的初始元器件对应的扇出系数,确定类型内顺序。
遍历顺序确定子单元,用于基于类型间顺序和类型内顺序,确定初始元器件对应的遍历顺序。
优选地,目标二维网表获取单元包括遍历位置记录子单元、第一遍历位置处理子单元、第二遍历位置处理子单元和目标二维网表获取子单元。
遍历位置记录子单元,用于逐一对初始元器件依据连接线进行深度遍历,获取与初始元器件通过连接线相连的至少一个连接元器件,并记录每一连接元器件的遍历位置。
第一遍历位置处理子单元,用于若连接元器件不为已遍历元器件,则依据连接元器件的遍历位置,在原始二维网表中与遍历位置相对应的列的填充区域上填充连接元器件。
第二遍历位置处理子单元,用于若连接元器件为已遍历元器件,则依据连接元器件的遍历位置,将原始二维网表中与遍历位置相对应的列的填充区域留空。
目标二维网表获取子单元,用于依据连接元器件中原始器件的遍历位置的最大值,确定原始二维网表的列数,获取用户设计网表对应的目标二维网表。
优选地,器件描述数据获取模块703包括已知类型数据获取单元和未知类型数据获取单元。
已知类型数据获取单元,用于若原始器件对应的器件类型为已知类型,则获取预先存储的管脚数据信息,将该管脚数据信息作为原始器件对应的器件描述数据。
未知类型数据获取单元,用于若原始器件对应的器件类型为未知类型,则依据原始器件对应的器件输入管脚的数量和器件输出管脚的数量,获取原始器件对应的器件描述数据。
优选地,行列间距获取模块706包括行间距确定单元和列间距确定单元。
行间距确定单元,用于统计与第i行中每一原始器件对应的器件输入管脚相连的连接线的第一数量,依据第一数量、预设线间间距和行列预留间距,确定第i行原始器件与第i+1行的行间距,其中,Dr=m1*d_w+2*d_s,Dr为行间距,m1为第一数量,d_w为预设线间间距,d_s为行列预留间距。
列间距确定单元,用于统计与第j列中每一原始器件对应的器件输出管脚相连的连接线的第二数量,并统计与第j+1列中每一原始器件对应的器件输入管脚相连的连接线的第三数量,依据第二数量、第三数量、预设线间间距和行列预留间距,确定第j列原始器件与第j+1列原始器件的列间距,其中,Dc=(m2+m3)*d_w+2*d_s,Dc为列间距,m2为第二数量,m3为第三数量,d_w为预设线间间距,d_s为行列预留间距。
关于FPGA设计电路图生成装置的具体限定可以参见上文中对于FPGA设计电路图生成方法的限定,在此不再赘述。上述FPGA设计电路图生成装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储执行FPGA设计电路图生成方法过程中采用或者生成的数据,例如FPGA设计电路图。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种FPGA设计电路图生成方法。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例中FPGA设计电路图生成方法的步骤,例如图1所示的步骤S101-S108,或者图2至图5中所示的步骤,为避免重复,这里不再赘述。或者,处理器执行计算机程序时实现FPGA设计电路图生成装置这一实施例中的各模块/单元的功能,例如图7所示的用户设计网表获取模块701、目标二维网表获取模块702、器件描述数据获取模块703、标准显示区域确定模块704、原始器件分布图构建模块705、行列间距获取模块706、目标器件分布图获取模块707和设计电路图获取模块708的功能,为避免重复,这里不再赘述。
在一实施例中,提供一计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中FPGA设计电路图生成方法的步骤,例如图1所示的步骤S101-S108,或者图2至图5中所示的步骤,为避免重复,这里不再赘述。或者,该计算机程序被处理器执行时实现上述FPGA设计电路图生成装置这一实施例中的各模块/单元的功能,例如图7所示的用户设计网表获取模块701、目标二维网表获取模块702、器件描述数据获取模块703、标准显示区域确定模块704、原始器件分布图构建模块705、行列间距获取模块706、目标器件分布图获取模块707和设计电路图获取模块708的功能,为避免重复,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

Claims (10)

1.一种FPGA设计电路图生成方法,其特征在于,包括:
获取用户设计网表,所述用户设计网表包括网表输入管脚、网表输出管脚、原始器件和连接线;
依据所述连接线遍历所述网表输入管脚、所述原始器件和所述网表输出管脚,获取所述用户设计网表对应的目标二维网表;
基于每一所述原始器件对应的器件类型、器件输入管脚和器件输出管脚,获取每一所述原始器件对应的器件描述数据;
基于每一所述原始器件对应的器件描述数据,确定所述原始器件对应的器件显示区域,并基于所述器件显示区域确定标准显示区域;
基于所述目标二维网表和所述原始器件对应的标准显示区域,构建原始器件分布图;
依据所述原始器件分布图中的每一所述原始器件对应的连接线的数量,获取任意相邻两行的行间距和任意相邻两列的列间距;
基于所述行间距、所述列间距和每一原始器件对应的器件描述数据,更新所述原始器件分布图,获取目标器件分布图;
依据预设的连线规则在所述目标器件分布图上相应位置生成对应的连接线,获取FPGA设计电路图。
2.如权利要求1所述的FPGA设计电路图生成方法,其特征在于,所述依据所述连接线遍历所述网表输入管脚、所述原始器件和所述网表输出管脚,获取所述用户设计网表对应的目标二维网表,包括:
依据所述原始器件的器件输入管脚和所述网表输入管脚,确定初始元器件;
基于所有所述初始元器件对应的扇出系数,确定所述初始元器件对应的遍历顺序;
依据所述初始元器件的遍历顺序,将所述初始元器件填充在二维网表模板中相应的填充区域,获取原始二维网表;
依据所述初始元器件的遍历顺序,逐一对所述初始元器件依据所述连接线进行深度遍历,将遍历结果填充在所述原始二维网表上,获取所述用户设计网表对应的目标二维网表。
3.如权利要求2所述的FPGA设计电路图生成方法,其特征在于,所述依据所述原始器件的器件输入管脚和所述网表输入管脚,确定初始元器件,包括:
将所述用户设计网表中每一所述网表输入管脚确定为初始元器件,并逐一判断所述用户设计网表中每一所述原始器件的器件输入管脚是否与所述连接线相连;
若所述原始器件的器件输入管脚不与所述连接线相连,则所述原始器件为初始元器件;
若所述原始器件的器件输入管脚与所述连接线相连,则所述原始器件不为初始元器件。
4.如权利要求2所述的FPGA设计电路图生成方法,其特征在于,所述基于所有所述初始元器件对应的扇出系数,确定所述初始元器件对应的遍历顺序,包括:
对所有所述初始元器件进行分类,确定每一所述初始元器件对应的元器件类型;
依据所述元器件类型对应的优先级,确定类型间顺序;
基于同一所述元器件类型对应的初始元器件对应的扇出系数,确定类型内顺序;
基于所述类型间顺序和所述类型内顺序,确定所述初始元器件对应的遍历顺序。
5.如权利要求2所述的FPGA设计电路图生成方法,其特征在于,所述逐一对所述初始元器件依据所述连接线进行深度遍历,将遍历结果填充在所述原始二维网表上,获取所述用户设计网表对应的目标二维网表,包括:
逐一对所述初始元器件依据所述连接线进行深度遍历,获取与所述初始元器件通过所述连接线相连的至少一个连接元器件,并记录每一所述连接元器件的遍历位置;
若所述连接元器件不为已遍历元器件,则依据所述连接元器件的遍历位置,在所述原始二维网表中与所述遍历位置相对应的列的填充区域上填充所述连接元器件;
若所述连接元器件为已遍历元器件,则依据所述连接元器件的遍历位置,将所述原始二维网表中与所述遍历位置相对应的列的填充区域留空;
依据所述连接元器件中原始器件的遍历位置的最大值,确定所述原始二维网表的列数,获取所述用户设计网表对应的目标二维网表。
6.如权利要求1所述的FPGA设计电路图生成方法,其特征在于,所述基于每一所述原始器件对应的器件类型、器件输入管脚和器件输出管脚,获取每一所述原始器件对应的器件描述数据,包括:
若原始器件对应的器件类型为已知类型,则获取预先存储的管脚数据信息,将该管脚数据信息作为原始器件对应的器件描述数据;
若原始器件对应的器件类型为未知类型,则依据所述原始器件对应的器件输入管脚的数量和器件输出管脚的数量,获取原始器件对应的器件描述数据。
7.如权利要求1所述的FPGA设计电路图生成方法,其特征在于,所述依据所述原始器件分布图中的每一所述原始器件对应的连接线的数量,获取任意相邻两行的行间距和任意相邻两列的列间距,包括:
统计与第i行中每一所述原始器件对应的器件输入管脚相连的连接线的第一数量,依据所述第一数量、预设线间间距和行列预留间距,确定第i行原始器件与第i+1行的行间距,其中,Dr=m1*d_w+2*d_s,Dr为行间距,m1为第一数量,d_w为预设线间间距,d_s为行列预留间距;
统计与第j列中每一所述原始器件对应的器件输出管脚相连的连接线的第二数量,并统计与第j+1列中每一所述原始器件对应的器件输入管脚相连的连接线的第三数量,依据所述第二数量、所述第三数量、所述预设线间间距和所述行列预留间距,确定第j列原始器件与第j+1列原始器件的列间距,其中,Dc=(m2+m3)*d_w+2*d_s,Dc为列间距,m2为第二数量,m3为第三数量,d_w为预设线间间距,d_s为行列预留间距。
8.一种FPGA设计电路图生成装置,其特征在于,包括:
用户设计网表获取模块,用于获取用户设计网表,所述用户设计网表包括网表输入管脚、网表输出管脚、原始器件和连接线;
目标二维网表获取模块,用于依据所述连接线遍历所述网表输入管脚、所述原始器件和所述网表输出管脚,获取所述用户设计网表对应的目标二维网表;
器件描述数据获取模块,用于基于每一所述原始器件对应的器件类型、器件输入管脚和器件输出管脚,获取每一所述原始器件对应的器件描述数据;
标准显示区域确定模块,用于基于每一所述原始器件对应的器件描述数据,确定所述原始器件对应的器件显示区域,并基于所述器件显示区域确定标准显示区域;
原始器件分布图构建模块,用于基于所述目标二维网表和所述原始器件对应的标准显示区域,构建原始器件分布图;
行列间距获取模块,用于依据所述原始器件分布图中的每一所述原始器件对应的连接线的数量,获取任意相邻两行的行间距和任意相邻两列的列间距;
目标器件分布图获取模块,用于基于所述行间距、所述列间距和每一原始器件对应的器件描述数据,更新所述原始器件分布图,获取目标器件分布图;
设计电路图获取模块,用于依据预设的连线规则在所述目标器件分布图上相应位置生成对应的连接线,获取FPGA设计电路图。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述FPGA设计电路图生成方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述FPGA设计电路图生成方法的步骤。
CN201910113973.9A 2019-02-14 2019-02-14 Fpga设计电路图生成方法、装置、计算机设备及存储介质 Active CN109800534B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910113973.9A CN109800534B (zh) 2019-02-14 2019-02-14 Fpga设计电路图生成方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910113973.9A CN109800534B (zh) 2019-02-14 2019-02-14 Fpga设计电路图生成方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN109800534A true CN109800534A (zh) 2019-05-24
CN109800534B CN109800534B (zh) 2020-03-10

Family

ID=66562106

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910113973.9A Active CN109800534B (zh) 2019-02-14 2019-02-14 Fpga设计电路图生成方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN109800534B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110750954A (zh) * 2019-10-29 2020-02-04 上海安路信息科技有限公司 电路原理图生成方法及生成系统
CN111143274A (zh) * 2019-11-13 2020-05-12 广东高云半导体科技股份有限公司 以逻辑综合结果为导向的层级结构优化方法及装置、系统
WO2021013044A1 (zh) * 2019-07-22 2021-01-28 深圳市紫光同创电子有限公司 电路连线保存方法、fpga系统及存储介质
CN112926281A (zh) * 2019-12-06 2021-06-08 杭州起盈科技有限公司 一种数字集成电路的智能模块分析方法
CN113255114A (zh) * 2021-05-08 2021-08-13 深圳市华星光电半导体显示技术有限公司 显示面板的柱状间隔物阵列图的生成方法及装置
CN113935272A (zh) * 2021-12-16 2022-01-14 北京云枢创新软件技术有限公司 多级设计连接路径的网络匹配结构显示系统
CN115983164A (zh) * 2023-01-12 2023-04-18 上海合见工业软件集团有限公司 用于数字电路原理图的游离元器件分层方法、设备和介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1275737A (zh) * 1999-05-27 2000-12-06 上海大唐移动通信设备有限公司 消息传输总线的结构
CN102789512A (zh) * 2011-05-20 2012-11-21 中国科学院微电子研究所 multi-FPGA系统的EDA工具设计方法和装置
US8667454B1 (en) * 2011-06-15 2014-03-04 Cadence Design Systems, Inc. System, method, and computer program product for optimizing pins
CN106285624A (zh) * 2016-07-20 2017-01-04 中国海洋石油总公司 一种测井仪器数据采集器件及装置
EP3175866A1 (de) * 2015-12-02 2017-06-07 Werner Besch GmbH Desinfektionsvorrichtung, verwendung dessen an ortsfesten leitungen sowie verfahren zum desinfizieren von ortsfesten leitungen und verfahren zum aufbereiten der desinfektionsvorrichtung
CN108051729A (zh) * 2017-12-06 2018-05-18 西安智多晶微电子有限公司 Fpga布线覆盖率测试方法
CN108614787A (zh) * 2018-05-07 2018-10-02 重庆邮电大学 一种ddr3基带板卡

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1275737A (zh) * 1999-05-27 2000-12-06 上海大唐移动通信设备有限公司 消息传输总线的结构
CN102789512A (zh) * 2011-05-20 2012-11-21 中国科学院微电子研究所 multi-FPGA系统的EDA工具设计方法和装置
US8667454B1 (en) * 2011-06-15 2014-03-04 Cadence Design Systems, Inc. System, method, and computer program product for optimizing pins
EP3175866A1 (de) * 2015-12-02 2017-06-07 Werner Besch GmbH Desinfektionsvorrichtung, verwendung dessen an ortsfesten leitungen sowie verfahren zum desinfizieren von ortsfesten leitungen und verfahren zum aufbereiten der desinfektionsvorrichtung
CN106285624A (zh) * 2016-07-20 2017-01-04 中国海洋石油总公司 一种测井仪器数据采集器件及装置
CN108051729A (zh) * 2017-12-06 2018-05-18 西安智多晶微电子有限公司 Fpga布线覆盖率测试方法
CN108614787A (zh) * 2018-05-07 2018-10-02 重庆邮电大学 一种ddr3基带板卡

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
WAYNE WOLF: "FPGA-based system design", 《PRENTICE HALL MODERN SEMICONDUCTOR DESIGN SERIES》 *
储著飞: "低功耗SoC设计关键技术研究", 《中国博士学位论文全文数据库 信息科技辑》 *

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021013044A1 (zh) * 2019-07-22 2021-01-28 深圳市紫光同创电子有限公司 电路连线保存方法、fpga系统及存储介质
CN110750954A (zh) * 2019-10-29 2020-02-04 上海安路信息科技有限公司 电路原理图生成方法及生成系统
WO2021083076A1 (zh) * 2019-10-29 2021-05-06 上海安路信息科技股份有限公司 电路原理图生成方法及生成系统
CN111143274A (zh) * 2019-11-13 2020-05-12 广东高云半导体科技股份有限公司 以逻辑综合结果为导向的层级结构优化方法及装置、系统
CN112926281A (zh) * 2019-12-06 2021-06-08 杭州起盈科技有限公司 一种数字集成电路的智能模块分析方法
CN112926281B (zh) * 2019-12-06 2022-06-03 杭州起盈科技有限公司 一种数字集成电路的智能模块分析方法
CN113255114A (zh) * 2021-05-08 2021-08-13 深圳市华星光电半导体显示技术有限公司 显示面板的柱状间隔物阵列图的生成方法及装置
CN113255114B (zh) * 2021-05-08 2022-04-01 深圳市华星光电半导体显示技术有限公司 显示面板的柱状间隔物阵列图的生成方法及装置
WO2022236869A1 (zh) * 2021-05-08 2022-11-17 深圳市华星光电半导体显示技术有限公司 显示面板的柱状间隔物阵列图生成方法及装置、电子设备
CN113935272A (zh) * 2021-12-16 2022-01-14 北京云枢创新软件技术有限公司 多级设计连接路径的网络匹配结构显示系统
CN115983164A (zh) * 2023-01-12 2023-04-18 上海合见工业软件集团有限公司 用于数字电路原理图的游离元器件分层方法、设备和介质
CN115983164B (zh) * 2023-01-12 2023-08-15 上海合见工业软件集团有限公司 用于数字电路原理图的游离元器件分层方法、设备和介质

Also Published As

Publication number Publication date
CN109800534B (zh) 2020-03-10

Similar Documents

Publication Publication Date Title
CN109800534A (zh) Fpga设计电路图生成方法、装置、计算机设备及存储介质
CN109284578B (zh) 逻辑电路布局布线方法、图形化显示方法及其系统
KR100201979B1 (ko) 배선경로 처리방법과 배선경로 처리시스템 및 반도체집적회로 장치
CN103366028B (zh) 一种现场可编程门阵列芯片布局方法
US7111268B1 (en) Post-layout optimization in integrated circuit design
Shojaei et al. Congestion analysis for global routing via integer programming
CN109436189A (zh) 船舶外舾装参数化模板制作方法、设计方法、设备及介质
JPH04229375A (ja) 回路設計方法
CN117321601A (zh) 一种集成电路的版图生成方法及装置
Betz Architecture and CAD for speed and area optimization of FPGAs
JPH08123836A (ja) 会話型回路設計装置
JPS60117758A (ja) 素子位置割当て方法
Lin et al. POLAR 2.0: An effective routability-driven placer
CN109684731A (zh) 一种高效的详细布线驱动轨道分配算法
CN108959666A (zh) 集成电路设计方法及装置、芯片版图分解和着色方法及装置
Shi et al. TraPL: Track planning of local congestion for global routing
CN107153749A (zh) 一种卫星矩阵电缆接点设计工具及设计方法
US7134112B1 (en) Incremental routing in integrated circuit design
CN115983189A (zh) 一种自适应网格的模拟集成电路版图布线方法及系统
CN104063558A (zh) 基于线性规划的大规模集成电路通道布线方法
CN105843982A (zh) 用于可编程逻辑器件的位流生成方法、装置及设计系统
CN112861466B (zh) 一种布线轨道分配方法、电子设备及计算机可读存储介质
CN104462726B (zh) 用于反熔丝的现场可编程门阵列的布线方法
CN106649776A (zh) 一种半自动化综合矢量多边形的方法
CN112989749A (zh) 一种集成电路版图布线中引脚访问方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant