CN115496025B - 一种可编程逻辑器件的自动优化布局方法及设备 - Google Patents
一种可编程逻辑器件的自动优化布局方法及设备 Download PDFInfo
- Publication number
- CN115496025B CN115496025B CN202211386718.XA CN202211386718A CN115496025B CN 115496025 B CN115496025 B CN 115496025B CN 202211386718 A CN202211386718 A CN 202211386718A CN 115496025 B CN115496025 B CN 115496025B
- Authority
- CN
- China
- Prior art keywords
- layout
- block
- coordinate
- delay value
- end point
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
- G06F30/347—Physical level, e.g. placement or routing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/392—Floor-planning or layout, e.g. partitioning or placement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/398—Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Architecture (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明提供了一种可编程逻辑器件的自动优化布局方法及设备,该方法主要包括:首先在布局算法完成后,检查布局结果之前进行本发明方法;从时序模块获取延迟较大的路径节点;寻找可以移动的节点;评估移动的结果。本方案能够实现逻辑器件布局的自动判断和优化,方法便捷,适应性广。
Description
技术领域
本发明属于可编程逻辑器件(FPGA)的软件设计领域,具体涉及可编程逻辑器件电子设计自动化(EDA)软件的布局算法,尤其涉及一种可编程逻辑器件的自动优化布局方法及设备。
背景技术
当前现场可编程门阵列(FPGA)已经成为数字电路领域一种不可或缺的实现途径,在开发周期和可编程灵活性方面有着明显的优势,其应用领域也日趋广泛,涉及到通信、航天、医疗、数学计算、图像处理、消费产品等诸多领域。国际市场方面,几十年来,Xilinx和Altera两大巨头几乎垄断了所有核心技术,占领了几乎90%的市场份额。反观国内FPGA产业正面临着技术壁垒较高、开发周期长、资金投入大等困难。在国内的EDA软件中,大多性能不够优秀,FPGA CAD流程中,经常会出现时序不满足要求的情况,而算法的调整并不能完全解决问题时,只有一部分经验丰富的设计者会尝试手动调整布局的位置,大部分设计者并不会去根据时序报告分析布局关键点,为了模仿专业人员的手动布局调整手段,解决现有的EDA软件中存在的缺陷,促成了本方案的开发。
发明内容
有鉴于现有技术中存在的问题,本发明提供了一种可编程逻辑器件的自动优化布局方法及设备,具体而言,本发明提供了如下技术方案:
一方面,本发明实施例提供了一种可编程逻辑器件的自动优化布局方法,所述方法包括:
S1、设置用户约束识别,并在用户身份确认后,进入S2;
S2、设置外循环最大次数,并启动外循环;外循环启动后,判断是否达到外循环最大次数,如果未达到,则获取一组或多组信号数据,所述信号数据至少包括延时值;当延时值满足延时值判断条件时,结束优化过程,否则进入S3,执行内循环优化过程;所述延时值,指要求某一信号到达的时间减去该信号实际到达的时间,延时值可以是负数、0或者正数,其单位可以是皮秒、纳秒等,可以基于系统的实际需要来设定;
如果达到外循环最大次数,则结束优化过程;
S3、记录当前外循环针对的信号数据中的延时值,并确定起点布局块编号、终点布局块编号;基于起点布局块编号、终点布局块编号确定需要移动的布局目标;搜索并形成可用空块集合,记录可用空块集合中的可用坐标,形成坐标集合,基于坐标集合及起点和/或终点坐标,确定目标空块,将起点或终点移向至目标空块,计算得到更新延时值;当更新延时值满足要求时,则完成一轮优化,并返回S2,否则,尝试坐标集合中的下一坐标,若坐标集合中全部坐标使用完毕,则返回S2。
优选的,所述S1中,设置用户约束识别,通过写入标志,实现用户的权限确认,并且在原通用布局算法全部完成后,在启动布局结果检查及优化前,通过确认用户约束识别写入的标志,在用户身份确认后,启动进入S2的优化布局过程。
优选的,所述信号数据还包括:信号编号、对应终点编号、对应终点是否为CLB块。
优选的,所述S2中,每一次外循环启动后,向时序模块请求当前最差的延迟信号段,所述最差的延迟信号段的数量由向时序模块发送的请求中的数量slack_cnt决定;
当获取多个最差的延迟信号段时,则获取前slack_cnt个最差的延迟信号端;
每个最差延迟信号段对应一组信号数据。
优选的,所述S2中延时值判断的具体方式为:
获得的每组信号数据中的延时值,并基于延时值由最差至最好进行信号数据的排序,当第N次外循环中的某个延时值大于等于预设延时值,则满足延时值判断条件,其中N为大于0的自然数。预设延时值例如可以为0。
优选的,所述S3中,确定需要移动的布局目标包括:
基于信号编号确定起点布局块编号,基于对应终点编号、对应终点是否为CLB块确定终点布局块编号;
上述确定的方法为:通过访问全局布局类的成员来确定,或者通过遍历电路设计数据结构进行检索来确定。
优选的,确定需要移动的布局目标还包括:
S301、判断终点布局块是否是进位链,如果否,则执行S302,如果是,则执行S303;
S302、移动终点布局块;
S303、判断起点布局块是否是进位链,如果是,则进入S302,如果否,则移动起点布局块。
优选的,所述S3中,搜索并形成可用空块集合的方式为:
以确定的布局目标中的起点布局块、终点布局块形成的矩形范围为搜索范围,进行可用空块的搜索;当起点布局块或终点布局块涉及进位链时,将搜索范围扩大至进位链延伸区域;当调整的路径包含第一代最关键路径时,扩大搜索范围。
优选的,所述S3中,搜索并形成可用空块集合的方式为:以确定的布局目标中的起点布局块、终点布局块分别为椭圆的焦点,基于起点布局块、终点布局块之间的曼哈顿距离,确定所述椭圆的短半轴,以所述椭圆的范围为搜索范围。
优选的,所述短半轴为焦点之间的曼哈顿距离除以10,长半轴通过焦距和短半轴就可以用椭圆公式计算出来,此处不再赘述。
优选的,所述S3中,确定目标空块的方式为:
将起点坐标与终点坐标连线的中心点作为最优点,计算坐标集合中的各个坐标与所述最优点之间的距离,将距离最小的坐标集合中的坐标作为目标空块。
优选的,所述S3中,确定目标空块的方式为:
获取需要移动的布局目标连接的其他块的坐标,并结合起点坐标、终点坐标,分别计算与坐标集合中的各个坐标之间的距离,并结合时序优劣程度进行加权,获取坐标集合中的各个坐标的评分值,基于评分值排序,确定坐标集合中的最优坐标,并将最优坐标作为目标空块。
优选的,所述S3中,判断更新延时值满足要求中,具体的方法为:
当更新延时值与更新前延时值比较,性能变好,且最关键路径最差的延时值不变差时,更新延时值满足要求;否则交换失败,从坐标集合中移除当前失败的坐标。
此外,本发明还提供了一种可编程逻辑器件的自动优化布局设备,所述设备至少包含处理器及存储器,所述存储器存储有计算机指令,所述处理器可调用所述存储器中的计算机指令以执行如上所述的可编程逻辑器件的自动优化布局方法。
与现有技术相比,本发明技术方案能够实现EDA中逻辑器件布局的自动优化和判断,每一次寻找移动并计算只需要几秒钟,大大降低了人工操作的时间成本。现有的常规布局算法,在算法调整布局的过程中会逐步收敛,但是收敛的同时极易陷入局部最优陷阱,无法跳出,本发明通过时序路径,直接在全局范围内进行搜索和调整,探索全局最优解,避免陷入局部最优。此外,现有技术中的算法绝大部分采用随机算法,本发明通过定向搜索方式,减少了搜索范围,有效减少了算法时间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例的流程结构框图;
图2为本发明实施例的外循环的结构流程图;
图3为本发明实施例的搜索可移向目标空快的方法示意图;
图4为本发明实施例的布局交换循环流程图;
图5为本发明实施例的椭圆搜索范围搜索可移向目标空块的方法示意图。
具体实施方式
下面结合附图对本发明实施例进行详细描述。应当明确,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本领域技术人员应当知晓,下述具体实施例或具体实施方式,是本发明为进一步解释具体的发明内容而列举的一系列优化的设置方式,而该些设置方式之间均是可以相互结合或者相互关联使用的,除非在本发明明确提出了其中某些或某一具体实施例或实施方式无法与其他的实施例或实施方式进行关联设置或共同使用。同时,下述的具体实施例或实施方式仅作为最优化的设置方式,而不作为限定本发明的保护范围的理解。
本发明提供了一种针对EDA软件的自动优化布局方法。主要分为如下步骤:首先在布局算法完成后,检查布局结果之前进行本发明方法;从时序模块获取延迟较大的路径节点;寻找可以移动的节点;评估移动的结果。总体的流程结构框图如图1所示。
本技术的自动优化布局方法详细实现描述如下:
1、首先设置用户约束识别,例如我们可以设置一个命名为“AUTO_MANUALPLACE”的标志位进行用户约束识别。约束检查时写入标志并在布局算法完成后、布局结果检查前,确认标志,当标志确认后则启动本发明自动优化布局的过程。此处,在优选的实施方式中,写入标志就是用户设置约束指令,要求在布局完成后进行自动优化布局流程,布局读取这些指令生成一个标志位,在流程中检测标志位,从而完成对应的布局优化操作中的对应方法,标志位的设置,可以采用本领域中的现有技术,只要能实现检测并执行或启动对应的优化操作等步骤的功能即可。
2、设置算法外循环的最大次数。本实施例中,最大循环次数可以设置为20,但不局限于20,主要与时序违例的信号个数相关,其大小也影响了运行的时间。通常时序违例信号个数太多的原因主要应该从设计源头去寻找,个别时序违例用算法才有可能调整好。所以本实施例中设置了最多优化20个信号节点。
每一次外循环开始需要向时序模块请求当前最差的延迟信号段,此处,申请的最差的延迟信号段可以是多个,通常,我们申请的最差延迟信号段可以从1开始,如果整体优化失败,那么再次申请时可以请求最差的2个延迟信号段,即获得最差的2条路径,这样再次优化时,可以优化第二条路径,而不需要再次优化第一条已经优化失败的路径,如果第2条路径优化又一次失败,则下一次请求最差的3个延迟信号段,则优化时前两个已优化失败的信号段不需要再次进行优化,直接从未优化的第3条进行。此处,本领域技术人员知晓,路径与信号段之间是一对一的对应关系。
本实施例中,设置slack_cnt代表输入请求的数量,即输入了slack_cnt个请求,那么时序返回的是一组与输入的请求的数量相同的信号数据(即返回slack_cnt个信号数据),在一个优选的实施方式中,可以从延时最差的一段开始,升序排列。每一组信号数据由四个数据组成,分别是:信号编号、对应终点编号、对应终点是否为CLB块(即逻辑簇块)、延时值。
此处,所述延时值,指要求某一信号到达的时间减去该信号实际到达的时间,延时值可以是负数、0或者正数,其单位可以是皮秒、纳秒等,可以基于系统的实际需要来设定;例如,系统要求某一信号到达某一指定位置的时间是10ns,该信号实际到达的时间是15ns,那么该延时值就是-5ns。
外循环的结构流程图如图2所示。我们在设置了外循环的最大次数后,当没有达到这一最大循环次数前,时序接口获取延时数据。我们以延时值是否大于0为例来说明本实施例的外循环判断,我们在获得每组信号数据后,按照延时值或延时情况进行排序,例如5条最差路径时,其延时情况按照延时值排序例如为-4ns、-3ns、-2ns、-1ns、0ns,即从最差到次差依次排序,并获得其中的延时值,如果最差的延时值都大于0了,说明时序都满足了,提前退出外循环,结束算法优化过程。同样的,如果运行到第N次外循环了,且第N个延时值大于等于0了,那么说明接下来都满足时序,同样退出外循环结束算法优化过程。当然这里的0是最常用的值,但不限于0。如果需要延时达到某个值即可,可以改变基准,将延时值的判断阈值调整为其他的数值。如果最差时序的延时值不满足延时值的判断阈值要求,或者当前循环中时序的延时值不满足延时值的判断阈值要求,即小于等于判断阈值,则随后进入内循环优化过程。在内循环优化过程后,再次进入外循环次数限制的判断步骤,重新进入外循环,直至延时值满足要求,结束优化过程。
3、内循环是从时序获取的每一组信号数据进行遍历(即前面-4ns、-3ns、-2ns、-1ns、0ns所对应的每组信号数据),同时根据当前外循环的次数决定从第几个信号进行优化过程。因为同时进行优化信号数量参数通常设置为1,那么在第N次外循环中的内循环优化过程就从时序接口返回的N个数据中的第N个进行优化,因为前N-1个在之前的流程中已经优化完毕。
进入优化过程,首先需要确认延时是否不满足预设阈值的要求,例如本实施例中的延时值小于0,记录当前的延时值,传入优化目标的前三个参数,即前文所述的信号编号、对应终点编号、对应终点是否为逻辑簇块。在此过程中,时序返回的信号数据的对应终点有可能是逻辑簇块也有可能是逻辑单元,如果对应的终点是逻辑单元,那么优选的,我们还需要通过遍历全部的逻辑簇块找各自的内部逻辑单元,以确定这一逻辑单元对应的逻辑簇块,那么我们就可以知道这一逻辑单元所对应的是哪一个逻辑簇块了,确定逻辑簇块后,继续后续的优化过程。即进行布局优化调整时,我们的目标是逻辑簇块,如果时序返回的并非逻辑簇块,则通过这一时序路径找到对应的逻辑簇块。
首先通过第一个参数:信号编号来确定优化目标的起点布局块编号,然后通过第二、第三个参数确认终点布局块编号。确认方法包括全局布局类的成员访问和遍历电路设计数据结构检索,该些确认方法可以采用本领域中的常用的或现有的成员访问和遍历方法。优选的,对于此处的确认方法,我们可以首先遍历信号集合找出第一个参数对应的信号,再通过此信号的SourcePin(即第一个管脚),就可以知道起点布局块编号了;然后,第二的参数,通过上面第一个参数中确定的这个信号,遍历这个信号所有的终点即可用第二个参数找出对应终点逻辑簇块或者逻辑单元,只不过在第三个参数(即对应终点是否为逻辑簇块)不是逻辑簇块的时候,我们需要从逻辑单元找到对应的逻辑簇块,找对应的逻辑簇块的方法可以按照上一段落中采用的方法,当然,也可以采用现有技术中的已有其他方式来实现。
这样就得到了需要移动的布局目标,即需要移动的起点或者终点。本实施例中,我们优先移动终点,因为起点的块通常影响的信号连接更多。同时,在一个更为优选的实施方式中,优先移动非进位链上的块,因为进位链需要整体移动,影响也更复杂。进位链即因为进位关系需要布局在同一列且连在一起的多个布局块。即在这一判断过程中,结合图4所示,先判断终点是否是进位链,如果不是,则优先移动终点;如果终点是进位链,则判断起点是否是进位链,如果此时起点是进位链,那么我们依然优先移动终点,如果起点不是进位链,那么我们移动起点。
确定了移动目标后,结合图3,进行搜索可以移向的目标空块,形成可用空块集合。在一个优选的实施方式中,我们优先选择没有布局的空块,原因是两个布局块交换会对其他不需要调整的信号造成较大影响,而选择空块进行交换或调整,则对其他不需要调整的信号造成的影响较小。搜索可用空块的范围为布局目标的起点终点组成的一个矩形范围,同时当调整的为第一代最关键路径时范围扩大两个单位,此处的单位,指一个布局块的大小,即以一个标准布局块的大小为一个单位,扩大为两个单位,就是向外扩展为两个布局块大小的范围,该范围的大小,是本领域技术人员能够清晰界定的,此处不再赘述;涉及进位链时,将范围扩大至进位链延伸区域,如图3右侧图所示,因为需要找整个链范围都是空块的交换区域,此处,本发明进一步考虑到,进位链视为一串不能被打断的布局块,所以需要根据起点、终点所对应的进位链的范围去扩展该矩形范围。
结合图3,我们遍历矩形布局块移动搜索范围区域,即图中虚线框区域,找出所有可用坐标记录为一个集合,形成坐标集合,此处,可用坐标,即非进位链上的同类型布局块对应的坐标。同时本实施例还对这个坐标集合建立一个评分机制,来寻找最适合移向的空块,本实施例中,评分机制可以设置为:计算坐标集合中的这些坐标到这个矩形范围(即矩形布局块移动搜索范围)中心点的第一距离,然后用整个芯片的对角线距离减去上面计算得到的第一距离的值,作为评分值,评分值越大越好。本实施例中调整的制定方式为:起点与终点连线的中心点为最优点,可用坐标集合逐一计算与中心点(即最优点)的距离,这一距离即为上述的第一距离,该距离最小的即为当前最适合的目标空块。这样设计的理由还包括起点终点是时序指定的差延时路径,所以需要调近两点的距离,但是不能过分调近,上述的优选实施方式简单易算。除此之外,还可以采用其他的调整方法,包括计算出移动布局块连接的其他块的坐标,共同参与距离计算并按时序优劣程度加权,越差的时序重要性越高,求得总评分。同时本发明的搜索区域也不局限于此三种情况,还可以为起点、终点以及它们直接连接的其他布局块组成的矩形范围框,我们可以根据实际布局的影响程度要求等进行调整。第一距离的计算,可以采用本领域中可用的坐标距离计算方法,例如直线距离等,此处不再赘述。
结合图5,在又一个实施例中,除了上述图3所示的矩形搜索范围之外,我们还可以采用椭圆搜索范围的方式,该方式相比矩形搜索方式,实测节省了约60%的时间,且性能对比矩形范围搜索差异较小。
如图3所示,在矩形范围较大的时候,例如长+宽>15(此处以布局块单位长度为单位),比如10*10的搜索范围,那么最坏的情况,矩形搜索方法需要交换98(即100-2次)次位置并计算时序,这个过程可能会花费几分钟。如果范围更大,那么时间代价会以平方倍数增加。在本优选的实施例中,我们还可以采用椭圆方案,如图5所示,原方案在block1(即布局块1)和block2(即布局块2)之间采用矩形搜索范围,现在采用椭圆范围,以两个block为椭圆的焦点,用两个布局块(即两个block)之间的曼哈顿距离(即d(i,j)=|xi-xj|+|yi-yj|,(xi,yi)、(xj,yj)对应为两个block的坐标)除以10作为椭圆的短半轴b。长半轴通过焦距2c和短半轴b就可以用椭圆公式计算出来。
举例:图5中矩形为10*10大小,那么椭圆,b=2。椭圆面积约为46.17,相比矩形面积100,减少了一半多。本领域技术人员能够明确知晓,本方案提出的椭圆搜索范围方案能够满足优化性能的要求。在采用椭圆形范围时,仅考虑进位链是否能够根据后续的布局块移动的位置要求等整体移动过来即可。
额外优选的,结合一具体的实施方式,按时序优劣程度加权的方式重新计算评分值具体可以设置如下:假设现在我们准备调整CLB1-CLB2一段路径,同时CLB2又有CLB3连接,加权算法在原来的评分基础上,如果新位置导致了到CLB3的距离变远,且CLB2-CLB3这一段路径的延时也是不满足时序要求的(即slack为负值),那么新评分值的计算方式可以设置为:,其中,A表示原评分值,表示新增连接点与原路径终点形成的路径对应的延时值(即slack值),表示之前统计过的整个电路最差的延时值(即最差的slack值),表示到新增连接点增加的距离,该增加的距离,即新的CLB2-CLB3距离,减去原始的CLB2-CLB3的距离,即新增加出来的距离。上述公式中的比值可见,越差的时序重要性越高。
最后,进行布局交换。将终点或起点交换到(或移动到)当前评价中得分最高或最适合移向的目标空块。布局交换涉及了全局布局数据中的坐标与占用等数据改写;进一步的,布局交换主要涉及两个数据结构,一个是逻辑上布局块列表,可以存放每个逻辑布局块的物理位置,还有一个是物理上的布局块列表,存放的是每一个逻辑布局块对应的编号。布局交换就是将逻辑布局块列表里的物理位置信息进行交换,物理布局块列表里的逻辑布局块编号交换,即完成了一次布局块交换,即实际布局的物理块的交换后,其对应的逻辑布局块的编号也进行相应的交换,从而完成在实际布局交换后,其逻辑存储的对应编号也相应调整正确。
然后就需要将本次交换涉及影响到的所有信号传入增量时序更新接口,时序模块进行更新,计算新的延时值。再调用时序的关键路径延时接口,将当前调整的信号延时与之前的做比较,如果提高了延时值,即性能变好了,并且同时,比较最关键路径最差的延时值(即时序数据的第一组)不能变差,这样就说明本次交换是有效的,否则交换失败,从可用坐标集合中移除当前失败的坐标,回到寻找最适合移向的空块步骤,再次循环尝试。如果最后可用坐标集合没有元素了,说明本轮的这条信号优化失败,则进入下一个外循环过程。
本方案在又一种实施方式下,可以通过设备的方式来实现,该设备可以包括执行上述各个实施方式中各个或几个步骤的相应模块。因此,可以由相应模块执行上述各个实施方式的每个步骤或几个步骤,并且该电子设备可以包括这些模块中的一个或多个模块。模块可以是专门被配置为执行相应步骤的一个或多个硬件模块、或者由被配置为执行相应步骤的处理器来实现、或者存储在计算机可读介质内用于由处理器来实现、或者通过某种组合来实现。
该设备可以利用总线架构来实现。总线架构可以包括任何数量的互连总线和桥接器,这取决于硬件的特定应用和总体设计约束。总线将包括一个或多个处理器、存储器和/或硬件模块的各种电路连接到一起。总线还可以将诸如外围设备、电压调节器、功率管理电路、外部天线等的各种其它电路连接。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本方案的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本方案的实施方式所属技术领域的技术人员所理解。处理器执行上文所描述的各个方法和处理。例如,本方案中的方法实施方式可以被实现为软件程序,其被有形地包含于机器可读介质,例如存储器。在一些实施方式中,软件程序的部分或者全部可以经由存储器和/或通信接口而被载入和/或安装。当软件程序加载到存储器并由处理器执行时,可以执行上文描述的方法中的一个或多个步骤。备选地,在其他实施方式中,处理器可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行上述方法之一。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,可以具体实现在任何可读存储介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (8)
1.一种可编程逻辑器件的自动优化布局方法,其特征在于,所述方法包括:
S1、设置用户约束识别,并在用户身份确认后,进入S2;
S2、设置外循环最大次数,并启动外循环;外循环启动后,判断是否达到外循环最大次数,如果未达到,则获取一组或多组信号数据,所述信号数据至少包括延时值;当延时值满足延时值判断条件时,结束优化过程,否则进入S3,执行内循环优化过程;如果达到外循环最大次数,则结束优化过程;所述延时值,指要求某一信号到达的时间减去该信号实际到达的时间;
S3、记录当前外循环针对的信号数据中的延时值,并确定起点布局块编号、终点布局块编号;基于起点布局块编号、终点布局块编号确定需要移动的布局目标;搜索并形成可用空块集合,记录可用空块集合中的可用坐标,形成坐标集合,基于坐标集合及起点和/或终点坐标,确定目标空块,将起点或终点移向至目标空块,计算得到更新延时值;当更新延时值满足要求时,则完成一轮优化,并返回S2,否则,尝试坐标集合中的下一坐标,若坐标集合中全部坐标使用完毕,则返回S2;
所述S2中延时值判断的具体方式为:
获得的每组信号数据中的延时值,并基于延时值由最差至最好进行信号数据的排序,当第N次外循环中的某个延时值大于等于预设延时值,则满足延时值判断条件,其中N为大于0的自然数;
所述S3中,搜索并形成可用空块集合的方式为:
以确定的布局目标中的起点布局块、终点布局块形成的矩形范围为搜索范围,进行可用空块的搜索;当起点布局块或终点布局块涉及进位链时,将搜索范围扩大至进位链延伸区域;当调整的路径包含第一代最关键路径时,扩大搜索范围;或者
以确定的布局目标中的起点布局块、终点布局块分别为椭圆的焦点,基于起点布局块、终点布局块之间的曼哈顿距离,确定所述椭圆的短半轴,以所述椭圆的范围为搜索范围。
2.根据权利要求1所述的方法,其特征在于,所述S2中,每一次外循环启动后,向时序模块请求当前最差的延迟信号段,所述最差的延迟信号段的数量由向时序模块发送的请求中的数量slack_cnt决定;
当获取多个最差的延迟信号段时,则获取前slack_cnt个最差的延迟信号段;
每个最差延迟信号段对应一组信号数据。
3.根据权利要求1所述的方法,其特征在于,所述S3中,确定需要移动的布局目标包括:
基于信号编号确定起点布局块编号,基于对应终点编号、对应终点是否为CLB块确定终点布局块编号;
上述确定的方法为:通过访问全局布局类的成员来确定,或者通过遍历电路设计数据结构进行检索来确定。
4.根据权利要求3所述的方法,其特征在于,确定需要移动的布局目标还包括:
S301、判断终点布局块是否是进位链,如果否,则执行S302,如果是,则执行S303;
S302、移动终点布局块;
S303、判断起点布局块是否是进位链,如果是,则进入S302,如果否,则移动起点布局块。
5.根据权利要求1所述的方法,其特征在于,所述S3中,确定目标空块的方式为:
将起点坐标与终点坐标连线的中心点作为最优点,计算坐标集合中的各个坐标与所述最优点之间的距离,将距离最小的坐标集合中的坐标作为目标空块。
6.根据权利要求1所述的方法,其特征在于,所述S3中,确定目标空块的方式为:
获取需要移动的布局目标连接的其他块的坐标,并结合起点坐标、终点坐标,分别计算与坐标集合中的各个坐标之间的距离,并结合时序优劣程度进行加权,获取坐标集合中的各个坐标的评分值,基于评分值排序,确定坐标集合中的最优坐标,并将最优坐标作为目标空块。
7.根据权利要求1所述的方法,其特征在于,所述S3中,判断更新延时值满足要求中,具体的方法为:
当更新延时值与更新前延时值比较,性能变好,且最关键路径最差的延时值不变差时,更新延时值满足要求;否则交换失败,从坐标集合中移除当前失败的坐标。
8.一种可编程逻辑器件的自动优化布局设备,其特征在于,所述设备至少包含处理器及存储器,所述存储器存储有计算机指令,所述处理器可调用所述存储器中的计算机指令以执行权利要求1-7任一所述的可编程逻辑器件的自动优化布局方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211386718.XA CN115496025B (zh) | 2022-11-07 | 2022-11-07 | 一种可编程逻辑器件的自动优化布局方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211386718.XA CN115496025B (zh) | 2022-11-07 | 2022-11-07 | 一种可编程逻辑器件的自动优化布局方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115496025A CN115496025A (zh) | 2022-12-20 |
CN115496025B true CN115496025B (zh) | 2023-03-03 |
Family
ID=85115537
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211386718.XA Active CN115496025B (zh) | 2022-11-07 | 2022-11-07 | 一种可编程逻辑器件的自动优化布局方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115496025B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113505561A (zh) * | 2021-06-30 | 2021-10-15 | 北京时代民芯科技有限公司 | 一种软错误感知的fpga布局布线方法 |
CN113919268A (zh) * | 2021-09-26 | 2022-01-11 | 深圳市紫光同创电子有限公司 | 可编程逻辑器件布局优化方法、装置及相关设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9767170B2 (en) * | 2014-10-16 | 2017-09-19 | International Business Machines Corporation | Storage area network zone optimization |
-
2022
- 2022-11-07 CN CN202211386718.XA patent/CN115496025B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113505561A (zh) * | 2021-06-30 | 2021-10-15 | 北京时代民芯科技有限公司 | 一种软错误感知的fpga布局布线方法 |
CN113919268A (zh) * | 2021-09-26 | 2022-01-11 | 深圳市紫光同创电子有限公司 | 可编程逻辑器件布局优化方法、装置及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN115496025A (zh) | 2022-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9626465B2 (en) | Arbiter verification | |
CN111950225B (zh) | 一种芯片布局方法、装置、存储介质和电子设备 | |
US7325218B2 (en) | Wiring method, program, and apparatus | |
CN112733486B (zh) | 一种用于芯片设计的智能布线方法及系统 | |
CN116911246B (zh) | 芯片设计的布线规划方法及相关设备 | |
US8181139B1 (en) | Multi-priority placement for configuring programmable logic devices | |
US8141022B2 (en) | Method and apparatus for hierarchical design of semiconductor integrated circuit | |
US20110093827A1 (en) | Semiconductor device design method | |
CN115062570B (zh) | 一种形式验证方法、装置、设备及计算机存储介质 | |
CN114386356A (zh) | 芯片设计的布线方法及装置、设备、存储介质 | |
US7836421B2 (en) | Semiconductor layout design apparatus and method for evaluating a floorplan using distances between standard cells and macrocells | |
CN115900742A (zh) | 车辆的参考轨迹规划方法、装置、电子设备及存储介质 | |
CN115496025B (zh) | 一种可编程逻辑器件的自动优化布局方法及设备 | |
CN117151003B (zh) | 一种基于时钟域划分的fpga布局方法及装置 | |
CN116738925B (zh) | 一种fpga详细布局方法及系统 | |
TWI460680B (zh) | 密度式資料分群方法 | |
JPH0714927A (ja) | 自動配置設計方法および自動配置設計装置 | |
CN116644708A (zh) | 布局布线优化方法、装置、计算机设备和存储介质 | |
CN113486613B (zh) | 数据链路的提取方法、装置、电子设备和存储介质 | |
JPWO2004046975A1 (ja) | 電子回路設計のタイミング改善方法、プログラム及び装置 | |
CN112183006A (zh) | 时延评估方法及装置、可读存储介质 | |
CN112957734B (zh) | 一种基于二次搜索的地图寻路方法及装置 | |
CN112668258B (zh) | 一种广义对齐的布线方法 | |
CN117521586B (zh) | 芯片设计的布局规划方法及相关设备 | |
CN114896941B (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 |