发明内容
现有去耦技术的方法一般不以芯片面积作为优化目标,往往浪费了宝贵的片上面积资源。因此,需要一种有效的集成电路去耦设计方法和仿真系统,使用该设计方法或者仿真器,能够快速并有效地提高设计的芯片电压的稳定性,在达到设计要求的同时,减少集成电路的面积,并且减少设计周期。
根据本发明的一个方面,提供了一种集成电路设计方法,包括:
确定要分析电源噪声的区域、该区域的初始面积和要使用的初始去耦电容个数;
确定该区域的电流模型参数;
确定该区域的初始面积对应的电源网络模型的模型参数;
将该区域的网表、该区域的初始面积、该区域要使用的初始去耦电容个数、该区域的电流模型参数、该区域的电源网络模型的模型参数、输入到仿真器中,以获得仿真结果;
根据仿真结果,判断该区域在所述该区域的初始面积和所述该区域要使用的初始去耦电容个数下,是否满足芯片电源噪声要求;
如果该区域满足芯片电源噪声要求,则确定该初始面积为该区域在使用所述初始去耦电容个数下,满足芯片电源噪声要求的最小面积。
根据本发明的另一个方面,提供了一种集成电路设计系统,包括:
第一确定装置,用于确定要分析电源噪声的区域、该区域的其初始面积和要使用的初始去耦电容个数;
第二确定装置,用于确定该所述区域的电流模型参数;
第三确定装置,用于确定该所述区域的初始面积对应的电源网络模型的模型参数;
仿真装置,用于将该上述区域的网表、该区域的初始面积、该区域的要使用的初始去耦电容个数、该区域的电流模型参数、该区域的电源网络模型的模型参数输入到仿真器中,以获得仿真结果;
第一判断装置,用于根据仿真结果,判断该区域在所述该区域的初始面积和所述该区域要使用的初始去耦电容个数下,是否满足芯片电源噪声要求;
第四确定装置,用于如果该区域满足芯片电源噪声要求,确定该初始面积为该区域在使用所述该区域要使用的初始去耦电容个数下,满足芯片电源噪声要求的最小面积。
具体实施方式
将参照附图更加详细地描述本发明的优选实施方式,在附图中显示了本发明的优选实施例。然而,本发明可以以各种形式实现而不应该理解为被这里阐述的实施例所限制。相反,提供这些实施例是为了使本发明更加透彻和完整,并且,完全将本发明的范围传达给本领域的技术人员。
首先明确一些基本概念以便后面发明的描述。
图2示意性地示出了一个封装后的集成电路剖面图及该集成电路上全部solder bump的平面图,其中201为管芯,本领域技术人员称其为DIE,202为DIE上的焊球,本领域技术人员称其为solder bump,203为该芯片的封装,204为封装上的焊球,本领域技术人员称为solderball,solder bump通过内部引线和solder ball相连,相同属性的一个或多个solder bump对应一个或多个solder ball,205为芯片的盖,本领域技术人员称其为LID.。
现有的集成电路设计仿真器,例如HSPICE,PSPICE等,设计者只要提供仿真器所需要的网表就能够在很高的频率范围内精确地对器件进行晶体管级的仿真、分析和优化,其中网表里主要描述了电路元件的连接关系和仿真条件。在实际应用中,这些仿真软件能提供关键性的电路模拟和设计方案,并且应用这些仿真软件进行电路模拟时,其电路规模仅取决于用户计算机的实际存储器容量。
图3示出了一个集成电路内部结构图,其中内部各个矩形框代表该芯片的器件。集成电路设计中,为了对电路结构进行仿真,每个器件都会有很多信息保存在器件数据库中,以便仿真调用,这些信息包括器件大小、工艺参数、工作频率和电流波形等等,本发明在后续实施过程中会用到这个器件数据库。
集成电路的供电系统由外部电源,封装及片上电源线(连接电阻、电感电容网络),门级器件构成。外部电源可以等效为稳压源,封装及片上电源线可以等效为连接电阻、电感和电容网络的电源网络模型,门级器件可以等效为电流源。
可以对上述集成电路的整个芯片的全部区域,或者部分区域进行电源噪声分析,例如可以对图3中白框指定的A区域进行电源噪声分析。对于器件初步放置而未进行连线的芯片中,本发明可以对要分析电源噪声的区域内的电源网络建立电源网络模型和电流模型,其中电源网络模型会随着要分析电源噪声区域的面积的不同而不同,电流模型和要分析电源噪声区域内所包含的器件相关,然后将该电源网络模型和电流模型的模型参数输入到集成电路仿真器中,现有的集成电路设计仿真器,例如HSPICE,PSPICE,就能够利用建立的电源网络模型和电流模型的模型参数来仿真电路的运行状态,然后可以根据仿真的结果确定在该区域面积下的电源网络模型和电流模型的电源噪声是否满足要求。
本领域技术人员可以知道:有多种电源网络模型和电流模型可以应用到本发明中,图4示出了一种本发明提出的区域的电源网络模型和电流模型,根据图4,芯片的全部区域或者部分区域的电流模型可以采用正方形或者长方形网络,以下为了简化,采用正方形的模式叙述,本领域技术人员可以知道,使用相同的原理,也可以采用长方形的模型结构。在该电流模型中,该区域被N×N个节点(图4中示例为4×4)分割成(N-1)×(N-1)个大小相同的子区域(图4中示例为3×3),其中N是该区域中每边节点数目。该区域的总电流可以根据该区域内的器件进行估计,例如,在集成电路完成布局之前,可以预估该区域有哪些器件,然后可以根据各个器件的名字自动地从器件数据库中提取这些器件一个周期内的电流波形,并根据各自的工作频率进行重复。最后将所有器件的电流进行叠加得到该区域的总电流波形。还可以采用其它的现有技术来获得该区域的总电流波形,例如用hspice或pspice仿真器也可以提取器件的电流波形。
在一种节点电流分配方式中,将待仿真区域的总电流直接平均到各节点上,对于N×N的节点网络,每个节点上的电流大小都是相同的,为总电流的N×N分之一。
在另外一种节点电流分配方式中,由于物理上的电源网络一般是均匀的,因此给各个器件供电的电流可以近似看作在整个区域内均匀分布的,也就是平均分配到每个子区域,设该区域的总电流为Itotal,子区域为I1~I(n-1)×(n-1),则每个子区域的电流Ii=Itotal/[(N-1)×(N-1)]。以图4的3×3的网格模型为例,如图4所示,共有九个子区域,假设每个子区域的电流是均匀的,可以用Igrid=Itotal/9得到每个子区域的电流。图5示出了在另外一种电流分配方式中创建节点电流的示意图,以N=4为例,每个区域的电流Igrid最终会流向四个角上的节点。因此,单独考虑每个角的电流,都是该区域电流的1/4,因此,对于n11,给该节点提供电流的,只有I1的1/4,所以In11=I1/4;而对于边上节点n21,其电流等于来自I1和I2的电流之和,即In21=I1/4+I4/4;同样对于内部的节点n22,In22=I1/4+I2/4+I4/4+I5/4;对于(N-1)×(N-1)的网格,任何节点的电流为以该节点顶角的子区域电流四分之一的总和。
与上述的电流模型相对应,芯片的全部区域或者部分区域的电源网络模型可以使用一个如图3的由封装的电阻(R)、封装的电感(L)、芯片上电阻(Rgrid)和节点上电容(C)组成的网络的电源网络模型来模拟。具体来说,该模型包括2×N×N个封装寄生电阻R,2×N×N个封装的电感L,4×N×(N-1)个芯片上电阻Rgrid,N×N个节点上电容C。
封装的电阻R的值:假设R0是每个solder bump的寄生电阻值,可以从工艺库中获得该数据,工艺库和器件数据库不同,里面主要包含工艺制造中寄生参数信息,NC是该区域内VDD或GND的solderbump数目,其中F=N2/Nc是换算系数,那么R=R0×F代表该建模区域内每个节点上的封装寄生电阻。
封装的电感L的值:假设L0是每个solder bump的电感,可以从工艺库中获得该数据,那么L=L0×F代表该建模区域内每个节点上的寄生电感。
芯片上电阻Rgrid的值:每两个节点之间也都存在寄生电阻,Rgrid=R1×L,其中R1是单位长度的工艺电阻参数,而这里L代表两个节点之间的实际物理长度,L2=该区域的面积/[(N-1)(N-1)]。
节点上电容C的值:为(Cdecap+Cmacro+Cbk)/N2,其中Cdecap是该区域内所加的去耦电容的电容值;Cmacro是该区域内器件的本征电容的电容值;Cbk是背景电容的电容值。具体这几个电容值可以通过以下方法计算:
Cdecap=n×(该区域面积-器件所占面积)×C0,n是指去耦电容面积占除去器件占的该区域面积的比例系数,C0是单个去耦电容的电容密度。
Cbk=(1-n)×(该区域面积-器件所占面积)×Cb,Cb是背景电容密度。
其中,该区域内器件的本征电容的电容值Cmacro、去耦电容的电容密度C0、背景电容密度Cb、单位长度的工艺电阻参数R1、每个solder bump的寄生电阻值R0和每个solder bump的电感L0的数据均来源于工艺参数库,由芯片生产厂商提供。
图6示出了仿真时节点电流的插入方式。那么在图6中有N×N个节电电流对应N×N个电流源,图6示出了仿真时节点电流的插入方式。那么在图6中有N×N个节电电流对应N×N个电流源,与节点上电容并联。
其它的电源网络模型和电流模型也可以用于本发明。
其它的电流模型,例如,不采用虚拟节点,而是采用该区域的solder bump作为节点的电流模型;节电电流可以平分该区域的电流;或者对各元件精确建模,用spice仿真器对该模型IP模型进行仿真,从而提取该建模区域内不同位置的电流等。与这些方法相比,本发明提出的电流模型在设计初期就能够规划去耦策略,从而缩短设计周期。
其它的电源网络模型也有很多种,从维度上分,可以分为一维,二维,三维:
1)一维:一维模型比较简单,一般由芯片内RC参数,封装一维RLC参数,PCB板一维RLC参数构成,该方法精度不够,一般用于评估芯片整体谐振情况,或总体去耦电容的评估。
2)二维:本发明的上述电源网络模型就是一种二维模型,其它二维模型例如包括改进节点法(MNA)或部分等效电路方法(PEEC)等,都是针对固定电路模型的算法,通过数学计算得到电路模型中的各个参数。
3)三维:三维模型的算法都比较精确,但代价就是需要很多耗费大量的计算资源。目前比较流行的三维建模技术主要有有限元方法(FEM)、时域有限差分法(FDTD)、有限积分技术(FIT)和矩量法(MOM)等,也可以应用于本发明。
对于欲考察其电源噪声的区域,可以得到该区域的上述模型的参数,同时根据确定的该区域的最小的初始面积和要使用的初始去耦电容的个数,对该区域进行仿真。仿真的目标是获使得该区域在使用合适的去耦电容个数个数下,满足电源噪声要求的最小面积。图7示意性地示出了根据本发明的一种实施方式的一种集成电路设计方法的流程图,如图7所示,在步骤S702,确定要分析电源噪声的区域、该区域的初始面积和要使用的初始去耦电容个数;在步骤S703,确定该区域的电流模型参数;在步骤S704,确定该区域的初始区域面积对应的电源网络模型的模型参数;在步骤S705,将该上述区域的网表、该区域的初始面积、该区域要使用的初始去耦电容个数、该区域的电流模型参数、该区域的电源网络模型的模型参数输入到仿真器中,以获得仿真结果;在步骤S706,根据仿真结果,判断该区域在所述该区域的初始面积和所述该区域的初始去耦电容个数下,是否满足芯片电源噪声要求;在步骤S707,如果该区域满足芯片电源噪声要求,则确定该区域初始面积为该区域在使用所述初始去耦电容个数下,满足芯片电源噪声要求的最小面积。其中,步骤S703和S704没有特定的顺序,可以任意步骤先执行或者并行执行。
所述根据仿真结果确定在所述区域的初始面积下,判断该区域是否满足芯片电源噪声要求包括判断该区域的动态电压降是否满足要求。
由于本发明希望获得在满足芯片电源噪声要求情况下该区域的最小面积,因此,当判断不满足芯片电源噪声要求时,在一种实施方式下,可以首先来增加去耦电容的个数并仿真,当去耦电容的个数增加到一定的阈值,仍然不满足芯片电源噪声要求,则将该区域的面积增加一个规定值,重新仿真,直到获得最小面积。另外一种实施方式也可以固定去耦电容的个数,逐步增加该区域的面积并建模仿真,从而得到满足芯片电源噪声要求的最小面积。图8和图9分别描述了这两种实施方式的流程。这里,去耦电容个数的阈值可以人为指定,也可以根据该区域的面积、该区域内器件所占的面积已及单个去耦电容所占的面积来计算。具体公式为去耦电容的个数阈值=(区域面积-区域内器件面积)/单个去耦电容所占的面积。另外,面积增加的规定值为一次增加的面积,该规定值大小与solder bump的特征尺寸相关,这样面积可以逐渐增加,从而得到满足芯片电源噪声要求的最小面积。
图8示出了图7的步骤S706判断结果为该区域不满足芯片电源噪声要求的一种优选方法流程图,根据图8,当在步骤S706的判断结果为该区域在当前面积下不满足芯片电源噪声要求时,在步骤S802,以该区域要使用的初始去耦电容个数为当前去耦电容的个数起始值,将当前去耦电容的个数增加一个设定值,该设定值可以由设计人员规定,最简单的情况可以为1;然后在步骤S803,判断当前去耦电容个数是否达到阈值,如果没有达到阈值,在步骤S804,将当前区域、当前区域面积、当前去耦电容个数、电流模型参数、当前电源网络模型的模型参数输入到仿真器中,以获得仿真结果;然后在步骤S805,判断在当前区域面积和当前去耦电容个数下,该区域是否满足芯片电源噪声要求;如果判断可以满足芯片电源噪声要求,则在步骤S809,确定该区域在使用当前去耦电容个数下,当前面积为满足芯片电源噪声要求的最小面积。如果判断不能满足芯片电源噪声要求,返回步骤S802,继续增加当前去耦电容的个数。如果在步骤S803判断当前去耦电容个数达到阈值,则在步骤S806,以该区域要使用的初始面积为当前区域面积起始值,将所述当前区域面积加上规定值;然后在步骤S807,重新确定所述当前区域面积对应的电源网络模型的模型参数,这里,电流模型不会因为当前去耦电容个数的增加而改变,因为去耦电容器件对区域电流没有贡献。然后在步骤S808,将当前去耦电容个数恢复为其初始个数;然后返回到步骤S804,继续进行后续步骤。
图9示出了图7的步骤S706判断结果为该区域不满足芯片电源噪声要求的另一种优选方法流程图,其中,当前去耦电容个数为固定值。根据图9,在步骤S902,以该区域的初始面积为当前区域面积起始值,将所述当前区域面积加上规定值;然后在步骤S903,重新确定所述区域的当前区域面积对应的电源网络模型的模型参数,然后在步骤S904,将当前区域、当前区域面积、当前去耦电容个数、电流模型参数、当前电源网络模型的模型参数输入到仿真器中,以获得仿真结果;在步骤S905,判断在当前区域面积和当前去耦电容个数下,该区域是否满足芯片电源噪声要求;如果判断可以满足芯片电源噪声要求,则在步骤S906,确定该区域在使用当前去耦电容个数下,当前面积为满足芯片电源噪声要求的最小面积。如果在步骤S905判断不满足芯片电源噪声要求,则返回到步骤S902,继续增加所述当前区域面积。
在同一个发明构思下,本发明还公开了一种集成电路设计系统,图10示意性地示出了根据本发明的一种实施方式的一种集成电路设计系统1000的结构框图,根据图10,该系统1000包括:第一确定装置1001,用于确定要分析电源噪声的区域、该区域的初始面积和要使用的初始去耦电容个数;第二确定装置1002,用于确定该所述区域的电流模型参数;第三确定装置1003,用于确定该区域的初始面积对应的电源网络模型的模型参数;仿真装置1004,用于将该区域的网表、该区域的初始面积、该区域的要使用的初始去耦电容个数、该区域的电流模型参数、该区域的电源网络模型的模型参数输入到仿真器中,以获得仿真结果;第一判断装置1005,用于根据仿真结果,判断该区域在所述该区域的初始面积和要使用的初始去耦电容个数下,是否满足芯片电源噪声要求;第四确定装置1006,用于如果该区域满足芯片电源噪声要求,确定该区域的初始面积为该区域在使用所述初始去耦电容个数下,满足芯片电源噪声要求的最小面积。
在一种实施方式中,该系统1000进一步包括(图10未示出):去耦电容管理器,用于如果该区域不满足电源噪声要求,以该区域要使用的初始去耦电容个数为当前去耦电容的个数起始值,将当前去耦电容的个数增加一个设定值并判断当前去耦电容个数是否达到阈值;其中如果去耦电容管理器判断结果为当前去耦电容个数没有达到阈值,所述仿真装置将当前区域、当前区域面积、当前去耦电容个数、电流模型参数、当前电源网络模型的模型参数输入到仿真器中,以获得仿真结果;第一判断装置判断在当前区域面积和当前去耦电容个数下,该区域是否满足芯片电源噪声要求;其中,如果第一判断装置判断可以满足芯片电源噪声要求,则第四确定装置确定该区域在使用当前去耦电容个数下,当前区域面积为满足芯片电源噪声要求的最小面积;如果第一判断装置判断不能满足芯片电源噪声要求,则去耦电容管理器继续将当前去耦电容的个数增加一个设定值,继续判断。
在另外一种实施方式中,该系统1000进一步包括(图10未示出):区域面积管理器,用于如果去耦电容管理器判断去耦电容个数达到阈值,以该区域的初始面积为当前区域面积起始值,将所述当前区域面积加上规定值;其中,第三确定装置重新确定所述区域的当前区域面积对应的电源网络模型的模型参数;去耦电容管理器将当前去耦电容个数恢复为其去耦电容初始个数,仿真装置将当前区域、当前区域面积、当前去耦电容个数、电流模型参数、当前电源网络模型的模型参数输入到仿真器中,以获得仿真结果步骤,第一判断装置继续进行判断。
在再一个实施方式法中,该系统1000进一步包括(图10未示出):区域面积管理器,用于如果去耦电容管理器判断去耦电容个数达到阈值,以该区域用的初始面积为当前区域面积起始值,将所述当前区域面积加上规定值;其中,第三确定装置重新确定所述区域的当前区域面积对应的电源网络模型的模型参数;仿真装置将当前区域、当前区域面积、当前去耦电容个数、电流模型参数、当前电源网络模型的模型参数输入到仿真器中,以获得仿真结果步骤,第一判断装置判断在当前区域面积和当前去耦电容个数下,该区域是否满足芯片电源噪声要求;如果第一判断装置判断可以满足芯片电源噪声要求,则第四确定装置确定该区域在使用当前去耦电容个数下,当前区域面积为满足芯片电源噪声要求的最小面积;如果第一判断装置判断不满足芯片电源噪声要求,则区域面积管理器继续将当前区域面积加上规定值后,第三确定装置、仿真装置、第一判断装置、第四确定装置继续执行。
在该系统中,第一判断装置通过判断该区域的动态电压降是否满足要求来判断该区域在所述区域的面积和去耦电容个数下,是否满足芯片电源噪声要求。其中所述去耦电容个数的阈值可以有以下方法之一决定:(1)人为指定;(2)根据该区域的面积、该区域内器件所占的面积已及单个去耦电容所占的面积来计算。并且其中所述面积增加的规定值与solder bump的特征尺寸相关。在本发明的电流模型中,该区域被N×N个节点分割成(N-1)×(N-1)个大小相同的子区域,该区域的总电流可以根据该区域内的器件进行估计,其中N是该区域中每边节点数目。其中节点电流分配方式为以下之一:(1)将该区域的总电流平均到各节点上;(2)或者设该区域的总电流平均分配到每个子区域,各节点的电流为以该节点顶角的子区域电流四分之一的总和。在本发明的电源网络模型包括2×N×N个封装寄生电阻,2×N×N个封装的电感,4×N×(N-1)个芯片上电阻以及N×N个节点上电容C。具体实施方式已经在方法中详细论述,这里不再赘述。
在同一个发明构思下,本发明还公开了一种集成电路仿真器,可以使用上述方法进行仿真。
虽然这里参照附图描述了本发明的示例性实施例,但是应该理解本发明不限于这些精确的实施例,并且在不背离本发明的范围和宗旨的情况下,本领域普通技术人员能对实施例进行各种变化的修改。所有这些变化和修改意欲包含在所附权利要求中限定的本发明的范围中。
并且根据上述描述,所属技术领域的技术人员知道,本发明可以体现为装置、方法或计算机程序产品。因此,本发明可以具体实现为以下形式,即,可以是完全的硬件、完全的软件(包括固件、驻留软件、微代码等)、或者本文一般称为“电路”、“模块”或“系统”的软件部分与硬件部分的组合。此外,本发明还可以采取体现在任何有形的表达介质(medium of expression)中的计算机程序产品的形式,该介质中包含计算机可用的程序码。
可以使用一个或多个计算机可用的或计算机可读的介质的任何组合。计算机可用的或计算机可读的介质例如可以是——但不限于——电的、磁的、光的、电磁的、红外线的、或半导体的系统、装置、器件或传播介质。计算机可读介质的更具体的例子(非穷举的列表)包括以下:有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、诸如支持因特网或内部网的传输介质、或者磁存储器件。注意计算机可用的或计算机可读的介质甚至可以是上面印有程序的纸张或者其它合适的介质,这是因为,例如可以通过电扫描这种纸张或其它介质,以电子方式获得程序,然后以适当的方式加以编译、解释或处理,并且必要的话在计算机存储器中存储。在本文件的语境中,计算机可用的或计算机可读的介质可以是任何含有、存储、传达、传播、或传输供指令执行系统、装置或器件使用的或与指令执行系统、装置或器件相联系的程序的介质。计算机可用的介质可包括在基带中或者作为载波一部分传播的、由其体现计算机可用的程序码的数据信号。计算机可用的程序码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等。
用于执行本发明的操作的计算机程序码,可以以一种或多种程序设计语言的任何组合来编写,所述程序设计语言包括面向对象的程序设计语言——诸如Java、Smalltalk、C++之类,还包括常规的过程式程序设计语言——诸如”C”程序设计语言或类似的程序设计语言。程序码可以完全地在用户的计算上执行、部分地在用户的计算机上执行、作为一个独立的软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户的计算机,或者,可以(例如利用因特网服务提供商来通过因特网)连接到外部计算机。
此外,本发明的流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得通过计算机或其它可编程数据处理装置执行的这些指令,产生实现流程图和/或框图中的方框中规定的功能/操作的装置(means)。
也可以把这些计算机程序指令存储在能指令计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令产生一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means)的制造品,
也可以把计算机程序指令加载到计算机或其它可编程数据处理装置上,使得在计算机或其它可编程数据处理装置上执行一系列操作步骤,以产生计算机实现的过程,从而在计算机或其它可编程装置上执行的指令就提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。