本发明涉及集成电路
技术领域:
,尤其涉及一种基于多核处理器的现场可编程门阵列(FieldProgrammableGateArray,FPGA)芯片的并行布线方法。
背景技术:
:现场可编程门阵列FPGA芯片是一种具有丰富硬件资源、强大并行处理能力和灵活可重配置能力的逻辑器件。这些特征使得FPGA在数据处理、通信、网络等很多领域得到了越来越多的广泛应用。FPGA的软件流程可以包括综合处理、映射、布局和布线。现有技术的布线算法是基于单处理器单线程进行的串行计算节点cost值的过程,即在一个有向图中从一个源节点到目的节点的路径搜索过程。节点cost值是指布线时使用节点的代价评估值,该代价评估值包括通过该节点的物理延时,当前拥挤状态、历史拥挤状态,该节点所处线网的关键度等信息。然而,由于COST值涉及的因素较多,因此的计算量通常比较大。在现有的FPGA芯片的整个软件流程中,布线的运行时间通常占用时间的比例往往在50%以上,也就是说,现有技术的布线运行时间较长。技术实现要素:本申请实施例提供了一种基于多核处理器的现场可编程门阵列芯片的并行布线方法。该方法流程可以分为主线程和至少一个子线程。该方法可以减少布线运行时间。第一方面,该方法可以包括:主线程对FPGA芯片的源节点进行识别,获取源节点关联的第一候选节点;主线程根据第一候选节点的数量和多核处理器的核数,确定子线程的数量,并启动子线程。主线程向启动后的子线程依次发送第一候选节点;主线程接收子线程根据第一候选节点并行计算出的相应COST值。主线程对最低的COST值对应的第一候选节点进行识别,并根据识别结果,对FPGA芯片进行布线。在一个可选的实现中,主线程对FPGA芯片进行识别,获取源节点关联的至少一个第一候选节点之后,主线程将第一候选节点存储在第一队列中。主线程向子线程依次发送第一候选节点,具体包括:主线程接收子线程发送的布线请求;主线程根据布线请求,判断第一队列是否为空;若否,则主线程向空闲的子线程发送所述第一候选节点;若是,则主线程向所有的子线程发送结束线程信号,以通知布线结束。在一个可选的实现中,主线程接收至少一个子线程发送的布线请求之后,主线程向子线程发送请求响应信号,以指示收到布线请求。在一个可选的实现中,当主线程识别出第一候选节点不是目的节点时,主线程对第一候选节点进行识别,获取第一候选节点的第二候选节点,以接收子线程发送的第二候选节点的COST值。在一个可选的实现中,主线程接收子线程根据第一候选节点并行计算出的COST值之后,主线程将第一候选节点以及第一候选节点对应的COST值存储在第二队列中。在一个可选的实现中,主线程对最低的COST值对应的第一候选节点进行识别具体包括:当主线程确定最低的COST值对应的第一候选节点是目的节点主线程对FPGA芯片布线完成;当主线程确定最低的COST值对应的第一候选节点不是目的节点时,主线程获取第一候选节点驱动的第二候选节点,以用于识别出最低的COST值对应的第二候选节点是目的节点,完成布线。本发明实施例提供的一种基于多核处理器的FPGA的并行布线方法流程可以分为主线程和至少一个子线程。主线程对FPGA芯片的源节点进行识别,获取源节点关联的第一候选节点,之后主线程根据第一候选节点的数量,启动与数量相同的子线程。主线程通过向子线程依次发送第一候选节点,接收子线程根据第一候选节点并行计算出的相应COST值。主线程对最低的COST值对应的第一候选节点进行识别,根据识别结果,对FPGA芯片进行布线。该方法通过子线程对候选节点COST值的并行计算,有效的降低了布线的运行时间。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。图1A为现有技术的布线资源结构示意图;图1B为图1A所示的布线资源的一种结构示意图;图2为本发明实施例提供的基于多核处理器的FPGA芯片的并行布线方法流程图;图3A位本发明实施例提供的主线程方法流程示意图;图3B位本发明实施例提供的子线程方法流程示意图。具体实施方式下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。本发明下述实施例中的方法是基于多核处理器的FPGA芯片实现的。在FPGA芯片的布线资源图中,布线资源通常都是以多路选择器(mux)的形式存在于硬件中,通常每个mux都会驱动很多个mux。在图1A所示的布线资源中每个mux都是一个节点。其中以4选1的多路选择器mux为例,该布线资源可以包括源节点muxA0(即开始节点)、中间节点muxB0-muxB2和目的节点muxC0(即结束节点),源节点muxA0可以驱动中间节点muxB0-muxB2,中间节点muxB1-muxB2可以驱动目的节点muxC0。可以理解的是,该布线资源还可以包括源节点muxA1,源节点muxA1可以驱动中间节点muxB0-muxB2中的至少一个节点,或驱动中间节点muxB1-muxB2中的至少一个节点和/或目的节点muxC0。图1B为图1A所示的布线资源的一种结构示意图。A节点为源节点,B节点、C节点和D节点为中间节点,E节点为目的节点。本发明实施例通过多核处理器将布线过程分为主线程和子线程,由此多个子线程来并行计算节点的COST值。其中,依据实际技术情况,子线程的个数可以根据多核处理器的核数而定,也可以根据源节点驱动的节点个数而定。下面将对多核处理器的布线过程进行详细描述。图2为本发明实施例提供的基于多核处理器的FPGA芯片的并行布线方法流程图。如图2所示,该方法可以包括如下步骤:步骤210、主线程启动子线程。主线程是启动FPGA芯片时,自启动的线程,主线程可以获取初始化信息。该初始化信息可以包括布线任务的源节点和目的节点。可选地,在主线程启动子线程之前,主线程根据FPGA芯片的源节点,获取源节点关联的第一候选节点。主线程扫描FPGA芯片,锁定FPGA芯片的源节点,并对源节点进行识别,获取源节点关联的至少一个第一候选节点。主线程根据第一候选节点的数量和多核处理器的核数,确定子线程的数量,如多核处理器为4核处理器,源节点关联8个候选节点,那么主线程只能启动3个子线程(主线程本身占用一个核)。由于计算节点COST值的计算量较大,计算时间较长,故用第一候选节点的数量确定子线程的数量,可以保证每个第一候选节点的COST值均由独立的子线程完成或由空闲的子线程完成。回到步骤210,主线程可以通过向子线程发送触发信号(如高低电平),以启动子线程,使其进入工作状态。步骤220、主线程将获取的第一候选节点存储在第一队列中。步骤230、子线程向主线程发送布线请求。步骤240、主线程接收子线程发送的布线请求。若主线程未接到子线程发送的布线请求,则主线程将继续等待子线程发送的布线请求。可选地,在主线程接收到子线程发送的布线请求后,向子线程发送确认接收的响应信号,以指示主线程接收到该布线请求。步骤250、主线程判断第一队列是否为空队列后,向子线程发送第一信号。当第一队列不是空队列时,主线程向子线程发送第一信号,第一信号可以包括从第一队列中取出的一个第一候选节点后,执行步骤240,主线程再次接收子线程发送的布线请求。可选地,子线程根据接收的第一候选节点,计算该节点的COST值。子线程向主线程发送第二信号,第二信号可以包括该节点的COST值。当第一队列是空队列时,主线程向子线程发送第一信号,第一信号是结束线程信号,以通知布线结束。此时子线程将第一候选节点及其计算出的相应COST值发送至主线程。步骤260、主线程将接收的第一候选节点及其相应的COST值存储在第二队列中。步骤270、当主线程确定第一候选节点是目的节点时,主线程根据COST值,对FPGA芯片进行布线。若该第一候选节点是目的节点,则布线成功,即主线程已找到布线时间最少的布线方案。若该第一候选节点不是目的节点,则主线程从此时的第二队列中取出最低的COST值对应的第一候选节点,主线程将该第一候选节点作为源节点:主线程对该源节点进行识别,获取源节点关联的第二候选节点,返回执行步骤230-步骤270,直到主线程从第二队列中取出最低的COST值对应的候选节点为目的节点为止。需要说明的是,主线程从第一队列或第二队列中取出候选节点后,第一队列或第二队列中将不存在该候选节点。在一个例子中,结合图1B,在图3A所示的主线程方法流程和图3B所示的子线程方法流程中,主线程扫描FPGA芯片,锁定FPGA芯片的源节点A,并对源节点A进行识别,获取源节点A关联的第一候选节点B、C和D,并将获取的第一候选节点B、C和D放入如表1所示的第一队列中。表1第一候选节点BCD如表1所示,第一队列中存储主线程获取的第一候选节点。启动后的子线程向主线程发送布线请求,并等待主线程响应,直到子线程接收到主线程发送的响应信号,才表明主线程接受了该请求。主线程识别第一队列是否为空队列,即是否存有第一候选节点:当第一队列不是空队列时,则主线程从第一队列中依次取出一个第一候选节点发送至子线程,以使子线程根据第一候选节点计算出相应的COST值,之后再次等待子线程的请求。当第一队列是空队列时,则主线程向子线程发送结束线程信号,以通知布线结束,此时子线程将第一候选节点及其计算出的相应COST值发送至主线程。主线程将接收的第一候选节点及其相应的COST值存储在第二队列中,如表2所示的第二队列可以包括如下内容:表2第一候选节点COST值BxCyDz在表2中,候选节点B对应的COST值为x;候选节点C对应的COST值为y;候选节点D对应的COST值为z。(1)主线程从第二队列中取出最低的COST值对应的第一候选节点C,并识别出该第一候选节点C不是目的节点,则主线程获取当前第一候选节点C驱动的全部节点D和E,作为第二候选节点存储在第一队列中,再次执行上述步骤,直到在第二队列中查询到目的节点E为止。(2)主线程从第二队列中取出最低的COST值对应的第一候选节点B,并识别出该第一候选节点B并不是目的节点E,且当前第一候选节点B没有驱动的第二候选节点,则主线程将再次从此时的第二队列中取出最低的COST值对应的第一候选节点C,回到(1)。本发明实施了提供的一种基于多核处理器的FPGA的并行布线方法流程可以分为主线程和至少一个子线程。主线程启动子线程后,对FPGA芯片的源节点进行识别,获取源节点关联的第一候选节点,之后主线程通过向子线程依次发送第一候选节点,接收子线程根据第一候选节点并行计算出的相应COST值。当主线程识别出第一候选节点是结束节点时,主线程根据COST的最小值,对FPGA芯片进行布线。该方法通过子线程对候选节点COST值的并行计算,有效的降低了布线的运行时间。结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器、闪存、只读存储器、可擦除可编程只读寄存器(英文:erasableprogrammableread-onlymemory,EPROM)存储器、电可擦可编程只读存储器存储器(英文:electricallyerasableprogrammableread-onlymemory,EEPROM)、硬盘、只读光盘(英文:compactdiscread-onlymemory,CD-ROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于用户设备中。当然,处理器和存储介质也可以作为分立组件存在于用户设备中。本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。当前第1页1 2 3