发明名称 支持用户定制的可编程逻辑器件版图快速生成方法
摘要 本发明属于电子设计自动化技术领域,具体为一种支持用户定制的可编程逻辑阵列版图快速生成方法。本发明方法步骤为:准备单元版图并且为单元版图建立配置文件;计算单元版图的规模大小;将单元子版图进行拼接;预留用户设定的版图形状。本发明基于已有的单元版图库,能够在快速生成任意指定规模的版图文件的同时使得所生成的版图性能接近人工定制生成的版图性能。本方法生成的版图主要特点在于:一是所生成的可编程逻辑阵列版图规模大小是可定制的,即用户能够指定版图的阵列规模大小;二是根据用户设定的版图形状要求,可以自动在版图上预留这些区域,便于在可编程逻辑阵列版图中嵌入其他IP核。
申请公布号 CN102831268B 申请公布日期 2015.07.29
申请号 CN201210291806.1 申请日期 2012.08.16
申请人 复旦大学 发明人 王伶俐;周学功;童家榕;余超凡;李兆彤;杨文龙
分类号 G06F17/50(2006.01)I 主分类号 G06F17/50(2006.01)I
代理机构 上海正旦专利代理有限公司 31200 代理人 陆飞;盛志范
主权项 一种支持用户定制的可编程逻辑阵列版图快速生成方法,其特征在于具体步骤如下:步骤一、输入单元子版图,为可编程阵列单元结构建立配置文件以经典岛型结构为例,首先输入岛型结构FPGA芯片的9种单元子版图的GDS版图文件;所述单元子版图在版图上是矩形的形状,简称为TILE,所述9种子版图分别是:中间,左边,右边,上边,下边,左上角,右上角,左下角,右下角对应的版图;根据已有的单元子版图,为可编程阵列单元结构建立配置文件;所述配置文件主要描述岛型结构FPGA芯片的9种单元子版图的信息及其相互的位置关系;配置文件的组成描述如下:配置文件以ini为文件扩展名,由四部分组成:[LIB]、[CHECK]、[OFFSET]以及[TILE];其中:[LIB] 部分用于描述库名等信息,其包含的参数如下:(1)Name:描述该库的名字;(2)User_Unit:描述该库的用户单位,是一个继承于GDS文件的参数;(3)DB_Unit:描述该库的基本单位,是一个继承于GDS文件的参数;[CHECK] 部分主要用于检测库文件的某些参数是否有效,包括以下三个参数:(1)has_size_info:表明[TILE] 部分里描述TILE大小的参数是否有效,如果此参数无效,本方法利用程序自动计算每种TILE大小并更新此[TILE] 部分的相关参数,并将此参数设置为1;(2)has_merge_file:每个GDS文件由多个子结构组成,其中只有一个结构是顶层结构,每次合成版图时需要将这些子结构的内容拼接到最后生成的版图文件中;因此本发明事先生成这个合并好的版图文件;如果这个合并好的版图文件存在,则此参数为1;如果合并文件不存在,则本发明调用程序自动合并文件,然后设置此参数为1,并且设定合并文件的路径,即下面所述的merge_file_path参数;(3)merge_file_path:指定已合并的版图文件的路径;[OFFSET] 部分用于确定各个TILE的摆放位置,其item的格式为key = x y,就是9种类型的TILE对应于中间类型TILE的偏移坐标;它们的意义分别描述如下:(1)Center:位于岛型FPGA结构中间类型TILE的偏移量, x代表中间类型TILE的水平间距,y代表中间类型TILE的垂直间距;(2)Left:FPGA阵列中最左边的输入输出TILE相对于中间类型TILE的偏移量,这里的中间类型TILE是指与Left 类型TILE在同一行且在其右边的中间类型 TILE;(3)Right:FPGA阵列中最右边的输入输出TILE相对于中间类型TILE的偏移量,这里的中间类型TILE是指与Right类型 TILE在同一行且在其左边的中间类型TILE;(4)Bottom:FPGA阵列中底部的输入输出TILE相对于中间类型TILE的偏移量,这里的中间类型TILE是指与Bottom类型TILE在同一列且在其上边的中间类型TILE;(5)Top:FPGA阵列中顶部的输入输出TILE相对于中间类型TILE的偏移量,这里的中间类型TILE是指与Top 类型TILE在同一列且在其下边的中间类型TILE;(6)UL:FPGA阵列中左上角的TILE相对于中间类型TILE的偏移量,这里的中间类型TILE是指FPGA阵列中左上角的中间类型 TILE;(7)UR:FPGA阵列中右上角的TILE相对于中间类型TILE的偏移量,这里的中间类型TILE是指FPGA阵列中右上角的中间类型 TILE;(8)BL:FPGA阵列中左下角的TILE相对于中间类型TILE的偏移量,这里的中间类型TILE是指FPGA阵列中左下角的中间类型TILE;(9)BR:FPGA阵列中右下角的TILE的相对于中间类型TILE偏移量,这里的中间类型TILE是指FPGA阵列中右下角的中间类型TILE;[TILE] 部分描述了9种TILE的详细信息,以中间类型TILE的信息参数为例说明:(1)Center_Name:TILE的顶层结构名;(2)Center_Path:TILE对应的版图文件的路径;(3)Center_Left:TILE版图的左边边界;(4)Center_Right:TILE版图的右边边界;(5)Center_Bottom:TILE版图的下边边界;(6)Center_Top:TILE版图的上边边界;根据已有的9种单元版图,采用人工的方法确定上面[LIB]部分,[OFFSET]部分、[CHECK]部分的内容以及[TILE]部分里关于版图位置设定的内容;步骤二、单元子版图的规模自动计算所述版图文件均为GDS格式,一个GDS文件就是一个流结构,记作<stream format>,它主要由一系列的结构构成,结构则由元素构成;元素共有7种,分别为:(1)BOUNDARY:用于描述多边形;(2)BOX:用于描述矩形;(3)PATH:用于描述走线;(4)NODE:描述节点;(5)SREF:引用一个结构;(6)AREF:引用一个结构阵列;(7)TEXT:用于描述辅助的文本元素,对版图实际功能不起作用,只是起到注释和标记的作用;GDS文件由很多结构组成,每一个结构都可以通过SREF或者AREF引用其他结构作为自己结构的一部分,且结构的定义顺序是随机的;所述的GDS格式的7种元素里,不考虑TEXT元素类型,在剩下的6种元素里,BOUNDARY、PATH、BOX、NODE四种元素的边界值直接用坐标点算出其边界,而引用类元素AREF和SREF则通过它对其他结构的引用方式来决定;对于SREF来说,结构引用方式需要考虑以下因素:(1)引用的结构是否关于X轴镜像对称;(2)在哪个坐标点引用结构;(3)引用的结构是否需要旋转,旋转的角度为多少;(4)引用的结构是否需要缩放; 而AREF相当于多个SREF的重复引用,只需要分析AREF的规模就可以算出其边界; 计算机程序通过解析GDS文件,存储每个结构以及其引用元素的内容;除了引用类型的元素外,其余元素的边界值均可以直接计算出来,引用类型的元素的边界值计算可以通过递归算法将其计算出来;将计算好的版图规模写入到配置文件里,并将配置文件的[CHECK]部分的has_size_info置为1,以避免后续重复计算,提高生成效率;步骤三、单元版图拼接得到了单元版图的规模后,结合配置文件里关于版图之间的位置相对关系进行版图拼接;单元版图的拼接主要通过SREF元素实现,生成的版图要用到所有的结构;因此,首先需要将所有版图文件的已有内容合并到一个文件里,然后创建一个新的顶层结构,在该结构里引用上面9种TILE,包括引用的坐标和数目;引用由库文件的 [OFFSET] 部分的参数内容提供,根据每个TILE的位置坐标,结合用户要生成的版图阵列规模,确定出所有待引用的TILE位置;最后采取SREF引用的方法,即可实现版图拼接;经过拼接步骤,得到指定规模的可编程逻辑阵列版图文件;步骤四、用户预留面积设置在经过拼接以后,进行用户预留面积设置,也就是用户指定要在版图上留下一个多边形区域,为插入其他的IP核设置版图面积,为此,将与此多边形区域相交的所有TILE移除掉,得到最终的指定规模的并且带预留面积配置的GDS版图文件;所述GDS为Graphic Design System。
地址 200433 上海市杨浦区邯郸路220号