CN114116197A - 可编程逻辑器件及其内存管理系统 - Google Patents
可编程逻辑器件及其内存管理系统 Download PDFInfo
- Publication number
- CN114116197A CN114116197A CN202111214518.1A CN202111214518A CN114116197A CN 114116197 A CN114116197 A CN 114116197A CN 202111214518 A CN202111214518 A CN 202111214518A CN 114116197 A CN114116197 A CN 114116197A
- Authority
- CN
- China
- Prior art keywords
- wiring
- programmable logic
- logic device
- temporary
- memory
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0215—Addressing or allocation; Relocation with look ahead addressing means
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Logic Circuits (AREA)
Abstract
本发明公开了一种可编程逻辑器件及其内存管理系统,属于集成电路设计领域。它包括:布线资源管理模块,用于将芯片的布线资源信息录入至预设的布线资源图中,通过预设的布线资源管理器对布线资源图内的布线资源进行读写访问控制;用户信息管理模块,用于存储各个待布线的用户设计电路连线信息;临时容器管理模块,用于在可编程逻辑器件执行布线算法流程时临时构建至少一个内存池,内存池内存储有若干临时布线容器;参数管理模块,用于管理可编程逻辑器件在执行布线算法流程时所需的布线参数。本发明能支持多个CPU核心执行并行布线算法流程,减少过多临界资源发生访问冲突的情况出现,会提高布线算法地开发效率,从而加快布线的整体流程。
Description
技术领域
本发明属于集成电路设计领域,涉及现场可编程逻辑器件(简称可编程逻辑器件)集成电路软件工具设计技术,尤其涉及一种可编程逻辑器件及其内存管理系统。
背景技术
可编程逻辑器件在执行布线算法流程时(包括串行布线算法流程和并行布线算法流程),会调用可编程逻辑器件内存(存储器)内的布线数据,如果能高效的管理可编程逻辑器件内存内的布线数据,则能很好的提高布线算法地开发效率,从而加快布线的整体流程。
现有的可编程逻辑器件大多采用串行流程进行集成电路设计,该可编程逻辑器件在管理内存时为了适用于所述串行布线算法流程,在实际工作过程中,该可编程逻辑器件不能通过让多个CPU核心执行并行布线算法流程的方式来实现内存管理,容易出现过多临界资源发生访问冲突情况,这样会让集成电路设计过程中的布线算法开发效率较低,减慢了布线的整体流程。
现有的可编程逻辑器件还有一部分采用并行流程来进行集成电路设计,该可编程逻辑器件在管理内存时并没有对内存内的布线数据进行统一整理、划分,而是让各并行布置的线程所对应的布线器在完成各自的布线算法任务时,根据自身需要自行任意调用所述内存内的布线数据。故该可编程逻辑器件管理内存的方式较为混乱,还是容易出现过多临界资源发生访问冲突情况,这同样也会让集成电路设计过程中的布线算法开发效率较低,进而减慢了布线的整体流程。
发明内容
本发明实施例提供一种可编程逻辑器件及其内存管理系统,能支持多个 CPU核心执行并行布线算法流程,减少过多临界资源发生访问冲突的情况出现,会提高布线算法地开发效率,从而加快布线的整体流程。
本发明的技术方案如下:提供一种可编程逻辑器件的内存管理系统,所述内存管理系统包括:
布线资源管理模块,用于将芯片的布线资源信息录入至预设的布线资源图中,通过预设的布线资源管理器对所述布线资源图内的布线资源进行读写访问控制;
用户信息管理模块,用于存储各个待布线的用户设计电路连线信息;
临时容器管理模块,用于在所述可编程逻辑器件执行布线算法流程时临时构建至少一个内存池,所述内存池内存储有若干临时布线容器,所述临时布线容器用于存储所述可编程逻辑器件在执行布线算法流程时产生的临时数据;
参数管理模块,用于管理所述可编程逻辑器件在执行布线算法流程时所需的布线参数。
优选的,所述布线资源管理模块包括:
资源图录入单元,用于对芯片中的布线资源进行分类,将完成分类的布线资源按照可编程逻辑器件预设的运行逻辑录入至布线资源图中;
资源管理器单元,用于确定可编程逻辑器件的布线模块在访问所述布线资源图时是否需要通过所述布线资源管理器进行加锁。
优选的,所述资源管理器模块,还用于提供所述布线算法流程中各代理的访问接口,将所述布线资源图的所有写入方法均声明为由所述布线资源管理器私有。
优选的,所述临时容器管理模块包括:
临时数组管理单元,用于管理临时数组,所述临时数组用于存储临时数据;
临时链表管理单元,用于管理临时链表,所述临时链表用于临时存储所述可编程逻辑器件在执行布线算法流程时所需的表格。
优选的,所述临时数组管理单元,还用于判断可编程逻辑器件中执行布线算法流程的语言是否为能自行管理内存的计算机语言;若是,则在执行所述布线算法流程时将所述计算机语言的内存数据索引清空,以让所述计算机语言自行管理自身的内存数据;若否,则在布线算法流程结束时,销毁所述布线算法流程的计算机语言的内存数据;
所述临时链表管理单元,还用于通过预设的块分配器为不同的临时链表申请对应内存,所述内存内对应设有至少一个临时链表。
优选的,所述参数管理模块包括:
超参数管理单元,用于管理超参数,所述超参数为在可编程逻辑器件在执行布线算法流程时不会改变的第一布线参数;
自适应参数管理单元,用于管理自适应参数,所述自适应参数为可编程逻辑器件在执行布线算法流程时会自适应性调整的第二布线参数。
优选的,所述超参数管理单元,还用于根据所述用户设计的电路连线信息设置多个超参数,获取所述多个超参数中能让用户的设计时序最优的一组超参数,将获取到的所述超参数发送给可编程逻辑器件的布线模块;
所述自适应参数管理单元,还用于在所述可编程逻辑器件的布线算法流程发生改变时,对所述自适应参数进行调整,将调整后的自适应参数发送给可编程逻辑器件的布线模块。
优选的,所述超参数管理单元还用于获取所述可编程逻辑器件在执行所述布线算法流程之前统一读入的只读参数,将获取到的所述只读参数发送给可编程逻辑器件的布线模块。
本发明的另一技术方案为:提供一种可编程逻辑器件,包括上述可编程逻辑器件的内存管理系统。
可编程逻辑器件执行多线程并行布线流程,执行布线流程时,每个所述线程内至少布置有一个布线器,每个所述线程均通过各自的布线器分别执行各自线程的布线算法流程;
布线器在执行各自线程的布线算法流程的过程中,会调用芯片内存内部的布线资源,调用布线资源时可以通过布线资源管理器调用,也可以直接调用,其中,布线资源图内的只写资源必须要通过布线资源管理器才能调用;此时,发明人就单独划分一个内存区间(资源图管理模块)来放置、管理布线资源图和布线资源管理器;
布线器在执行各自线程的布线算法流程的过程中,会直接调用用户设计信息,也即布线器在运行时会直接读取各个待布线的用户设计电路连线信息;此时,发明人就单独划分一个内存区间(用户信息管理模块)来放置、管理这些用户设计信息;
布线器在执行各自线程的布线算法流程的过程中,会有一些数据随着布线算法启动而创建,随布线算法结束而销毁,而放置这些临时数据的容器(临时数组和临时表格)也即为临时布线容器,发明人另外单独划分一个内存区间(临时容器管理模块)来管理这些临时布线容器;
布线器在执行各自线程的布线算法流程的过程中,会调用到一些布线参数,而为了加快布线速度,发明人就单独划分一个内存区间(参数管理模块) 来管理这些布线参数,这些布线参数包括超参数和自适应参数。
与现有技术相比,本发明的有益效果如下:
1、本发明不仅能让可编程逻辑器件的布线单元更加方便、快捷的调用内存内的布线数据(内存数据),而且能尽量避免过多临界资源发生访问冲突的情况出现,从而提高布线算法地开发效率,加快布线的整体流程;
2、本发明不仅适用于串行布线算法流程和并行布线算法流程的内存管理,还特别适用于执行多线程并行布线算法流程的超大规模可编程逻辑器件的内存管理,当所述超大规模可编程逻辑器件采用多线程并行布线的方式执行布线算法流程时,若采用本发明所记载的内存管理系统来管理可编程逻辑器件的内存,则能显著的提高并行布线算法的速率和并行布线算法的开发效率;
3、当超大规模可编程逻辑器件采用本发明所记载的内存管理系统时,该可编程逻辑器件只需要一台PC机器就能单独执行布线操作,不需要多台PC 机器执行分布式协同操作,这样,本发明就能较为明显的提高布线算法地开发效率,从而加快布线的整体流程;
4、本发明中的内存主要指的是用于存储可编程逻辑器件的内部数据的存储器,对内存进行管理指的是将所述内存划分为多个不同的存储区间(也即不同的管理控制模块),并采用不同的运行方式以确保让可编程逻辑器件的布线模块能更加方便、快捷的调用所述内存;
5、本发明主要是针对可编程逻辑器件内部不同类型的内部模块对象采用不同的管理控制模块分别进行内存管理,以让现有的可编程逻辑器件在执行布线算法流程时(特别是多线程并行布线算法流程),能有效应对临界资源访问的控制需要,从而提高可编程逻辑器件的布线速率,其中,本发明的可编程逻辑器件可以为超大规模的可编程逻辑器件(如FPGA芯片),所述内部模块包括布线资源图、布线参数、临时布线容器等,管理控制模块包括资源图管理模块、临时容器管理模块和参数管理模块等。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明所述可编程逻辑器件的内存管理系统的结构示意图。
图2是本发明的布局资源图访问读写控制示意图;
图3是超大规模可编程器件的多线程内存池的访问方式示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明中的术语″第一″、″第二″、″第三″仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有″第一″、″第二″、″第三″的特征可以明示或者隐含地包括至少一个该特征。本发明的描述中,″多个″的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。本发明实施例中所有方向性指示(诸如上、下、左、右、前、后......)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。此外,术语″包括″和″具有″以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及″实施例″意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
现有的可编程逻辑器件(如FPGA芯片)布线算法,大多都是串行执行,在执行布线算法的过程中,内存的管理方式也主要是针对于串行布线算法流程,因此现有的可编程逻辑器件的内存管理方法大部分不适合用于多线程并行布线算法流程。对于多线程并行布线而言,可编程逻辑器件的内存的管理方式需要重新设计,以应对临界资源访问的控制需要,从而提升整体的布线速率。
同时,对于超大规模可编程逻辑器件(如FPGA芯片),并行布线算法更能够提升用户设计的编译速率,目前使用并行布线的方式已经成为一种趋势。
如图1所示,本发明提供了一种现场可编程逻辑器件(简称可编程器件,如FPGA芯片)集成电路软件工具中的一种内存管理方式(特别适用于多线程并行布线算法),可以有效地提升并行布线算法开发的效率,加速布线的整体流程,提升EDA工具的用户体验。
图1是本发明第一实施例的可编程逻辑器件的内存管理系统的结构示意图,该内存管理系统应用于可编程逻辑器件的布线算法流程,特别适用于多线程并行布线流程。
如图1所示,本发明主要是将可编程逻辑器件的内存数据划分为多种不同类型的内部模块,并针对于不同类型的内部模块对象分别采用不同的管理控制模块进行管理。
内部模块91包括布线资源图11、布线资源管理器12、用户设计信息2、临时布线容器3和布线参数4,其中,临时布线容器3包括临时数组31和临时链表32,布线参数4包括超参数41和自适应参数42。
管理控制模块92包括:布线资源管理模块5、用户信息存储模块6、临时容器管理模块7和参数管理模块8,其中,布线资源管理模块5包括资源图录入单元51和资源管理器单元52,临时容器管理模块7包括临时数组管理单元71和临时链表管理单元72,参数管理模块8包括超参数管理单元81 和自适应参数管理单元82。
其中,布线资源管理模块5,用于将芯片的布线资源信息录入至预设的布线资源图11中,通过预设的布线资源管理器12对布线资源图内的布线资源进行读写访问控制。
在本实施例中,布线资源图11主要用于记录芯片的结构信息(布线资源信息),以便于后期的布线操作,布线资源管理器12主要用于读写访问控制。布线时(特别是多线程并行布线时),可编程逻辑器件内相应的布线节点等会包含一些布线的额外信息,可编程逻辑器件内的布线模块就需要对布线资源图11进行读写访问,此时,本发明通过布线资源管理器12进行读写访问控制能进一步提高布线算法效率。
资源图录入模块,用于对芯片中的布线资源进行分类,将完成分类的布线资源按照可编程逻辑器件预设的运行逻辑录入至布线资源图中,以供布线器(布线单元)对布线资源执行读写操作。
资源管理器模块,用于根据布线资源的实际使用情况(也可以根据现场工作人员的工作经验),确定可编程逻辑器件的布线模块在访问布线资源图时是否需要通过布线资源管理器进行加锁。
实际工作时,如图2布局资源图访问读写控制示意图所示,布线器对布线资源图执行读写操作时,对于布线资源图来说,不同的布线资源需要根据不同的情况进行读写访问控制,例如,为了使得外部对象不能任意写入相应的资源对象,本发明可以通过布线资源管理器来添加对于写的访问控制,所有写操作都通过布线资源管理器代理,对于读则不需要进行访问控制。
进一步的,为了更严格地对布线资源图执行读写访问控制,本发明还可以让布线器只能通过布线资源管理器对布线资源图执行读写操作。
进一步的,为了更严格地对布线资源图执行读写访问控制,资源管理器模块,还用于提供布线算法流程中各代理的访问接口,将布线资源图的所有写入方法均声明为由布线资源管理器私有。
实际工作时,本发明的布线资源图是对于芯片布线资源(芯片结构信息) 的抽象,它存在于整个可编程逻辑器件的布线算法流程中,写入的访问控制可以有效避免多个线程同时修改数据,以防止执行多线程并行布线算法过程中发生未预期错误。本发明的布线资源管理器主要用于提供各种代理的访问接口,提供资源图的读写操作。
为了防止其它外部模块向布线资源图内写入不能被录入布线资源图内的资源对象(比如新的布线节点、新的布线资源等),本发明可以将布线资源图的所有写入方法均声明为私有,有且仅有布线资源管理器是布线资源图的友元,从而使得外部对象只能通过布线资源管理器来写入相应的资源对象(布线资源)。实际工作时,向布线资源图内写入布线资源的时候是否需要加锁,取决于相应的布线资源的具体使用情况(此处工作人员可以根据自身经验和历史记录进行处理),在此不做赘述。
用户信息存储模块6,用于存储用户设计信息2,用户设计信息2是指用户的设计在综合、布局之后,所得到的各个各个待布线的用户设计电路连线信息。
在本实施例中,对于并行布线算法流程来说,上述用户设计信息2在读取完毕后,一般不会再写入。同时,对于用户设计信息2来说,通常用户的 RTL加载完毕且布局完成之后,用户电路设计单元之间的连接关系(也即用户设计电路连线信息)都是确定的,而且时序等信息也可以实现进行预先计算,所以在整个布线流程中用户设计信息2都是属于只读的资源。
临时容器放置模块7,用于在可编程逻辑器件执行布线算法流程时临时构建至少一个内存池,内存池内存储有若干临时布线容器,临时布线容器用于存储可编程逻辑器件在执行布线算法流程时产生的临时数据。临时容器放置模块包括用于管理临时数组的临时数组管理单元,和用于管理临时链表的临时链表管理单元。
实际工作时,当超大规模可编程逻辑器件的采用多线程并行布线算法流程时,如图3多线程内存池访问示意图所示,因为可编程逻辑器件内置的内存池都有全局内存锁,因此该可编程逻辑器件在内存管理时有时候会遇到并行瓶颈,此时,本发明所记载的布线临时容器就能很好的解决上述问题,这个时候本发明可以选用多个多线程内存池(也即在每个线程内布置多个布线临时容器),或自定义一个块内存池(也即自定义一个容积较大的布线临时容器)。
本发明中,布线临时容器是指布线算法在执行过程中所用到的哈希表、优先队列、堆栈、数组、链表、路径树等临时链表或临时数组,上述这些临时链表或临时数组在可编程逻辑器件执行布线算法流程(特别是多线程并行布线算法流程)时可以实现特定的内存分配功能(可以作为内存分配器),从而提升布线算法的运行效率(特别是多线程并行布线算法流程)。
在本实施例中,临时布线容器包括临时数组和临时链表,临时数组用于存储临时数据,其中,上述临时数据是指随布线算法流程启动而创建,随布线算法流程结束而销毁的内存数据;临时链表为布线算法流程中所需要用到的表格。
临时数组管理单元,还用于判断可编程逻辑器件中执行布线算法流程的语言是否为能自行管理内存的计算机语言;若是,则在执行布线算法流程时将计算机语言的内存数据索引清空,以让计算机语言自行管理自身的内存数据;若否,则在布线算法流程结束时,销毁布线算法流程的计算机语言的内存数据。
实际工作时,本发明的临时数组为数组类型的连续存储空间,比如哈希表、优先队列、堆栈等,上述这些临时数组在布线算法所运行的线程中,应当是随着布线算法流程启动而创建,布线算法流程结束而销毁。临时数组可以避免频繁申请内存。在清理的时候,如果是使用自行管理内存的语言,比如C/C++,那么也可以不必去清理具体的内容,只需要将相应的索引清空即可,提升算法迭代的速率。
临时链表管理单元,还用于根据不同的布线资源,通过预设的块分配器对应的申请不同的内存,每一页内存内均对应的设有至少一个临时链表。
实际工作时,本发明的临时链表为链表类型的容器数据结构,比如多叉树,双向链表等等,上述这些临时链表能实现特定的内存分配功能,临时链表可以使用块分配器来申请一个个专用内存,上述块分配器为可编程逻辑器件内置的工具,块分配器的主要作用是提前分配好一页页的内存,每一页的内存都是若干个相应容积的存储空间(用于放置临时链表),本发明的临时链表在被使用时均是每次取出一个并返回。因为在布线过程中,都是最后执行完迭代后再统一清理内存数据,而且由于临时链表内部的对象或者是指针,或者是一些不需要去删除额外数据的对象,所以本发明可以实现相应的快速清理索引的方法清除临时链表,而不清理临时链表内部的内容,从而提升可编程逻辑器件的布线速率。
参数管理模块,用于管理可编程逻辑器件在执行布线算法流程时所需的布线参数。上述布线参数有些是用户配置,有些可以自适应调整布线算法的一些行为,在布线算法流程(特别是多线程并行布线算法流程)中需要针对于这些布线参数分别存储和处理。如果非法修改了某些布线参数,可能导致不同布线算法流程的布线实例之间出现不一致的情况。本发明的可编程逻辑器件中的布线模块必须要保证在各类设置参数一样的情况下,每次编译用户设计的结果都是一样的。
参数管理模块包括用于管理超参数的超参数管理单元,和用于管理自适应参数的自适应参数管理单元。本发明中的超参数为在可编程逻辑器件在执行布线算法流程时不会改变的第一布线参数,自适应参数为可编程逻辑器件在执行布线算法流程时会自适应性调整的第二布线参数。
超参数管理单元,还用于根据用户设计的电路连线信息设置多个超参数,获取多个超参数中能让用户的设计时序最优的一组超参数,将获取到的超参数发送给可编程逻辑器件的布线模块,这样,上述布线模块就可以根据自身需要,更加方便、快捷地调用这些超参数,从而提升可编程逻辑器件的布线速率。
进一步的,超参数管理单元还用于获取可编程逻辑器件在执行布线算法流程之前统一读入的只读参数,以防止外部模块对上述只读参数进行重新写入、修改,将获取到的只读参数发送给可编程逻辑器件的布线模块,上述只读参数可以为超参数。更近一步的,超参数管理单元还可以将超参数打包在一起,然后发送给可编程逻辑器件的布线模块,以进一步提升可编程逻辑器件的布线速率。
在本实施例中,超参数在布线整体过程中不会改变,所以超参数可以统一放置,并且设置成只读,只在执行布线之前,统一读入。本发明的超参数有时也会涉及到训练的问题,比如针对于某类用户设计的测试集,可以批量进行自动化的超参数设置,搜索找到最优的一组超参数设置,使得特定的测试集中的用户设计的时序在布线结束后最好。
自适应参数管理单元,还用于在可编程逻辑器件的布线算法流程发生改变时,对自适应参数进行调整,将调整后的自适应参数发送给可编程逻辑器件的布线模块。优选地,自适应参数管理单元也可以将自适应参数打包在一起,然后发送给可编程逻辑器件的布线模块,以进一步提升可编程逻辑器件的布线速率。
在本实施例中,当超大规模可编程逻辑器件执行多线程并行布线算法流程时,可编程逻辑器件的每个并行的线程都需要有各自的一份拷贝上述自适应参数,使得每个并行的线程在通过各自的布线器分别执行各自线程的布线算法流程时彼此之间没有影响。当可编程逻辑器件的某个并行线程在调整自身的布线流程(比如布线器的读写控制行为)的时候,该并行线程可以通过自身内置那一份自适应参数来进行自适应调整,从而让该并行线程不影响其它并行线程的布线算法流程。进一步的,在某些特殊的并行线程中,某些自适应参数发生自适应变化的时候,也会影响其它并行线程,此时,可编程逻辑器件只需要预设相应的算法即可。
本发明还提供一种可编程逻辑器件,包括上述可编程逻辑器件的内存管理系统。本发明的可编程逻辑器件还包括并行布线模块,并行布线模块在执行布线算法流程时会通过内存管理系统调用可编程逻辑器件内的内存,并行布线模块用于在每个线程内分别布置至少一个布线器,每个线程内的布线器分别执行各自线程内的布线算法流程,从而执行多线程并行布线流程;
本发明以多线程并行布线算法流程为例,结合本发明所记载的内存管理系统说明可编程逻辑器件的实施方案,具体如下:
可编程逻辑器件执行多线程并行布线流程,且在执行并行布线流程时,每个线程均通过各自的布线器分别执行各自线程的布线算法流程;
布线器在执行各自线程的布线算法流程的过程中,会调用芯片内存内部的布线资源,调用布线资源时可以通过布线资源管理器调用,也可以直接调用,其中,布线资源图内的只写资源必须要通过布线资源管理器才能调用;此时,本发明就单独划分一个内存区间(资源图管理模块)来放置、管理布线资源图和布线资源管理器;
布线器在执行各自线程的布线算法流程的过程中,会直接调用用户设计信息,也即布线器在运行时会直接读取各个待布线的用户设计电路连线信息;此时,本发明就单独划分一个内存区间(用户信息管理模块)来放置、管理这些用户设计信息;
布线器在执行各自线程的布线算法流程的过程中,会有一些数据随着布线算法启动而创建,随布线算法结束而销毁,而放置这些临时数据的容器(临时数组和临时表格)也即为临时布线容器,本发明就单独划分一个内存区间 (临时容器管理模块)来管理这些临时布线容器;
布线器在执行各自线程的布线算法流程的过程中,会调用到一些布线参数,而为了加快布线速度,本发明就单独划分一个内存区间(参数管理模块) 来管理这些布线参数,这些布线参数包括超参数和自适应参数。
以上所述的仅是本发明的实施方式,在此应当指出,对于本领域的普通技术人员来说,在不脱离本发明创造构思的前提下,还可以做出改进,但这些均属于本发明的保护范围。
Claims (9)
1.一种可编程逻辑器件的内存管理系统,其特征在于,所述内存管理系统包括:
布线资源管理模块,用于将芯片的布线资源信息录入至预设的布线资源图中,通过预设的布线资源管理器对所述布线资源图内的布线资源进行读写访问控制;
用户信息管理模块,用于存储各个待布线的用户设计电路连线信息;
临时容器管理模块,用于在所述可编程逻辑器件执行布线算法流程时临时构建至少一个内存池,所述内存池内存储有若干临时布线容器,所述临时布线容器用于存储所述可编程逻辑器件在执行布线算法流程时产生的临时数据;
参数管理模块,用于管理所述可编程逻辑器件在执行布线算法流程时所需的布线参数。
2.根据权利要求1所述的可编程逻辑器件的内存管理系统,其特征在于,所述布线资源管理模块包括:
资源图录入单元,用于对芯片中的布线资源进行分类,将完成分类的布线资源按照可编程逻辑器件预设的运行逻辑录入至布线资源图中;
资源管理器单元,用于确定可编程逻辑器件的布线模块在访问所述布线资源图时是否需要通过所述布线资源管理器进行加锁。
3.根据权利要求2所述的可编程逻辑器件的内存管理系统,其特征在于,所述资源管理器模块,还用于提供所述布线算法流程中各代理的访问接口,将所述布线资源图的所有写入方法均声明为由所述布线资源管理器私有。
4.根据权利要求1或2或3所述的可编程逻辑器件的内存管理系统,其特征在于,所述临时容器管理模块包括:
临时数组管理单元,用于管理临时数组,所述临时数组用于存储临时数据;
临时链表管理单元,用于管理临时链表,所述临时链表用于临时存储所述可编程逻辑器件在执行布线算法流程时所需的表格。
5.根据权利要求4所述的可编程逻辑器件的内存管理系统,其特征在于,
所述临时数组管理单元,还用于判断可编程逻辑器件中执行布线算法流程的语言是否为能自行管理内存的计算机语言;若是,则在执行所述布线算法流程时将所述计算机语言的内存数据索引清空,以让所述计算机语言自行管理自身的内存数据;若否,则在布线算法流程结束时,销毁所述布线算法流程的计算机语言的内存数据;
所述临时链表管理单元,还用于通过预设的块分配器为不同的临时链表申请对应内存,所述内存内对应设有至少一个临时链表。
6.根据权利要求5所述的可编程逻辑器件的内存管理系统,其特征在于,所述参数管理模块包括:
超参数管理单元,用于管理超参数,所述超参数为在可编程逻辑器件在执行布线算法流程时不会改变的第一布线参数;
自适应参数管理单元,用于管理自适应参数,所述自适应参数为可编程逻辑器件在执行布线算法流程时会自适应性调整的第二布线参数。
7.根据权利要求6所述的可编程逻辑器件的内存管理系统,其特征在于,
所述超参数管理单元,还用于根据所述用户设计的电路连线信息设置多个超参数,获取所述多个超参数中能让用户的设计时序最优的一组超参数,将获取到的所述超参数发送给可编程逻辑器件的布线模块;
所述自适应参数管理单元,还用于在所述可编程逻辑器件的布线算法流程发生改变时,对所述自适应参数进行调整,将调整后的自适应参数发送给可编程逻辑器件的布线模块。
8.根据权利要求7所述的可编程逻辑器件的内存管理系统,其特征在于,所述超参数管理单元还用于获取所述可编程逻辑器件在执行所述布线算法流程之前统一读入的只读参数,将获取到的所述只读参数发送给可编程逻辑器件的布线模块。
9.一种可编程逻辑器件,其特征在于,包括权利要求1至8任一项所述可编程逻辑器件的内存管理系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111214518.1A CN114116197A (zh) | 2021-10-19 | 2021-10-19 | 可编程逻辑器件及其内存管理系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111214518.1A CN114116197A (zh) | 2021-10-19 | 2021-10-19 | 可编程逻辑器件及其内存管理系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114116197A true CN114116197A (zh) | 2022-03-01 |
Family
ID=80376003
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111214518.1A Pending CN114116197A (zh) | 2021-10-19 | 2021-10-19 | 可编程逻辑器件及其内存管理系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114116197A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115857418A (zh) * | 2023-02-28 | 2023-03-28 | 深圳华龙讯达信息技术股份有限公司 | 一种基于耦合设计的可编程逻辑控制系统 |
CN116521576A (zh) * | 2023-05-11 | 2023-08-01 | 上海合见工业软件集团有限公司 | Eda软件数据处理系统 |
-
2021
- 2021-10-19 CN CN202111214518.1A patent/CN114116197A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115857418A (zh) * | 2023-02-28 | 2023-03-28 | 深圳华龙讯达信息技术股份有限公司 | 一种基于耦合设计的可编程逻辑控制系统 |
CN116521576A (zh) * | 2023-05-11 | 2023-08-01 | 上海合见工业软件集团有限公司 | Eda软件数据处理系统 |
CN116521576B (zh) * | 2023-05-11 | 2024-03-08 | 上海合见工业软件集团有限公司 | Eda软件数据处理系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102105871B (zh) | 虚拟处理设备的中断控制 | |
US9430388B2 (en) | Scheduler, multi-core processor system, and scheduling method | |
CN114116197A (zh) | 可编程逻辑器件及其内存管理系统 | |
CN100533393C (zh) | 用于在多处理器环境中管理对共享资源的存取的方法 | |
US3596257A (en) | Method and apparatus for allocating small memory spaces to a computer program | |
CN1983196B (zh) | 用于将执行线程分组的系统和方法 | |
US20080263337A1 (en) | Instructions for ordering execution in pipelined processes | |
CN104412240B (zh) | 用于存储器管理的系统和方法 | |
CN101630276A (zh) | 一种高效的内存访问方法 | |
US11366689B2 (en) | Hardware for supporting OS driven observation and anticipation based on more granular, variable sized observation units | |
CN110413521A (zh) | 一种堆内存的写越界检测方法和装置 | |
CN106682492A (zh) | 一种内存越界的管理方法及装置 | |
EP1760580A1 (en) | Processing operation information transfer control system and method | |
US7895027B2 (en) | HDL re-simulation from checkpoints | |
CN104516929A (zh) | 用于文件系统的方法和装置 | |
CN109656868B (zh) | 一种cpu与gpu之间的内存数据转移方法 | |
CN109992526A (zh) | 一种读写管理方法以及相关装置 | |
CN107977577A (zh) | 访存指令访问检测方法及装置 | |
EP3702911B1 (en) | Hardware for supporting os driven load anticipation based on variable sized load units | |
WO2007049284A1 (en) | Memory access control | |
JPH03206563A (ja) | 階層論理分割方法及び階層論理処理装置 | |
US9038077B1 (en) | Data transfer protection in a multi-tasking modeling environment | |
CN116089518A (zh) | 一种数据模型抽取方法及系统、终端、介质 | |
US7673182B2 (en) | Method and apparatus for obtaining stack traceback data for multiple computing nodes of a massively parallel computer system | |
CN114327769B (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 |