CN113486611B - 芯片设计方法、芯片设计装置及非暂时性存储介质 - Google Patents

芯片设计方法、芯片设计装置及非暂时性存储介质 Download PDF

Info

Publication number
CN113486611B
CN113486611B CN202110738783.3A CN202110738783A CN113486611B CN 113486611 B CN113486611 B CN 113486611B CN 202110738783 A CN202110738783 A CN 202110738783A CN 113486611 B CN113486611 B CN 113486611B
Authority
CN
China
Prior art keywords
functional units
current
chip design
physical
coordinates
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.)
Active
Application number
CN202110738783.3A
Other languages
English (en)
Other versions
CN113486611A (zh
Inventor
范晟嘉
王毓千
晋大师
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Haiguang Information Technology Co Ltd
Original Assignee
Haiguang Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Haiguang Information Technology Co Ltd filed Critical Haiguang Information Technology Co Ltd
Priority to CN202110738783.3A priority Critical patent/CN113486611B/zh
Publication of CN113486611A publication Critical patent/CN113486611A/zh
Application granted granted Critical
Publication of CN113486611B publication Critical patent/CN113486611B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3315Design verification, e.g. functional simulation or model checking using static timing analysis [STA]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

一种芯片设计方法、芯片设计装置及非暂时性存储介质。该芯片设计方法包括:获取芯片设计代码;对芯片设计代码进行第一逻辑综合处理,以得到第一综合网表;基于第一综合网表进行第一布局布线处理,以得到第一版图网表,其中,第一版图网表包括至少一个设计功能模块,该至少一个设计功能模块包括多个功能单元;基于第一版图网表,对该至少一个设计功能模块中的该多个功能单元进行聚类处理,以确定该多个功能单元中预定比例的目标功能单元;提取预定比例的目标功能单元的物理信息,并根据该物理信息生成物理约束;基于物理约束,对芯片设计代码进行第二逻辑综合处理,以得到第二综合网表。

Description

芯片设计方法、芯片设计装置及非暂时性存储介质
技术领域
本公开的实施例涉及一种芯片设计方法、芯片设计装置及非暂时性存储介质。
背景技术
芯片设计流程通常包括:(1)规格定义;进行芯片需求分析、完成产品规格定义,以确定设计的整体方向。(2)系统设计;基于上述规格定义,明确芯片架构、业务模块、供电等系统级设计。(3)前端设计:根据上述系统设计确定的方案,针对各模块开展具体的电路设计,使用专门的硬件描述语言(例如,Verilog或VHDL或HDL等),对具体的电路实现进行RTL(Register Transfer Level,寄存器传输级)级别的代码描述。代码生成后,需要严格按照已制定的规格标准,通过仿真验证来反复检验代码设计的正确性。之后,进行逻辑综合(简称“综合”)处理,即使用逻辑综合工具把用硬件描述语言写成的RTL级的代码转成门级网表(Gate-Level NetList),以确保电路在面积、时序等目标参数上达到标准。逻辑综合完成后需要进行静态时序分析,套用特定的时序模型,针对特定电路分析其是否违反设计者给定的时序限制。(4)后端设计。基于上述门级网表,在给定大小的硅片面积内,对电路进行布局布线(Place&Route,简称“PR”)处理以得到物理版图(也称为“版图网表”或“布局布线网表”),再对得到的物理版图进行功能和时序上的各种验证,例如设计规则检查(DesignRule Check)、电路规则检查(Layout Versus Schematic)等,最终生成用于芯片生产的GDS(Geometry Data Standard)版图。
发明内容
本公开至少一些实施例提供一种芯片设计方法,该芯片设计方法包括:获取芯片设计代码;对所述芯片设计代码进行第一逻辑综合处理,以得到第一综合网表;基于所述第一综合网表进行第一布局布线处理,以得到第一版图网表,其中,所述第一版图网表包括至少一个设计功能模块,所述至少一个设计功能模块包括多个功能单元;基于所述第一版图网表,对所述至少一个设计功能模块中的所述多个功能单元进行聚类处理,以确定所述多个功能单元中预定比例的目标功能单元;提取所述预定比例的目标功能单元的物理信息,并根据所述物理信息生成物理约束;以及基于所述物理约束,对所述芯片设计代码进行第二逻辑综合处理,以得到第二综合网表。
例如,在本公开一些实施例提供的芯片设计方法中,所述预定比例的取值范围为[80%,95%]。
例如,在本公开一些实施例提供的芯片设计方法中,基于所述第一版图网表,对所述多个功能单元进行所述聚类处理,以确定所述多个功能单元中所述预定比例的目标功能单元,包括:获取所述多个功能单元的物理坐标,并计算所述多个功能单元的中心坐标作为第一中心坐标;根据当前的第一中心坐标,确定所述多个功能单元中距离当前的第一中心坐标最近的所述预定比例的功能单元,并计算距离当前的第一中心坐标最近的所述预定比例的功能单元的中心坐标作为第二中心坐标;判断当前的第二中心坐标与当前的第一中心坐标是否相同,若当前的第二中心坐标与当前的第一中心坐标不同,则将当前的第二中心坐标作为第一中心坐标,并重新计算第二中心坐标以及判断当前的第二中心坐标与当前的第一中心坐标是否相同,若当前的第二中心坐标与当前的第一中心坐标相同,则将距离当前的第一中心坐标最近的所述预定比例的功能单元作为所述多个功能单元中所述预定比例的目标功能单元。
例如,在本公开一些实施例提供的芯片设计方法中,计算所述多个功能单元的中心坐标,包括:根据以下公式计算所述多个功能单元的中心坐标:
Figure BDA0003142417120000021
其中,XCC0、YCC0分别表示所述多个功能单元的中心坐标的横坐标和纵坐标,Xi、Yi分别表示所述多个功能单元中的第i个功能单元的横坐标和纵坐标,n表示所述多个功能单元中的功能单元的数量。
例如,在本公开一些实施例提供的芯片设计方法中,根据当前的第一中心坐标,确定所述多个功能单元中距离当前的第一中心坐标最近的所述预定比例的功能单元,包括:根据当前的第一中心坐标和所述多个功能单元的物理坐标,计算所述多个功能单元中的每个功能单元到当前的第一中心坐标的距离;以及根据所述多个功能单元中的每个功能单元到当前的第一中心坐标的距离,确定所述多个功能单元中距离当前的第一中心坐标最近的所述预定比例的功能单元。
例如,在本公开一些实施例提供的芯片设计方法中,计算所述多个功能单元中的每个功能单元到当前的第一中心坐标的距离,包括:根据以下公式计算所述多个功能单元中的第j个功能单元到当前的第一中心坐标的距离:
Figure BDA0003142417120000031
其中,S表示所述第j个功能单元到当前的第一中心坐标的距离,X0、Y0分别表示当前的第一中心坐标的横坐标和纵坐标,Xj、Yj分别表示所述第j个功能单元的横坐标和纵坐标,j=1,2,…,n,n表示所述多个功能单元中的功能单元的数量。
例如,在本公开一些实施例提供的芯片设计方法中,计算距离当前的第一中心坐标最近的所述预定比例的功能单元的中心坐标,包括:根据以下公式计算距离当前的第一中心坐标最近的所述预定比例的功能单元的中心坐标:
Figure BDA0003142417120000032
其中,XN、YN分别表示距离当前的第一中心坐标最近的所述预定比例的功能单元的中心坐标的横坐标和纵坐标,Xk、Yk分别表示距离当前的第一中心坐标最近的所述预定比例的功能单元中的第k个功能单元的横坐标和纵坐标,m表示距离当前的第一中心坐标最近的所述预定比例的功能单元中的功能单元的数量。
例如,在本公开一些实施例提供的芯片设计方法中,m=RCF(p*n),其中,p表示所述预定比例,n表示所述多个功能单元中的功能单元的数量,RCF()表示取整函数。
例如,在本公开一些实施例提供的芯片设计方法中,提取所述预定比例的目标功能单元的所述物理信息,并根据所述物理信息生成所述物理约束,包括:获取所述预定比例的目标功能单元的物理坐标;确定所述预定比例的目标功能单元的物理坐标的横坐标的最小值和最大值以及纵坐标的最小值和最大值;以及根据所述预定比例的目标功能单元的物理坐标的横坐标的最小值和最大值以及纵坐标的最小值和最大值,确定所述物理约束。
例如,在本公开一些实施例提供的芯片设计方法中,根据所述预定比例的目标功能单元的物理坐标的横坐标的最小值和最大值以及纵坐标的最小值和最大值,确定所述物理约束,包括:将具有两个对角顶点坐标(Xmin-u*(Xmax-Xmin),Ymin-v*(Ymax-Ymin))、(Xmax+u*(Xmax-Xmin),Ymax+v*(Ymax-Ymin))的矩形物理范围作为所述物理约束,其中,Xmin和Xmax分别表示所述预定比例的目标功能单元的物理坐标的横坐标的最小值和最大值,Ymin和Ymax分别表示所述预定比例的目标功能单元的物理坐标的纵坐标的最小值和最大值,u的取值范围为[5%,15%],v的取值范围为[5%,15%]。
例如,在本公开一些实施例提供的芯片设计方法中,u等于v,或u不等于v。
例如,在本公开一些实施例提供的芯片设计方法中,所述多个功能单元包括寄存器单元。
例如,本公开一些实施例提供的芯片设计方法还包括:基于所述第二综合网表进行第二布局布线处理,以得到第二版图网表。
本公开至少一些实施例还提供一种芯片设计装置,该芯片设计装置包括:获取单元,被配置为获取芯片设计代码;第一逻辑综合单元,被配置为对所述芯片设计代码进行第一逻辑综合处理,以得到第一综合网表;第一布局布线单元,被配置为基于所述第一综合网表进行第一布局布线处理,以得到第一版图网表,其中,所述第一版图网表包括至少一个设计功能模块,所述至少一个设计功能模块包括多个功能单元;聚类单元,被配置为基于所述第一版图网表,对所述至少一个设计功能模块中的所述多个功能单元进行聚类处理,以确定所述多个功能单元中预定比例的目标功能单元;物理约束生成单元,被配置为提取所述预定比例的目标功能单元的物理信息,并根据所述物理信息生成物理约束;以及第二逻辑综合单元,被配置为基于所述物理约束,对所述芯片设计代码进行第二逻辑综合处理,以得到第二综合网表。
例如,本公开一些实施例提供的芯片设计装置,还包括:第二布局布线单元,被配置为基于所述第二综合网表进行第二布局布线处理,以得到第二版图网表。
本公开至少一些实施例还提供一种芯片设计装置,该芯片设计装置包括:存储器,用于非暂时性存储计算机可读指令;以及处理器,用于运行所述计算机可读指令,其中,所述计算机可读指令被所述处理器运行时执行本公开任一实施例提供的芯片设计方法。
本公开至少一些实施例还提供一种非暂时性存储介质,非暂时性地存储计算机可读指令,其中,当所述计算机可读指令由计算机执行时,执行本公开任一实施例提供的芯片设计方法。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1为本公开一些实施例提供的一种芯片设计方法的流程图;
图2为本公开一些实施例提供的一种第一版图网表中的功能单元与设计功能模块的示意图;
图3为本公开一些实施例提供的一种设计功能模块的约束范围的示意图;
图4为本公开一些实施例提供的一种对应于图1所示的步骤S400的示例性流程图;
图5A为本公开一些实施例提供的一种计算设计功能模块中的全部功能单元的中心坐标的示意图;
图5B为本公开一些实施例提供的一种计算设计功能模块中距离当前的中心坐标最近的预定比例的功能单元的中心坐标的示意图;
图6为本公开一些实施例提供的一种芯片设计装置的示意性框图;
图7为本公开一些实施例提供的另一种芯片设计装置的示意性框图;以及
图8为本公开一些实施例提供的一种非暂时性存储介质的示意图。
具体实施方式
为了使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
下面通过几个具体的实施例对本公开进行说明。为了保持本公开实施例的以下说明清楚且简明,本公开省略了已知功能和已知部件的详细说明。当本公开实施例的任一部件在一个以上的附图中出现时,该部件在每个附图中由相同或类似的参考标号表示。
在芯片设计中越来越追求更好的PPA(Power,Performance,and Area),也就是说在性能(Performance)更好的情况下,面积(Area)和功耗(Power)要尽可能的小。但是芯片设计是一个很复杂的过程,需要很多步骤相互衔接配合,例如,从RTL代码到GDS版图的设计就需要先进行逻辑综合(简称“综合”)再进行布局布线(PR)。在实际应用中,综合和PR通常是使用不同的工具来实现的。早期由于机器资源和PPA的要求并没有现在这么高,所以综合工具通常使用粗略的模型来计算时序,这样就需要提前为这种粗略的模型加上一定时序的余量,保证PR使用更准确的模型计算时序时仍能很好地收敛。
但是,更多的余量就意味着浪费掉更多的PPA,因此,当前的电子设计自动化(Electronics Design Automation,简称EDA)工具在综合计算时序时所使用的模型也都在向PR靠拢,以提高综合和后端时序的相关性。虽然相关性不断在提高,但是由于工具引擎的不同,所以还是会存在一定的差异,而这种差异主要是物理信息的缺失或不准确造成的。
当前,业界常用的提高综合和后端时序相关性的方法主要包括以下两种方法:一种方法是Synopsys物理导向流程(Synopsys physical guidance flow,简称spg flow或spg流程),这种方法会引入所有单元(cell,包括逻辑单元和寄存器等)的物理信息,但是可控性不强,资源消耗较大;另一种方法是添加一些物理约束,这些物理约束可以将指定的单元的物理位置约束在一定范围内,这种方法干预性强,但是物理位置不易获取,并且一般是针对个别模块或单元,不具有普适性。
本公开至少一些实施例提供一种芯片设计方法,该芯片设计方法包括:获取芯片设计代码;对芯片设计代码进行第一逻辑综合处理,以得到第一综合网表;基于第一综合网表进行第一布局布线处理,以得到第一版图网表,其中,第一版图网表包括至少一个设计功能模块,该至少一个设计功能模块包括多个功能单元;基于第一版图网表,对该至少一个设计功能模块中的该多个功能单元进行聚类处理,以确定该多个功能单元中预定比例的目标功能单元;提取预定比例的目标功能单元的物理信息,并根据该物理信息生成物理约束;基于物理约束,对芯片设计代码进行第二逻辑综合处理,以得到第二综合网表。
本公开的一些实施例还提供对应于上述芯片设方法的芯片设计装置及非暂时性存储介质。
本公开的实施例提供的芯片设计方法,可以提高综合阶段和布局布线阶段的相关性,从而节省时序余量、提高PPA,同时还可以辅助spg flow来约束指定单元或设计的物理范围。
下面结合附图对本公开的一些实施例及其示例进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
图1为本公开一些实施例提供的一种芯片设计方法的流程图。例如,该芯片设计方法可以应用于芯片设计设备,该芯片设计设备包括具有计算功能的任何电子设备,例如可以为笔记本电脑、平板电脑、台式计算机、服务器等,本公开的实施例对此不作限制。例如,该芯片设计设备具有中央处理单元(Central Processing Unit,CPU)或图形处理单元(Graphics Processing Unit,GPU),该芯片设计设备还包括存储器。该存储器例如为非易失性存储器(例如只读存储器(Read Only Memory,ROM)),其上存储有操作系统的代码。例如,存储器上还存储有代码或指令,通过运行这些代码或指令,可以实现本公开的实施例提供的芯片设计方法。
例如,如图1所示,该芯片设计方法包括以下步骤S100至步骤S500。
步骤S100:获取芯片设计代码。
例如,芯片设计代码可以包括但不限于RTL代码等。例如,在一些实施例中,工程师可以根据明确的系统设计方案,对方案中的各设计功能模块开展具体的电路设计,使用专门的硬件描述语言(例如,Verilog或VHDL或HDL等),对具体的电路实现进行RTL(RegisterTransfer Level,寄存器传输级)级别的代码描述,以生成RTL代码。例如,在生成RTL代码后,还可以严格按照已制定的规格标准,通过仿真验证来反复检验RTL代码设计的正确性。也就是说,芯片设计代码可以是预先生成的,当然,本公开的实施例包括但不限于此。例如,芯片设计代码可以预先存储在芯片设计设备的存储器中,或者可以通过网络或外部设备载入芯片设计设备的存储器。
步骤S200:对芯片设计代码进行第一逻辑综合处理,以得到第一综合网表。
例如,可以使用逻辑综合工具(属于EDA工具)对芯片设计代码进行第一逻辑综合处理,以得到与芯片设计代码相对应的第一综合网表。例如,常见的逻辑综合工具包括但不限于Synopsys公司的Design Compiler工具、Candence公司的Genus工具等。例如,逻辑综合工具的功能是将RTL代码转化为门级网表。例如,第一综合网表可以包括但不限于门级网表等。以下,对逻辑综合处理(具体地,第一逻辑综合处理)的流程进行简要说明。
例如,逻辑综合处理通常包括转译(Translation)、优化(Opitimization)、映射(Mapping)三个过程。例如,在转译过程中,软件自动将源代码翻译成每条语句所对应的功能模块以及模块之间的拓扑结构,这一过程是在综合工具内部生成电路的布尔函数的表达,不做任何的逻辑重组和优化;在优化过程中,基于所施加的一定时序和面积的约束条件,综合工具按照一定的算法对转译结果作逻辑优化和重组;在映射过程中,根据所施加的一定的时序和面积的约束条件,综合工具从目标工艺库中搜索符合条件的单元来构成实际电路。
例如,在得到第一综合网表后,可以进行静态时序分析(Static TimingAnalysis),以解决第一逻辑综合处理中可能存在的各种问题(例如,时序违例等)。静态时序分析主要是在时序上对电路进行验证,检查电路是否存在建立时间(setup time)和保持时间(hold time)的违例(violation)。例如,通常可以套用特定的时序模型,针对特定电路分析其是否违反设计者给定的时序限制,本公开的实施例对此不作限制。例如,常用的静态时序分析工具包括但不限于Synopsys公司的Prime Time工具、Candence公司的Tempus工具等。
例如,在得到第一综合网表后,还可以进行形式验证,以保证前后设计是相同的。此处的形式验证主要是从功能上对第一综合网表进行验证,以确定芯片设计代码和第一综合网表二者是否在功能上存在等价性。例如,常用的形式验证方法包括等价性检查方法等。例如,常用的形式验证工具包括但不限于Synopsys公司的Formality工具、Candence公司的Conformal工具等。
例如,在得到第一综合网表后,可以对第一综合网表中的功能单元进行分析处理,以确定与第一综合网表相对应的多个设计功能,之后可以将第一综合网表按照设计功能划分为多个设计功能模块。例如,在本公开的实施例中,功能单元通常可以包括寄存器单元(属于基本单元);在一些具体示例中,功能单元还可以包括锁存器单元、触发器单元、逻辑单元(logic cell)等其余基本单元中的一种或多种。例如,每个设计功能模块通常包括多个功能单元。例如,每个设计功能模块可以对应一个或多个设计功能。需要说明的是,本公开的实施例包括但不限于此,例如,通常可以根据具体的设计需求和应用场景进行设计功能模块的划分。
例如,在第一逻辑综合处理过程中,由于缺少各功能单元的物理信息,因此,得到的第一综合网表也往往是一个粗略布局(Coarse Placement)。
步骤S300:基于第一综合网表进行第一布局布线处理,以得到第一版图网表,其中,第一版图网表包括至少一个设计功能模块,该至少一个设计功能模块包括多个功能单元。
例如,可以使用常见的布局布线工具(属于EDA工具)基于第一综合网表进行第一布局布线处理,以得到与第一综合网表相对应的第一版图网表。例如,常见的布局布线工具包括但不限于Synopsys公司的IC Compiler、Candence公司的Encounter工具等。例如,布局布线工具的功能是在给定大小的硅片面积内,基于综合网表对电路进行布局布线处理,以得到相应的版图网表。
例如,在得到第一版图网表后,还可以进行形式验证,以保证前后设计是相同的。此处的形式验证主要是从功能上对第一版图网表进行验证,以确定第一综合网表和第一版图网表二者是否在功能上存在等价性。例如,常用的形式验证方法包括等价性检查方法等。例如,常用的形式验证工具包括但不限于Synopsys公司的Formality工具、Candence公司的Conformal工具等。
例如,图2示出了一种第一版图网表中的功能单元21和设计功能模块design。如图2所示,第一版图网表包括多个功能单元21(如图2中的小矩形块所示);按照设计功能对第一版图网表中的多个功能单元21进行划分,可以得到至少一个设计功能模块design(如图2中的加粗黑色实线圈所示)。示例性地,图2仅示出了一个设计功能模块,但不应视作对本公开的实施例的限制。
例如,第一版图网表中的设计功能模块和功能单元可以对应于前述第一综合网表中的设计功能模块和功能单元。需要说明的是,本公开的实施例包括但不限于此。例如,在一些示例中,在得到第一版图网表后,再对第一综合网表中的功能单元进行分析处理,以确定与第一综合网表相对应的多个设计功能,进而将第一综合网表按照设计功能划分为多个设计功能模块,也即,可以省略第一综合网表中的设计功能模块的划分。例如,第一版图网表中的设计功能模块的划分细节可以参考前述第一综合网表中的设计功能模块的划分细节,在此不再重复赘述。
例如,在第一布局布线处理过程中,通常基于默认的布局约束进行布局布线处理,本公开的实施例对此不作限制。例如,在完成第一布局布线处理后,可以基于第一版图网表,通过布局布线工具抓取各功能单元的物理信息(例如,功能单元的物理坐标和尺寸信息等),构建物理约束;然后,将物理约束返回逻辑综合工具,再次进行逻辑综合,可以提高逻辑综合工具和布局布线工具的相关性,并达到节省余量、提高PPA的目的。
例如,在一些示例中,如图2所示,每个功能单元21的形状可以视作矩形。例如,在一些示例中,通过布局布线工具可以抓取每个功能单元21的物理坐标和尺寸信息等。例如,在一些示例中,通过布局布线工具抓取的每个功能单元21的物理坐标cell(x,y),通常为其对应的矩形的左下角坐标,本公开的实施例包括但不限于此。例如,在一些示例中,通过布局布线工具抓取的每个功能单元21的尺寸信息包括其对应的矩形的长cell_length(即图2中的水平方向即横轴方向的尺寸)和宽cell_height(即图2中的垂直方向即纵轴方向的尺寸)。
例如,基于每个功能单元的物理信息,可以生成相应的物理约束。最常见的方法是通过例如create_bound的命令创建一个矩形物理范围(也称为“约束范围”),并将相应的功能单元限定在其中。例如,create_bound–coordinate{100 100 200 200}INST–soft的命令就是生成一个如下所述的物理约束:将名字为INST的功能单元限制在左下角坐标为(100,100)、右上角坐标为(200,200)的矩形物理范围内;-soft表示当基于上述物理约束进行逻辑综合处理时,逻辑综合工具会尽可能地将该功能单元(即名字为INST的功能单元)摆放在上述物理约束定义的矩形物理范围内,但并不是强制的。需要说明的是,本公开的实施例对物理约束的生成方式不作限制,只要生成的物理约束能够被逻辑综合工具解析即可。
例如,具体地,如图2所示,对于每个功能单元21,可以根据其物理坐标cell(x,y)、长cell_length和宽cell_height并增加一定余量,确定代表其物理信息的矩形物理范围:
矩形物理范围左下角坐标:(x,y)=cell(x,y)–margin(x,y),
矩形物理范围右上角坐标:(x,y)=cell(x,y)+(cell_length,cell_height)+margin(x,y),
其中,margin(x,y)表示一定的余量。例如,margin(x,y)=(k1*cell_length,k2*cell_height),其中,k1、k2为均为比例系数;例如,k1大于或等于5%且小于或等于15%,k2大于或等于5%且小于或等于15%,本公开的实施例包括但不限于此。例如,在一些示例中,k1等于k2;例如,在另一些示例中,k1不等于k2。
类似地,对于每个设计功能模块,可以基于其中的各个功能单元的物理信息,生成相应的物理约束,也即,确定一个最能代表该设计功能模块的矩形物理范围(即约束范围)。图2示意性地示出了对应于设计功能模块design的三种约束范围,即约束范围1、约束范围2、约束范围3。一方面,如图2所示,约束范围1涵盖了设计功能模块design中的全部功能单元,然而,由于设计功能模块design中的功能单元集合分布比较疏松,将约束范围1返回给逻辑综合工具,可能无法起到真正的约束效果,因此,约束范围1本身可能过大,这通常是不合理的。另一方面,如图2所示,约束范围2仅涵盖了设计功能模块design中的少数功能单元,其本身可能过小,这往往也是不合理的。
本申请的发明人注意到:最能代表某一设计功能模块的约束范围并不需要涵盖该设计功能模块中的全部功能单元,而只需要涵盖该设计功能模块中的大多数功能单元(例如,预定比例的功能单元,例如,预定比例的取值范围为80%~95%)即可;也就是说,对于每个设计功能模块,可以将涵盖该设计功能模块中的大多数功能单元的约束范围作为最能代表该设计功能模块的约束范围。例如,在图2中,可以考虑将涵盖设计功能模块design中的大多数功能单元的约束范围3作为最能代表该设计功能模块design的约束范围。
进一步地,本申请的发明人还注意到:涵盖某一设计功能模块中的预定比例的功能单元的约束范围可能不止一种情况,因此,还可以从多种情况中进一步确定出最能代表该设计功能模块的约束范围。例如,图3示意性地示出了一个设计功能模块的三种约束范围。如图3所示,约束范围1涵盖了该设计功能模块中的居左的预定比例的功能单元(图3中的小矩形框表示功能单元),约束范围2涵盖了该设计功能模块中的居中的预定比例的功能单元,约束范围3涵盖了该设计功能模块中的居右的预定比例的功能单元。
本申请的发明人分析后认为:最能代表某一设计功能模块的约束范围应当涵盖该设计功能模块中的最聚拢的预定比例的功能单元;对于其余的功能单元,它们可能跟其他设计功能模块有所交互,所以在物理位置上被拉远了,因此,它们并不能反映该设计功能模块真实的物理信息。基于上述分析,可以将任一设计功能模块中的多个功能单元划分为两类,即最聚拢的预定比例的功能单元以及其余功能单元,其中,恰好涵盖最聚拢的预定比例的功能单元的约束范围最能代表该设计功能模块。例如,在本公开的实施例中,可以通过以下步骤S400确定最聚拢的预定比例的功能单元。
步骤S400:基于第一版图网表,对该至少一个设计功能模块中的该多个功能单元进行聚类处理,以确定该多个功能单元中预定比例的目标功能单元。
例如,可以基于第一版图网表,通过布局布线工具抓取该至少一个设计功能模块中的该多个功能单元的物理信息(例如,物理坐标等);然后,根据该多个功能单元的物理坐标,对该多个功能单元进行聚类处理,从而确定预定比例的目标功能单元。例如,预定比例的目标功能单元为该多个功能单元中最聚拢的预定比例的功能单元。
图4为本公开一些实施例提供的一种对应于图1所示的步骤S400的示例性流程图。例如,如图4所示,基于第一版图网表,对该至少一个设计功能模块中的该多个功能单元进行聚类处理,以确定该多个功能单元中预定比例的目标功能单元,即步骤S400,包括以下步骤S410至步骤S450。
步骤S410:获取该多个功能单元的物理坐标,并计算该多个功能单元的中心坐标作为第一中心坐标;
步骤S420:根据当前的第一中心坐标,确定该多个功能单元中距离当前的第一中心坐标最近的预定比例的功能单元,并计算距离当前的第一中心坐标最近的预定比例的功能单元的中心坐标作为第二中心坐标;
步骤S430:判断当前的第二中心坐标与当前的第一中心坐标是否相同,若当前的第二中心坐标与当前的第一中心坐标不同(如图4中的N所示),则执行下述步骤S440,若当前的第二中心坐标与当前的第一中心坐标相同(如图4中的Y所示),则执行下述步骤S450;
步骤S440:将当前的第二中心坐标作为第一中心坐标,并跳回步骤S420、依次执行步骤S420及后续步骤(也即,重新计算第二中心坐标并判断当前的第二中心坐标与当前的第一中心坐标是否相同);
步骤S450:将距离当前的第一中心坐标最近的预定比例的功能单元作为该多个功能单元中预定比例的目标功能单元。
例如,在步骤S410中,可以基于第一版图网表,通过布局布线工具抓取设计功能模块中的每个功能单元的物理坐标。图5A为本公开一些实施例提供的一种计算设计功能模块中的全部功能单元的中心坐标的示意图。图5A中的每个小矩形块表示功能单元,图5A的虚线框中的全部小矩形块表示设计功能模块中的全部功能单元,圆圈CC0表示全部功能单元的中心坐标。例如,在一些实施例中,对于设计功能模块中的该多个功能单元的中心坐标CC0而言,可以根据以下公式计算其横坐标和纵坐标:
Figure BDA0003142417120000131
其中,XCC0、YCC0分别表示该多个功能单元的中心坐标CC0的横坐标和纵坐标,Xi、Yi分别表示该多个功能单元中的第i个功能单元的横坐标和纵坐标,n表示该多个功能单元中的功能单元的数量。例如,设计功能模块中的该多个功能单元的中心坐标CC0作为初始的第一中心坐标。
例如,在步骤S420中,可以根据当前的第一中心坐标和该多个功能单元的物理坐标,计算该多个功能单元中的每个功能单元到当前的第一中心坐标的距离,从而,可以根据该多个功能单元中的每个功能单元到当前的第一中心坐标的距离,确定该多个功能单元中距离当前的第一中心坐标最近的预定比例的功能单元。例如,在一些实施例中,可以根据以下距离计算公式计算任一功能单元(例如,第j个功能单元)到当前的第一中心坐标的距离:
Figure BDA0003142417120000141
其中,S表示该多个功能单元中的任一功能单元(例如,第j个功能单元)到当前的第一中心坐标的距离,X0、Y0分别表示当前的第一中心坐标(例如,前述第一中心坐标CC0或者后续介绍的第一中心坐标CC1、CC2、…、CCt等)的横坐标和纵坐标,Xj、Yj分别表示该多个功能单元中的第j个功能单元的横坐标和纵坐标,j=1,2,…,n。
例如,在一些实施例中,上述预定比例的取值范围可以为[80%,95%];例如,预定比例的取值可以为80%、85%、90%、95%等。需要说明的是,本公开的实施例包括但不限于此。应当理解的是,在实际应用中,上述预定比例的取值范围及取值可以根据实际需要进行设置。
例如,在步骤S420中,在确定该多个功能单元中距离当前的第一中心坐标最近的预定比例的功能单元后,可以计算距离当前的第一中心坐标最近的预定比例的功能单元的中心坐标,并将其作为第二中心坐标。图5B为本公开一些实施例提供的一种计算设计功能模块中距离当前的第一中心坐标最近的预定比例的功能单元的中心坐标(即第二中心坐标)的示意图。图5B中的每个小矩形块表示功能单元,图5B的虚线框中的全部小矩形块表示距离当前的第一中心坐标CC0(如图中虚线圆圈所示)最近的预定比例的功能单元,圆圈NC0表示距离当前的第一中心坐标CC0最近的预定比例的功能单元的中心坐标(也即,第二中心坐标)。例如,在一些实施例中,对于当前的第二中心坐标(例如,前述第二中心坐标NC0或者后续介绍的第二中心坐标NC1、NC2、…、NCt等)而言,可以根据以下公式计算其横坐标和纵坐标:
Figure BDA0003142417120000142
其中,XN、YN分别表示当前的第二中心坐标的横坐标和纵坐标,Xk、Yk分别表示距离当前的第一中心坐标(例如,前述第一中心坐标CC0或者后续介绍的第一中心坐标CC1、CC2、…、CCt等)最近的预定比例的功能单元中的第k个功能单元的横坐标和纵坐标,m表示距离当前的第一中心坐标最近的预定比例的功能单元中的功能单元的数量。
例如,在一些实施例中,m=RCF(p*n),其中,p表示前述预定比例,RCF()表示取整函数。例如,RCF()可以是四舍五入取整函数、向上取整函数和向下取整函数三者任一。
参考图5A和图5B可知,与旧的中心坐标CC0(即当前的第一中心坐标CC0)相比,新的中心坐标NC0(即当前的第二中心坐标)向设计功能模块中聚拢的功能单元靠近。
例如,在步骤S430中,若当前的第二中心坐标与当前的第一中心坐标不同,则说明距离当前的第一中心坐标最近的预定比例的功能单元还不是设计功能模块中的最聚拢的预定比例的功能单元,而距离当前的第二中心坐标最近的预定比例的功能单元的聚拢程度高于距离当前的第一中心坐标最近的预定比例的功能单元的聚拢程度;因此,可以将当前的第二中心坐标作为第一中心坐标(即新的第一中心坐标,可以参考数学赋值的概念进行理解),并重新计算第二中心坐标(即新的第二中心坐标)以及判断当前的第二中心坐标(即前述新的第二中心坐标)与当前的第一中心坐标(即前述新的第一中心坐标)是否相同。也即,重复性地依次执行步骤S440、步骤S420和步骤S430,直到当前的第二中心坐标与当前的第一中心坐标相同为止。此时,可以执行步骤S450,也即,将距离当前的第一中心坐标最近的预定比例的功能单元作为设计功能模块中最聚拢的预定比例的功能单元,也即,将距离当前的第一中心坐标最近的预定比例的功能单元作为设计功能模块中的该多个功能单元中预定比例的目标功能单元。
例如,在一个具体示例中,步骤S400中的聚类处理的过程可以如下:基于步骤S410计算第一中心坐标CC0,基于步骤S420计算第二中心坐标NC0,基于步骤S430判断当前的第二中心坐标NC0与当前的第一中心坐标CC0是否相同,在二者不同的情况下,将当前的第二中心坐标NC0作为第一中心坐标CC1;基于步骤S420计算第二中心坐标NC1,基于步骤S430判断当前的第二中心坐标NC1与当前的第一中心坐标CC1是否相同,在二者不同的情况下,将当前的第二中心坐标NC1作为第一中心坐标CC2;基于步骤S420计算第二中心坐标NC2,基于步骤S430判断当前的第二中心坐标NC2与当前的第一中心坐标CC2是否相同,在二者不同的情况下,将当前的第二中心坐标NC2作为第一中心坐标CC3;……;以此类推,经过重复执行步骤S440、步骤S420和步骤S430例如t次(t为正整数)后,当前的第二中心坐标NCt与当前的第一中心坐标CCt相同,从而,可以停止上述聚类过程,并可以将距离当前的第一中心坐标CCt最近的预定比例的功能单元作为设计功能模块中最聚拢的预定比例的功能单元,也即作为设计功能模块中的该多个功能单元中预定比例的目标功能单元。
步骤S500:提取预定比例的目标功能单元的物理信息,并根据物理信息生成物理约束。
例如,在一些实施例中,可以基于第一版图网表,通过布局布线工具抓取该至少一个设计功能模块中的该多个功能单元的物理信息(例如,物理坐标等)。例如,在另一些实施例中,由于在步骤S400中抓取了设计功能模块中的各个功能单元的物理信息(例如,物理坐标等),从而可以直接从其中提取预定比例的目标功能单元的物理信息。需要说明的是,本公开的实施例对预定比例的目标功能单元的物理信息的提取方式不作限制。
例如,在一些实施例中,根据预定比例的目标功能单元的物理信息生成物理约束,可以包括:确定预定比例的目标功能单元的物理坐标的横坐标的最小值Xmin和最大值Xmax以及纵坐标的最小值Ymin和最大值Ymax;以及,根据预定比例的目标功能单元的物理坐标的横坐标的最小值Xmin和最大值Xmax以及纵坐标的最小值Ymin和最大值Ymax,确定物理约束。例如,在一些示例中,可以将具有两个对角顶点坐标(Xmin-u*(Xmax-Xmin),Ymin-v*(YmaxYmin))、(Xmax+u*(Xmax-Xmin),Ymax+v*(Ymax-Ymin))的矩形物理范围作为设计功能模块对应的物理约束。应当理解的是,在忽略功能单元的尺寸大小的情况下,预定比例的目标功能单元占据的最小矩形物理范围为具有两个对角顶点坐标(Xmin,Ymin)、(Xmax,Ymax)的矩形物理范围;本公开的实施例确定的物理约束在上述最小矩形物理范围的基础上额外增加了一定的余量(margin),其中,u*(Xmax-Xmin)表示横轴方向上的余量,v*(Ymax-Ymin)表示纵轴方向上的余量。需要说明的是,在本公开的实施例中,由于物理约束包括了一定的余量,因此,忽略功能单元的尺寸大小是可行的。例如,u的取值范围可以为[5%,15%],v的取值范围也可以为[5%,15%],本公开的实施例包括但不限于此。例如,在一些示例中,u等于v;例如,在另一些示例中,u不等于v。
需要说明的是,u、v的数值大小反映了物理约束的松紧程度;例如,u、v越大,则设计功能模块中的各功能单元在上述物理约束定义的矩形物理范围内的排布可以越疏松;例如,u、v越小,则设计功能模块中的各功能单元在上述物理约束定义的矩形物理范围内的排布通常越紧密。例如,在一些实示例中,u、v均可以通过参数进行控制,本公开的实施例包括但不限于此。
应当理解的是,芯片通常包括多个设计功能模块,多个设计功能模块对应于多个不同的物理约束,每个物理约束例如可以通过前述两个对角顶点坐标进行表征。
步骤S600:基于物理约束,对芯片设计代码进行第二逻辑综合处理,以得到第二综合网表。
例如,可以使用常见的逻辑综合工具(属于EDA工具)对芯片设计代码进行第二逻辑综合处理,以得到与芯片设计代码相对应的第二综合网表。例如,常见的逻辑综合工具包括但不限于Synopsys公司的Design Compiler工具、Candence公司的Genus工具等。
例如,在得到第一综合网表后,可以进行静态时序分析和形式验证等处理,上述处理的作用及所使用的工具可以参考前述步骤S200中的相关描述,在此不再重复赘述。
应当理解的是,基于物理约束进行第二逻辑综合处理时,逻辑综合工具会尽可能地将设计功能模块中的各个功能单元摆放在上述物理约束定义的矩形物理范围内,但并不是强制的。
例如,在第二逻辑综合处理过程中,由于引入了设计功能模块的物理约束,因此,与步骤S200中得到的第一综合网表相比,步骤S600中得到的第二综合网表是一个较为精确的布局。
需要说明的是,在spg flow资源消耗过大时,可以使用上述芯片设计方法(具体地,芯片设计方法中的步骤S400和步骤S500等)替代spg流程。例如,可以利用上述芯片设计方法遍历芯片内的所有一级设计功能模块和/或更高级设计功能模块,并生成相应的物理约束返回给逻辑综合工具,则逻辑综合时就可以得到大多数设计功能模块的物理信息,并通过物理约束将各设计功能模块和/或各功能单元尽量摆放在约束的范围内。例如,一级设计功能模块包括功能单元。例如,更高级设计功能模块包括二级设计功能模块、三级设计功能模块等;二级设计功能模块可以包括一级设计功能模块,还可以包括额外的功能单元;三级设计功能模块可以包括二级设计功能模块,还可以包括额外的一级设计功能模块和/或功能单元;也就是说,高级别的设计功能模块可以包括低级别的设计功能模块和/或功能单元。另外,上述芯片设计方法也可以用于辅助spg流程或是根据需要获取指定单元或设计的物理信息并返回逻辑综合工具从而提升逻辑综合质量。
例如,在一些实施例中,如图1所示,本公开的实施例提供的芯片设计方法还可以包括步骤S700。
步骤S700:基于第二综合网表进行第二布局布线处理,以得到第二版图网表。
例如,可以使用常见的布局布线工具(属于EDA工具)基于第二综合网表进行第二布局布线处理,以得到与第二综合网表相对应的第二版图网表。例如,常见的布局布线工具包括但不限于Synopsys公司的IC Compiler、Candence公司的Encounter工具等。
例如,在一些实施例中,还可以对第二版图网表进行功能和时序上的各种验证,例如设计规则检查(Design Rule Check)、电路规则检查(Layout Versus Schematic)等,最终生成用于芯片生产的GDS(Geometry Data Standard)版图。
本公开的实施例提供的芯片设计方法,可以提高综合阶段和布局布线阶段的相关性,从而节省时序余量、提高PPA,同时还可以辅助spg flow来约束指定单元或设计的物理范围。
本公开至少一些实施例还提供一种芯片设计装置。图6为本公开一些实施例提供的一种芯片设计装置的示意性框图。例如,如图6所示,该芯片设计装置100包括获取单元110、第一逻辑综合单元120、第一布局布线单元130、聚类单元140、物理约束生成单元150和第二逻辑综合单元160。
例如,获取模块110被配置为获取芯片设计代码;第一逻辑综合单元120被配置为对芯片设计代码进行第一逻辑综合处理,以得到第一综合网表;第一布局布线单元130被配置为基于第一综合网表进行第一布局布线处理,以得到第一版图网表,其中,第一版图网表包括至少一个设计功能模块,该至少一个设计功能模块包括多个功能单元;聚类单元140被配置为基于第一版图网表,对该至少一个设计功能模块中的该多个功能单元进行聚类处理,以确定该多个功能单元中预定比例的目标功能单元;物理约束生成单元150被配置为提取预定比例的目标功能单元的物理信息,并根据物理信息生成物理约束;第二逻辑综合单元160被配置为基于物理约束,对芯片设计代码进行第二逻辑综合处理,以得到第二综合网表。
例如,上述预定比例的取值范围为[80%,95%]。
例如,在执行“基于第一版图网表,对该至少一个设计功能模块中的该多个功能单元进行聚类处理,以确定该多个功能单元中预定比例的目标功能单元”的操作时,聚类单元140可以执行以下操作:获取该多个功能单元的物理坐标,并计算该多个功能单元的中心坐标作为第一中心坐标;根据当前的第一中心坐标,确定该多个功能单元中距离当前的第一中心坐标最近的预定比例的功能单元,并计算距离当前的第一中心坐标最近的预定比例的功能单元的中心坐标作为第二中心坐标;判断当前的第二中心坐标与当前的第一中心坐标是否相同,若当前的第二中心坐标与当前的第一中心坐标不同,则将当前的第二中心坐标作为第一中心坐标,并重新计算第二中心坐标以及判断当前的第二中心坐标与当前的第一中心坐标是否相同,若当前的第二中心坐标与当前的第一中心坐标相同,则将距离当前的第一中心坐标最近的预定比例的功能单元作为该多个功能单元中预定比例的目标功能单元。
例如,在执行“计算该多个功能单元的中心坐标”的操作时,聚类单元140可以根据以下公式计算所述多个功能单元的中心坐标:
Figure BDA0003142417120000191
其中,XCC0、YCC0分别表示所述多个功能单元的中心坐标的横坐标和纵坐标,Xi、Yi分别表示所述多个功能单元中的第i个功能单元的横坐标和纵坐标,n表示所述多个功能单元中的功能单元的数量
例如,在执行“根据当前的第一中心坐标,确定该多个功能单元中距离当前的第一中心坐标最近的预定比例的功能单元”的操作时,聚类单元140可以执行以下操作:根据当前的第一中心坐标和该多个功能单元的物理坐标,计算该多个功能单元中的每个功能单元到当前的第一中心坐标的距离;以及,根据该多个功能单元中的每个功能单元到当前的第一中心坐标的距离,确定该多个功能单元中距离当前的第一中心坐标最近的所述预定比例的功能单元。
例如,在执行“计算该多个功能单元中的每个功能单元到当前的第一中心坐标的距离”的操作时,聚类单元140可以执行以下操作:根据以下公式计算该多个功能单元中的第j个功能单元到当前的第一中心坐标的距离:
Figure BDA0003142417120000201
其中,S表示第j个功能单元到当前的第一中心坐标的距离,X0、Y0分别表示当前的第一中心坐标的横坐标和纵坐标,Xj、Yj分别表示第j个功能单元的横坐标和纵坐标,j=1,2,…,n,n表示该多个功能单元中的功能单元的数量。
例如,在执行“计算距离当前的第一中心坐标最近的预定比例的功能单元的中心坐标”的操作时,聚类单元140可以根据以下公式计算距离当前的第一中心坐标最近的预定比例的功能单元的中心坐标:
Figure BDA0003142417120000202
其中,XN、YN分别表示距离当前的第一中心坐标最近的预定比例的功能单元的中心坐标的横坐标和纵坐标,Xk、Yk分别表示距离当前的第一中心坐标最近的预定比例的功能单元中的第k个功能单元的横坐标和纵坐标,m表示距离当前的第一中心坐标最近的预定比例的功能单元中的功能单元的数量。
例如,m=RCF(p*n),其中,p表示前述预定比例,n表示该多个功能单元中的功能单元的数量,RCF()表示取整函数。例如,RCF()可以是四舍五入取整函数、向上取整函数和向下取整函数三者任一。
例如,在执行“提取预定比例的目标功能单元的物理信息,并根据物理信息生成物理约束”的操作时,物理约束生成单元150可以执行以下操作:获取预定比例的目标功能单元的物理坐标;确定预定比例的目标功能单元的物理坐标的横坐标的最小值和最大值以及纵坐标的最小值和最大值;以及,根据预定比例的目标功能单元的物理坐标的横坐标的最小值和最大值以及纵坐标的最小值和最大值,确定物理约束。
例如,在执行“根据预定比例的目标功能单元的物理坐标的横坐标的最小值和最大值以及纵坐标的最小值和最大值,确定物理约束”的操作时,物理约束生成单元150可以执行以下操作:将具有两个对角顶点坐标(Xmin-u*(Xmax-Xmin),Ymin-v*(Ymax-Ymin))、(Xmax+u*(Xmax-Xmin),Ymax+v*(Ymax-Ymin))的矩形物理范围作为所述物理约束,其中,Xmin和Xmax分别表示所述预定比例的目标功能单元的物理坐标的横坐标的最小值和最大值,Ymin和Ymax分别表示所述预定比例的目标功能单元的物理坐标的纵坐标的最小值和最大值,u的取值范围为[5%,15%],v的取值范围为[5%,15%]。
例如,u等于v,或u不等于v。
例如,该至少一个设计功能模块中的该多个功能单元包括寄存器单元。
例如,如图6所示,该芯片设计装置100还可以包括第二布局布线单元170,第二布局布线单元170被配置为基于第二综合网表进行第二布局布线处理,以得到第二版图网表。
例如,获取单元110、第一逻辑综合单元120、第一布局布线单元130、聚类单元140、物理约束生成单元150、第二逻辑综合单元160和第二布局布线单元170中的各个单元可以包括存储在存储器中的代码和程序;处理器可以执行该代码和程序以实现如上所述的各个单元的部分或全部功能。例如,获取单元110、第一逻辑综合单元120、第一布局布线单元130、聚类单元140、物理约束生成单元150、第二逻辑综合单元160和第二布局布线单元170中的各个单元可以是专用硬件器件,用来实现如上所述的各个单元的部分或全部功能。例如,获取单元110、第一逻辑综合单元120、第一布局布线单元130、聚类单元140、物理约束生成单元150、第二逻辑综合单元160和第二布局布线单元170中的各个单元可以是一个电路板或多个电路板的组合,用于实现如上所述的功能。在本公开的实施例中,该一个电路板或多个电路板的组合可以包括:(1)一个或多个处理器;(2)与处理器相连接的一个或多个非暂时性存储器;以及(3)处理器可执行的存储在存储器中的固件。
需要说明的是,芯片设计装置100可以用于实现前述芯片设计方法。例如,获取单元110可以用于实现前述芯片设计方法中的步骤S100,具体实现过程和细节可以参考前述步骤S100的相关描述,在此不再重复赘述。例如,第一逻辑综合单元120可以用于实现前述芯片设计方法中的步骤S200,具体实现过程和细节可以参考前述步骤S200的相关描述,在此不再重复赘述。例如,第一布局布线单元130可以用于实现前述芯片设计方法中的步骤S300,具体实现过程和细节可以参考前述步骤S300的相关描述,在此不再重复赘述。例如,聚类单元140可以用于实现前述芯片设计方法中的步骤S400,具体实现过程和细节可以参考前述步骤S400的相关描述,在此不再重复赘述。例如,物理约束生成单元150可以用于实现前述芯片设计方法中的步骤S500,具体实现过程和细节可以参考前述步骤S500的相关描述,在此不再重复赘述。例如,第二逻辑综合单元160可以用于实现前述芯片设计方法中的步骤S600,具体实现过程和细节可以参考前述步骤S600的相关描述,在此不再重复赘述。例如,第二布局布线单元170可以用于实现前述芯片设计方法中的步骤S700,具体实现过程和细节可以参考前述步骤S700的相关描述,在此不再重复赘述。
应当理解的是,在实际应用中,芯片设计装置100中的一些单元的功能可以相互合并。例如,在一些示例中,第一逻辑综合单元120和第二逻辑综合单元160可以为同一个逻辑综合单元。例如,在一些示例中,第一布局布线单元130和第二布局布线单元170可以为同一个布局布线单元。当然,芯片设计装置100中的一些单元还可以进一步拆分为多个子单元。例如,在一些示例中,聚类单元140可以包括若干子单元,分别用于实现前述步骤S410至步骤S450。
图7为本公开一些实施例提供的另一种芯片设计装置的示意性框图。例如,如图7所示,该芯片设计装置500包括存储器510和处理器520。例如,存储器510用于非暂时性存储计算机可读指令,处理器520用于运行该计算机可读指令,该计算机可读指令被处理器520运行时执行本公开任一实施例提供的芯片设计方法。
例如,存储器510和处理器520之间可以直接或间接地互相通信。例如,在一些示例中,如图7所示,该芯片设计装置500还可以包括系统总线530,存储器510和处理器520之间可以通过系统总线530互相通信,例如,处理器520可以通过系统总线1006访问存储器510。例如,在另一些示例中,存储器510和处理器520等组件之间可以通过网络连接进行通信。网络可以包括无线网络、有线网络、和/或无线网络和有线网络的任意组合。网络可以包括局域网、互联网、电信网、基于互联网和/或电信网的物联网(Internet of Things)、和/或以上网络的任意组合等。有线网络例如可以采用双绞线、同轴电缆或光纤传输等方式进行通信,无线网络例如可以采用3G/4G/5G移动通信网络、蓝牙、Zigbee或者WiFi等通信方式。本公开对网络的类型和功能在此不作限制。
例如,处理器520可以控制芯片设计装置中的其它组件以执行期望的功能。处理器520可以是中央处理单元(CPU)、张量处理器(TPU)、网络处理器(NP)或者图形处理器GPU等具有数据处理能力和/或程序执行能力的器件,还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。中央处理器(CPU)可以为X86或ARM架构等。GPU可以单独地直接集成到主板上,或者内置于主板的北桥芯片中。GPU也可以内置于中央处理器(CPU)上。
例如,存储器510可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。
例如,在存储器510上可以存储一个或多个计算机指令,处理器520可以运行所述计算机指令,以实现各种功能。在计算机可读存储介质中还可以存储各种应用程序和各种数据,例如芯片设计代码、第一综合网表、第一版图网表、物理约束、第二综合网表、第二版图网表以及应用程序使用和/或产生的各种数据等。
例如,存储器510存储的一些计算机指令被处理器520执行时可以执行根据上文所述的芯片设计方法中的一个或多个步骤。
例如,如图7所示,芯片设计装置500还可以包括允许外部设备与同义词挖掘装置500进行通信的输入接口540。例如,输入接口540可被用于从外部计算机设备、从用户等处接收指令。芯片设计挖掘装置500还可以包括使芯片设计装置500和一个或多个外部设备相互连接的输出接口550。例如,芯片设计装置500可以通过输出接口550显示图像等。通过输入接口1010和/或输出接口1012与芯片设计装置500通信的外部设备可被包括在提供任何类型的用户可与之交互的用户界面的环境中。用户界面类型的示例包括图形用户界面、自然用户界面等。例如,图形用户界面可接受来自用户采用诸如键盘、鼠标、遥控器等之类的输入设备的输入,以及在诸如显示器之类的输出设备上提供输出。此外,自然用户界面可使得用户能够以无需受到诸如键盘、鼠标、遥控器等之类的输入设备强加的约束的方式来与芯片设计装置500交互。相反,自然用户界面可依赖于语音识别、触摸和指示笔识别、屏幕上和屏幕附近的手势识别、空中手势、头部和眼睛跟踪、语音和语音、视觉、触摸、手势、以及机器智能等。
另外,尽管芯片设计装置100和芯片设计装置500在图6和图7中均被示出为单个系统,但可以理解,芯片设计装置100和芯片设计装置500也可以是分布式系统,还可以布置为云设施(包括公有云或私有云)。因此,例如,若干设备可以通过网络连接进行通信并且可共同执行被描述为由芯片设计装置100或芯片设计装置500执行的任务。
例如,关于芯片设计方法的处理过程的详细说明可以参考上述芯片设计方法的实施例中的相关描述,重复之处不再赘述。
需要说明的是,本公开的实施例提供的芯片设计装置是示例性的,而非限制性的,根据实际应用需要,该芯片设计装置还可以包括其他常规部件或结构,例如,为实现芯片设计装置的必要功能,本领域技术人员可以根据具体应用场景设置其他的常规部件或结构,本公开的实施例对此不作限制。
本公开的实施例提供的芯片设计装置的技术效果可以参考上述实施例中关于芯片设计方法的相应描述,在此不再赘述。
本公开至少一些实施例还提供一种非暂时性存储介质。图8为本公开一些实施例提供的一种非暂时性存储介质的示意图。例如,如图8所示,该存储介质600非暂时性地存储计算机可读指令601,当非暂时性计算机可读指令601由计算机(包括处理器)执行时可以执行本公开任一实施例提供的芯片设计方法。
例如,在存储介质600上可以存储一个或多个计算机指令。存储介质600上存储的一些计算机指令可以是例如用于实现上述芯片设计方法中的一个或多个步骤的指令。
例如,存储介质可以包括平板电脑的存储部件、个人计算机的硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、光盘只读存储器(CD-ROM)、闪存、或者上述存储介质的任意组合,也可以为其他适用的存储介质。例如,存储介质600可以包括前述芯片设计装置500中的存储器510。
本公开的实施例提供的存储介质的技术效果可以参考上述实施例中关于芯片设计方法的相应描述,在此不再赘述。
对于本公开,有以下几点需要说明:
(1)本公开实施例附图中,只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开同一实施例及不同实施例中的特征可以相互组合。
以上,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。

Claims (16)

1.一种芯片设计方法,包括:
获取芯片设计代码;
对所述芯片设计代码进行第一逻辑综合处理,以得到第一综合网表;
基于所述第一综合网表进行第一布局布线处理,以得到第一版图网表,其中,所述第一版图网表包括至少一个设计功能模块,所述至少一个设计功能模块包括多个功能单元;
基于所述第一版图网表,获取所述至少一个设计功能模块中的所述多个功能单元的物理坐标;
基于所述多个功能单元的物理坐标,对所述多个功能单元进行聚类处理,以确定所述多个功能单元中预定比例的目标功能单元;
提取所述预定比例的目标功能单元的物理信息,并根据所述物理信息生成物理约束;以及
基于所述物理约束,对所述芯片设计代码进行第二逻辑综合处理,以得到第二综合网表。
2.根据权利要求1所述的芯片设计方法,其中,所述预定比例的取值范围为[80%,95%]。
3.根据权利要求1或2所述的芯片设计方法,其中,基于所述多个功能单元的物理坐标,对所述多个功能单元进行所述聚类处理,以确定所述多个功能单元中所述预定比例的目标功能单元,包括:
基于所述多个功能单元的物理坐标,计算所述多个功能单元的中心坐标作为第一中心坐标;
根据当前的第一中心坐标,确定所述多个功能单元中距离当前的第一中心坐标最近的所述预定比例的功能单元,并计算距离当前的第一中心坐标最近的所述预定比例的功能单元的中心坐标作为第二中心坐标;
判断当前的第二中心坐标与当前的第一中心坐标是否相同,
若当前的第二中心坐标与当前的第一中心坐标不同,则将当前的第二中心坐标作为第一中心坐标,并重新计算第二中心坐标以及判断当前的第二中心坐标与当前的第一中心坐标是否相同,
若当前的第二中心坐标与当前的第一中心坐标相同,则将距离当前的第一中心坐标最近的所述预定比例的功能单元作为所述多个功能单元中所述预定比例的目标功能单元。
4.根据权利要求3所述的芯片设计方法,其中,计算所述多个功能单元的中心坐标,包括:
根据以下公式计算所述多个功能单元的中心坐标:
Figure FDA0003913016840000021
其中,XCC0、YCC0分别表示所述多个功能单元的中心坐标的横坐标和纵坐标,Xi、Yi分别表示所述多个功能单元中的第i个功能单元的横坐标和纵坐标,n表示所述多个功能单元中的功能单元的数量。
5.根据权利要求3所述的芯片设计方法,其中,根据当前的第一中心坐标,确定所述多个功能单元中距离当前的第一中心坐标最近的所述预定比例的功能单元,包括:
根据当前的第一中心坐标和所述多个功能单元的物理坐标,计算所述多个功能单元中的每个功能单元到当前的第一中心坐标的距离;以及
根据所述多个功能单元中的每个功能单元到当前的第一中心坐标的距离,确定所述多个功能单元中距离当前的第一中心坐标最近的所述预定比例的功能单元。
6.根据权利要求5所述的芯片设计方法,其中,计算所述多个功能单元中的每个功能单元到当前的第一中心坐标的距离,包括:
根据以下公式计算所述多个功能单元中的第j个功能单元到当前的第一中心坐标的距离:
Figure FDA0003913016840000022
其中,S表示所述第j个功能单元到当前的第一中心坐标的距离,X0、Y0分别表示当前的第一中心坐标的横坐标和纵坐标,Xj、Yj分别表示所述第j个功能单元的横坐标和纵坐标,j=1,2,…,n,n表示所述多个功能单元中的功能单元的数量。
7.根据权利要求3所述的芯片设计方法,其中,计算距离当前的第一中心坐标最近的所述预定比例的功能单元的中心坐标,包括:
根据以下公式计算距离当前的第一中心坐标最近的所述预定比例的功能单元的中心坐标:
Figure FDA0003913016840000031
其中,XN、YN分别表示距离当前的第一中心坐标最近的所述预定比例的功能单元的中心坐标的横坐标和纵坐标,Xk、Yk分别表示距离当前的第一中心坐标最近的所述预定比例的功能单元中的第k个功能单元的横坐标和纵坐标,m表示距离当前的第一中心坐标最近的所述预定比例的功能单元中的功能单元的数量。
8.根据权利要求7所述的芯片设计方法,其中,
m=RCF(p*n),
其中,p表示所述预定比例,n表示所述多个功能单元中的功能单元的数量,RCF()表示取整函数。
9.根据权利要求1或2所述的芯片设计方法,其中,提取所述预定比例的目标功能单元的所述物理信息,并根据所述物理信息生成所述物理约束,包括:
获取所述预定比例的目标功能单元的物理坐标;
确定所述预定比例的目标功能单元的物理坐标的横坐标的最小值和最大值以及纵坐标的最小值和最大值;以及
根据所述预定比例的目标功能单元的物理坐标的横坐标的最小值和最大值以及纵坐标的最小值和最大值,确定所述物理约束。
10.根据权利要求9所述的芯片设计方法,其中,根据所述预定比例的目标功能单元的物理坐标的横坐标的最小值和最大值以及纵坐标的最小值和最大值,确定所述物理约束,包括:
将具有两个对角顶点坐标(Xmin-u*(Xmax-Xmin),Ymin-v*(Ymax-Ymin))、(Xmax+u*(Xmax-Xmin),Ymax+v*(Ymax-Ymin))的矩形物理范围作为所述物理约束,
其中,Xmin和Xmax分别表示所述预定比例的目标功能单元的物理坐标的横坐标的最小值和最大值,Ymin和Ymax分别表示所述预定比例的目标功能单元的物理坐标的纵坐标的最小值和最大值,u的取值范围为[5%,15%],v的取值范围为[5%,15%]。
11.根据权利要求1或2所述的芯片设计方法,其中,所述多个功能单元包括寄存器单元。
12.根据权利要求1或2所述的芯片设计方法,还包括:
基于所述第二综合网表进行第二布局布线处理,以得到第二版图网表。
13.一种芯片设计装置,包括:
获取单元,被配置为获取芯片设计代码;
第一逻辑综合单元,被配置为对所述芯片设计代码进行第一逻辑综合处理,以得到第一综合网表;
第一布局布线单元,被配置为基于所述第一综合网表进行第一布局布线处理,以得到第一版图网表,其中,所述第一版图网表包括至少一个设计功能模块,所述至少一个设计功能模块包括多个功能单元;
聚类单元,被配置为基于所述第一版图网表,获取所述至少一个设计功能模块中的所述多个功能单元的物理坐标,以及基于所述多个功能单元的物理坐标,对所述多个功能单元进行聚类处理,以确定所述多个功能单元中预定比例的目标功能单元;
物理约束生成单元,被配置为提取所述预定比例的目标功能单元的物理信息,并根据所述物理信息生成物理约束;以及
第二逻辑综合单元,被配置为基于所述物理约束,对所述芯片设计代码进行第二逻辑综合处理,以得到第二综合网表。
14.根据权利要求13所述的芯片设计装置,还包括:
第二布局布线单元,被配置为基于所述第二综合网表进行第二布局布线处理,以得到第二版图网表。
15.一种芯片设计装置,包括:
存储器,用于非暂时性存储计算机可读指令;以及
处理器,用于运行所述计算机可读指令,其中,所述计算机可读指令被所述处理器运行时执行根据权利要求1-12任一项所述的芯片设计方法。
16.一种非暂时性存储介质,非暂时性地存储计算机可读指令,其中,当所述计算机可读指令由计算机执行时,执行根据权利要求1-12任一项所述的芯片设计方法。
CN202110738783.3A 2021-06-30 2021-06-30 芯片设计方法、芯片设计装置及非暂时性存储介质 Active CN113486611B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110738783.3A CN113486611B (zh) 2021-06-30 2021-06-30 芯片设计方法、芯片设计装置及非暂时性存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110738783.3A CN113486611B (zh) 2021-06-30 2021-06-30 芯片设计方法、芯片设计装置及非暂时性存储介质

Publications (2)

Publication Number Publication Date
CN113486611A CN113486611A (zh) 2021-10-08
CN113486611B true CN113486611B (zh) 2023-04-25

Family

ID=77937131

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110738783.3A Active CN113486611B (zh) 2021-06-30 2021-06-30 芯片设计方法、芯片设计装置及非暂时性存储介质

Country Status (1)

Country Link
CN (1) CN113486611B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114218887B (zh) * 2022-02-14 2022-06-24 西安芯瞳半导体技术有限公司 一种基于深度学习的芯片配置设计方法、装置及介质
CN116127882B (zh) * 2023-04-19 2023-07-11 太初(无锡)电子科技有限公司 一种层次化逻辑综合方法、装置、设备和存储介质
CN116595918B (zh) * 2023-07-18 2023-12-08 奇捷科技(深圳)有限公司 快速逻辑等价性验证方法、装置、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104077427A (zh) * 2013-03-28 2014-10-01 国际商业机器公司 跨时钟域的时钟树构建方法和系统、集成电路及制造方法
US10162924B1 (en) * 2016-09-12 2018-12-25 Altera Corporation Method and apparatus for performing large scale consensus based clustering

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6578183B2 (en) * 2001-10-22 2003-06-10 Silicon Perspective Corporation Method for generating a partitioned IC layout
US6651235B2 (en) * 2001-10-30 2003-11-18 Cadence Design Systems, Inc. Scalable, partitioning integrated circuit layout system
US7418683B1 (en) * 2005-09-21 2008-08-26 Cadence Design Systems, Inc Constraint assistant for circuit design
US20090241082A1 (en) * 2008-03-19 2009-09-24 Amundson Michael D Method and System for Generating an Accurate Physical Realization for an Integrated Circuit Having Incomplete Physical Constraints
US8589855B1 (en) * 2012-05-30 2013-11-19 International Business Machines Corporation Machine-learning based datapath extraction
US9495501B1 (en) * 2016-01-29 2016-11-15 International Business Machines Corporation Large cluster persistence during placement optimization of integrated circuit designs

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104077427A (zh) * 2013-03-28 2014-10-01 国际商业机器公司 跨时钟域的时钟树构建方法和系统、集成电路及制造方法
US10162924B1 (en) * 2016-09-12 2018-12-25 Altera Corporation Method and apparatus for performing large scale consensus based clustering

Also Published As

Publication number Publication date
CN113486611A (zh) 2021-10-08

Similar Documents

Publication Publication Date Title
CN113486611B (zh) 芯片设计方法、芯片设计装置及非暂时性存储介质
US11836641B2 (en) Machine learning-based prediction of metrics at early-stage circuit design
US8839171B1 (en) Method of global design closure at top level and driving of downstream implementation flow
US9026978B1 (en) Reverse interface logic model for optimizing physical hierarchy under full chip constraint
US20130091482A1 (en) Method and apparatus for design space exploration acceleration
US20180173834A1 (en) Pin-Based Noise Characterization for Silicon Compiler
KR20210129071A (ko) 상관된 샘플 생성 및 효율적인 통계적 시뮬레이션을 사용하여 타이밍 수율 및 수율 병목을 컴퓨팅하기 위한 신규한 방법
WO2022247092A1 (en) Methods and systems for congestion prediction in logic synthesis using graph neural networks
US11636388B1 (en) Machine learning-based algorithm to accurately predict detail-route DRVS for efficient design closure at advanced technology nodes
US10002225B2 (en) Static timing analysis with improved accuracy and efficiency
US11042678B2 (en) Clock gate latency modeling based on analytical frameworks
US9378327B2 (en) Canonical forms of layout patterns
US20200104443A1 (en) Hardware simulation systems and methods for reducing signal dumping time and size by fast dynamical partial aliasing of signals having similar waveform
US20190034571A1 (en) Formal Clock Network Analysis, Visualization, Verification and Generation
US11475197B2 (en) Hardware simulation systems and methods for identifying state-holding loops and oscillating loops
US20240143885A1 (en) Multiply-Instantiated Block Modeling For Circuit Component Placement In Integrated Circuit
TW201732661A (zh) 實體擺置控制
Wang et al. Cnn-inspired analytical global placement for large-scale heterogeneous fpgas
US20160232275A1 (en) Method and apparatus for logical design connectivity-based automatic macro placement
US11842130B1 (en) Model-based simulation result predictor for circuit design
Klinefelter How Software Can" Chip In" to the IC Design Process: A Multidisciplinary Approach May Attract New Talent and Accelerate Innovation
US10311188B2 (en) Circuit design support apparatus, circuit design support method, and computer readable medium
Dömer Transaction level modeling of computation
US20230195982A1 (en) Transformations for multicycle path prediction of clock signals
JP2010262412A (ja) 論理回路設計装置

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
GR01 Patent grant
GR01 Patent grant