一种基于内存池的超大规模集成电路数据库和设计方法转让专利

申请号 : CN202011473276.3

文献号 : CN112241325B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈刚

申请人 : 南京集成电路设计服务产业创新中心有限公司

摘要 :

一种基于内存池的超大规模集成电路数据库,包括,内存池管理器、内存页管理器、内存块、内存页、空闲对象链表,以及数据对象标识符,其中,所述内存池管理器,用于管理所述内存页管理器;所述内存页管理器,用于组织设计数据对象的内存空间;所述内存块,用于分配给数据库进行对象操作的空间;所述内存页,用于分配数据对象;所述空闲对象链表,用于通过所述内存页管理器进行管理、保存释放的内存空间;所述数据对象标识符,用于作为每个分配了空间的数据对象的唯一标识。本发明通过对内存池的管理,使得对数据库的内存分配和存储读取,具备了快速的响应以及高效率的空间利用,从而得以支持超大规模集成电路设计中对数据的高要求。

权利要求 :

1.一种基于超大规模集成电路数据库的内存池管理系统,其特征在于,包括,内存池管理器、内存页管理器、内存块、内存页、空闲对象链表,以及数据对象标识符,其中,所述内存池管理器,用于管理所述内存页管理器;

所述内存页管理器,用于组织设计数据对象的内存空间;

所述内存块,用于分配给数据库进行对象操作的空间;

所述内存页,用于分配数据对象;

所述空闲对象链表,用于通过所述内存页管理器进行管理、保存释放的内存空间;

所述数据对象标识符,用于作为每个分配了空间的数据对象的唯一标识;

所述内存池管理器,其为每一个分配了空间的数据对象计算出数据对象标识符;接收释放内存空间请求,并根据所述数据对象标识符,找到在内存页管理器中的具体位置,将所述数据对象标识符插入相应的所述空闲对象链表中,增加所述内存页管理器中相应的可用空间;

所述内存池管理器,其容器中包含有相对独立的、与超大规模集成电路模块一一对应的内存池。

2.根据权利要求1所述的基于超大规模集成电路数据库的内存池管理系统,其特征在于,所述数据对象标识符,还包括,内存池索引、内存页索引,以及内存页偏移量,其中,所述内存池索引,用于找到数据对象所在的所述内存页管理器;

所述内存页索引,用于在所述内存页管理器中找到数据对象所在的内存页;

所述内存页偏移量,用于获得数据对象的内存地址。

3.根据权利要求1所述的基于超大规模集成电路数据库的内存池管理系统,其特征在于,所述内存页管理器,其根据数据对象的类型,在对应的空闲对象链表中获取数据对象,若获取成功,将该数据对象从空闲链表中取走;若空闲数据对象获取不成功,在当前操作的页面寻找可用空间,当可用空间大于需求空间时,进行空间返回。

4.根据权利要求1所述的基于超大规模集成电路数据库的内存池管理系统,其特征在于,所述内存页管理器,其在当前页面没有可用空间时,向操作系统发送内存分配请求,请求操作系统分配新的内存页和内存块,在新分配的内存页和内存块之间建立联系,将新分配的空间中数据对象的空间返回给应用端。

5.一种基于超大规模集成电路数据库的内存池管理方法,采用权利要求1‑4任一项所述的基于超大规模集成电路数据库的内存池管理系统,其特征在于,包括以下步骤:初始化内存池管理器和内存页管理器;

为数据对象分配内存空间;

释放内存空间,对于每一个分配了空间的数据对象计算出标识符,根据数据对象的标识符,找到在内存页管理器中的具体位置,将标识符插入相应的空闲对象链表中,增加内存页管理器中相应的可用空间。

6.根据权利要求5所述的基于超大规模集成电路数据库的内存池管理方法,其特征在于,所述初始化内存池管理器的步骤,还包括,分配一个数组空间存储不同内存页管理器的指针,生成内存页管理器和设计模块的映射表;

初始化内存页管理器中内存块和内存页的大小和数量,以及内存使用的统计信息。

7.根据权利要求5所述的基于超大规模集成电路数据库的内存池管理方法,其特征在于,所述为数据对象分配内存空间的步骤,还包括,根据数据对象的类型,在对应的空闲对象链表中获取数据对象,若获取成功,将该数据对象从空闲链表中取走;

若空闲数据对象获取不成功,在当前操作的页面寻找可用空间,当可用空间大于需求空间时,进行空间返回;

在当前页面没有可用空间时,向操作系统发送内存分配请求,请求操作系统分配新的内存页和内存块,在新分配的内存页和内存块之间建立联系,将新分配的空间中数据对象的空间返回给应用端;

所述内存页管理器返回空间后,所述内存页管理器的可用空间相应减少。

8.一种电子设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行计算机程序以执行权利要求5‑7任一项所述的基于超大规模集成电路数据库的内存池管理方法的步骤。

9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序可被处理器执行权利要求5‑7任一项所述的基于超大规模集成电路数据库的内存池管理方法的步骤。

说明书 :

一种基于内存池的超大规模集成电路数据库和设计方法

技术领域

[0001] 本发明涉及集成电路设计自动化领域,尤其涉及EDA工具中的数据库设计方法。

背景技术

[0002] 随着半导体行业的飞速发展,芯片的特性尺寸越来越小,嵌入在芯片中的晶体管数量也在持续呈指数增长,同时,各家产品公司为了尽快抢占市场的领先地位,导致产品的
迭代时间不断的缩短,芯片设计面临着前所未有的挑战。为了确保高质量、高可靠的产品,
并且在规定的时间里完成设计闭合和实现产品功能目标,芯片设计行业越来越依赖于优秀
的设计软件。在国际上,Cadence、Synopsys以及西门子旗下的Mentor三巨头各自拥有丰品
类繁多的设计工具及自己的专有数据库,同时亦分别支持Verilog、LEF/DEF、Liberty等标
准格式数据针对各自自有数据库的输入输出等。亦有由Cadence维护并最终捐赠给si2组织
的OpenAccess数据库。从国内来讲,多可见一些优秀的点工具。且很多工具都对OpenAccess
有一定依赖。客观上看,缺乏一个优秀的EDA工具专用数据库产品大大制约了国内EDA工具
的研发效能。
[0003] 随着半导体行业的飞速发展,芯片的特性尺寸越来越小,嵌入在芯片中的晶体管数量也在持续呈指数增长。芯片设计流程变得日益复杂,从前端到后端,工序愈加繁多,应
运而生的是适用于不同设计阶段的不同EDA厂商及其工具。为了满足全流程设计所需,通常
设计者都需要在不同的工具间进行切换使用。因而不同厂商不同工具、甚至同一厂商不同
工具之间都不可避免需要产生数据交换。目前通行做法,是经由导出某些标准的文本文件
在不同工具间进行数据交换。例如用户可以在某设计阶段结束后输出Verilog、LEF/DEF文
件,然后导入下个工具(下一工具可以是同厂商或者不同厂商)继续下一步设计。这就对数
据的完整性提出了极大的挑战。如何保证数据完整传递,没有数据丢失,在文件导出以及导
入时,即使在标准支持的范围内,也会造成信息或者精度的丢失。在标准支持的数据以外,
用户自定义数据更是无法携带到下一个工具。此外,还有不同EDA厂商人为设置的壁垒,如
不支持其它厂商工具的数据,尤其是竞争对手厂商的数据。这就直接导致在不同的工具之
间切换变得极为不便甚至不可能。
[0004] 内存的申请和释放对一个应用程序的整体性能影响极大,甚至在很多时候成为某个应用程序的瓶颈。消除内存申请和释放引起的瓶颈的方法往往是针对内存使用的实际情
况提供一个合适的内存池。内存池之所以能够提高性能,主要是因为它能够利用应用程序
的实际内存使用场景中的某些"特性"。比如某些内存申请与释放肯定发生在一个线程中,
某种类型的对象生成和销毁与应用程序中的其他类型对象要频繁得多,等等。针对这些特
性,可以为这些特殊的内存使用场景提供量身定做的内存池。这样能够消除系统提供的缺
省内存机制中,对于该实际应用场景中的不必要的操作,从而提升应用程序的整体性能。

发明内容

[0005] 为了解决现有技术存在的不足,本发明的目的在于提供一种基于内存池的超大规模集成电路数据库和设计方法,通过对内存池的管理,使得对数据库的内存分配和存储读
取,具备了快速的响应以及高效率的空间利用,从而得以支持超大规模集成电路设计中对
数据的高要求。
[0006] 为实现上述目的,本发明提供的一种基于内存池的超大规模集成电路数据库,包括,内存池管理器、内存页管理器、内存块、内存页、空闲对象链表,以及数据对象标识符,其
中,
[0007] 所述内存池管理器,用于管理所述内存页管理器;
[0008] 所述内存页管理器,用于组织设计数据对象的内存空间;
[0009] 所述内存块,用于分配给数据库进行对象操作的空间;
[0010] 所述内存页,用于分配数据对象;
[0011] 所述空闲对象链表,用于通过所述内存页管理器进行管理、保存释放的内存空间;
[0012] 所述数据对象标识符,用于作为每个分配了空间的数据对象的唯一标识。
[0013] 进一步地,所述内存池管理器,其为每一个分配了空间的数据对象计算出数据对象标识符;接收释放内存空间请求,并根据所述数据对象标识符,找到在内存页管理器中的
具体位置,将所述数据对象标识符插入相应的所述空闲对象链表中,增加所述内存页管理
器中相应的可用空间。
[0014] 进一步地,所述数据对象标识符,还包括,内存池索引、内存页索引,以及内存页偏移量,其中,
[0015] 所述内存池索引,用于找到数据对象所在的所述内存页管理器;
[0016] 所述内存页索引,用于在所述内存页管理器中找到数据对象所在的内存页;
[0017] 所述内存页偏移量,用于获得数据对象的内存地址。
[0018] 进一步地,所述内存页管理器,其根据数据对象的类型,在对应的空闲对象链表中获取数据对象,若获取成功,将该数据对象从空闲链表中取走;若空闲数据对象获取不成
功,在当前操作的页面寻找可用空间,当可用空间大于需求空间时,进行空间返回。
[0019] 更进一步地,所述内存页管理器,其在当前页面没有可用空间时,向操作系统发送内存分配请求,请求操作系统分配新的内存页和内存块,在新分配的内存页和内存块之间
建立联系,将新分配的空间中数据对象的空间返回给应用端。
[0020] 为实现上述目的,本发明还提供一种基于内存池的超大规模集成电路数据库设计方法,包括以下步骤:
[0021] 初始化内存池管理器和内存页管理器;
[0022] 为数据对象分配内存空间;
[0023] 释放内存空间,对于每一个分配了空间的数据对象计算出标识符,根据数据对象的标识符,找到在内存页管理器中的具体位置,将标识符插入相应的空闲对象链表中,增加
内存页管理器中相应的可用空间。
[0024] 进一步地,所述初始化内存池管理器的步骤,还包括,
[0025] 分配一个数组空间存储不同内存页管理器的指针,生成内存页管理器和设计模块的映射表;
[0026] 初始化内存页管理器中内存块和内存页的大小和数量,以及内存使用的统计信息。
[0027] 更进一步地,所述为数据对象分配内存空间的步骤,还包括,
[0028] 根据数据对象的类型,在对应的空闲对象链表中获取数据对象,若获取成功,将该数据对象从空闲链表中取走;
[0029] 若空闲数据对象获取不成功,在当前操作的页面寻找可用空间,当可用空间大于需求空间时,进行空间返回;
[0030] 在当前页面没有可用空间时,向操作系统发送内存分配请求,请求操作系统分配新的内存页和内存块,在新分配的内存页和内存块之间建立联系,将新分配的空间中数据
对象的空间返回给应用端;
[0031] 所述内存页管理器返回空间后,所述内存页管理器的可用空间相应减少。
[0032] 为实现上述目的,本发明还提供一种电子设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行计算机程序以执行上述的
基于内存池的超大规模集成电路数据库设计方法的步骤。
[0033] 为实现上述目的,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序可被处理器执行上述的基于内存池的超大规模集成电路数据库设计方
法的步骤。
[0034] 本发明的基于内存池的超大规模集成电路数据库和设计方法,具有以下有益效果:
[0035] 1)通过对内存池的管理,使得对数据库的内存分配和存储读取,具备了快速的响应以及高效率的空间利用,从而得以支持超大规模集成电路设计中对数据的高要求。
[0036] 2)支持百万量级逻辑器件设计规模,即使是对200M扁平设计,内存的使用也应控制在1TB以内。在速度方面,数据查询是千万级数据毫秒响应,而磁盘读写在NVMe的固态硬
盘上不应低于3GB/s。
[0037] 3)将不同的设计模块分别对应独立的内存池,便于进行数据的搜寻,以及数据对象空间的分配和释放,也同时对多线程的应用提供了天然的支持。
[0038] 4)写入磁盘空间时,可以对每一个内存池进行独立的操作,消除了互相之间的复杂的依赖关系,借此提高了磁盘读取的效率。
[0039] 5)在分配空间给新的数据对象时,采取的步骤最大限度的保证了分配的时间效率。
[0040] 6)精确的设计了内存数据页的长度大小,控制页边界对齐和内存字节对齐,极大程度的降低了内存碎片的问题,用以适应目前的超大规模集成电路的设计的最新技术要
求。
[0041] 7)当一个数据对象不再被需要,对它进行删除操作时,并没有如经典的内存池的设计一样,把相应的内存块设置一个标记为可用块,而是把释放的数据对象根据其数据类
型串成一个可用的链表,下一次需要同样类型的数据对象时可以直接提取出来作为使用。
[0042] 8)数据对象通过唯一标识符进行操作。该标识符的设计包含了此数据对象在内存池中的所有信息,具体所指:内存池索引、内存页索引、以及内存页中的偏移量。内存池管理
器获得了标识符,就可以快速定位到该数据对象所在的内存地址。该标识符被设计成精简
的整型数字,便于传递,也节省了空间,并且由于使用的是相对位置,可以在退出当前程序
段之后再次进入新的程序段对同样的设计模块进行操作时,该标识符同样有效。
[0043] 本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。

附图说明

[0044] 附图用来提供对本发明的进一步理解,并且构成说明书的一部分,并与本发明的实施例一起,用于解释本发明,并不构成对本发明的限制。在附图中:
[0045] 图1为根据本发明的基于内存池的超大规模集成电路数据库结构示意图;
[0046] 图2为根据本发明的实施例一内存页管理器内部结构示意图;
[0047] 图3为根据本发明的基于内存池的超大规模集成电路数据库设计方法流程图;
[0048] 图4为根据本发明的实施例一为数据对象分配内存空间步骤流程图;
[0049] 图5为根据本发明的实施例一释放内存空间步骤流程图。

具体实施方式

[0050] 以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
[0051] 内存池的技术,在过去的几十年中,被广泛应用于多种编程领域中。考虑到芯片设计中庞大的对象数据,以及对对象数据频繁的读取操作,数据库设计需要运用到内存池的
技术以减少内存分配中和操作系统的频繁交互,以及降低系统分配产生的内存碎片,从而
提高内存分配和使用在时间上和空间上的效率。
[0052] 实施例1
[0053] 图1为根据本发明的基于内存池的超大规模集成电路数据库结构示意图,如图1所示,本发明的基于内存池的超大规模集成电路数据库,包括,内存池管理器10、内存页管理
器20、内存块30、内存页40、空闲对象链表50,以及数据对象标识符60,其中,
[0054] 内存池管理器10,用于对整个内存池进行管理。
[0055] 本发明实施例中,由一个内存池管理器(MemPool)、若干内存页管理器(MemPagePool)、若干内存大块(MemChunk)以及若干内存页(MemPage)组成。内存池管理器
中包括内存池,它们相对独立,不同的内存池对应于芯片设计中不同的设计模块。但是都在
内存池管理器的容器里,并且和具体的芯片模块一一对应。
[0056] 内存页管理器20,在内存池中附着在真正用来为内存请求分配内存的内存块头部的结构体,它描述了与之联系的内存块的使用信息。
[0057] 内存块30,用于系统真正分配给数据库进行对象的操作的空间,通过内存页管理器进行分配,内存块是相对较大的,通常为32M字节。
[0058] 本发明实施例中,当内存块的大小容量不够使用的时候,内存管理器可以动态的向系统发出新的分配请求,成功的系统请求之后,返回更多的可用的内存块。
[0059] 内存页40,用于在内存池中将内存块划分成等大的内存页。每一页可以分配多个数据对象,当单个数据对象的大小比当前的内存页大,本设计会动态的增长相应内存页的
大小。通常,一个内存页的大小为1M字节。
[0060] 空闲对象链表50,用于通过内存页管理器进行管理。当某个数据对象不再需要的时候,内存池管理器并不会真正把对象的空间退还给系统,而是将相应的对象的空间块插
入其对象类型的空闲对象链表。等到下次再有同样类型的数据对象需要分配空间时,内存
池管理器会首先检查相应的空闲对象链表,如果能找到链表中的元素可用,就返回该链表
元素作为新的数据对象空间,而不需要额外通过内存页来分配空间给数据对象。
[0061] 数据对象标识符60,用于对于每一个由内存池管理器分配了空间的数据对象,内存池管理器都会计算出一个标识符,作为该数据对象的唯一标识。应用端可以通过标识符
来对获取数据对象的内存指针。消除了对象之间依赖于指针的相互引用。
[0062] 本发明实施例中,数据对象标识符60,包括,内存池索引、内存页索引、以及内存页偏移量,其中,
[0063] 内存池索引,用于找到数据对象所在的内存池。
[0064] 内存页索引,用于在内存池中找到数据对象所在的内存页。
[0065] 内存页偏移量,用于根据偏移量获得数据对象的内存地址。
[0066] 实施例2
[0067] 图3为根据本发明的基于内存池的超大规模集成电路数据库设计方法流程图,下面将参考图3,对本发明的基于内存池的超大规模集成电路数据库设计方法进行详细描述。
[0068] 首先,在步骤201,初始化内存池管理器10。
[0069] 本发明实施例中,内存池管理器10分配一个数组空间用于存储不同的内存池的指针,同时生成一个表,用于将内存池和电路的设计模块进行一个映射。
[0070] 本发明实施例中,当完成了内存池管理器的初始化之后,程序才能针对电路的设计模块进行操作。
[0071] 本发明实施例中,对于一个新的设计模块,需要分配一个新的内存池,用于其内部的数据对象的内存空间的组织。
[0072] 本发明实施例中,新的内存池,以及它和设计模块的对应关系会被内存管理器所记录。
[0073] 在步骤202,初始化内存页管理器。
[0074] 本发明实施例中,单个内存池的初始化,即内存页管理器的初始化,并不会真正分配内存块和内存页,但是会该管理器中涉及到的内存页的大小和数量,内存块的大小和数
量,以及一些内存使用的统计信息进行初始化。
[0075] 本发明实施例中,在具体的数据对象的空间申请时,进行内存块和内存页的空间分配。被分配给内存池的空间,在整个内存池的使用周期中,不会返回给系统,即使是不断
有数据对象被释放,也只是将该释放的内存空间放入空闲对象链表中,留待使用。内存池的
空间,只有当内存池被释放时才能会返回给系统。
[0076] 在步骤203,为数据对象分配内存空间。
[0077] 本发明实施例中,图4为根据本发明的实施例一为数据对象分配内存空间步骤流程图,如图4所示,应用端产生一个新的数据对象的需求,内存池管理器根据具体的设计模
块找到相应的内存池。找到内存池之后,首先,根据数据对象的类型,内存池会在对应的空
闲对象链表中获取一个数据对象,如果成功就将该数据对象从空闲链表中取走,并返回给
应用端;如果并没有取到合适的空闲数据对象,内存池就会在当前操作的页面去寻找可用
的空间,只要可用空间大于需求的空间,就把这块空间返回给应用端,同时,内存池的可用
空间相应的减少。
[0078] 本发明实施例中,当发现当前所有可用的页面里都没有合适的空间时,内存池会触发一个内存分配的请求给操作系统,请求成功,操作系统分配了新的内存页和内存大块
给内存池,在内存池中进行操作,使得新分配的内存页和内存大块之间建立联系。内存池在
新分配的空间里将应用端所需的数据对象的空间返回给应用端。
[0079] 在步骤204,释放内存空间。
[0080] 本发明实施例中,图5为根据本发明的实施例一释放内存空间步骤流程图,如图5所示,应用端判断一个数据对象不再被需要时,则对内存池管理器提出释放该块内存空间
的请求;内存池管理器收到释放的请求时,会根据该数据对象的标识符,找到它在内存池中
的具体位置,并把这个标识符插入相应的空闲对象链表中,内存池中的可用空间相应增加。
这个过程就完成了该数据对象的内存空间的“释放”。
[0081] 本发明实施例中,释放的这块空间并没有真正还给系统而是交由内存池保管,等待下次被使用。
[0082] 本发明实施例中,通过标识符获取数据对象的指针。该步骤中,对象标识符由三部分组成内存池索引、内存页索引、以及内存页中的偏移量。当内存池管理器获得一个对象标
识符,首先会将其拆成三部分,然后通过内存池索引找到该对象所在的内存池,再在该内存
池中通过内存页索引找到对象所在的内存页,之后,根据偏移量获得数据对象的内存地址。
[0083] 实施例3
[0084] 本发明的实施例中,还提供一种电子设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行计算机程序以执行上述的基于内
存池的超大规模集成电路数据库设计方法的步骤。
[0085] 实施例4
[0086] 本发明的实施例中,还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序运行时执行如上文所述的基于内存池的超大规模集成电路数据库设计方法
的步骤。
[0087] 本发明提供了一种基于内存池的管理组件,运用于超大规模集成电路的数据库设计。其目的在于对内存池的管理,使得对数据库的内存分配和存储读取,具备了快速的响应
以及高效率的空间利用,从而得以支持超大规模集成电路设计中对数据的高要求。基于此
数据库开发的EDA工具之间没有数据壁垒。芯片的设计者能流畅的在不同设计工具之间切
换而不用担心数据丢失,从而提高设计效率,缩短产品研发乃至上市时间,抢占市场。EDA工
具的开发者也能受益于该数据库,激发自己的灵感,设计出顶尖的点工具,从而推动整个
EDA产业的发展。
[0088] 本发明提供了一种基于内存池的管理组件,将不同的设计模块分别对应独立的内存池,便于进行数据的搜寻,以及数据对象空间的分配和释放,也同时对多线程的应用提供
了天然的支持。写入磁盘空间时,可以对每一个内存池进行独立的操作,消除了互相之间的
复杂的依赖关系,借此提高了磁盘读取的效率。在分配空间给新的数据对象时,采取的步骤
最大限度的保证了分配的时间效率。精确的设计了内存数据页的长度大小,控制页边界对
齐和内存字节对齐,极大程度的降低了内存碎片的问题,用以适应目前的超大规模集成电
路的设计的最新技术要求。当一个数据对象不再被需要,对它进行删除操作时,并没有如经
典的内存池的设计一样,把相应的内存块设置一个标记为可用块,而是把释放的数据对象
根据其数据类型串成一个可用的链表,下一次需要同样类型的数据对象时可以直接提取出
来作为使用。数据对象通过唯一标识符进行操作。该标识符的设计包含了此数据对象在内
存池中的所有信息,具体所指:内存池索引、内存页索引、以及内存页中的偏移量。内存池管
理器获得了标识符,就可以快速定位到该数据对象所在的内存地址。该标识符被设计成精
简的整型数字,便于传递,也节省了空间,并且由于使用的是相对位置,可以在退出当前程
序段之后再次进入新的程序段对同样的设计模块进行操作时,该标识符同样有效。
[0089] 本领域普通技术人员可以理解:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员
来说,其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进
行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含
在本发明的保护范围之内。