发明内容
本申请实施例提供一种芯片设计方法、电子设备及计算机可读存储介质,以解决芯片设计周期长、效率低的问题。
第一方面,本申请实施例提供一种芯片设计方法,包括:
获取管脚列表文件和IO库文件;管脚列表文件中定义有多个IO组,每个IO组中包含多个IO器件;IO库文件中包含IO器件的参数信息;
根据管脚列表文件和IO库文件中的参数信息生成IO器件布置脚本;
根据管脚列表文件生成包含IO端口定义的初始网表;
根据初始网表和IO器件布置脚本,生成模拟布局;模拟布局中包含多个IO器件以及IO器件的布置位置;
根据模拟布局生成芯片评估报告;芯片评估报告包括芯片尺寸信息、芯片形状信息、芯片成本信息中的一项或多项的组合。
在一种可能的实现方式中,在获取管脚列表文件和IO库文件之后,还包括:
启动芯片设计工具中预加载的IO定义脚本;IO定义脚本中包含至少一条用于限制IO器件的IO设计规则;
根据管脚列表文件中IO组的类型和IO库文件中的参数信息,选定IO定义脚本中IO设计规则的检测参数;
通过IO定义脚本检测管脚列表文件中IO器件的实际参数;
比对实际参数与检测参数,得到检测结果。
在一种可能的实现方式中,检测参数包括第一器件标识信息、第二器件标识信息,通过IO定义脚本检测管脚列表文件中IO器件的实际参数包括:
根据第一器件标识信息、第二器件标识信息,从管脚列表文件中确定第一IO器件、第二IO器件;
统计管脚列表文件中位于第一IO器件与第二IO器件之间的第三IO器件;
根据第三IO器件和IO库文件中的参数信息计算第一IO器件与第二IO器件之间的实际距离。
在一种可能的实现方式中,IO设计规则包括:管脚列表文件中每个IO组中至少包含一个起始IO和一个终止IO。
在一种可能的实现方式中,IO设计规则包括:管脚列表文件中每个IO组中至少包含一个电源IO和一个接地IO。
在一种可能的实现方式中,在根据初始网表和IO器件布置脚本,生成模拟布局之后,还包括:
获取根据前端网表文件生成的初始布局;
将模拟布局中的IO器件按照布置位置迁移至初始布局,得到目标布局。
在一种可能的实现方式中,在将模拟布局中的IO器件按照布置位置迁移至初始布局之后,还包括:
获取模拟布局中未迁移成功的第四IO器件;
将未迁移成功的第四IO器件关联到前端网表文件,以及将第四IO器件迁移至初始布局。
在一种可能的实现方式中,IO库文件中还包含第五IO器件标识信息和第六IO器件标识信息,在将模拟布局中的IO器件按照布置位置迁移至初始布局之后,还包括:
根据第五IO器件标识信息、第六IO器件标识信息,从初始布局中确定第五IO器件、第六IO器件;
检测第五IO器件与第六IO器件之间的填充物;
如果第五IO器件与第六IO器件之间不存在填充物,生成填充物警示信息。
第二方面,本申请提供一种电子设备,包括:
文件获取模块,用于获取管脚列表文件和IO库文件;管脚列表文件中定义有多个IO组,每个IO组中包含多个IO器件;IO库文件中包含IO器件的参数信息;
脚本生成模块,用于根据管脚列表文件和IO库文件中的参数信息生成IO器件布置脚本;
网表生成模块,用于根据管脚列表文件生成包含IO端口定义的初始网表;
模拟布局模块,用于根据初始网表和IO器件布置脚本,生成模拟布局;模拟布局中包含多个IO器件以及IO器件的布置位置;
评估模块,用于根据模拟布局生成芯片评估报告;芯片评估报告包括芯片尺寸信息、芯片形状信息、芯片成本信息中的一项或多项的组合。
第三方面,本申请提供一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器从存储器中调用并执行计算机程序时实现上述第一方面所述的芯片设计方法的步骤。
第四方面,本申请提供一种计算机可读存储介质,计算机可读存储介质中包括至少一个计算机指令,该计算机指令用于执行上述第一方面所述的芯片设计方法的步骤。
通过本申请提供的技术方案,可以根据管脚列表文件生成具有IO端口定义的初始网表,结合IO库文件中的参数信息还可以生成IO器件布置脚本,后端设计可以根据初始网表和IO器件布置脚本生成包含IO设计的模拟布局,还可以根据模拟布局初步评估芯片的部分基本信息。这样,即使前端还未完成IO设计以外的网表文件,后端也可以根据初始网表提前对IO设计进行模拟布局规划,从而可以提前检测IO设计中存在的问题,还可以提前评估芯片整体设计,加快芯片设计进度,缩减芯片设计周期,提高芯片设计的整体效率。
具体实施方式
为便于对申请的技术方案进行,以下首先在对本申请所涉及到的一些概念进行说明。
需要说明的是,本申请中对于术语的简要说明,仅是为了方便理解接下来描述的实施方式,而不是意图限定本申请的实施方式。除非另有说明,这些术语应当按照其普通和通常的含义理解。
本申请中说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”等是用于区别类似或同类的对象或实体,而不必然意味着限定特定的顺序或先后次序,除非另外注明。应该理解这样使用的用语在适当情况下可以互换。
术语“包括”和“具有”以及他们的任何变形,意图在于覆盖但不排他的包含,例如,包含了一系列组件的产品或设备不必限于清楚地列出的所有组件,而是可包括没有清楚地列出的或对于这些产品或设备固有的其它组件。
芯片物理层面的floorplan(布局规划)是后端设计承接前端设计的重要部分,后端设计需要将前端的功能逻辑设计通过布局布线一一具现为可实际测试运行的floorplan。根据floorplan可以对芯片设计评估,得到芯片的尺寸、形状、器件构成、器件成本等信息,也可以根据floorplan实现对芯片功能的测试,从而发现芯片设计可能存在的物理逻辑问题。
IO(Input Output,输入输出)器件是芯片布局规划的重要组成部分,由于前端设计专注于功能层面,而IO器件数量大、类型多,IO器件的后端布局会存在ESD(electrostatic discharge,静电放电)、latch-up(闩锁效应)等问题。后端进行floorplan时,需要先获得前端提供的Verilog网表文件,才能根据网表文件中定义的IO器件以及其他电路设计生成布局规划文件。如果前端对IO器件以外的设计未完成,由于此时无法生成完整的网表文件,即使IO设计已完成,后端也无法开展对IO设计的排布,制约后端设计进程,导致设计周期过长,整体效率较低。
针对上述技术问题,本申请实施例提供一种芯片设计方法、电子设备及计算机可读存储介质,可以缩短芯片设计周期,提高芯片设计效率。
图1是本申请实施例提供的一种芯片设计方法的流程示意图,该芯片设计方法包括:
步骤S210,获取管脚列表文件和IO库文件。
其中,管脚列表文件中定义有多个IO组,每个IO组中包含多个IO器件;IO库文件中包含IO器件的参数信息。管脚列表文件可以是前端根据设计功能产生的IO pinlist(包含设计中各种输入输出信号的表格,简称pinlist)文件。IO库文件可以包括芯片工艺厂商提供的含有IO器件参数信息及IO设计标准的库文件。例如,一些芯片工艺厂商会在库文件中标明某一类型的IO包含特定的几种IO器件,且其中一个或多个IO器件需要满足某种具体的设计规则。
在一些可能的实现方式中,管脚列表文件可以是包含输入输出信号的表格文件。
步骤S220,根据管脚列表文件和IO库文件中的参数信息生成IO器件布置脚本。
在一些可能的实现方式中,根据pinlist里面定义的IO名称或IO型号,可以在IO库文件中获取与pinlist中IO对应的尺寸、功能等参数信息,并可以根据IO的参数信息以及IO在pinlist中的位置,利用EDA(Electronic design automation,电子设计自动化)工具生成IO器件布置脚本。
在一些其他可能的实现方式中,在生成IO器件布置脚本之后,还可以通过EDA工具中的字典工具调整IO器件布置脚本中的IO位置,例如可以通过“Dict GrpOffset”字典自定义微调脚本中IO的具体位置。
步骤S230,根据管脚列表文件生成包含IO端口定义的初始网表。
在一些可能的实现方式中,可以根据pinlist里面定义的IO生成一个有IO端口定义的初始网表。初始网表可以是基于Verilog HDL或VHDL(Very-High-Speed IntegratedCircuit Hardware Description Language,超高速集成电路硬件描述语言)生成的Verilog网表,初始网表中可以仅包含与IO相关的设计。Verilog HDL和VHDL均为硬件描述语言,可以用于电路设计,表示逻辑电路图、逻辑表达式以及数字逻辑系统所完成的逻辑功能。
步骤S240,根据初始网表和IO器件布置脚本,生成模拟布局。
其中,模拟布局中包含多个IO器件以及IO器件的布置位置。
在一些可能的实现方式中,根据初始网表中的IO端口,可以通过IO器件布置脚本对初始网表中的IO端口进行排布,生成包含IO器件的模拟布局。例如,在一些实施方式中,可以将初始网表加载到EDA工具中,通过EDA工具执行IO器件布置脚本,生成基于初始网表中IO的dummy design(模拟布局)。
在一些其他可能的实现方式中,在生成IO器件布置脚本之后,还可以通过EDA工具中的接口调整模拟布局中IO组的位置。例如,根据芯片设计中的IP(知识产权模块)、IO以及与相关设计子模块预估的相对位置,可以通过“Tune place”接口调整模拟布局中IO Group(IO组)的具体位置。
步骤S250,根据模拟布局生成芯片评估报告。
其中,芯片评估报告可以包括芯片尺寸信息、芯片形状信息、芯片成本信息中的一项或多项的组合。
在一些可能的实现方式中,可以对模拟布局中的IO设计进行评估,综合模拟布局中各IO器件的基本信息,得到芯片整体信息,生成芯片评估报告。由于IO器件通常位于芯片整体布局的边缘位置,而模拟布局中已经包含了IO器件的名称、型号、尺寸等基本信息,通过IO的尺寸和坐标可以初步评定芯片整体形状和尺寸,并根据所用IO器件的类型和数目初步评估芯片中IO器件所占的成本。
在上述实施例中,可以根据管脚列表文件生成具有IO端口定义的初始网表,结合IO库文件中的参数信息还可以生成IO器件布置脚本,后端设计可以根据初始网表和IO器件布置脚本生成包含IO设计的模拟布局,还可以根据模拟布局初步评估芯片的部分基本信息。这样,即使前端还未完成IO设计以外的网表文件,后端也可以根据初始网表提前对IO设计进行模拟布局规划,从而可以提前检测IO设计中存在的问题,还可以提前评估芯片整体设计,加快芯片设计进度,缩减芯片设计周期,提高芯片设计的整体效率。
图2是本申请实施例中一种根据管脚列表文件和IO库文件检测IO设计的流程示意图,如图2所示,该过程包括:
步骤S211,启动芯片设计工具中预加载的IO定义脚本。
其中,IO定义脚本中包含至少一条用于限制IO器件的IO设计规则。
在一些可能的实现方式中,IO设计规则包括:管脚列表文件中每个IO组中至少包含一个起始IO和一个终止IO。
在一些可能的实现方式中,IO设计规则包括:管脚列表文件中每个IO组中至少包含一个电源IO和一个接地IO。
在一些可能的实现方式中,可以根据芯片工艺厂商制定的IO设计规则预先编写对应的IO定义脚本,这些IO定义脚本可以用于根据管脚列表文件中的IO名称及位置检测是否违反厂商制定的设计规则。
步骤S212,根据管脚列表文件中IO组的类型和IO库文件中的参数信息,选定IO定义脚本中IO设计规则的检测参数。
在一些可能的实现方式中,不同类型的IO组对组内IO器件的设计规则可能不同,可以根据不同类型对应的规则,选定IO定义脚本中的检测参数,以实现对特定规则的检测。例如:有的高速类型IO,其组内包含多个型号的IO器件,且需要以某一种特定IO器件放在开头处作为物理起始器件,需要以另一种特定IO器件放在结尾处作为物理终止器件;有的高速类型IO,其组内需要包含有接地功能的IO器件和电源功能的IO器件;有的IO类型,需要在有多个IO组时,在两个IO组之间设置一个具有间隔功能的IO器件;还有的IO类型需要兼具多种设计规则,不同规则之间可以任意组合,在此不再赘述。
步骤S213,通过IO定义脚本检测管脚列表文件中IO器件的实际参数。
步骤S214,比对实际参数与检测参数,得到检测结果。
在一个具体的示例中,根据管脚列表文件中IO组的类型,需要通过IO定义脚本检测IO组内电源IO任意一侧是否具有上电控制功能的IO器件,则可以将电源IO的名称和具有上电控制功能的IO器件名称作为检测参数,将管脚列表文件中实际电源IO的名称作为实际参数,通过IO定义脚本检测实际电源IO两侧的IO器件名称是否与检测参数中IO器件名称一致。例如,若用PO表示电源IO,POC表示上电控制IO,则可以将PO和POC作为检测参数,并统计管脚列表文件中的所有PO以及PO两侧的IO,检测PO两侧的IO是否为POC。
在一些其他可能的实现方式中,也可以选择IO器件的型号或编号等作为检测参数。
在上述实施例中,无需获取完整的前端网表文件,可以仅通过预定义的脚本对管脚列表文件中的IO进行检测,在前端设计全部完成之前,提前发现IO设计中存在的违例问题,减少静电放电、闩锁效应的出现,从而可以加快芯片设计进度,减少调试和修改时间。
图3是本申请实施例中一种通过脚本检测管脚列表文件中IO器件的流程示意图,在一个实施例中,检测参数包括第一器件标识信息、第二器件标识信息,如图3所示,该过程包括:
步骤S2161,根据第一器件标识信息、第二器件标识信息,从管脚列表文件中确定第一IO器件、第二IO器件。
其中,第一器件标识信息、第二器件标识信息,可以为IO器件的名称或型号。
步骤S2162,统计管脚列表文件中位于第一IO器件与第二IO器件之间的第三IO器件。
步骤S2163,根据第三IO器件和IO库文件中的参数信息计算第一IO器件与第二IO器件之间的实际距离。
在一些可能的实现方式中,可以根据检测参数中IO器件的名称或型号,在管脚列表文件中确定对应的第一IO器件和第二IO器件,并根据管脚列表文件统计这两个IO器件之间的第三IO器件,再根据IO库文件获取第三IO器件的尺寸信息以及排布间隔,从而根据尺寸信息和间隔距离计算出第一IO器件与第二IO器件之间的实际距离。需要说明的是,第三IO器件可以为一个IO器件,也可以为多个IO器件。
例如,有些IO设计规则要求某两种特定IO器件之间的距离小于100um,可以将这种IO器件的名称和100um作为检测参数,根据名称在管脚列表文件中找到对应的两个IO器件,并统计这两个特定IO器件之间的所有IO器件,根据IO库文件获取这些IO器件的尺寸和排布要求,从而计算出这两个特定IO器件在排布时的实际距离,并可以比对实际距离是否小于100um。
图4是本申请实施例中一种根据模拟布局生成目标布局的流程示意图,如图4所示,该过程包括:
步骤S260,获取根据前端网表文件生成的初始布局。
在一些可能的实现方式中,前端网表文件可以是根据所有前端设计生成的Verilog网表。在一些其他实现方式中,前端网表文件也可以包含部分前端设计。需要说明的是,前端网表文件至少包含初始网表中的IO设计以及其他一些可能的设计。
步骤S270,将模拟布局中的IO器件按照布置位置迁移至初始布局,得到目标布局。
在一些可能的实现方式中,可以根据前端网表文件生成real design(初始布局),可以将模拟布局中的IO排布一一Map(迁移)到初始布局中的对应位置,从而得到目标布局。
在上述实施例中,由于前端网表文件中包含的IO设计与模拟布局中的IO对应,可以直接将模拟布局中的IO排布迁移到初始布局,而不必在初始布局中重新排布IO,从而可以节省后端布局的时间,缩短芯片设计周期。
图5是本申请实施例中一种将模拟布局中的设计迁移到初始布局的流程示意图,如图5所示,该过程包括:
步骤S2701,获取模拟布局中未迁移成功的第四IO器件。
步骤S2702,将未迁移成功的第四IO器件关联到前端网表文件,以及将第四IO器件迁移至初始布局。
其中,第四IO器件可以为一个IO器件,也可以为多个IO器件。
在一些可能的实现方式中,可以通过EDA工具中预留的接口获取模拟布局中未成功迁移至初始布局的IO器件,并通过此接口将这些IO器件关联至前端网表文件中的对应IO器件后重新迁移这些IO器件。例如,可以通过“Array UserIoPadNameMapping”数组对没有迁移成功的IO器件进行迁移,以确保模拟布局中的所有IO可以正确迁移到初始布局中。
由于将管脚列表文件用于生成模拟布局时前端设计尚未全部完成,在前端继续设计直至生成完整的前端网表文件的这段过程中,一些IO器件的命名可能发生变化,名称不一致导致这些IO器件无法成功从模拟布局迁移到根据前端网表文件生成的初始布局中。通过本实施例的方法可以利用EDA工具中的接口将未迁移成功的IO器件与前端网表文件关联,从而将这些IO器件名称关联后成功迁移到初始布局。
图6是本申请实施例中一种检测初始布局的流程示意图,如图6所示,在一个实施例中,IO库文件中还包含第五IO器件标识信息和第六IO器件标识信息,该过程包括:
步骤S2710,根据第五IO器件标识信息、第六IO器件标识信息,从初始布局中确定第五IO器件、第六IO器件。
其中,第五器件标识信息、第六器件标识信息,可以为IO器件的名称或型号。
步骤S2720,检测第五IO器件与第六IO器件之间的填充物。
步骤S2730,如果第五IO器件与第六IO器件之间不存在填充物,生成填充物警示信息。
例如,有些特定的IO器件互相之间不能紧贴着放置,需要在两个IO器件之间插入一个或多个特定尺寸的IO filler(IO填充物)。在一些可能的实现方式中,可以根据检测参数中IO器件的名称或型号,在初始布局中确定有特定放置要求的第五IO器件和第六IO器件,并可以检测第五IO器件与第六IO器件之间是否存在特定的填充物。
与前述芯片设计方法的实施例相对应,本申请部分实施例中还提供一种电子设备300的实施例。如图7所示,该电子设备包括:
文件获取模块310,用于获取管脚列表文件和IO库文件;管脚列表文件中定义有多个IO组,每个IO组中包含多个IO器件;IO库文件中包含IO器件的参数信息;
脚本生成模块320,用于根据管脚列表文件和IO库文件中的参数信息生成IO器件布置脚本;
网表生成模块330,用于根据管脚列表文件生成包含IO端口定义的初始网表;
模拟布局模块340,用于根据初始网表和IO器件布置脚本,生成模拟布局;模拟布局中包含多个IO器件以及IO器件的布置位置;
评估模块350,用于根据模拟布局生成芯片评估报告;芯片评估报告包括芯片尺寸信息、芯片形状信息、芯片成本信息中的一项或多项的组合。
关于电子设备300的具体限定可以参见上文中对于芯片设计方法的限定,在此不再赘述。上述电子设备300中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个示例性实施例中,本申请可以利用计算机设备实现上述芯片设计方法。
在一种可能的实现方式中,该计算机设备的结构如图8所示,该计算机设备100包括至少一个处理器110、存储器120、通信总线130,以及至少一个通信接口140。
其中,处理器110可以是一个通用中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)、微处理器,或者可以是一个或多个用于实现本申请方案的集成电路,例如,专用集成电路(Application-Specific Integrated Circuit,ASIC),可编程逻辑器件(Programmable Logic Device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD),现场可编程逻辑门阵列(Field-Programmable Gate Array,FPGA),通用阵列逻辑(Generic Array Logic,GAL)或其任意组合。
处理器110可以包括一个或多个CPU。计算机设备100可以包括多个处理器110。这些处理器110中的每一个可以是一个单核处理器(single-CPU),也可以是一个多核处理器(multi-CPU)。需要说明的是,这里的处理器110可以指一个或多个设备、电路和/或用于处理数据(如计算机程序指令)的处理核。
存储器120可以是只读存储器(Read-Only Memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,也可以是随机存取存储器(Random Access Memory,RAM)或者可存储信息和指令的其它类型的动态存储设备,还可以是电可擦可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(CompactDisc Read-Only Memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备,或者是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。可选地,存储器120可以是独立存在,并通过通信总线130与处理器110相连接;存储器120也可以和处理器110集成在一起。
通信总线130用于在各组件之间(比如处理器和存储器之间)传送信息,通信总线120可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条通信总线进行示意,但并不表示仅有一根总线或一种类型的总线。通信接口140用于供该计算机设备100与其它设备或通信网络进行通信。
通信接口140包括有线通信接口或无线通信接口。其中,有线通信接口例如可以为以太网接口。以太网接口可以是光接口,电接口或其组合。无线通信接口可以为无线局域网(Wireless Local Area Networks,WLAN)接口、蜂窝网络通信接口或其组合等。
在一些实施例中,存储器120可以用于存储执行本申请方案的计算机程序,处理器110可以执行存储器120中存储的计算机程序。例如,该计算机设备100可以通过处理器110调用并执行存储在存储器120中的计算机程序,以实现本申请实施例提供的芯片设计方法的步骤。应该理解的是,本申请提供的芯片设计方法,可以应用于芯片设计装置,该芯片设计装置可以通过软件、硬件或者软硬件结合的方式实现成为处理器110的部分或者全部,集成在计算机设备100中。
此外,应该理解的是,本申请实施例可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括计算机程序。在计算机设备上加载和运行该计算机程序时,全部或部分地产生按照本申请实施例所示的流程或功能。
其中,计算机程序可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机程序可以从一个网站站点、终端、服务器或数据中心通过有线或无线方式向另一个网站站点、终端、服务器或数据中心进行传输。
该计算机可读存储介质可以是计算机设备能够存取的任何可用介质,或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。
应该理解的是,以上仅为本申请实施例的具体实施方式而已,并不用于限定本申请实施例的保护范围。凡在本申请实施例的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本申请实施例的保护范围之内。