CN116090396B - 显示芯片设计的数据流的方法及相关设备 - Google Patents
显示芯片设计的数据流的方法及相关设备 Download PDFInfo
- Publication number
- CN116090396B CN116090396B CN202211734681.5A CN202211734681A CN116090396B CN 116090396 B CN116090396 B CN 116090396B CN 202211734681 A CN202211734681 A CN 202211734681A CN 116090396 B CN116090396 B CN 116090396B
- Authority
- CN
- China
- Prior art keywords
- connection
- chip design
- modules
- macro
- module
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/392—Floor-planning or layout, e.g. partitioning or placement
-
- 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
- G06F30/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
Abstract
本申请提供一种显示芯片设计的数据流的方法及相关设备。该方法,包括:从所述芯片设计的多个模块中筛选得到多个目标模块;根据所述多个目标模块,追踪所述芯片设计中的连接关系;根据所述连接关系,生成所述芯片设计的数据流;根据所述芯片设计的数据流,显示包含所述数据流的信息的页面。
Description
技术领域
本申请涉及芯片技术领域,尤其涉及一种显示芯片设计的数据流的方法及相关设备。
背景技术
电子设计自动化(Electronic Design Automation,简称EDA),是指利用计算机辅助设计(CAD)软件,来完成超大规模集成电路(VLSI)芯片的功能设计、综合、验证、物理设计(包括布局、布线、版图、设计规则检查等)等流程的设计方式。
在数字芯片设计流程中,布局规划(Floorplan)是重要的一环,布局规划的好坏直接影响整体设计的时序以及布线质量。因此在设计流程中,布局规划是需要反复迭代的过程。
因此,如何在这个迭代的过程中帮助用户分析和理解芯片设计的数据流向关系,是一个亟待解决的问题。
发明内容
鉴于此,本申请提出一种显示芯片设计的数据流的方法及相关设备,以解决或部分解决上述问题。
本申请第一方面,提供了一种显示芯片设计的数据流的方法,包括:
从所述芯片设计的多个模块中筛选得到多个目标模块;
根据所述多个目标模块,追踪所述芯片设计中的连接关系;
根据所述连接关系,生成所述芯片设计的数据流;
根据所述芯片设计的数据流,显示包含所述数据流的信息的页面。
本申请第二方面,提供了一种计算机设备,包括一个或者多个处理器、存储器;和一个或多个程序,其中所述一个或多个程序被存储在所述存储器中,并且被所述一个或多个处理器执行,所述程序包括用于执行根据第一方面所述的方法的指令。
本申请第三方面,提供了一种包含计算机程序的非易失性计算机可读存储介质,当所述计算机程序被一个或多个处理器执行时,使得所述处理器执行第一方面所述的方法。
本申请第四方面,提供了一种计算机程序产品,包括计算机程序指令,当所述计算机程序指令在计算机上运行时,使得计算机执行第一方面所述的方法。
本申请提供的显示芯片设计的数据流的方法及相关设备,通过从所述芯片设计的多个模块中筛选得到多个目标模块而无需用户进行手动选择,然后,根据所述多个目标模块来生成并显示包含数据流信息的页面,从而因为对芯片设计的模块进行了筛选进而减少了计算量。
附图说明
为了更清楚地说明本申请或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请实施例所提供的示例性计算机设备的硬件结构示意图。
图2示出了根据本申请实施例的EDA工具的基本结构示意图。
图3示出了根据本申请实施例的EDA工具的一个计算命令的基本执行流程的示意图。
图4A示出了本申请实施例所提供的示例性方法的流程示意图。
图4B示出了本申请实施例所提供的示例性模块筛选方法的流程示意图。
图4C示出了本申请实施例所提供的示例性连接追踪方法的流程示意图。
图4D示出了本申请实施例所提供的示例性连接追踪方法的流程示意图。
图4E示出了本申请实施例所提供的示例性宏单元相关性计算方法的流程示意图。
图5A示出了根据本申请实施例的示例性逻辑层级结构的示意图。
图5B示出了根据本申请实施例的示例性简化层级结构的示意图。
图5C示出了根据本申请实施例的示例性电路拓扑结构的示意图。
图5D示出了根据本申请实施例的示例性通用跟踪模式的示意图。
图5E示出了根据本申请实施例的示例性模块边界跟踪模式的示意图。
图5F示出了根据本申请实施例的示例性模块连接关系的示意图。
图5G示出了根据本申请实施例的示例性模块连接数的示意图。
图5H示出了根据本申请实施例的示例性模块连接数的示意图。
图5I示出了根据本申请实施例的示例性数据流图的示意图。
图5J示出了根据本申请实施例的示例性连接关系浏览器的示意图。
图5K示出了根据本申请实施例的示例性详细连接路径的示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本申请进一步详细说明。
需要说明的是,除非另外定义,本申请实施例使用的技术术语或者科学术语应当为本申请所属领域内具有一般技能的人士所理解的通常意义。本申请实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
图1示出了本申请实施例所提供的一种计算机设备100的结构示意图。该计算机设备100可以包括:处理器102、存储器104、网络接口106、外围接口108和总线110。其中处理器102、存储器104、网络接口106和外围接口108通过总线110实现彼此之间在设备内部的通信连接。
处理器102可以是中央处理器(Central Processing Unit,CPU)、图像处理器、神经网络处理器(NPU)、微控制器(MCU)、可编程逻辑器件、数字信号处理器(DSP)、应用专用集成电路(Application Specific Integrated Circuit,ASIC)或者一个或多个集成电路。处理器102可以用于执行与本申请描述的技术相关的功能。在一些实施例中,处理器102还可以包括集成为单一逻辑组件的多个处理器。如图1所示,处理器102可以包括多个处理器102a、102b和102c。
存储器104可以配置为存储数据(例如,指令集、计算机代码、中间数据等)。例如,如图1所示,存储的数据可以包括程序指令(例如,用于实现本申请的技术方案的程序指令)以及待处理的数据。处理器102也可以访问存储的程序指令和数据,并且执行程序指令以对要处理的数据进行操作。存储器104可以包括易失性存储装置或非易失性存储装置。在一些实施例中,存储器104可以包括随机访问存储器(RAM)、只读存储器(ROM)、光盘、磁盘、硬盘、固态硬盘(SSD)、闪存、存储棒等。
网络接口106可以配置为经由网络向计算机设备100提供与其他外部设备的通信。该网络可以是能够传输和接收数据的任何有线或无线的网络。例如,该网络可以是有线网络、本地无线网络(例如,蓝牙、WiFi、近场通信(NFC)等)、蜂窝网络、因特网、或上述的组合。可以理解的是,网络的类型不限于上述具体示例。在一些实施例中,网络接口106可以包括任意数量的网络接口控制器(NIC)、射频模块、接收发器、调制解调器、路由器、网关、适配器、蜂窝网络芯片等的任意组合。
外围接口108可以配置为将计算机设备100与一个或多个外围装置连接,以实现信息输入及输出。例如,外围装置可以包括键盘、鼠标、触摸板、触摸屏、麦克风、各类传感器等输入设备以及显示器、扬声器、振动器、指示灯等输出设备。
总线110可以被配置为在计算机设备100的各个组件(例如处理器102、存储器104、网络接口106和外围接口108)之间传输信息,诸如内部总线(例如,处理器-存储器总线)、外部总线(USB端口、PCI-E总线)等。
需要说明的是,尽管上述设备仅示出了处理器102、存储器104、网络接口106、外围接口108和总线110,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本申请实施例方案所必需的组件,而不必包含图中所示的全部组件。
图2示出了根据本申请实施例的EDA工具200的基本结构示意图。
如图2所示,虚线以上为用户部分;虚线以下为EDA工具200,EDA工具200可以由图1所示的设备100实现。在一些实施例中,该EDA工具200可以实现为EDA软件。更具体地,该EDA工具200可以是基于芯片设计进行布局(Placement)和布线(Routing)的软件。仿真工具200可以包括Tcl命令(或者图形/窗口界面)模块204、各计算模块(例如,Place计算模块206、Route计算模块208、Optimization计算模块210等)以及数据库系统212。用户202可以通过在Tcl命令(或者图形/窗口界面)模块204中输入相关命令来操作该EDA工具200。
Tcl命令模块204,主要起着消息传递或命令传递的功能。Tcl命令模块204可以读取用户202向仿真工具200输入的指令,并可以根据指令的具体内容,分配并传递给相应的计算模块去执行具体任务。
根据计算任务的不同,各计算模块可以分为,例如,Place计算模块206、Route计算模块208、Optimization计算模块210等。Place计算模块206可以用于为所有元器件计算出一个合理的摆放位置,Route计算模块208可以用于计算出各个元器件之间合理的导线连接方式,Optimization计算模块210则可以用于将各个元器件之间的摆放位置和导线连接方式进行优化。这些计算模块的计算过程可以在,例如,图1的处理器102中进行。
数据库系统212可以用于完整全面地记录、存储被仿真或者被设计的芯片的所有信息(如位置、方向、尺寸、结构、导线连接方式等等)。这些信息,例如,可以存储在图1的存储器104中。
图3示出了根据本申请实施例的EDA工具200的一个计算命令的基本执行流程300。如图3所示,在步骤302,用户202可以通过Tcl命令模块204提供的命令界面或者图形用户界面(GUI)向该EDA工具200下达一个命令(例如,do_place命令)。然后,在步骤304,Tcl命令模块204解析这一命令并将其分发到相应的计算模块(例如,Place计算模块206)。在步骤306,各计算模块执行各自所需进行的具体计算。在这期间,如步骤308所示,各计算模块需要(高频、反复)调取数据库系统212中的数据来进行计算。计算完成后,如步骤310所示,各计算模块可以将计算结果写入数据库系统212,并将计算结果返回给Tcl命令模块204。在步骤312,Tcl命令模块204通过命令界面或者图形用户界面(GUI)将计算结果返回给用户202,该EDA工具200对一个计算命令的处理过程结束。在步骤314,用户可以根据计算结果进行评估,然后确定下一步计划。
布局规划(Floorplan),通常是指,把宏单元(hard macros)放置到设计当中,并满足后续标准单元(standard cells)布局要求。广义的布局规划还包括设计裸片(Die)的高宽比、摆放I/O Pad、纯物理单元(Welltap、Endcap)插入、电源地网络规划等。
在相关技术中,布局布线工具可以跟踪到芯片设计中不同对象之间的连接关系,并以飞线(Flylines)的形式显示给用户,帮助用户分析和理解整个设计的数据流向关系,指导布局规划流程。
但是,相关技术的布局布线工具在进行模块之间的数据流分析时,存在以下不便:
1)需要用户自行选择关键模块来创建模块边界(module boundary),对于不熟悉芯片设计的用户,需要反复迭代才能选择出较适合的关键模块;
2)需要全局计算,用于后续用户交互式显示飞线,计算时间较长;
3)在计算完成后显示出的飞线连接复杂交错,难以直观获取设计主要信息。
鉴于此,本申请提出了一种显示芯片设计的数据流的方法,通过从所述芯片设计的多个模块中筛选得到多个目标模块而无需用户进行手动选择,然后,根据所述多个目标模块来生成并显示包含数据流信息的页面,从而因为对芯片设计的模块进行了筛选进而减少了计算量,并且,因为通过筛选目标模块来生成数据流,使得连接线不会过于复杂交错,更加方便用户分析和理解整个设计的数据流向关系,指导布局规划流程。
图4A示出了本申请实施例所提供的示例性方法400的流程示意图。该方法400可以由图1的计算机设备100实现,并可以实现为图2的EDA工具200的一部分功能。如图4A所示,该方法400可以进一步包括以下步骤。
在步骤402,从所述芯片设计的多个模块中筛选得到多个目标模块。
一般地,芯片设计可以包括模块化的逻辑层级结构。如图5A所示,芯片设计500可以包括一个树形化的包括多个模块的逻辑层级结构。其中,该多个模块可以包括顶层模块TOP,顶层模块可以包括子模块A、B、C,子模块A又可以进一步包括子模块D、E、F、G,以此类推,可以将芯片设计形成为树形化的逻辑层级结构。
在本步骤中,可以先获取芯片设计,然后进行模块筛选(Module filtering),以从芯片设计的多个模块中筛选得到合适的多个目标模块来进行分析,从而可以减少后续的计算量。
在一些实施例中,如图4B所示,从所述芯片设计的多个模块中筛选得到多个目标模块,可以进一步包括:
在步骤4022,从所述多个模块中筛选出标准单元数量大于预设数量和/或包含宏单元的多个预筛选模块。
作为一个可选实施例,可以从所述多个模块中筛选出标准单元数量大于预设数量的多个预筛选模块。可以理解,当一个模块包含的标准单元数量较多,说明该模块在芯片设计中越重要,因此,可以基于标准单元数量来对模块进行筛选。这里,预设数量可以根据实际需要进行选择,例如,500、1000等,在此不做具体限定。可选地,如果一个模块和它的子模块被同时选出,则可以只保留该子模块。按照此方式,假设可以筛选出模块M、N、O、P、K、L、G。
作为另一个可选实施例,可以从所述多个模块中筛选出包含宏单元的多个预筛选模块。按照此方式,假设可以筛选出模块R。可选地,还可以进一步对包含宏单元的模块进行打包分组,以对筛选出的模块进行有效分类,减少不必要的显示,突出重点。具体实现后续详细描述。
在一些实施例中,也可以结合前述两个实施例来共同筛选出多个预筛选模块,从而保证一些包含标准单元数量较多或者包含宏单元的重要模块或关键模块能够被筛选出,有利于帮助用户分析和理解整个设计的数据流向关系,指导布局规划流程。
在步骤4024,按照所述多个预筛选模块在所述芯片设计中的逻辑层级,从低到高进行跟踪。直到所述多个预筛选模块对应的最高层级模块处于所述逻辑层级的同一层并且属于同一个模块的子模块,跟踪停止。
如图5A所示,基于预筛选出的模块(例如,模块M、N、O、P、K、L、G、R),按照逻辑层级(trace hierarchy)由低到高进行跟踪。在跟踪时,可以先确定预筛选出的模块中层级最高的模块,例如,模块G,然后,基于其他预筛选出的模块来分别进行跟踪,直到这些模块跟踪到的模块(例如,D、E、F)与模块G处于同一层级,然后确定它们是否属于同一个模块的子模块,若是,则停止跟踪,若不是则继续跟踪,直到找到共同的父模块,则停止跟踪。
在步骤4026,将跟踪停止位置的模块和所述多个预筛选模块,作为所述多个目标模块。
在本步骤,除了将预筛选模块作为目标模块外,还需要将跟踪停止位置的模块作为目标模块,跟踪停止位置的模块也称作叫做跟踪停止模块(trace-stop-point)。
以图5A为例,根据前述的预筛选规则的第一个实施例,可以筛选出模块M、N、O、P、K、L、G;根据前述的预筛选规则的第二个实施例,可以筛选出模块R。然后,按照步骤4024跟踪预筛选模块的逻辑结构,会停在模块D、E、F、G。最终选出的模块为:D、E、F、G、K、L、M、N、O、P、R。
然后,根据选择出的模块,将芯片设计的逻辑层级进行简化,用于后续跟踪连接关系使用。简化后的逻辑层级如图5B所示。
如果用户希望选中的目标模块按照前述实施例无法自动选出,本申请也可以支持用户个性化选择。可选地,可以提供两种用户个性化选择方式:通过布局布线工具(EDA工具200)中的设计结构功能进行选择;或者根据用户输入命名来进行模块匹配的方式进行选择。个性化选择方式可以支持、适用于几乎所有的设计类型,包括没有逻辑层级的设计也可适用。
可选地,在筛选出目标模块后,还可以自动为目标模块生成模块边界,以供后续生成数据流图。
在步骤404,根据所述多个目标模块,追踪所述芯片设计中的连接关系。
在追踪连接关系之前,可以先设置分析模式(Mode setting),包括:穿过组合逻辑的计数,穿过寄存器的计数,追踪路径(path)的起点和终点,是否需要考虑时钟路径(clockpath),是否需要忽略特定的连线(net)、单元(cell),是否考虑有大量扇出(fanout)的net,等等。其中,追踪路径(path)的起点和终点可以是默认设置的。例如,当选出目标模块后,可以将一个目标模块作为起点,其他目标模块作为终点,然后遍历追踪,得到目标模块之间的连接关系。可以理解,追踪路径(path)的起点和终点也可以是用户选定的,当用户自主选定时,可以是任意的起点和终点,例如,某个目标模块的某个输入引脚作为起点,另一目标模块的某个输出引脚作为终点,等等。
在设置完成分析模式后,可以开始追踪所述芯片设计中的连接关系(Floorplantracing)。
作为一个可选实施例,可以基于分布式技术的快速遍历算法,快速地查找出追踪路径(path)的起点和终点之间的所有连接,来作为追踪路径(path)的起点和终点的连接关系。
在一些实施例中,如图4C所示,根据所述多个目标模块,追踪所述芯片设计中的连接关系,可以进一步包括:
在步骤4042,可以根据前述设置的分析模式来获取追踪路径的起点和终点以及终止条件。
在步骤4044,根据所述芯片设计中的电路连接关系,从所述起点向所述终点进行追踪。可以理解,芯片设计的电路连接关系是已知的,在设定起点和终点之后,根据电路连接关系,可以实现基于连线和电路元器件(组合逻辑或时序逻辑)的追踪,并且,这种追踪是单向的且需要遍历所有电路连接关系。
在步骤4046,响应于确定满足所述终止条件或者追踪到所述终点,停止追踪并得到所述追踪路径对应的连接关系。本步骤分为两种情况,一种是从起点追踪到了终点,则可以停止追踪并得到至少一条连接作为连接关系。另一种是,虽然没有追踪到终点,但是满足了终止条件,所以停止追踪并得到至少一条连接作为连接关系。
在一些实施例中,所述终止条件包括组合逻辑计数上限和时序逻辑计数上限;如图4D所示,步骤4044可以进一步包括:
在步骤40442,根据所述芯片设计中的电路连接关系,将所述起点、所述终点、连线、标准单元的输入端口和输出端口设置为节点。
在本步骤,可以对芯片设计的电路进行标记。可选地,可以根据用户定义的起点、终点、排除点所对应的电路元素做标记。
然后,可以根据芯片设计中的电路连接关系,将所述起点、所述终点、连线(net)、标准单元的输入端口(input port)和输出端口(output port)设置为节点,进而建立电路的拓扑结构。
图5C示出了根据本申请实施例的示例性电路拓扑结构510的示意图。
如图5C所示,由于芯片设计的电路是已知的,因此,根据预先获取的分析模式的设置信息,可以对电路中的相应电路元素进行标记,进而得到电路拓扑结构中的节点。其中,起点为节点终点为标准单元512,在起点和终点之间,可以包括连线/>标准单元的输入端口/> 标准单元的输出端口这些电路元素构成了电路拓扑结构的节点,其中,每个节点可以用于负责存储节点的组合逻辑计数和时序逻辑计数。在一些实施例中,时序逻辑计数也可以是寄存器计数。
然后,在步骤40444,可以从所述起点向所述终点沿所述节点进行追踪。
在步骤40446,在追踪过程中,在相邻节点之间,每经过一个组合逻辑,组合逻辑计数+1,每经过一个时序逻辑(例如,寄存器),时序逻辑计数+1。
如图5C所示,在追踪过程中,遇到组合逻辑(例如,与门、或门、异或门、缓冲器、反相器、非或门,等等),对应的输入端口和输出端口的组合逻辑计数加1,遇到时序逻辑(例如,寄存器),对应的输入端口和输出端口的寄存器级数加1,图5C中示出了计数的每次增加的过程。
在得到前述的计数之后,步骤4046可以进一步包括:响应于确定组合逻辑计数达到所述组合逻辑计数上限或者时序逻辑计数达到所述时序逻辑计数上限,停止追踪并得到所述追踪路径对应的连接关系。
具体地,可以根据用户指定的计数上限来建立连接(亦即起点到终点的路径),当遇到计数上限或者终点时结束构造连接。
接着,可以统计构造的终止节点的个数,即为起点到终点的连接个数。可选地,当起点属于一个目标模块,终点属于另一个目标模块时,此时就得到了两个目标模块之间的连接个数。
例如,如图5C所示,起点经过连线/>到终止节点/>之间即为一条连接,类似地,起点/>经过节点/>和节点/>经过连线/>到终止节点/>之间也为一条连接。参照图5C还可以得到其他的连接。
在一些实施例中,在得到这些连接之后,可以基于这些连接建立连接图,后续如果需要显示从起点到终点的具体路径,只需要从终点开始,对该连接图做一次广度优先遍历,就能够方便求出两个模块之间的具体连接路径。
上述的起点到终点之间的所有连接,即可称为本申请中的连接关系。可以理解,连接关系可以是连接的集合。
这样,按照上述实施例,就可以基于分布式技术的快速遍历算法,快速地查找出起点和终点之间的所有路径。
除了上述以具体电路结构来追踪连接的实施例外,还可以以模块为基准来进行连接关系的追踪。
图5D示出了根据本申请实施例的示例性通用追踪模式的示意图。
如图5D所示,在一些实施例中,可以采用通用追踪模式来追踪连接关系。例如,追踪路径的起点为输入端input1、input2,终点为输出端output1、output2,在起点和终点之间可以包括模块A(Module A)、模块B(Module B)、模块C(Module C),每个模块内部还可以进一步包括组合逻辑和时序逻辑。如图5D所示,通用追踪模式可以沿着电路连接路径进行追踪,并可以穿过组合逻辑单元,然后停止在时序逻辑单元的引脚(pin)上或者端口(port)上,是一种引脚到引脚(pin-to-pin)的跟踪。
图5E示出了根据本申请实施例的示例性模块边界追踪模式的示意图。
如图5E所示,在一些实施例中,可以采用模块边界追踪模式来追踪连接关系。模块边界追踪模式同样可以沿着电路连接路径进行追踪,并可以穿过组合逻辑单元,然后停止在逻辑层级的引脚上(也就是模块边界上),是一种更为快速的跟踪方式,适用于超大规模的设计。
在进行追踪之前,可以配置一个模块间追踪的表格,如图5F所示。
根据图5B中模块筛选后的简化逻辑层级,按照图5F所示的表格来追踪不同模块之间的连接关系,“√”表示需要追踪的连接关系,“×”表示不需要追踪的连接关系。因此,追踪模块E到模块D之间的连接关系时,需要区分连接关系是由E连接到D,或是从R连接到D,或是从E连接到M/N/O/P,或是从R连接到M/N/O/P。
如图5D和图5E所示,在追踪完成后,可以得到三种类型的连接关系(connection):[1]不同模块之间的连接关系,例如,模块A与模块B之间的连接关系;[2]模块和端口之间的连接关系,例如,输入端input1与模块A之间的连接关系;[3]端口之间的连接关系,例如,输入端input2与输出端output2之间的连接关系。
由于芯片设计的规模通常非常庞大,因此,可以基于连接数来对连接关系进行筛选,从而可以简化后续生成的数据流图中的连接线,突出重要的连接线。
因此,在一些实施例中,步骤404还包括对连接关系进行筛选,具体可以按照连接的类型进行筛选。
具体地,可以分别对每一种类型的连接关系根据其连接数做降序排列,然后可以根据预设连接数进行筛选。例如,选出连接数大于该预设连接数的连接关系。可以理解,预设连接数可以根据实际需要进行设定,在此不做限制。
如图5G所示,例如,模块与模块的连接关系中,假设预设连接数为2000,此时可以筛选出模块与模块的连接关系中的连接关系1~5。同理,可以筛选出模块与端口的连接关系中的连接关系1~4。最后,保留所有的端口与端口的连接关系。
在一些实施例中,步骤404还包括按照模块来对连接关系进行筛选,具体包括以下步骤:
确定所述多个目标模块中的第一目标模块(可以是多个目标模块中的任一模块);
根据所述连接关系,确定所述第一目标模块与所述多个目标模块中的其他目标模块的连接数;
筛选出与所述第一目标模块的连接数大于预设连接数的其他目标模块与所述第一目标模块的连接关系。
具体地,如图5H所示,以模块M为例,对于不同模块之间的连接,可以计算每个模块和其他模块之间的连接数,筛选出模块M与其他模块之间的连接数大于预设连接数的连接关系。例如,所述预设连接数为2000,因此模块M和模块F之间的连接关系将会被选出,如图5H所示。
在步骤406,根据所述连接关系,生成所述芯片设计的数据流。
在有了各目标模块的连接关系后,即可以基于该连接关系得到相应的数据流,亦即数据的流向信息,该连接关系中的每个连接都表示了一条数据流。
作为一个可选实施例,由于前述步骤中得到了包含多个连接的连接关系,在生成数据流时还可以对目标模块进行聚类和合并(Macro clustering),从而可以进一步简化后续显示的数据流图。
在一些实施例中,如前所述,每个连接关系均可以包括多个连接;步骤406可以进一步包括:根据所述芯片设计中的宏单元(macro)之间的相关性,对所述多个目标模块进行分类;根据所述多个目标模块的分类结果,结合所述连接关系,生成所述芯片设计的数据流。作为一个可选实施例,可以将分为一类的模块进行合并处理,使得后续生成的数据流图可以进一步简化。这样,根据macro之间的相关性,对目标模块进行有效分类,以减少不必要的显示,突出重点。
在一些实施例中,如图4E所示,根据所述芯片设计中的宏单元之间的相关性,对所述多个目标模块进行分类,可以进一步包括:
在步骤4062,根据两个宏单元之间的数据路径(data path)的连接数,计算所述两个宏单元之间的连接距离(connection_distance)。
在一些实施例中,根据两个宏单元之间的数据路径的连接数,计算所述两个宏单元之间的连接距离,包括:计算所述两个宏单元之间穿过预定数量(例如,50)的组合逻辑元件与相同寄存器连接的连接数;换言之,可以以穿过预定数量的组合逻辑单元为上限,统计穿过的组合逻辑单元的数量小于或等于该预定数量时就能与相同寄存器(针对不同连接,该寄存器可以是不同的)相连的那些连接的数量;然后,根据所述连接数,计算所述两个宏单元之间的连接距离。
具体地,macro和macro之间data path的连接数,这里统计的可以是两个macro穿过50级组合逻辑元件与相同的寄存器相连的连接数量。这里,我们定义这个连接数为两个macro之间的连接距离connection_distance。
在步骤4064,根据所述两个宏单元之间的层次关系,计算所述两个宏单元之间的层次距离(hierarchy_distance)。可以理解,macro和macro之间的层次关系,属于相同模块的两个macro,相关性要大于属于不同模块的两个macro。
在一些实施例中,根据所述两个宏单元之间的层次关系,计算所述两个宏单元之间的层次距离,包括:
确定所述芯片设计的逻辑层级深度;以图5A为例,芯片设计的逻辑层级深度为6;
根据所述逻辑层级深度,为每个层级赋予权重;以图5A为例,对于逻辑层级的每一层,可以设置相应的权重,层级越低权重越小;可选地,例如,可以取权重weight=10^(-level);
确定所述两个宏单元所属的公共最小层级(也称公共最小祖先LCA);
根据所述公共最小层级对应的权重,计算所述两个宏单元之间的层次距离。可选地,可以定义两个macro的hierarchy_distance为这个LCA所在层的权重。以图5A为例,宏单元HM0~HM7的公共最小层级是模块R对应的层级4,则该宏单元HM0与HM1的层次距离为weight=10^(-4)=0.0001。
由此可见,当宏单元的公共最小层级的层级越低,则说明两个宏单元的相关性越高,对应的层次距离也就越小(换言之,两个宏单元从层级角度更相近)。
在步骤4066,根据所述连接距离和所述层次距离,确定所述两个宏单元之间的距离。例如,对于任意两个macro,可以定义这两个macro之间的logic_distance=hierarchy_distance+connection_distance。
在步骤4068,按照上述步骤计算所述芯片设计中两两宏单元之间的距离。
在步骤4070,根据所述芯片设计中两两宏单元之间的距离,创建所述芯片设计的宏单元的二维距离矩阵。
在步骤4072,按照层次化聚类算法(Hierarchical Clustering Method),基于所述二维距离矩阵对宏单元进行聚类,得到宏单元的分类。在聚类时,分类的个数可以由用户设定。
在步骤4074,根据所述宏单元的分类,对所述多个目标模块进行分类。
由此可见,本实施例从两个方面来考察macro和macro之间的相关性,能够得到基于macro的更好的分类,然后基于此来对模块进行合并,可以更好地简化后续生成的数据流图。
在步骤408,根据所述芯片设计的数据流,显示包含所述数据流的信息的页面。
在前述步骤中,得到了目标模块的连接关系,并已知模块的层级关系,同时基于macro相关性对目标模块进行了合并,因此可以生成相应的数据流图(Data Flow Graphic)来显示在页面中,如图5J所示。该数据流图可以有效、清晰地显示最终的数据流结果。
在一些实施例中,还可以基于此构建方便用户进行调试(debug)的可视化工具。如图5I所示,数据流图可以包含目标模块及其连接线,所述连接线根据前述实施例中得出的连接关系而生成。数据流图中的模块以及连接线都可以支持交互式选择,并且被选中的对象在物理版图中的相应模块也可以被高亮显示。可选地,图中的连接线均可以是可触发对象,当任一连接线被触发时,可以进一步跳转到显示该连接线对应的所有连接信息的页面(例如,连接关系浏览器(connection browser)),如图5J所示。
例如,作为一个可选实施例,响应于针对所述多个目标模块中的第二目标模块(例如,模块D)和第三目标模块(例如,模块F)之间的连接线的触发指令,显示包括所述第二目标模块和所述第三目标模块之间的所有连接信息的页面,如图5J所示。连接关系浏览器会列出两个模块之间的所有引脚对引脚的连接,并详细列出具体经过的路径,包括起始引脚,途经的每一段连线、标准单元,以及终止引脚。
在一些实施例中,还可以在图5J的基础上进一步显示物理版图。作为一个可选实施例,响应于针对所述所有连接信息中的目标连接信息(例如,图5K中的第一条连接信息)的触发指令,显示所述芯片设计的物理版图,并在所述物理版图中高亮显示所述目标连接信息对应的连接路径线520,如图5K所示。这样,在物理版图界面做相应的高亮操作,为用户分析设计中的关键路径,收敛设计时序,解决绕线问题提供极大的便利。
从上述实施例可以看出,本申请实施例提供的显示芯片设计的数据流的方法,其运行速度快,全流程自动化,支持用户自定义,支持交互式操作,能够很好地帮助用户分析和理解芯片设计的数据流向关系。
本申请实施例提供的显示芯片设计的数据流的方法,能够在数字芯片后端设计实现过程中分析设计的数据流,并且直观显示给用户,用于指导布局规划,减少迭代次数。同时支持用户交互式分析模块之间的详细路径,帮助实现设计的快速收敛。
在布局之前(pre-place),本申请实施例提供的显示芯片设计的数据流的方法,可以探究设计逻辑结构,指导宏单元布局,对关键模块做特殊约束;在布局之后(post-place),本申请实施例提供的显示芯片设计的数据流的方法,可以帮助调试布局规划,验证模块分布是否合理,分析拥塞(congestion)情况和时序(timing)紧张的路径。
本申请实施例提供的显示芯片设计的数据流的方法,可以提供多种方式去跟踪不同设计对象之间的连接关系,或者穿过层级结构进行跟踪,或者穿过组合逻辑进行跟踪;工具可以计算并交互式地显示出不同设计的模块边界(module boundary)、宏单元(macro)、端口或者是标准单元(Standard cell)之间的连接关系。
需要说明的是,本申请实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本申请实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本申请的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的方法400。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的方法400,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法400相对应的,本申请还提供了一种计算机程序产品,其包括计算机程序。在一些实施例中,所述计算机程序由一个或多个处理器可执行以使得所述处理器执行所述的方法400。对应于方法400各实施例中各步骤对应的执行主体,执行相应步骤的处理器可以是属于相应执行主体的。
上述实施例的计算机程序产品用于使处理器执行如上任一实施例所述的方法400,并且具有相应的方法实施例的有益效果,在此不再赘述。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本申请的范围(包括权利要求)被限于这些例子;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本申请实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本申请实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本申请实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本申请实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本申请的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本申请实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本申请的具体实施例对本申请进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本申请实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本申请实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (11)
1.一种显示芯片设计的数据流的方法,包括:
从所述芯片设计的多个模块中筛选得到多个目标模块;
根据所述多个目标模块,追踪所述芯片设计中的连接关系;
根据所述连接关系,生成所述芯片设计的数据流;
根据所述芯片设计的数据流,显示包含所述数据流的信息的页面;
其中,从所述芯片设计的多个模块中筛选得到多个目标模块,包括:从所述多个模块中筛选出标准单元数量大于预设数量和/或包含宏单元的多个预筛选模块;按照所述多个预筛选模块在所述芯片设计中的逻辑层级,从低到高进行跟踪,直到所述多个预筛选模块对应的最高层级模块处于所述逻辑层级的同一层并且属于同一个模块的子模块,跟踪停止;将跟踪停止位置的模块和所述多个预筛选模块,作为所述多个目标模块;
根据所述多个目标模块,追踪所述芯片设计中的连接关系,包括:获取追踪路径的起点和终点以及终止条件;根据所述芯片设计中的电路连接关系,从所述起点向所述终点进行追踪;响应于确定满足所述终止条件或者追踪到所述终点,停止追踪并得到所述追踪路径对应的连接关系。
2.如权利要求1所述的方法,其中,所述终止条件包括组合逻辑计数上限和时序逻辑计数上限;
根据所述芯片设计中的电路连接关系,从所述起点向所述终点进行追踪,包括:
根据所述芯片设计中的电路连接关系,将所述起点、所述终点、连线、标准单元的输入端口和输出端口设置为节点;
从所述起点向所述终点沿所述节点进行追踪;
在追踪过程中,在相邻节点之间,每经过一个组合逻辑,组合逻辑计数+1,每经过一个时序逻辑,时序逻辑计数+1;
响应于确定满足所述终止条件或者追踪到所述终点,停止追踪并得到所述追踪路径对应的连接关系,包括:响应于确定组合逻辑计数达到所述组合逻辑计数上限或者时序逻辑计数达到所述时序逻辑计数上限,停止追踪并得到所述追踪路径对应的连接关系。
3.如权利要求1所述的方法,其中,所述连接关系包括多个连接;
根据所述连接关系,生成所述芯片设计的数据流,包括:
根据所述芯片设计中的宏单元之间的相关性,对所述多个目标模块进行分类;
根据所述多个目标模块的分类结果,结合所述连接关系,生成所述芯片设计的数据流。
4.如权利要求3所述的方法,其中,根据所述芯片设计中的宏单元之间的相关性,对所述多个目标模块进行分类,包括:
根据两个宏单元之间的数据路径的连接数,计算所述两个宏单元之间的连接距离;
根据所述两个宏单元之间的层次关系,计算所述两个宏单元之间的层次距离;
根据所述连接距离和所述层次距离,确定所述两个宏单元之间的距离;
按照上述步骤计算所述芯片设计中两两宏单元之间的距离;
根据所述芯片设计中两两宏单元之间的距离,创建所述芯片设计的宏单元的二维距离矩阵;
基于所述二维距离矩阵对宏单元进行聚类,得到宏单元的分类;
根据所述宏单元的分类,对所述多个目标模块进行分类。
5.如权利要求4所述的方法,其中,根据两个宏单元之间的数据路径的连接数,计算所述两个宏单元之间的连接距离,包括:
计算所述两个宏单元之间穿过预定数量的组合逻辑元件与相同寄存器连接的连接数;
根据所述连接数,计算所述两个宏单元之间的连接距离。
6.如权利要求4所述的方法,其中,根据所述两个宏单元之间的层次关系,计算所述两个宏单元之间的层次距离,包括:
确定所述芯片设计的逻辑层级深度;
根据所述逻辑层级深度,为每个层级赋予权重;
确定所述两个宏单元所属的公共最小层级;
根据所述公共最小层级对应的权重,计算所述两个宏单元之间的层次距离。
7.如权利要求3所述的方法,其中,根据所述多个目标模块,追踪所述芯片设计中的连接关系,包括对连接关系进行筛选,具体包括:
确定所述多个目标模块中的第一目标模块;
根据所述连接关系,确定所述第一目标模块与所述多个目标模块中的其他目标模块的连接数;
筛选出与所述第一目标模块的连接数大于预设连接数的其他目标模块与所述第一目标模块的连接关系。
8.如权利要求1所述的方法,其中,根据所述芯片设计的数据流,显示包含所述数据流的信息的页面,包括:根据所述芯片设计的数据流,显示包含所述多个目标模块及其连接线的页面,所述连接线根据所述连接关系生成;
所述方法还包括:
响应于针对所述多个目标模块中的第二目标模块和第三目标模块之间的连接线的触发指令,显示包括所述第二目标模块和所述第三目标模块之间的所有连接信息的页面。
9.如权利要求8所述的方法,其中,显示包括所述第二目标模块和所述第三目标模块之间的所有连接信息的页面之后,所述方法还包括:
响应于针对所述所有连接信息中的目标连接信息的触发指令,显示所述芯片设计的物理版图,并在所述物理版图中高亮显示所述目标连接信息对应的连接路径线。
10.一种计算机设备,包括一个或者多个处理器、存储器;和一个或多个程序,其中所述一个或多个程序被存储在所述存储器中,并且被所述一个或多个处理器执行,所述程序包括用于执行根据权利要求1~9任意一项所述的方法的指令。
11.一种包含计算机程序的非易失性计算机可读存储介质,当所述计算机程序被一个或多个处理器执行时,使得所述处理器执行权利要求1~9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211734681.5A CN116090396B (zh) | 2022-12-29 | 2022-12-29 | 显示芯片设计的数据流的方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211734681.5A CN116090396B (zh) | 2022-12-29 | 2022-12-29 | 显示芯片设计的数据流的方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116090396A CN116090396A (zh) | 2023-05-09 |
CN116090396B true CN116090396B (zh) | 2023-09-26 |
Family
ID=86211531
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211734681.5A Active CN116090396B (zh) | 2022-12-29 | 2022-12-29 | 显示芯片设计的数据流的方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116090396B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116956807B (zh) * | 2023-09-19 | 2023-12-01 | 芯行纪科技有限公司 | 芯片设计的全局布线拥塞图确定方法及相关设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0539641A1 (en) * | 1991-10-31 | 1993-05-05 | International Business Machines Corporation | A design method for the automatic implementation of data-flow partitions in asic's |
US5889677A (en) * | 1995-04-07 | 1999-03-30 | Fujitsu Limited | Circuit designing apparatus of an interactive type |
CN109446686A (zh) * | 2018-11-06 | 2019-03-08 | 深圳市风云实业有限公司 | 设备内部器件间的逻辑连接关系分析方法 |
CN114996346A (zh) * | 2022-06-10 | 2022-09-02 | 艾嘉智能科技(天津)有限公司 | 可视化数据流处理方法、装置、电子设备及存储介质 |
CN115481005A (zh) * | 2022-11-04 | 2022-12-16 | 北京紫光芯能科技有限公司 | 一种芯片数据流追踪系统及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8255865B2 (en) * | 2010-02-02 | 2012-08-28 | Synopsys, Inc. | Signal tracing through boards and chips |
-
2022
- 2022-12-29 CN CN202211734681.5A patent/CN116090396B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0539641A1 (en) * | 1991-10-31 | 1993-05-05 | International Business Machines Corporation | A design method for the automatic implementation of data-flow partitions in asic's |
US5889677A (en) * | 1995-04-07 | 1999-03-30 | Fujitsu Limited | Circuit designing apparatus of an interactive type |
CN109446686A (zh) * | 2018-11-06 | 2019-03-08 | 深圳市风云实业有限公司 | 设备内部器件间的逻辑连接关系分析方法 |
CN114996346A (zh) * | 2022-06-10 | 2022-09-02 | 艾嘉智能科技(天津)有限公司 | 可视化数据流处理方法、装置、电子设备及存储介质 |
CN115481005A (zh) * | 2022-11-04 | 2022-12-16 | 北京紫光芯能科技有限公司 | 一种芯片数据流追踪系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN116090396A (zh) | 2023-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Kahng et al. | VLSI physical design: from graph partitioning to timing closure | |
US7162706B2 (en) | Method for analyzing and validating clock integration properties in circuit systems | |
US7603643B2 (en) | Method and system for conducting design explorations of an integrated circuit | |
US7788613B2 (en) | Border-enhanced sliding window scheme (SWS) for determining clock timing in a mesh-based clock architecture | |
Hutton et al. | Characterization and parameterized generation of synthetic combinational benchmark circuits | |
Coudert et al. | Incremental cad | |
Martins et al. | Analog Integrated Circuit Design Automation | |
CN116090396B (zh) | 显示芯片设计的数据流的方法及相关设备 | |
CN116151179B (zh) | 芯片设计的布局规划方法及相关设备 | |
US9471733B1 (en) | Solving a circuit network in multicore or distributed computing environment | |
Kahng et al. | TritonRoute-WXL: The open-source router with integrated DRC engine | |
CN114556352A (zh) | 用于执行自动布线的方法和系统 | |
US11694016B2 (en) | Fast topology bus router for interconnect planning | |
CN116911246B (zh) | 芯片设计的布线规划方法及相关设备 | |
CN116306486B (zh) | 芯片设计的设计规则检查方法及相关设备 | |
TW201926217A (zh) | 針對設計半導體裝置的資源規劃的方法、系統及儲存媒介 | |
CN114004190B (zh) | 基于物理版图的多层级信息获取及可扩展操作的方法 | |
US20200279067A1 (en) | Wirelength Distribution Schemes and Techniques | |
CN117521586B (zh) | 芯片设计的布局规划方法及相关设备 | |
US20070016882A1 (en) | Sliding Window Scheme (SWS) for Determining Clock Timing in a Mesh-Based Clock Architecture | |
CN116822452B (zh) | 芯片布局优化方法及相关设备 | |
CN116956807B (zh) | 芯片设计的全局布线拥塞图确定方法及相关设备 | |
US20230083003A1 (en) | Optical path tracing in an optical circuit design | |
Ni et al. | MEC: An Open-source Fine-grained Mapping Equivalence Checking Tool for FPGA | |
Hutton | Characterization and parameterized generation of digital circuits |
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 |