掌桥专利:专业的专利平台
掌桥专利
首页

端口时延的约束方法、装置、电子设备、存储介质

文献发布时间:2023-06-19 13:29:16


端口时延的约束方法、装置、电子设备、存储介质

技术领域

本公开的实施例涉及一种端口时延的约束方法、端口时延的约束装置、电子设备、非瞬时性计算机可读存储介质。

背景技术

随着集成电路工艺水平的提高,芯片性能的提升,集成电路设计规模越来越庞大。在开发设计大规模的集成电路时,为了提高设计和物理实现的速度,降低版本迭代时间,一般会将设计电路切割成较小的模块进行处理。在不同的模块的设计实现过程当中,为了保证芯片功能的正确,需要模块的时序满足设计需求,通常,模块的时序主要包括两个方面:模块内部时序和模块端口时序。

发明内容

本公开至少一实施例提供一种端口时延的约束方法,应用于集成电路的设计,其中,所述集成电路包括多个模块,每个模块包括至少一个时序逻辑器件和至少一个端口,所述方法包括:获取所述多个模块中的所有端口,其中,所述所有端口包括多个第一端口;针对所述多个第一端口中的每个第一端口:获取与所述第一端口对应的N个时序逻辑器件和所述第一端口所属的模块对应的模块时钟信息,其中,所述N个时序逻辑器件中的每个时序逻辑器件与所述第一端口直接电连接,或者,所述每个时序逻辑器件与所述第一端口通过至少一个组合逻辑器件电连接,N为正整数;基于所述N个时序逻辑器件和所述模块时钟信息,确定与所述第一端口相关联的至少一个时钟对象以及所述至少一个时钟对象分别对应的至少一个对象信息;确定所述第一端口的端口类型;根据所述端口类型、所述至少一个时钟对象和所述至少一个对象信息,设置所述第一端口的端口时延。

例如,在本公开至少一实施例提供一种端口时延的约束方法中,获取与所述第一端口对应的N个时序逻辑器件,包括:响应于所述第一端口不用于输入时钟信号,从所述第一端口所属的模块包括的至少一个时序逻辑器件中确定所述N个时序逻辑器件。

例如,在本公开至少一实施例提供一种端口时延的约束方法中,获取所述第一端口所属的模块对应的模块时钟信息,包括:确定所述第一端口所属的模块包括的至少一个时序逻辑器件;获取与所述至少一个时序逻辑器件一一对应的至少一个器件时钟信息,其中,所述模块时钟信息包括所述至少一个器件时钟信息。

例如,在本公开至少一实施例提供一种端口时延的约束方法中,基于所述N个时序逻辑器件和所述模块时钟信息,确定与所述第一端口相关联的至少一个时钟对象以及所述至少一个时钟对象分别对应的至少一个对象信息,包括:基于所述模块时钟信息,确定与所述N个时序逻辑器件一一对应的N个器件时钟信息;根据所述N个器件时钟信息,确定与所述第一端口相关联的所述至少一个时钟对象以及所述至少一个时钟对象分别对应的至少一个对象信息。

例如,在本公开至少一实施例提供一种端口时延的约束方法中,每个器件时钟信息包括触发沿信息,根据所述N个器件时钟信息,确定与所述第一端口相关联的所述至少一个时钟对象,以及所述至少一个时钟对象分别对应的至少一个对象信息,包括:根据所述N个器件时钟信息,确定N个时钟对象;从所述N个时钟对象中确定所述至少一个时钟对象,其中,所述至少一个时钟对象彼此不同;针对所述至少一个时钟对象中的每个时钟对象:根据所述N个器件时钟信息,确定所述每个时钟对象对应的至少一个触发沿信息,基于所述至少一个触发沿信息,确定所述每个时钟对象对应的相位信息,其中,所述每个时钟对象对应的对象信息包括所述每个时钟对象对应的相位信息。

例如,在本公开至少一实施例提供一种端口时延的约束方法中,所述触发沿信息包括第一触发沿或者第二触发沿,基于所述至少一个触发沿信息,确定所述每个时钟对象对应的相位信息,包括:响应于所述至少一个触发沿信息均为第一触发沿或均为第二触发沿,确定所述每个时钟对象对应的相位信息为第一相位,响应于所述至少一个触发沿信息中同时存在第一触发沿和第二触发沿,确定所述每个时钟对象对应的相位信息为第二相位。

例如,在本公开至少一实施例提供一种端口时延的约束方法中,根据所述端口类型、所述至少一个时钟对象和所述至少一个对象信息,设置所述第一端口的端口时延,包括:根据所述端口类型,确定延时系数;针对每个时钟对象,根据所述端口类型、所述延时系数、每个时钟对象的对象信息,为所述第一端口设置针对所述每个时钟对象的时钟时延,其中,所述第一端口的端口时延包括所述至少一个时钟对象分别对应的至少一个时钟时延。

例如,在本公开至少一实施例提供一种端口时延的约束方法中,所述端口类型包括输入端口和输出端口,根据所述端口类型,确定延时系数,包括:响应于所述第一端口为输入端口,设置所述延时系数为输入延时系数;响应于所述第一端口为输出端口,设置所述延时系数为输出延时系数,其中,所述输入延时系数表示为P,所述输出延时系数表示为Q,P和Q均为正数,且P与Q之和大于1且小于2。

例如,在本公开至少一实施例提供一种端口时延的约束方法中,每个对象信息包括时钟周期和相位信息,针对每个时钟对象,根据所述端口类型、所述延时系数、每个时钟对象的对象信息,为所述第一端口设置针对所述每个时钟对象的时钟时延,包括:基于所述每个时钟对象对应的相位信息,确定所述每个时钟对象对应的延时调整参数;响应于所述第一端口为输入端口,基于所述输入延时系数、所述延时调整参数和所述每个时钟对象的时钟周期,设置所述第一端口针对所述每个时钟对象的时钟时延,其中,所述每个时钟对象的时钟时延为所述每个时钟对象的时钟周期、所述延时调整参数及所述输入延时系数的乘积,响应于所述第一端口为输出端口,基于所述输出延时系数、所述延时调整参数和所述每个时钟对象的时钟周期,设置所述第一端口针对所述每个时钟对象的时钟时延,其中,所述每个时钟对象的时钟时延为所述每个时钟对象的时钟周期、所述延时调整参数及所述输出延时系数的乘积。

例如,在本公开至少一实施例提供一种端口时延的约束方法中,所述相位信息包括第一相位和第二相位,基于所述每个时钟对象对应的相位信息,确定所述每个时钟对象对应的延时调整参数,包括:响应于第i个时钟对象的相位信息为第一相位,确定所述第i个时钟对象的延时调整参数为1;响应于所述第i个时钟对象的相位信息为第二相位,确定所述第i个时钟对象的延时调整参数为1/2,其中,i为正整数且小于等于所述至少一个时钟对象的总数。

例如,在本公开至少一实施例提供一种端口时延的约束方法中,所述所有端口还包括至少一个第二端口,每个第二端口具有预设端口约束信息,所述方法还包括:针对所述每个第二端口,将所述每个第二端口具有的预设端口约束信息作为所述每个第二端口的端口时延。

例如,本公开至少一实施例提供一种端口时延的约束方法还包括:响应于所述至少一个时钟对象为多个时钟对象,确定至少一条伪时序路径,不对所述至少一条伪时序路径执行时序检查,其中,所述至少一条伪时序路径包括以第i个时钟对象为起始,经过所述第一端口,且以第j个时钟对象为终点的时序路径,其中,i和j为正整数且小于等于所述多个时钟对象的总数,i和j不同。

本公开至少一实施例还提供一种端口时延的约束装置,应用于集成电路的设计,其中,所述集成电路包括多个模块,每个模块包括至少一个时序逻辑器件和至少一个端口,所述装置包括端口获取单元和处理单元,所述端口获取单元,配置为获取所述多个模块中的所有端口,其中,所述所有端口包括多个第一端口;所述处理单元包括信息获取子单元、时钟信息确定子单元、端口类型确定子单元以及端口时延设置子单元,针对所述多个第一端口中的每个第一端口:所述信息获取子单元配置为获取与所述第一端口对应的N个时序逻辑器件和所述第一端口所属的模块对应的模块时钟信息,其中,所述N个时序逻辑器件中的每个时序逻辑器件与所述第一端口直接电连接,或者,所述每个时序逻辑器件与所述第一端口通过至少一个组合逻辑器件电连接,N为正整数;所述时钟信息确定子单元配置为基于所述N个时序逻辑器件和所述模块时钟信息,确定与所述第一端口相关联的至少一个时钟对象以及所述至少一个时钟对象分别对应的至少一个对象信息;所述端口类型确定子单元配置为确定所述第一端口的端口类型;所述端口时延设置子单元配置为根据所述端口类型、所述至少一个时钟对象和所述至少一个对象信息,设置所述第一端口的端口时延。

本公开至少一实施例提供一种电子设备,包括:存储器,非瞬时性地存储有计算机可执行指令;处理器,配置为运行所述计算机可执行指令,其中,所述计算机可执行指令被所述处理器运行时实现根据本公开任一实施例所述的端口时延的约束方法。

本公开至少一实施例提供一种非瞬时性计算机可读存储介质,其中,所述非瞬时性计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现根据本公开任一实施例所述的端口时延的约束方法。

附图说明

为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。

图1为级联模块的端口延时示意图;

图2为本公开至少一实施例提供的一种端口时延的约束方法的示意性流程图;

图3A为本公开至少一实施例提供的一种模块示意图;

图3B为本公开至少一实施例提供的另一种模块示意图;

图4为本公开至少一实施例提供的端口时延的约束方法的处理流程示意图;

图5为本公开至少一实施例提供的一种端口时延的约束装置的示意性框图;

图6为本公开至少一实施例提供的一种电子设备的示意性框图;

图7为本公开至少一实施例提供的一种非瞬时性计算机可读存储介质的示意图。

具体实施方式

为了使得本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。

除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。

为了保持本公开实施例的以下说明清楚且简明,本公开省略了部分已知功能和已知部件的详细说明。

大规模集成电路,例如,SOC(系统集成芯片,System on Chip)集成电路,在具体电路设计过程中可能切分成几十、上百个模块分别进行设计。例如,各个模块可以根据模块功能、位置关系进行划分,每个模块可以实现特定的功能,各个模块之间通过模块端口进行数据交互。

模块端口包括输入端口(input port)和输出端口(output port),模块端口的端口时延包括输入端口的输入延时(input delay)和输出端口的输出延时(output delay),例如,输入端口的端口时序约束包括输入延时约束,输出端口的端口时序约束包括输出延时约束。

例如,输入延时定义为:在一个有效时钟周期内,外部逻辑的输出数据到达模块的输入端口所占用的延时;输出延时定义为:在一个有效时钟周期内,输出端口的输出数据到达外部逻辑所占用的延时。

图1为级联模块的端口延时示意图。

如图1所示,模块1包括输出端口A、寄存器R1和组合逻辑1,模块2包括输入端口B、寄存器R2和组合逻辑2。模块1中的寄存器R1的输出数据端口Q1经过组合逻辑1后与输出端口A电连接,输出端口A和输入端口B直接电连接,模块2中的输入端口B经过组合逻辑2后与寄存器R2的输入数据端口D2电连接。例如,组合逻辑由一个或多个组合逻辑器件构成,组合逻辑中不存在时序逻辑器件。

例如,模块1的输出端口A的输出延时为数据从输出端口A传输至模块2的寄存器R2的数据输入端D2所需的延时,也即T

为使模块端口时序满足设计要求,对于由同一时钟驱动的、且级联的第一级模块和第二级模块,例如,第一级模块的输出端口与第二级模块的输入端口电连接,通常要求第一级模块的输出延时和第二级模块的输入延时之和在一个时钟周期内。

例如,对于如图1所示的级联的模块1和模块2,为使模块端口时序满足设计要求,需要数据从寄存器R1的数据输出端Q1传输至寄存器R2的数据输入端D2的延时在一个时钟周期内,数据从寄存器R1的数据输出端Q1输出并经过组合逻辑1、输出端口A、输入端口B以及组合逻辑2传输至寄存器R2的数据输入端D2,由此可知,数据从寄存器R1的数据输出端Q1传输至寄存器R2的数据输入端D2的延时表示为Ta+T

例如,当为输出端口A设置的端口时延(也即输出时延)为T1,时序约束要求T1+T

例如,当为输入端口B设置的端口时延(也即输入时延)为T2,时钟约束要求T

目前,一般需要人为地对各个模块进行端口时延的约束设置,使得整合后的芯片时序满足设计期望,例如,设计人员对设计电路进行分析,按照端口的参考时钟周期设置端口时序约束,通常选择参考时钟周期的一定比例设置各个端口的输入延时和输出延时。例如,在集成电路设计完成后,可以对集成电路进行初始综合,并分析初始综合后的电路的路径延时,基于延时分析结果设置各个模块端口的输入延时约束和输出延时约束。

在第一个现有方案中,需要对每个端口的前后逻辑以及时序进行相对准确的预估,当集成电路的设计规模较大、设计较复杂时,这种方案需要耗费大量的时间来进行约束设置。在第二个现有方案中,需要基于初始综合(Synthesizer)的结果设置各个模块端口的输入延时约束和输出延时约束,这就使得在第一次对集成电路进行综合实现时,无法使用该种方案来提供对应的端口约束,并且由于第一次综合实现时并未考虑电路内部相位差等信息,可能导致第一次综合实现的结果不准确,影响后续时延约束的准确性。

本公开至少一实施例提供一种端口时延的约束方法、端口时延的约束装置、电子设备和非瞬时性计算机可读存储介质。该端口时延的约束方法包括:获取多个模块中的所有端口,其中,所有端口包括多个第一端口;针对多个第一端口中的每个第一端口:获取与第一端口对应的N个时序逻辑器件和第一端口所属的模块对应的模块时钟信息,其中,N个时序逻辑器件中的每个时序逻辑器件与第一端口直接电连接,或者,每个时序逻辑器件与第一端口通过至少一个组合逻辑器件电连接,N为正整数;基于N个时序逻辑器件和模块时钟信息,确定与第一端口相关联的至少一个时钟对象以及至少一个时钟对象分别对应的至少一个对象信息;确定第一端口的端口类型;根据端口类型、至少一个时钟对象和至少一个对象信息,设置第一端口的端口时延。

该端口时延的约束方法能够基于设计本身,自动对各个模块的端口设置完备的端口约束,不需要设计人员花费过多的精力手动设置端口约束,且可以在设计初期就自动为各个模块添加端口约束,节约迭代时间。

需要说明的是,本公开中的集成电路可以指代一个大型电路设计中的部分设计或部分模块,也即是,本公开中的集成电路既可以是一个完整集成电路的本身,也可以是完整集成电路中的部分电路,本公开对此不作限制。

此外,在本公开的实施例中,逻辑器件包括组合逻辑器件和时序逻辑器件。这里,时序逻辑器件指代数字电路设计中的触发器、寄存器、锁存器等器件,时序逻辑器件对输入信号具有存储和记忆功能,当接收到时钟信号的有效沿或有效电平时,能够触发时序逻辑器件对输入信号的存储及输出信号的状态改变。组合逻辑器件指代数字电路设计中的与门、或门等实现逻辑运算的器件,例如数据选择器、数值比较器等,组合逻辑器件对输入信号不具备存储和记忆功能,在任一时刻,组合逻辑器件的输出信号的状态取决于当前时刻的输入信号的状态。

下面结合附图对本公开的实施例进行详细说明,但是本公开并不限于这些具体的实施例。

图2为本公开至少一实施例提供的一种端口时延的约束方法的示意性流程图。

例如,该端口时延的约束方法应用于集成电路的设计。例如,集成电路包括多个模块,每个模块包括至少一个时序逻辑器件和至少一个端口。

例如,多个模块可以包括图1所示的模块1和/或模块2。

例如,如图2所示,本公开实施例提供的端口时延的约束方法包括步骤S10至S50。

在步骤S10,获取多个模块中的所有端口。

例如,所有端口包括多个第一端口,例如,第一端口可以为能够根据本公开提供的端口时延的约束方法设置端口时延的端口,例如,第一端口不具有预先设置好的端口约束信息。

例如,所有端口还包括多个第二端口,每个第二端口具有预设端口约束信息。

例如,遍历所有端口,若该端口具有预设端口约束信息,则将该端口作为第二端口,若该端口没有预设端口约束信息,则将该端口作为第一端口,对第一端口执行后续步骤S20-步骤S50。

针对多个第一端口中的每个第一端口,执行步骤S20-步骤S50。

在步骤S20,获取与第一端口对应的N个时序逻辑器件和第一端口所属的模块对应的模块时钟信息,例如,N个时序逻辑器件中的每个时序逻辑器件与第一端口直接电连接,或者,每个时序逻辑器件与第一端口通过至少一个组合逻辑器件电连接,N为正整数。

在步骤S30,基于N个时序逻辑器件和模块时钟信息,确定与第一端口相关联的至少一个时钟对象以及至少一个时钟对象分别对应的至少一个对象信息。

在步骤S40,确定第一端口的端口类型。

例如,端口类型包括输入端口和输出端口。

在步骤S50,根据端口类型、至少一个时钟对象和至少一个对象信息,设置第一端口的端口时延。

例如,在步骤S20中,获取与第一端口对应的N个时序逻辑器件,可以包括:响应于第一端口不用于输入时钟信号,从第一端口所属的模块包括的至少一个时序逻辑器件中确定N个时序逻辑器件。

例如,在步骤S20中,获取第一端口所属的模块对应的模块时钟信息,可以包括:确定第一端口所属的模块包括的至少一个时序逻辑器件;获取与至少一个时序逻辑器件一一对应的至少一个器件时钟信息。例如,模块时钟信息包括至少一个器件时钟信息。

例如,在一些实施例中,获取模块时钟信息包括:首先,遍历第一端口所属的模块包括的所有时序逻辑器件,分析所有时序逻辑器件的驱动时钟信号,确定驱动每个时序逻辑器件工作的时钟对象以及每个时序逻辑器件的触发沿信息。

例如,器件时钟信息可以包括时钟对象和触发沿信息。

例如,模块中的一个或多个时序逻辑器件由第一时钟驱动,这些时序逻辑器件对应的器件时钟信息中的时钟对象为第一时钟。

例如,触发沿信息包括第一触发沿或第二触发沿,例如,第一触发沿为上升沿,第二触发沿为下降沿,或者,第一触发沿为下降沿,第二触发沿为上升沿。例如,一些寄存器可以同时接收上升沿触发和下降沿触发,此时这些寄存器的触发沿信息可以包括第一触发沿和第二触发沿。

在获取每个时序逻辑器件的器件时钟信息后,建立包含时序逻辑器件的名称、时钟对象的名称、触发沿信息的数组,即该数组中的信息包括:时序逻辑器件的名称、时钟对象的名称、触发沿信息。每个时序逻辑器件同时拥有时钟对象的名称、触发沿信息两个属性,通过时序逻辑器件的名称即可查询得到该时序逻辑器件对应的时钟对象的名称和触发沿信息。

例如,在步骤S20中,遍历所有第一端口,如果第一端口用于输入时钟信号,则不再对该第一端口进行后续分析(例如,不再执行步骤S30-S50),即不用为该第一端口设置端口时序约束。

如果第一端口不用于输入时钟信号,在第一端口为输入端口时,获取以该第一端口为起始点的N条时序路径,每条时序路径均以该第一端口为起始点,经过一些组合逻辑器件(或者经电路走线直接电连接),直至某个时序逻辑器件的数据输入端口终止,位于N条时序路径的终点处的时序逻辑器件即为第一端口对应的N个时序逻辑器件;在第一端口为输出端口时,获取以该第一端口为终点的N条时序路径,每条时序路径均以某个时序逻辑器件的数据输出端口为起始点,经过一些组合逻辑器件(或者经电路走线直接电连接),直至该第一端口终止,位于N条时序路径的起始点处的时序逻辑器件即为第一端口对应的N个时序逻辑器件。上述分析过程可以利用电子设计自动化软件自动完成,从而快速获得所有端口分别对应的与端口构成时序路径的时序逻辑器件,以及所有模块对应的模块时钟信息,最大范围覆盖所有可能存在的时序路径,提供完备的端口约束解决方案。

需要说明的是,关于步骤S20中获取第一端口对应的N个时序逻辑器件和第一端口所属的模块对应的模块时钟信息的过程并不局限于本公开的实施例提供的方法,本领域技术人员可以采用其他方法实现。

之后,结合步骤S20中获得的模块时钟信息和N个时序逻辑器件,建立第一端口与时钟对象的关联关系,确定与各个端口相关联的一个或多个时钟对象以及这些时钟对象对应的对象信息,从而对输入端口或者输出端口设置针对每个时钟对象的延时约束。

例如,步骤S30可以包括:基于模块时钟信息,确定与N个时序逻辑器件一一对应的N个器件时钟信息;根据N个器件时钟信息,确定与第一端口相关联的至少一个时钟对象以及至少一个时钟对象分别对应的至少一个对象信息。

例如,根据N个器件时钟信息,确定与第一端口相关联的至少一个时钟对象以及至少一个时钟对象分别对应的至少一个对象信息,可以包括:根据N个器件时钟信息,确定N个时钟对象;从N个时钟对象中确定至少一个时钟对象,其中,至少一个时钟对象彼此不同;针对至少一个时钟对象中的每个时钟对象:根据N个器件时钟信息,确定每个时钟对象对应的至少一个触发沿信息,基于至少一个触发沿信息,确定每个时钟对象对应的相位信息,其中,每个时钟对象对应的对象信息包括每个时钟对象对应的相位信息。

例如,触发沿信息包括第一触发沿或者第二触发沿,基于至少一个触发沿信息,确定每个时钟对象对应的相位信息,可以包括:响应于至少一个触发沿信息均为第一触发沿或均为第二触发沿,确定每个时钟对象对应的相位信息为第一相位,响应于所述至少一个触发沿信息中同时存在第一触发沿和第二触发沿,确定每个时钟对象对应的相位信息为第二相位。

例如,基于上述过程,可以建立端口和时钟对象的关联关系,例如,建立端口和时钟对象的关联关系可以包括建立第一端口的名称、时钟对象的名称以及对象信息的数组,该数组中的信息包括:第一端口的名称、时钟对象的名称以及对象信息。

图3A和图3B为本公开至少一实施例提供的模块示意图。

如图3A所示,模块A包括时序逻辑器件R3、时序逻辑器件R4和时序逻辑器件R5,如图3B所示,模块B包括时序逻辑器件R6和时序逻辑器件R7,当然,模块A和模块B还可以包括更多的时序逻辑器件,这里不再赘述。

例如,组合逻辑包括一个或多个组合逻辑器件,电路逻辑包括一个或多个组合逻辑器件、时序逻辑器件,也即组合逻辑不包括时序逻辑器件,电路逻辑可以包括时序逻辑器件。

例如,如图3A所示,第一端口为输入端口1,输入端口1经过组合逻辑与时序逻辑器件R3、时序逻辑器件R4和时序逻辑器件R5电连接,时序逻辑器件R3受到时钟CLK1的上升沿信号的控制,时序逻辑器件R4受到时钟CLK2的下降沿信号的控制,时序逻辑器件R5同时受到时钟CLK2的上升沿信号和下降沿信号的控制。时序逻辑器件R3、时序逻辑器件R4和时序逻辑器件R5的输出端连接其他电路逻辑,这里不再赘述。

例如,如图3B所示,第一端口为输出端口2,时序逻辑器件R6和时序逻辑器件R7经过组合逻辑与输出端口2电连接,时序逻辑器件R6受到时钟CLK1的上升沿信号的控制,时序逻辑器件R7受到时钟CLK2的下降沿信号的控制。时序逻辑器件R6和时序逻辑器件R7的输入端连接其他电路逻辑,这里不再赘述。

例如,第一触发沿为上升沿,第二触发沿为下降沿。

下面以图3A和图3B为例,具体说明步骤S30的执行过程。

例如,在图3A所示的示例中,输入端口1对应3个时序逻辑器件,分别为时序逻辑器件R3、时序逻辑器件R4和时序逻辑器件R5,具体分析过程参考步骤S20的内容,这里不再赘述。

例如,时序逻辑器件R3的器件时钟信息包括:时钟对象为时钟CLK1,触发沿信息为上升沿触发;时序逻辑器件R4的器件时钟信息包括:时钟对象为时钟CLK2,触发沿信息为下降沿触发;时序逻辑器件R5的器件时钟信息包括:时钟对象为时钟CLK2,触发沿信息为上升沿触发和下降沿触发。

根据3个时序逻辑器件分别对应的器件时钟信息,可以确定输入端口1对应的时钟对象包括时钟CLK1和时钟CLK2。

对于时钟CLK1,根据3个器件时钟信息,由于仅时序逻辑器件R3受到时钟CLK1的上升沿信号的控制,则时钟CLK1对应的触发沿信息均为上升沿,确定时钟CLK1对应的相位信息为第一相位。

对于时钟CLK2,根据3个器件时钟信息,时序逻辑器件R4受到时钟CLK2的下降沿信号的控制,时序逻辑器件R5同时受到时钟CLK2的上升沿信号和下降沿信号的控制,因而时钟CLK2对应的触发沿信息包括上升沿和下降沿,确定时钟CLK2对应的相位信息为第二相位。

例如,对于如图3A所示的输入端口1,所建立的端口与时钟之间的关联关系可以是,输入端口1对应的时钟对象包括时钟CLK1和时钟CLK2,时钟CLK1对应的对象信息中的相位信息为第一相位,时钟CLK2对应的对象信息中的相位信息为第二相位。

例如,在图3B所示的示例中,输出端口2对应2个时序逻辑器件,分别为时序逻辑器件R6和时序逻辑器件R7,具体分析过程参考步骤S20的内容,这里不再赘述。

例如,时序逻辑器件R6的器件时钟信息包括:时钟对象为时钟CLK1,触发沿信息为上升沿触发;时序逻辑器件R7的器件时钟信息包括:时钟对象为时钟CLK2,触发沿信息为下降沿触发。

根据2个时序逻辑器件分别对应的器件时钟信息,可以确定输出端口2对应的时钟对象包括时钟CLK1和时钟CLK2。

对于时钟CLK1,根据2个器件时钟信息,由于仅时序逻辑器件R6受到时钟CLK1的上升沿信号的控制,则时钟CLK1对应的触发沿信息为上升沿,确定时钟CLK1对应的相位信息为第一相位。

对于时钟CLK2,根据2个器件时钟信息,由于仅时序逻辑器件R7受到时钟CLK2的下降沿信号的控制,因而时钟CLK2对应的触发沿信息为下降沿,确定时钟CLK2对应的相位信息为第一相位。

例如,对于如图3B所示的输出端口2,所建立的端口与时钟之间的关联关系可以是,输出端口2对应的时钟对象包括时钟CLK1和时钟CLK2,时钟CLK1对应的对象信息中的相位信息为第一相位,时钟CLK2对应的对象信息中的相位信息也为第一相位。

之后,根据第一端口与时钟对象之间的关联关系,为第一端口设置端口时延。

例如,步骤S50可以包括:根据端口类型,确定延时系数;针对每个时钟对象,根据端口类型、延时系数、每个时钟对象的对象信息,为第一端口设置针对每个时钟对象的时钟时延,其中,第一端口的端口时延包括至少一个时钟对象分别对应的至少一个时钟时延。

例如,根据端口类型,确定延时系数,可以包括:响应于第一端口为输入端口,设置延时系数为输入延时系数;响应于第一端口为输出端口,设置延时系数为输出延时系数,其中,输入延时系数表示为P,输出延时系数表示为Q,P和Q均为正数,且P与Q之和大于1且小于2。

例如,设置输入延时系数和输出延时系数之和大于一个时钟周期但小于两个时钟周期,也即设置P与Q之和大于1且小于2,这种过约束设置方式可以在时序优化过程中使得最终每个端口的输入延时和输出延时之和在一个周期内,并且可以使得后续电路更易满足时序约束要求。

例如,P和Q的具体数值可根据集成电路的工艺和后续物理实现(例如布局布线)预留的余量来进行设置。例如,在不同的工艺下,综合和布局布线的时序相关性不一致,在不同的流程(flow)下,综合和布局布线的时序相关性也不一致。通常情况下,可以考虑布局布线的裕量设置P和Q的具体数值,以使得集成电路在布局布线后的大部分时序路径不出现时序违例。

例如,器件时钟信息还可以包括时钟周期,从而基于器件时钟信息确定的对象信息也可以包括时钟周期。

例如,针对每个时钟对象,根据端口类型、延时系数、每个时钟对象的对象信息,为第一端口设置针对每个时钟对象的时钟时延,可以包括:基于每个时钟对象对应的相位信息,确定每个时钟对象对应的延时调整参数;响应于第一端口为输入端口,基于输入延时系数、延时调整参数和每个时钟对象的时钟周期,设置第一端口针对每个时钟对象的时钟时延,其中,每个时钟对象的时钟时延为每个时钟对象的时钟周期、延时调整参数及输入延时系数的乘积;响应于第一端口为输出端口,基于输出延时系数、延时调整参数和每个时钟对象的时钟周期,设置第一端口针对每个时钟对象的时钟时延,其中,每个时钟对象的时钟时延为每个时钟对象的时钟周期、延时调整参数及输出延时系数的乘积。

例如,基于每个时钟对象对应的相位信息,确定每个时钟对象对应的延时调整参数,可以包括:响应于第i个时钟对象的相位信息为第一相位,确定第i个时钟对象的延时调整参数为1;响应于第i个时钟对象的相位信息为第二相位,确定第i个时钟对象的延时调整参数为1/2,其中,i为正整数且小于等于至少一个时钟对象的总数。

根据前述内容,当时钟对象对应的触发沿同时存在第一触发沿和第二触发沿时,确定该时钟对象对应的相位信息为第二相位,此时由该时钟对象驱动的某个寄存器既可以上升沿触发也可以下降沿触发,也即是半周期电路,因而设置该时钟对象的延时调整参数为1/2。反之,若由该时钟对象驱动的所有寄存器均是上升沿触发或均是下降沿触发,则设置该时钟对象的延时调整参数为1。

下面结合图3A和图3B,具体说明步骤S50的执行过程。

如前所述,输入端口1对应的时钟对象为时钟CLK1和时钟CLK2,时钟CLK1对应的对象信息中的相位信息为第一相位,时钟CLK2对应的对象信息中的相位信息为第二相位。

对于输入端口1,由于其类型为输入端口,所设置的端口约束应当为输入延时(input delay)约束。

例如,输入端口1的延时系数为输入延时系数P。

例如,对于时钟CLK1,由于时钟CLK1对应的对象信息中的相位信息为第一相位,则延时调整参数为1,设置输入端口1针对时钟CLK1的时钟时延为Tin1,Tin1=1*P*clk1_period,这里clk1_period为时钟CLK1的时钟周期。需要说明的是,当时钟CLK1对应的对象信息中的相位信息为第一相位时,延时调整参数包括但不限于1,其可以根据实际情况设置。

例如,对于时钟CLK2,由于时钟CLK2对应的对象信息中的相位信息为第二相位,则延时调整参数为1/2,设置输入端口1针对时钟CLK2的时钟时延为Tin2,Tin2=1/2*P*clk2_period,这里clk2_period为时钟CLK2的时钟周期。需要说明的是,当时钟CLK1对应的对象信息中的相位信息为第二相位时,延时调整参数包括但不限于1/2,其可以根据实际情况设置。

经过如上过程,为输入端口1添加针对时钟CLK1的输入延时约束Tin1,以及针对时钟CLK2的输入延时约束Tin2。

如前所述,输出端口2对应的时钟对象为时钟CLK1和时钟CLK2,时钟CLK1对应的对象信息中的相位信息为第一相位,时钟CLK2对应的对象信息中的相位信息为第一相位。

对于输出端口2,由于其类型为输出端口,所设置的端口约束应当为输出延时(output delay)约束。

例如,输出端口2的延时系数为输出延时系数Q。

例如,对于时钟CLK1,由于时钟CLK1对应的对象信息中的相位信息为第一相位,则延时调整参数为1,设置输出端口2针对时钟CLK1的时钟时延为Tout1,Tout1=1*Q*clk1_period。

例如,对于时钟CLK2,由于时钟CLK1对应的对象信息中的相位信息为第一相位,则延时调整参数为1,设置输出端口2针对时钟CLK2的时钟时延为Tout2,Tout2=Q*clk2_period。

经过如上过程,为输出端口2添加针对时钟CLK1的输出延时约束Tout1,以及针对时钟CLK2的输出延时约束Tout2。

不同于以往的端口时延的约束方法,本公开提供的端口时延的约束方法可以为同一端口的不同时钟提供输入延时约束和输出延时约束,支持同一端口的多时钟约束,并且考虑时钟相位,支持多时钟自动相位识别,提供更加严谨的时序约束,节约版本迭代时间,加快开发效率。

例如,当同一端口对应多个时钟对象时,不仅需要为每个时钟对象添加对应的端口延时约束,还应当设置该端口的不同时钟对象之间的时序路径为伪时序路径(falsepath),在时序分析时不对这些伪路径执行时序检查,保证同步的多个时钟对象避免因各个时钟对象的周期相差过大,导致端口错误约束而引起的假违例问题。

例如,本公开至少一实施例提供的端口时延的约束方法,还可以包括:响应于至少一个时钟对象为多个时钟对象,确定至少一条伪时序路径,不对至少一条伪时序路径执行时序检查,其中,至少一条伪时序路径包括以第i个时钟对象为起始,经过第一端口,且以第j个时钟对象为终点的时序路径,其中,i和j为正整数且小于等于多个时钟对象的总数,i和j不同。

例如,对于如图3A所示的模块A,输入端口1对应的时钟对象包括时钟CLK1和时钟CLK2,当时钟CLK1和时钟CLK2为同步时钟时,若时钟CLK1的时钟周期与输入延时系数的乘积大于时钟CLK2的时钟周期,则以时钟CLK1为起始,经过输入端口1,以时钟CLK2为终点的时序路径的时序违反,需要设置该时序路径为伪时序路径(false path)。

例如,该端口时延的约束方法还包括:针对每个第二端口,将每个第二端口具有的预设端口约束信息作为每个第二端口的端口时延。

例如,通常对于模块内部包括的寄存器较多、时钟较多、逻辑较为复杂的模块,例如宏单元(macro-cell),由于与该模块存在驱动关系的时钟数目较多,但是与端口构成关联关系的时钟较少,例如大部分的时钟用于驱动内部时序逻辑器件,这些时序逻辑器件与端口不构成时序路径,那么根据上述方法设置的端口时延可能导致大量的无关延时约束。

例如,在首次执行本公开至少一实施例提供的端口时延的约束方法可以将所有端口都作为第一端口,设置所有端口的端口时延;之后,对设置好端口时延的电路进行时序分析,判断其中的哪些模块的端口时序影响到了模块内部时序,例如如上所述的宏单元很可能会影响模块内部时序;之后,与设计人员确认该模块前后逻辑的延时裕量,查看设置的端口时延是否发生了过约束,若端口时延发生了过约束,则为这些端口时序影响到模块内部时序的端口设置预设约束信息,若不存在过约束,则不必添加额外的约束信息。

此外,由于本公开提供的端口时延的约束方法是基于与端口构成时序路径的时序逻辑器件的器件时序信息来建立端口和时钟对应的关联关系,进而为端口设置端口约束,因此,当设计没有发生变化或者电路逻辑变化不影响端口对应的时序逻辑器件时,对电路进行时序分析时可复用之前版本的端口约束,不必再次执行本公开的全部流程,节约开发时间,提升开发效率。

图4为本公开至少一实施例提供的端口时延的约束方法的处理流程示意图。

下面结合图4,具体说明本公开所提供的端口时延的约束方法执行过程。

首先,遍历所有端口,针对每个端口,判断该端口是否已存在预设约束信息,若端口已存在预设约束信息,将该端口作为第二端口,将该端口具有的预设约束信息作为该端口的端口时延,继续遍历下一个端口。

若该端口不存在预设约束信息,将该端口作为第一端口,获得该端口所属模块对应的模块时钟信息,具体过程参见步骤S20,这里不再赘述。

之后,判断该端口是否为时钟信号输入端口,也即该端口是否用于输入时钟信号,若该端口用于输入时钟信号,不再执行后续步骤,继续遍历下一个端口。

若该端口不用于输入时钟信号,获得该端口对应的N个时序逻辑器件,具体过程参见步骤S20,这里不再赘述。

之后,获取与该端口相关联的时钟对象和这些时钟对象的对象信息,具体过程参见步骤S30,这里不再赘述。

之后,确定端口类型,具体过程参见步骤S40,这里不再赘述。

之后,根据端口类型、与端口关联的时钟对象和对象信息,为该端口添加端口延时约束,具体过程参见步骤S50,这里不再赘述。

之后,判断该端口关联的时钟对象是否是多个,若该端口关联的时钟对象为多个,则添加多个时钟对象之间的伪时序路径约束,具体过程如前所述,这里不再赘述。

之后,对下一个端口执行上述过程,直到所有端口都遍历完成。

本公开至少一实施例提供的端口时延的约束方法具备自动、前瞻两个特征,在设计完成后的初次综合过程即可使用,在设计实现初期就能使模块端口尽量满足时序要求,降低设计人员的工作量;并且,该方法基于设计本身自动为各个模块的端口添加端口约束,无须人为干预,提升工作效率。

与上述的端口时延的约束方法相对应,本公开至少一实施例还提供一种端口时延的约束装置,图5为本公开至少一实施例提供的一种端口时延的约束装置的示意性框图。

例如,如图5所示,端口时延的约束装置500包括:端口获取单元501和处理单元502。

端口获取单元501,配置为获取多个模块中的所有端口,例如,所有端口包括多个第一端口。

处理单元502包括信息获取子单元5021、时钟信息确定子单元5022、端口类型确定子单元5023以及端口时延设置子单元5024。

针对多个第一端口中的每个第一端口,信息获取子单元5021配置为获取与第一端口对应的N个时序逻辑器件和第一端口所属的模块对应的模块时钟信息,其中,N个时序逻辑器件中的每个时序逻辑器件与第一端口直接电连接,或者,每个时序逻辑器件与第一端口通过至少一个组合逻辑器件电连接,N为正整数。

时钟信息确定子单元5022配置为基于N个时序逻辑器件和模块时钟信息,确定与第一端口相关联的至少一个时钟对象以及至少一个时钟对象分别对应的至少一个对象信息。

端口类型确定子单元5023配置为确定第一端口的端口类型。

端口时延设置子单元5024配置为根据端口类型、至少一个时钟对象和至少一个对象信息,设置第一端口的端口时延。

例如,信息获取子单元5021执行获取与第一端口对应的N个时序逻辑器件的操作时,包括执行以下操作:响应于第一端口不用于输入时钟信号,从第一端口所属的模块包括的至少一个时序逻辑器件中确定N个时序逻辑器件。

例如,信息获取子单元5021执行获取第一端口所属的模块对应的模块时钟信息的操作时,包括执行以下操作:确定第一端口所属的模块包括的至少一个时序逻辑器件;获取与至少一个时序逻辑器件一一对应的至少一个器件时钟信息,其中,模块时钟信息包括至少一个器件时钟信息。

例如,时钟信息确定子单元5022执行基于N个时序逻辑器件和模块时钟信息,确定与第一端口相关联的至少一个时钟对象以及至少一个时钟对象分别对应的至少一个对象信息的操作时,包括执行以下操作:基于模块时钟信息,确定与N个时序逻辑器件一一对应的N个器件时钟信息;根据N个器件时钟信息,确定与第一端口相关联的至少一个时钟对象以及至少一个时钟对象分别对应的至少一个对象信息。

例如,时钟信息确定子单元5022执行根据N个器件时钟信息,确定与第一端口相关联的至少一个时钟对象,以及至少一个时钟对象分别对应的至少一个对象信息的操作时,包括执行以下操作:根据N个器件时钟信息,确定N个时钟对象;从N个时钟对象中确定至少一个时钟对象,其中,至少一个时钟对象彼此不同;针对至少一个时钟对象中的每个时钟对象:根据N个器件时钟信息,确定每个时钟对象对应的至少一个触发沿信息,基于至少一个触发沿信息,确定每个时钟对象对应的相位信息,其中,每个时钟对象对应的对象信息包括每个时钟对象对应的相位信息。

例如,时钟信息确定子单元5022执行基于至少一个触发沿信息,确定每个时钟对象对应的相位信息的操作时,包括执行以下操作:响应于至少一个触发沿信息均为第一触发沿或均为第二触发沿,确定每个时钟对象对应的相位信息为第一相位,响应于至少一个触发沿信息中同时存在第一触发沿和第二触发沿,确定每个时钟对象对应的相位信息为第二相位。

例如,端口时延设置子单元5024包括延时系数确定子单元和时钟时延设置子单元。

例如,延时系数确定子单元配置为根据端口类型,确定延时系数。

例如,时钟时延设置子单元配置为针对每个时钟对象,根据端口类型、延时系数、每个时钟对象的对象信息,为第一端口设置针对每个时钟对象的时钟时延,其中,第一端口的端口时延包括至少一个时钟对象分别对应的至少一个时钟时延。

例如,时钟时延设置子单元执行针对每个时钟对象,根据端口类型、延时系数、每个时钟对象的对象信息,为第一端口设置针对每个时钟对象的时钟时延的操作时,包括执行以下操作:基于每个时钟对象对应的相位信息,确定每个时钟对象对应的延时调整参数;响应于第一端口为输入端口,基于输入延时系数、延时调整参数和每个时钟对象的时钟周期,设置第一端口针对每个时钟对象的时钟时延,其中,每个时钟对象的时钟时延为每个时钟对象的时钟周期、延时调整参数及输入延时系数的乘积,响应于第一端口为输出端口,基于输出延时系数、延时调整参数和每个时钟对象的时钟周期,设置第一端口针对每个时钟对象的时钟时延,其中,每个时钟对象的时钟时延为每个时钟对象的时钟周期、延时调整参数及输出延时系数的乘积。

例如,时钟时延设置子单元执行基于每个时钟对象对应的相位信息,确定每个时钟对象对应的延时调整参数的操作时,包括执行以下操作:响应于第i个时钟对象的相位信息为第一相位,确定第i个时钟对象的延时调整参数为1;响应于第i个时钟对象的相位信息为第二相位,确定第i个时钟对象的延时调整参数为1/2,其中,i为正整数且小于等于至少一个时钟对象的总数。

例如,端口获取单元501和处理单元502包括存储在存储器中的代码和程序;处理器可以执行该代码和程序以实现如上所述的端口获取单元501和处理单元502的一些功能或全部功能。例如,端口获取单元501和处理单元502可以是专用硬件器件,用来实现如上所述的端口获取单元501和处理单元502的一些或全部功能。例如,端口获取单元501和处理单元502可以是一个电路板或多个电路板的组合,用于实现如上所述的功能。在本申请实施例中,该一个电路板或多个电路板的组合可以包括:(1)一个或多个处理器;(2)与处理器相连接的一个或多个非暂时的存储器;以及(3)处理器可执行的存储在存储器中的固件。

需要说明的是,端口获取单元501用于实现图2所示的步骤S10,信息获取子单元5021用于实现图2所示的步骤S20,时钟信息确定子单元5022用于实现图2所示的步骤S30,端口类型确定子单元5023用于实现图2所示的步骤S40,端口时延设置子单元5024用于实现图2所示的步骤S50。从而关于端口获取单元501的具体说明可以参考上述端口时延的约束方法的实施例中图2所示的步骤S10的相关描述,关于信息获取子单元5021的具体说明可以参考上述端口时延的约束方法的实施例中图2所示的步骤S20的相关描述,关于时钟信息确定子单元5022的具体说明可以参考上述端口时延的约束方法的实施例中图2所示的步骤S30的相关描述,关于端口类型确定子单元5023的具体说明可以参考上述端口时延的约束方法的实施例中图2所示的步骤S40的相关描述,关于端口时延设置子单元5024的具体说明可以参考上述端口时延的约束方法的实施例中图2所示的步骤S50的相关描述。此外,端口时延的约束装置可以实现与前述端口时延的约束方法相似的技术效果,在此不再赘述。

本公开至少一实施例还提供一种电子设备,图6为本公开至少一实施例提供的一种电子设备的示意性框图。

例如,如图6所示,该电子设备包括处理器601、通信接口602、存储器603和通信总线604。处理器601、通信接口602、存储器603通过通信总线604实现相互通信,处理器601、通信接口602、存储器603等组件之间也可以通过网络连接进行通信。本公开对网络的类型和功能在此不作限制。

例如,存储器603用于非瞬时性地存储计算机可执行指令。处理器601用于运行计算机可执行指令时,计算机可执行指令被处理器601运行时实现根据上述任一实施例所述的端口时延的约束方法。关于该端口时延的约束方法的各个步骤的具体实现以及相关解释内容可以参见上述端口时延的约束方法的实施例,在此不作赘述。

例如,处理器601执行存储器603上所存储的程序而实现端口时延的约束方法的实现方式,与前述端口时延的约束方法的实施例部分所提及的实现方式相同,这里也不再赘述。

例如,通信总线604可以是外设部件互连标准(PCI)总线或扩展工业标准结构(EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

例如,通信接口602用于实现电子设备与其他设备之间的通信。

例如,处理器601和存储器603可以设置在服务器端(或云端)。

例如,处理器601可以控制电子设备中的其它组件以执行期望的功能。处理器601可以是中央处理器(CPU)、网络处理器(NP)等,还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。中央处理元(CPU)可以为X86或ARM架构等。

例如,存储器603可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机可执行指令,处理器601可以运行所述计算机可执行指令,以实现电子设备的各种功能。在存储介质中还可以存储各种应用程序和各种数据等。

例如,关于电子设备执行端口时延的约束的过程的详细说明可以参考端口时延的约束方法的实施例中的相关描述,重复之处不再赘述。

图7为本公开至少一实施例提供的一种非瞬时性计算机可读存储介质的示意图。例如,如图7所示,在存储介质700上可以非暂时性地存储一个或多个计算机可执行指令701。例如,当计算机可执行指令701由处理器执行时可以执行根据上文所述的端口时延的约束方法中的一个或多个步骤。

例如,该存储介质700可以应用于上述电子设备和/或端口时延的约束装置500中。例如,存储介质700可以包括电子设备中的存储器603。

例如,关于存储介质700的说明可以参考电子设备的实施例中对于存储器的描述,重复之处不再赘述。

对于本公开,还有以下几点需要说明:

(1)本公开实施例附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。

(2)为了清晰起见,在用于描述本发明的实施例的附图中,层或结构的厚度和尺寸被放大。可以理解,当诸如层、膜、区域或基板之类的元件被称作位于另一元件“上”或“下”时,该元件可以“直接”位于另一元件“上”或“下”,或者可以存在中间元件。

(3)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。

以上所述仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。

相关技术
  • 端口时延的约束方法、装置、电子设备、存储介质
  • 网络时延的确定方法、装置、电子设备及存储介质
技术分类

06120113692846