一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

时延数据库的创建方法、时延计算方法及设备与流程

2022-04-30 02:36:04 来源:中国专利 TAG:
1.本发明涉及集成电路
技术领域
:,尤其涉及一种延时数据的创建方法、时延计算方法、创建时延数据的设备以及使用时延数据的设备。
背景技术
::2.在现场可编程门阵列(fieldprogrammablegatearray,fpga)芯片的开发流程中,时序约束是用户指定的一种最基本的约束,其可指定所设计电路的工作频率,约定芯片的工作速度。在整个开发流程的每一步都需要考虑,尤其到了设计的后期,不同的时延评估方法及不同的时延优化策略,对整个电路的功能影响很大,这其中最主要包括布局和布线,也是整个流程中比较费时的一步,其中,布局具体是指将电路元件摆放到芯片上合法的位置,不存在违法物理约束摆放。布线具体指将电路元件之间的线网联通,不存在短路断路等违反物理约束的连接。布局和布线都是将逻辑网表中的硬件原语和底层单元合理地配置到芯片内部的固有硬件结构上的过程中。如何对没有布线的线网进行快速的、有效的时延评估,对版图设计起到至关重要的作用。3.fpga芯片时延评估的常用方法是通过快速的布线器计算出一条最可能的路径,然后基于电阻电容(resistanceandcapacitance,rc)链的时延模型对路径进行计算和评估,从而得出时延结果。4.但是,基于电阻电容链的时延模型计算时延的速度较慢;在映射打包、布局和布线等物理实现过程中不能被频繁地调用,使得时延评估的准确性较低。技术实现要素:5.本发明解决的技术问题是基于传统rc链的时延模型计算时延的速度较慢、时延评估的准确性较低等。6.为解决上述技术问题,本发明实施例提供一种在fpga芯片的物理实现步骤中创建时延数据库的方法,fpga芯片具有基于重复单元的阵列结构,重复单元包括逻辑重复单元和内部连线重复单元,逻辑重复单元包括第一逻辑重复单元和第二逻辑重复单元,创建时延数据库的方法包括创建路径表,创建路径表包括:确定路径,路径通过第一线段从第一逻辑重复单元的第一引脚经过n个重复单元,然后通过第二线段连接到第二逻辑重复单元的第二引脚,其中,相邻的重复单元之间通过线段连接,n为大于或等于0的整数;获取路径中各线段分别对应的线段时延;将第一引脚、第二引脚和线段时延存储于路径表中。7.可选地,n个重复单元为n个内部连线重复单元。8.可选地,包括基于各线段的坐标依次计算各自的线段相对偏移,从而获取从第一引脚到第二引脚的路径的相对偏移。9.可选地,包括:确定第一引脚到第二引脚的路径与线段和路径相对偏移的对应关系;将对应关系存储于路径表中。10.可选地,包括根据线段的长度类型和形状归类存储线段、线段时延和/或对应关系。11.可选地,包括对fpga芯片中各逻辑重复单元中任意二个引脚重复上述创建时延数据库方法的步骤。12.可选地,包括创建差分表,逻辑重复单元包括clb逻辑重复单元和非clb逻辑重复单元,第一逻辑重复单元和第二逻辑重复单元均为clb逻辑重复单元,创建差分表包括:获取差分信息,差分信息为线段基于其长度类型、形状、所跨越的非clb逻辑重复单元的类型和/或所跨越非clb逻辑重复单元的数量所产生的差分时延;将非clb逻辑重复单元的位置、类型和差分时延存储于差分表中。13.可选地,线段的扇出中每一个扇出均包括相对坐标、基础时延、模式及与模式相关的额外时延,模式包括其扇出跨越的非clb逻辑重复单元的数量、类型和位置;将线段、基础时延和额外时延存储于所述差分表中。14.可选地,包括创建时延表,创建时延表包括:根据路径表中各线段及其线段时延、以及差分表中各线段、其基础时延和额外时延计算从第一引脚到第二引脚的路径的最小时延;将第一引脚、第二引脚和最小时延存储于时延表中。15.可选地,包括对fpga中各逻辑重复单元中任意二个引脚重复上述创建时延数据库方法的步骤。16.可选地,包括创建长距离表,创建长距离表包括:获取多种长度类型的线段,多种长度类型的线段包括最长线段和非最长线段;确定从第一引脚到第二引脚的路径中超过最长线段的第一类线网和未超过最长线段的第二类线网;对于第一类线网,基于最长线段的整数倍进行第一拼接,对于剩余的长度,其作为第二类线网而基于非最长线段的组合进行第二拼接,其中,剩余的长度小于最长线段的长度将第一拼接和第二拼接分别存储于长距离表和路径表中。17.可选地,包括创建引脚表,创建引脚表包括:将逻辑重复单元的类型、逻辑重复单元处的引脚的类型及其时延、以及引脚和与其邻近的内部连线重复单元之间的时延存储于引脚表中。18.可选地,逻辑重复单元包括iob、bufg、bufhce、bufr和clk,创建时延数据库的方法包括创建时钟表,创建时钟表包括:确定iob与bufg、iob与bufr、bufg与bufhce、bufhce与clk和/或bufr与clk之间的时钟时延;将第一引脚、第二引脚和时钟时延存储于时钟表中。19.本发明实施例还提供一种创建时延数据库的设备,包括存储器和处理器,存储器上存储有可在处理器上运行的计算机指令,处理器运行计算机指令时执行上述任一种创建时延数据库方法的步骤。20.本发明实施例还提供一种在fpga芯片的物理实现步骤中使用时延数据库的时延计算方法,包括:获取待评估的线网的信息;根据信息通过时延数据库计算待评估的线网的时延。21.可选地,包括:根据所获取的线网的第一引脚和第二引脚的类型及其在逻辑重复单元中的位置,查找路径表而获取路径信息;根据路径信息获取其中的线段及线段时延;根据线段时延计算出从第一引脚到第二引脚的时延。22.可选地,待评估的线网为时钟线网,包括:根据时钟线网的第一引脚和第二引脚查找时钟表,以确定对应的时延。23.可选地,待评估的线网为非时钟线网,时延计算方法包括通过如下公式计算短距离时延:24.delayshort_net=delaypin delaybase delaydiff,25.其中,delayshort_net表示短距离时延,delaypin表示引脚时延,其基于逻辑重复单元的类型和引脚类型而取自于引脚表,delaybase表示基准时延,其基于路径中的各线段而取自于路径表并求和而计算或者基于第一引脚和第二引脚而取自于时延表,delaydiff表示差分时延,其基于逻辑重复单元的位置和类型而取自于差分表。26.可选地,包括通过如下公式计算引脚时延:27.delaypin=delayfirst_pin delaysecond_pin,其中,delayfirst_pin表示第一引脚的时延,delaysecond_pin表示第二引脚的时延。28.可选地,包括通过如下公式计算第一引脚的时延:29.delayfirst_pin=delayintrinc_pin1 delayclb_to_int_path1,其中,delayintrinc_pin1表示第一引脚的固有时延,delayclb_to_int_path1表示第一引脚和与其邻近的内部连线重复单元之间的时延。30.可选地,包括通过如下公式计算第二引脚的时延:31.delaysecond_pin=delayintrinc_pin2 delayint_to_clb_path2,32.其中,delayintrinc_pin2表示第二引脚的固有时延,delayint_to_clb_path2表示邻近第二引脚的内部连线重复单元和第二引脚之间的时延。33.可选地,路径中的各线段包括x1、x2、x6、x12和/或x18类型的线段。34.可选地,差分时延为经过非clb的逻辑重复单元的时延,非clb的逻辑重复单元包括ram、dsp和iob。35.可选地,时延计算方法包括通过如下公式计算长距离时延:36.delaylong_net=delayx_dir_long delayy_dir_long delayshort_net,37.其中,delaylong_net表示长距离时延,delayx_dir_long表示在x正或负方向基于最长线段的时延,delayy_dir_long表示在y正或负方向基于最长线段的时延。38.可选地,时延计算方法包括通过如下公式计算在x正或负方向基于最长线段的时延:39.delayx_dir_long=numberx_max×delayx_max,40.其中,numberx_max表示最长线段的第一数目,当x正或负方向的距离超出最长线段的长度时,在x正或负方向的距离除以最长线段的长度所得的商为numberx_max,delatx_max表示最长线段的时延。41.可选地,时延计算方法包括通过如下公式计算在y正或负方向基于最长线段的时延:42.delayy_dir_long=numbery_max×delayy_max,43.其中,numbery_max表示最长线段的第二数目,当y正或负方向的距离超出最长线段的长度时,在y正或负方向的距离除以最长线段的长度所得的商为numbery_max,delayy_max表示最长线段的时延。44.可选地,线网为引脚数量多于二个的多引脚线网,时延计算方法包括:将多引脚线网拆分成多个具有二个引脚的线网;对多个具有二个引脚的线网中的每个线网分别执行上述任一种时延计算方法的步骤。45.本发明实施例还提供一种使用时延数据库的设备,包括存储器和处理器,存储器上存储有可在处理器上运行的计算机指令,处理器运行计算机指令时执行上述任一种时延计算方法的步骤。46.与现有技术相比,本发明实施例的技术方案具有有益效果。47.例如,通过查找时延数据库中的相关查找表而进行累加的方式减少了运算时间,从而可以提高时延评估的计算速度。其中,相关查找表包括路径表(pathtable),还可以包括引脚表(pintable)、差分表(difftable)、时延表(delaytable)、长距离表(longtable)和时钟表(clocktable)中的一者或多者。48.又例如,pathtable可以对各不同种类的引脚进行分类而分别创建,这既减少了pathtable的大小,又可以覆盖所有的绕线结果,使计算结果更加准确;并且可以忽略对最终结果影响比较小的线段(segment),因此占用较小的磁盘和存储空间。49.又例如,pintable基于引脚的类型对引脚进行归类并进行存储,以节省引脚的存储空间,使得在使用时延数据库时可以更快地检索和计算时延。50.又例如,difftable可以提供芯片上所有种类段的基础时延及跨越不同资源tile的偏差时间,确保包含了fpga芯片上的各种时延,以提高时延计算的精确度。51.又例如,delaytable可以获得大多数两端线网的时延值,而不需要通过路径表或者差分表逐个累加segment的最小时延来获取整条路径的时延,从而提高了获取时延的效率。52.又例如,longtable可以快速的计算长距离线网的时延,由于其包含x和y方向的所有拼接方式,所以计算的结果也比较准确。53.又例如,clocktable可以快速的计算时钟线网的时延,包括全局时钟及局部时钟,减小大线网时延计算的时间。54.通过将不同情形的布线结果及相关时延存储于相应表中,使其能与绕线后真实的结果比较吻合;并且,根据精度的需求可以应用于打包映射、布局布线等各个流程,具有良好的扩展性。附图说明55.图1是本发明实施例创建时延数据库的方法的流程图;56.图2是本发明实施例创建路径表所涉及线网连接的示意图;57.图3是本发明实施例创建路径表所涉及配置信息的示意图;58.图4是本发明实施例创建差分表所涉及信息的示意图;59.图5是本发明实施例时延计算方法的总体流程图;60.图6是本发明实施例时延计算方法的具体流程图。具体实施方式61.fpga芯片采用规则的阵列结构进行设计,阵列中的每个点为一个重复单元(tile);tile包括逻辑重复单元(logictile)和内部连线重复单元(intertile)两种,intertile用于连接logictile。62.logictile包括多种类型,例如,可配置逻辑模块(configurablelogicblock,clb)、输入输出模块(inputoutputblock,iob)、数字信号处理模块(digitalsignalprocessor,dsp)、随机存取存储器(randomaccessmemory,ram)等逻辑单元(logicelement,le)。每种类型的logictile内部还包含特定配置,例如,clb包含查找表(lookuptable,lut)、触发器(flip-flop,ff)等逻辑资源的配置;iob包含器件与外界关联的电压电平供给的配置;ram包含存储单元的配置。63.每种类型的tile内部都包含许多segment,以用于形成连接logictile的引脚(pin)之间的线网(net)。pin的类型根据logictile的类型的不同而不同,例如,clb、iob、dsp和ram类型的logictile的pin类型各不相同。64.具体而言,intertile的switchbox描述了任意一条segment转换到其余segment的拓扑连接关系,即,通过一条或多条线连接segment而形成的拓扑连接关系,每一条线代表一个可选择的可编程互连点(programmableinterconnectionpoint,pip)。所有的tile内部的segment通过pip连接起来,构成整个fpga芯片的绕线资源图(routinggraph)。65.一条segment可能经过多个tile,可以根据经过intertile的数目定义segment的长度类型,其中包括最长segment的长度类型。66.例如,segment的长度类型可以为x1、x2、x4、x6、x12和x18等,其分别表示一条segment经过1、2、4、6、12和18个intertile,其中,最长segment为x18。67.长度超过最长segment的segment为长线。68.根据segment经过tile的走向不同可以将segment分为八种,包括ssx、swx、sex、wwx、nnx、nwx、nex和eex。其中,s表示向南的方向(y负方向),w表示向西的方向(x负方向),e表示向东的方向(x正方向),n表示向北的方向(y正方向),x表示segment的长度类型,例如,ssx代表向南直走了x个tile的直线,swx代表向南和向西共走了x个tile的l形折线;segment的走向表现为其直线或折线的形状。69.为使本发明实施例的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例进行详细说明。70.本发明实施例提供一种在fpga芯片的物理实现步骤中创建时延数据库的方法。71.如图1所示,创建时延数据库的方法的流程图100包括创建pathtable(步骤s110),其涉及长度不超过最长segment的、那些segment的时延。在步骤s110的实施中,包括步骤s111、s112和s113。72.在步骤s111的实施中,确定路径;电路网表中的信号可以通过第一segment从第一logictile的第一pin经过n个重复单元,然后通过第二segment连接到第二逻辑重复单元的第二pin。其中,相邻的重复单元之间通过segment连接,segment包括第一segment和第二segment,n为大于或等于0的整数。73.具体而言,如图2所示,fpga芯片具有基于tile的阵列结构,重复单元包括logictile和intertile,logictile包括第一logictile和第二logictile。第一logictile与第一intertile配对,第二logictile与第二intertile配对。第一logictile的pin和第二logictile的pin具有如图2所示的path,其经过多个tile,包括第一logictile、第一intertile、n个中间的intertile、第二intertile、以及第二logictile,其中,n大于或等于0。74.在本发明的实施例中,第一logictile和第二logictile可以均为clb。75.具体而言,第一logictile和第二logictile分别通过第一segment和第二segment连接到n个intertile组成的集合,该n个intertile由n-1段中间segment依次串行连接,其中,n个intertile包括分别与第一logictile和第二logictile配对的intertile。76.当n等于0时,例如,一个logictile的一个pin,不经过intertile,直接通过一个segment(其既是第一也是第二segment)连接到第二logictile的另一个pin。77.第一segment可以为outputsegment,第二segment可以为inputsegment。78.对于一些fpga芯片,其中连接第一pin的第一segment(outputsegment)可以为线段omux,其可以包括24种类型,即omux0至omux23;连接第二pin的第二segment(inputsegment)可以为线段imux,其可以包括48种类型,即imux0至imux47。第一pin可以称为源pin(sourcepin)或者输入pin(outputpin),第二pin可以称为漏pin(sinkpin)或者输出pin(inputpin)。79.在步骤s112的执行中,获取路径中各segment分别对应的segment时延。segment包括第一segment、第二segment和/或中间segment。80.具体而言,在routing完成后,可以得到实际的net或path,可以根据net或path的配置信息(包括pip配置信息)提取segment,包括segment的名称、长度类型、形状和时延值等信息;可以将这些信息存储于pathtable中,以用于计算从第一pin到第二pin的时延。81.在步骤s113的执行中,将第一pin、第二pin和segment时延存储于pathtable中。82.具体而言,在pathtable中可以存储第一pin和第二pin的类型、第一pin和第二pin在logictile的位置、各segment、各segment的时延值、path、和/或路径时延值,还可以存储第一引脚到第二引脚的路径与线段和路径相对偏移的对应关系。83.在pathtable中,可以通过pin的类型、pin在logictile的位置查找各segment的时延值,并可以将各segment时延值累加而得到从第一pin到第二pin的路径时延值;也可以通过pin的类型、pin查找path而直接得到从第一pin到第二pin的路径时延值。84.在本发明的实施例中,提出了一种有效的path提取手段以创建pathtable,即,无论哪种类型的logictile作为第一logictile,其pin都可以通过第一segment首先到达与其配对的intertile(第一intertile)上,接着绕线经过零个或若干个中间的intertile而到达与作为目的地的第二logictile配对的intertile(第二intertile),然后通过第二segment连接到第二logictile的pin。因此,可以对各不同种类的pin进行分类而分别创建pathtable,这既减少了pathtable的大小,又可以简单而有效地覆盖所有logictile的pin的绕线路径。85.在具体实施中,可以基于segment的坐标依次计算各segment关于前一个segment、第一segment(如omux)或sourcepin的segment的相对偏移,从而获取从第一pin到第二pin的path的路径相对偏移。由于fpga芯片采用规则的阵列结构进行设计,如果两端线网的第一pin和第二pin的相对偏移是相同的,那么,对于这些两端线网,无论其第一pin在何处,除了位置的相对变化,其所经过的线网的类型(例如其中的segment类型、pip类型)基本是一样的。86.在具体实施中,可以确定第一pin到第二pin的path与segment相对偏移的对应关系、与路径相对偏移的对应关系,并且将这些对应关系存储于pathtable中,其可以用于计算从第一pin到第二pin的时延。87.在具体实施中,可以基于根据segment的长度类型和形状而归类存储第一pin到第二pin的各segment、各segment时延值、各segment相对偏移、各路径相对偏移和/或它们的对应关系。88.在本发明的实施例中,第一pin和第二pin可以为fpga芯片的各logictile中任意的二个pin。类似地,可以对任意二个pin的两端线网确定各segment、各segment的时延值、各segment的相对偏移、各路径相对偏移,以及它们的对应关系,并且将其存储于pathtable中,从而完成整张pathtable的创建。89.如图3所示,可以按照走线顺序提取所有的segment,其形成的路径如下:90.lb_pin_aq-》omux4-》s6t0-》s6t1-》s6t1-》s6t0-》s2t0-》s2t1-》s1t0-》alter1-》bounce1-》imux137-》lb_pin_d4。91.每个segment具有相应的坐标,可以基于坐标依次计算各segment关于前面的segment(如omux4)的线段相对偏移,从而形成segment的走向关系,如下表1所示。92.表1[0093][0094][0095]可以通过segment的segment相对偏移获取从omux4到imux137的路径相对偏移(7,20),即在x方向的跨度为7、y方向的跨度为20。类似地,可以获取从引脚aq到d4的path的路径相对偏移。[0096]可以将从pinaq到d4的path与该path上各segment的路径相对偏移(如相对于引脚aq或omux4的偏移)的对应关系存储于pathtable中,以用于计算从pinaq到d4的时延。[0097]可以根据segment的长度类型和形状归类所提取的segment并进行存储,例如,在表1所示的示例中,可以将pinaq到d4的net归类成pinaq对应的segment(lb_pin_aq)、4根x6类型的segment(s6t0、s6t1)、2根x2类型的segment(s2t0、s2t1)、1根x1类型的segment(s1t0)和pind4对应的segment(lb_pin_d4)等,从而减少了segment的冗余存储,节省了存储空间。[0098]在本发明的实施例中,包括创建difftable。[0099]创建difftable包括获取差分信息以及将差分信息存储于difftable中,其中,差分信息为segment基于其长度类型、形状、所跨越的非clb的logictile的类型和/或所跨越的非clb的logictile的数量所产生的差分时延,将非clb的logictile的位置、类型和差分时延存储于difftable中,其中,非clb的logictile包括ram、dsp和iob。[0100]在具体实施中,segment的长度类型可以为x1、x2、x4、x6、x12和x18等特定类型;segment的形状反映其走向,可以为直线或者折线。即使对于相同长度类型和形状的segment,如果其跨越的非clb的logictile的数量或者类型不同,其时延仍可能不等。[0101]例如,对于x6类型的segmentee6,其可能仅跨越dsp类型的logictile、以及intertile,也可能跨越ram类型的logictile、以及intertile,在这两种情形中,segmentee6的时延不相等。[0102]一根segment的扇出(fanout,表示驱动该segment的单元)中每一个fanout均包括相对坐标、基础时延(base_delay)、模式(pattern)及与pattern相关的额外时延(res_delay)。pattern包括其fanout跨越的非clb的logictile的数量、类型和位置。可以将线段、基础时延和额外时延存储于difftable中。[0103]通过创建和使用difftable可以提供芯片上所有种类段的基础时延及跨越不同资源tile的偏差时间,确保包含了fpga芯片上的各种时延,以提高时延计算的精确度。[0104]如图4所示,difftable的相关信息包括若干segment,如segment0、segment1,其中,segment0和segment1的长度类型都是长线long_h,它们fanout的数量都是3,每个fanout都可以连接pip从而转接到其他的segment。[0105]对于segment0的fanout0、1和2,其相对坐标分别为(-12,0)、(0,0)和(-6,0),其中,相对坐标中的横坐标为正值和负值分别表示水平向右和水平向左,相对坐标中的纵坐标为正值和负值分别表示竖直向上和竖直向下,例如,(-12,0)表示fanout0的segment为x12类型水平向左的segment;其base_delay均为161个点的时延值;其pattern的数量分别为100、30和60。[0106]对于pattern,其包括可以跨过的特征(feature,表示非clb的logictile)和res_delay,例如,对于pattern0,其feature的数量为2,表示2个非clb的logictile,即bram1和dsp2,res_delay为88个点的时延值,其中,bram1(-7,0)和dsp2(-3,0)分别表示向左的第七个tile跨bram1和向左的第三个tile跨dsp2。[0107]由于fpga芯片上segment的种类有限,可以遍历所有的segment进行pattern识别和存储,通过这种方式可以百分百的获取fpga芯片上所有segment的时延。[0108]在本发明的实施例中,包括创建delaytable。[0109]创建delaytable包括根据pathtable中各segment和各segment的时延、以及difftable中各segment、其基础时延(base_delay)和额外时延(res_delay)等计算从第一pin到第二pin的path的最小时延,以及将最小时延存储于delaytable中。[0110]具体而言,直接从pathtable中提取segment并进行时延计算,会存在很多重复计算,显著增大了时延计算的时间。因此,本发明实施例引入了delaytable,根据pathtable中的segment及其时延值、difftable中segment的base_delay和res_delay等,计算出从第一pin到第二pin的net或path的最小时延值,并且将该最小时延值存储于delaytable中。[0111]考虑到fpga芯片主要由clb类型的logictile组成,可以仅计算与clb类型的logictile相关的时延;通过该方式,一方面所计算出的时延值基本符合要求,另一方面提高了时延计算的效率。[0112]在delaytable中,可以存储第一pin和第二pin(例如其类型、在logictile的位置)与最小时延值的对应关系,从而可以通过检索这两个pin而获得它们的最小时延值。[0113]在delaytable中,还可以基于segment存储pathtable与delaytable的映射关系,以便于在计算相同segment的时延值时基于segment将pathtable与delaytable关联。[0114]由于可以直接通过delaytable获取两端线网的时延值,而不需要通过pathtable或者difftable逐个累加segment的最小时延来获取整条path的时延,从而提高了获取时延的效率。[0115]在本发明的实施例中,第一pin和第二pin可以为fpga芯片的各logictile中任意的二个pin。类似地,可以对任意二个pin的两端线网确定最小时延值,并且将其存储于delaytable中,从而完成整张delaytable的创建。[0116]相比较于传统的rcelmoredelaymodel中通过乘除法计算net或path的时延的方式,本发明实施例采用了加减法计算存储于时延数据库中的pathtable、difftable和/或delaytable中存储的时延,这显著提高了计算速度。[0117]在本发明的实施例中,包括创建longtable。[0118]创建longtable包括获取多种长度类型的segment,多种长度类型的segment包括最长segment和非最长segment,确定从第一pin到第二pin的路径中超过最长segment的第一类线网和未超过最长segment的第二类线网,其中,“超过最长segment”指在x或y方向的距离超过最长segment的长度,“未超过最长segment”指在x或y方向的距离未超过最长segment的长度。[0119]对于第一类线网,基于最长segment的整数倍进行第一拼接(即在x或y方向进行第一拼接),剩余未超过最长segment的线网作为第二类线网,其基于非最长segment的组合进行第二拼接(即在x或y方向进行第二拼接);将第一拼接存储于longtable中,第二拼接存储于pathtable中。longtable为长距离表,其中存储的segment的长度超过最长segment的长度、并且为最长segment的整数倍,而短距离表(即pathtable)中存储的segment的长度不超过最长segment的长度,这两个表形成互补关系,即,当线网两端的第一pin到第二pin的距离d超出pathtable的查找范围,可以先到longtable中查取超出范围的时延值和距离l(l为最长segment的整数倍),再到pathtable中查取d-l这段距离(其不超过最长segment的长度)的时延。[0120]通过创建和使用longtable,可以快速的计算长距离线网的时延。[0121]在本发明的实施例中,第一pin和第二pin可以为fpga芯片的各logictile中任意的二个pin。类似地,可以对任意二个pin的两端线网进行第一拼接和第二拼接,并且将其分别存储于longtable和pathtable中,从而完成整张longtable的创建。[0122]在本发明的实施例中,包括创建引脚表(pintable)。[0123]创建pintable包括:将logictile的类型、logictile处的pin类型及其时延、以及pin和与其邻近的intertile之间的时延存储于pintable中。由于pin本身具有时延,可以通过pintable的创建和使用,快速获取pin的时延,并且使得时延的计算更精确。[0124]例如,创建pintable包括基于pin的类型对pin进行归类并存储,以节省pin的存储空间,使得在使用时延数据库时可以更快地检索和计算时延。[0125]在本发明的实施例中,包括创建clocktable。[0126]通过pin坐标确定是全局时钟还是局部时钟。logictile包括iob、bufg、bufhce、bufr和clk,创建clocktable包括:确定iob与bufg、bufg与bufhce、bufhce与clk、bufr与clk之间的时钟时延,其中bufg为全局时钟缓存单元(globalclockbuffer),bufr为局部时钟缓存单元(regionalclockbuffer),bufhce为水平时钟缓存单元(horizontalclockbuffer)。将第一pin、第二pin的坐标和时钟时延存储于clocktable中。[0127]基于如上方式创建clocktable,可以使用较少的存储空间存储更多的时延数据,可以快速的计算时钟线网的时延,包括全局时钟及局部时钟,减小大线网时延计算的时间。[0128]本发明实施例还提供一种在fpga芯片的物理实现步骤中创建时延数据库的设备,包括存储器和处理器,存储器上存储有可在处理器上运行的计算机指令,处理器运行计算机指令时执行上述创建时延数据库方法的步骤。[0129]本发明实施例还提供一种在fpga芯片的物理实现步骤中使用时延数据库进行时延计算的方法。[0130]如图5所示,时延计算方法的总体流程图200包括:[0131]步骤s210:获取待评估的net的信息;[0132]步骤s220:根据该信息通过时延数据库计算待评估的net的时延。[0133]在步骤s210的实施中,获取待评估的net的信息包括获取fpga芯片的routinggraph和segment的rc数据,从而得到pin的类型及其在logictile的位置等。routinggraph描述了芯片内部logictile之间segment的连接信息等。[0134]rc数据描述用于计算绕线路径时延的信息等。该信息主要包含两类,一类是与所用库(library)工艺相关、而与走线不相关的固定时延信息,其可用于静态时延分析器进行静态的时延分析;另一类描述了走线相关的动态时延信息,例如各种segment的时延信息,动态时延信息主要包括电容和电阻的大小等信息,其与具体走线的拓扑结构相关,从第一pin与第二pin之间的走线路径可以有很多条,通过rc链的时延模型进行计算会得出不同的时延值。[0135]在步骤s220的实施中,根据获取待评估的net的信息通过时延数据库计算待评估的net的时延。[0136]在具体实施中,可以根据所获取的net的第一pin和第二pin的类型及其在logictile中的位置,查找pathtable而获取路径信息;根据路径信息获取其中的segment及segment时延;根据segment时延计算出从第一pin到第二pin的时延。[0137]在具体实施中,可以根据所获取的net的第一pin和第二pin的类型及其在logictile的位置确定所经过的非clb逻辑重复单元的位置和类型,并且查找difftable而获取相应的差分时延。[0138]在具体实施中,可以根据所获取的net的第一pin和第二pin的类型及其在logictile的位置,查找delaytable而获取最小时延值,根据最小时延值获取从第一pin到第二pin的时延。[0139]在具体实施中,待评估的线网为时钟线网,可以根据时钟线网的第一pin和第二pin查找clocktable,并且计算对应的时延。[0140]如图6所示,在时延计算方法的具体流程图300中,虚线框为使用数据库的具体步骤,包括:[0141]步骤s310:根据线网的第一引脚和第二引脚的类型、坐标及logictile的类型,查找pintable而获取出第一引脚和第二引脚的时延值。[0142]步骤s320:如果经判断线网为时钟线网,则查找clocktable。具体而言,可以根据第一引脚和第二引脚的坐标及类型,查找clocktable而获取时钟线网中从第一引脚到第二引脚的时延值。[0143]步骤s330:如果经判断线网不是时钟线网并且是长线网,则查找longtable。具体而言,可以根据的线网的第一引脚和第二引脚的坐标,查找longtable而获得基于最长segment的整数倍进行的第一拼接和基于非最长segment的组合进行的第二拼接。[0144]步骤s340:如果经判断线网不是时钟线网且不是长线网,则查找delaytable或pathtable。[0145]具体而言,可以根据线网的第一引脚和第二引脚的类型、及其在logictile的位置,查找delaytable而获取最小时延值,其作为从第一引脚到第二引脚的时延;还可以根据线网的第一引脚和第二引脚的类型及其在logictile中的位置,查找pathtable而获取其中的segment及segment的时延,并累加segment的时延而得到从第一引脚到第二引脚的时延。[0146]步骤s350:如果经判断线网跨越了非clb的logictile,则查找difftable,即根据从第一引脚到第二引脚的路径中所跨越的logictile的类型和/或所跨越logictile的数量计算出所产生的差分时延。[0147]步骤s360,获得线网的时延值。具体而言,可以通过clocktable或delaytable直接获得线网的时延值,也可以通过pintable、pathtable、difftable和/或longtable进行加法计算,从而获得线网的时延值。[0148]以上结合图6描述的步骤执行顺序仅为示意,在本发明的其他实施例中,步骤的执行顺序可以变化,例如,可以先查询difftable而后查询delaytable或pathtable。[0149]在具体实施中,线网包括短距离线网和长距离线网;其中,短距离线网中segment的长度都不超过最大长度,而长距离线网中至少一条segment的长度超过最大长度。[0150]对于短距离线网的短距离时延,可以通过pin的固有时延、基准时延和差分时延(差分时延对应的线网跨越了非clb的logictile)进行计算。请参见如下结合公式(1)至(4)的相关描述。[0151]对于长距离线网的长距离时延,其计算包括三部分:x方向基于最长segment的时延、y方向基于最长segment的时延、以及短距离时延。请参见如下结合公式(5)至(7)的相关描述。[0152]如果待评估的线网为非时钟线网,可以通过如下公式计算短距离时延:[0153]delayshort_net=delaypin delaybase delaydiffꢀꢀꢀ(1)[0154]其中,delayshortnet表示短距离时延,delaypin表示pin时延,其基于logictile的类型和pin类型而取自于pintable,delaybase表示基准时延,其基于路径中的各segment而取自于pathtable并求和而计算或基于第一pin和第二pin而取自于delaytable。[0155]delaybase表示第一pin和第二pin对应的所有路径的时延中的最小值,可以通过查找delaytable或者pathtable而获得,这减少了基准时延的计算时间。delaydiff表示差分时延,其为经过非clb的logictile的时延,可以基于logictile的位置和类型通过查找difftable而获得,其中,非clb的logictile包括ram、dsp和iob。[0156]在具体实施中,可以通过如下公式计算pin时延:[0157]delaypin=delayfirst_pin delaysecond_pinꢀꢀꢀ(2)[0158]其中,delayfirst_pin表示第一pin的时延,第一pin可以为sourcepin,delaysecond_pin表示第二pin的时延,第二pin可以为sinkpin。[0159]delayfirst_pin和delaysecond_pin可以通过pintable获取。由于fpga芯片上tile的类型是固定的,每种类型支持的pin的种类是固定的,所以pin的时延可以用tile类型及pin作为关键字存储在pin表中。pin的时延主要为logictile的pin的时延,如clb,dsp,ram,iob等。[0160]在具体实施中,可以通过如下公式计算第一pin的时延:[0161]delayfirst_pin=delayintrinc_pin1 delayclb_to_int_path1ꢀꢀꢀ(3)[0162]其中,delayintrinc_pin1表示第一pin的固有时延,delayclb_to_int_path1表示第一pin和与其邻近的intertile之间的时延。这部分时延值是固定的,可以直接从pintable中查找。[0163]在具体实施中,可以通过如下公式计算第二pin的时延:[0164]delaysecond_pin=delayintrinc_pin2 delayint_to_clb_path2ꢀꢀꢀ(4)[0165]其中,delayintrinc_pin2表示第二pin的固有时延,delayint_to_clb_path2表示邻近第二pin的intertile与第二pin之间的时延。这部分时延值是固定的,可以直接从pintable中查找。[0166]在具体实施中,可以通过如下公式计算长距离时延:[0167]delaylong_net=delayx_dir_long delayy_dir_long delayshort_netꢀꢀꢀ(5)[0168]其中,delaylong_net表示长距离时延,delaylong_net时延共包括三部分:delayx_dir_long表示在x正或负方向基于最长segment的时延,delayy_dir_long表示在y正或负方向基于最长segment的时延,delayshortnet表示在基于最长segment切割线网后所获得的短距离线网的时延(其可以通过公式(1)计算)。[0169]可以基于在x或y方向上超出pathtable查找范围的距离l(其为最长segment的整数倍)在longtable中查找delayx_dir_long或delayy_dir_long。[0170]在具体实施中,可以通过如下公式计算在x正或负方向超出最长segment的时延:[0171]delayx_dir_long=numberx_max×delayx_maxꢀꢀꢀ(6)[0172]其中,numberx_max表示第一最长segment的数目,当x正或负方向的距离超出最长segment的长度时,在x正或负方向的距离除以最长segment的长度整除所得的商为numberx_max,delayx_max表示最长segment的时延。[0173]在具体实施中,可以通过如下公式计算在y正或负方向超出最长segment的时延:[0174]delayy_dir_long=numbery_max×delayy_maxꢀꢀꢀ(7)[0175]其中,numbery_max表示第二最长segment的数目,当y正或负方向的距离超出最长segment的长度时,在y正或负方向的距离除以最长segment的长度整除所得的商为numbery_max,delay_ymax表示最长segment的时延。[0176]典型fpga芯片的开发流程包括功能定义、器件选型、设计输入、功能仿真、综合、综合后仿真、映射打包、布局、布线、后仿真、板级仿真以及芯片编程与调试等主要步骤。其中,在综合之后会生成电路网表,接着通过各物理实现的步骤,例如,映射打包、布局和布线,可以在fpga芯片的各物理实现步骤中使用时延数据库,以完成电路的设计。[0177]待评估的net可能为pin数量多于二个的多引脚线网,需要将多引脚线网拆分成多个具有二个引脚线网,然后对每个具有二个引脚的net,分别根据该net两端引脚的类型及其所在logictile的位置,查找对应的path,根据获取的path和提取出的segment所对应的时延,计算出两端引脚之间的时延。[0178]本发明实施例还提供一种在fpga芯片的物理实现步骤中使用时延数据库的设备,包括存储器和处理器,存储器上存储有可在处理器上运行的计算机指令,处理器运行计算机指令时执行上述时延计算方法的步骤。[0179]虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献