SoC芯片时钟功能验证方法及系统

文档序号:25859065发布日期:2021-07-13 16:14阅读:757来源:国知局
SoC芯片时钟功能验证方法及系统

本发明涉及芯片时钟检测技术领域,特别涉及一种soc芯片时钟功能验证方法及系统。



背景技术:

同步时序电路是当下soc芯片设计的主流,同步电路中的数据传输由一个或多个时钟脉冲信号统一进行控制。时钟信号是各功能单元模块数据传输的基准,它对于数字电路设计的功能、性能和稳定性等方面起着决定性作用。时钟设计一直是soc芯片设计实现的重要环节,随着芯片制造工艺与设计技术的飞速发展,soc芯片设计所实现的功能越来越复杂、性能越来越高;对应soc芯片内部各功能模块、ip核的时钟网络分布也更加复杂,全芯片对应的时钟个数更多,时钟频点跨度更大,既有高性能关键模块所需要的高频时钟,又有低速外设的低频时钟。现有侧重于对soc芯片中时钟树的生成,以及时钟树的时序优化,针对时钟树的工程设计方法基本成熟,但较少的技术方案涉及时钟功能的验证。

eda仿真验证和fpga原型验证是soc芯片两种常用的功能验证方案。在eda仿真验证中,针对时钟功能的验证策略,通常采用注入直接激励以及查看仿真波形的方法来确认时钟设计功能,该方法比较适合于时钟分布不太复杂的中小规模集成电路,针对时钟个数多、时钟频点复杂的大规模soc芯片来说,该直接激励验证方法由于需要人工观测波形对时钟功能的验证成本较高、验证效率较低,也可能由于人工观测不细致导致某些组合情况下对部分时钟的验证存在遗漏,以致时钟功能验证不完备、存在验证风险。在fpga原型验证方法中,由于fpga内部的时钟产生通常依赖mmcm产生,其时钟产生机制与asic数字电路产生时钟的机制不一样,因此,fpga原型验证方法通常适合于对soc芯片数据通路的功能验证,不适合于时钟功能的验证。



技术实现要素:

为此,本发明提供一种soc芯片时钟功能验证方法及系统,可操作性强、实现简单、功能覆盖全面,能够确保全芯片功能模块的稳定性和鲁棒性。

按照本发明所提供的设计方案,提供一种soc芯片时钟功能验证方法,包含:

从soc芯片外部管脚中选取用于引出芯片内部待测时钟的测试管脚;

利用时钟仿真验证平台并根据芯片内时钟网络分布级数,对内部各时钟频率进行遍历,依次选择待测时钟,并通过测试管脚输出对待测时钟频率进行验证确认。

作为本发明soc芯片时钟功能验证方法,进一步地,芯片内部待测时钟经过预设系数分频通过测试管脚引出。

作为本发明soc芯片时钟功能验证方法,进一步地,分频系数采用2n

作为本发明soc芯片时钟功能验证方法,进一步地,利用时钟仿真验证平台,根据芯片内部时钟网络分布的级数,通过设置不同层级寄存器配置对芯片内部的各时钟频率进行遍历,依次选择待测时钟。

作为本发明soc芯片时钟功能验证方法,进一步地,时钟网络分布中对每一级的时钟选择与之对应的寄存器,通过对寄存器配置不同的值对应选择相应级时钟网络时钟,被选择的时钟作为时钟网络相应级的测试时钟。

作为本发明soc芯片时钟功能验证方法,进一步地,利用验证平台中监测待测时钟两个相邻上升沿,获取该待测时钟的时钟周期,将时钟周期乘以预设分频系数得到预期时钟输出管脚的时钟周期,将该预期时钟输出管脚的时钟周期与实际时钟输出管脚进行对比,验证待测时钟频率是否正确。

作为本发明soc芯片时钟功能验证方法,进一步地,还包含:通过设置用于待测时钟检测的参考时钟,利用该参考时钟来验证芯片时钟功能稳定性。

作为本发明soc芯片时钟功能验证方法,进一步地,在参考时钟产生过程中,利用性能影响参数生成非理想状态下的参考时钟来验证芯片对时钟偏差的容忍程度。

作为本发明soc芯片时钟功能验证方法,进一步地,性能影响参数包含但不限于:相位偏差及时钟抖动。

进一步地,基于上述的方法,本发明还提供一种soc芯片时钟功能验证系统,包含:配置模块和验证模块,其中,

配置模块,用于从soc芯片外部管脚中选取用于引出芯片内部待测时钟的测试管脚;

验证模块,用于利用时钟仿真验证平台并根据芯片内时钟网络分布级数,对内部各时钟频率进行遍历,依次选择待测时钟,并通过测试管脚输出对待测时钟频率进行验证确认。

本发明的有益效果:

本发明将内部待测时钟频率经过一定系数的分频之后引出至外部管脚,在仿真验证平台中,根据芯片内部时钟网络分布的级数,通过对不同层级的寄存器配置操作,可完成对全芯片所有时钟的时钟频率进行遍历和自动比较,不会遗漏每一个时钟,具有实现简单、自动化验证效率高等特点,适合于时钟网络复杂、时钟频点较多的soc芯片或大规模asic芯片;在基本时钟频率验证完成之后,可进一步将相位偏差、时钟抖动等因素也作等参数传递至参考时钟,用于验证全芯片功能的稳定性和鲁棒性,具有可操作性强、功能覆盖全面等优点,具有较好的应用前景。

附图说明:

图1为实施例中soc芯片时钟功能验证流程示意;

图2为实施例中soc芯片中构建时钟树之后的时钟网络分布示意;

图3为实施例中常用时钟树结构示意;

图4为实施例中时钟功能验证流程示意;

图5为实施例中根据时钟树结构配置时钟选择寄存器选择待测试时钟示意;

图6为实施例中测试时钟的时钟周期监测示意;

图7为实施例中参数化的时钟产生示意。

具体实施方式:

为使本发明的目的、技术方案和优点更加清楚、明白,下面结合附图和技术方案对本发明作进一步详细的说明。

本发明实施例,参见图1所示,提供一种soc芯片时钟功能验证方法,包含:将从soc芯片外部管脚中选取用于引出芯片内部待测时钟的测试管脚;利用时钟仿真验证平台并根据芯片内时钟网络分布级数,对内部各时钟频率进行遍历,依次选择待测时钟,并通过测试管脚输出对待测时钟频率进行验证确认。

将内部待测时钟频率经过一定系数的分频之后引出至外部管脚,在仿真验证平台中,根据芯片内部时钟网络分布的级数,通过对不同层级的寄存器配置操作,可完成对全芯片所有时钟的时钟频率进行遍历和自动比较,不会遗漏每一个时钟,具有实现简单、自动化验证效率高等特点,适合于时钟网络复杂、时钟频点较多的soc芯片或大规模asic芯片。

soc芯片设计中通常都会通过构建时钟树形成时钟网络,图2示例soc芯片中构建时钟树之后的时钟网络分布,图3示例常用的时钟树结构,其中,(a)、(b)和(c)分别为对应的平衡树、h树和x树。

作为本发明实施例中soc芯片时钟功能验证方法,进一步地,芯片内部待测时钟经过预设系数分频通过测试管脚引出。进一步地,分频系数采用2n

作为本发明实施例中soc芯片时钟功能验证方法,进一步地,利用时钟仿真验证平台,根据芯片内部时钟网络分布的级数,通过设置不同层级寄存器配置对芯片内部的各时钟频率进行遍历,依次选择待测时钟。进一步地,时钟网络分布中对每一级的时钟选择与之对应的寄存器,通过对寄存器配置不同的值对应选择相应级时钟网络时钟,被选择的时钟作为时钟网络相应级的测试时钟。,进一步地,利用验证平台中监测待测时钟两个相邻上升沿,获取该待测时钟的时钟周期,将时钟周期乘以预设分频系数得到预期时钟输出管脚的时钟周期,将该预期时钟输出管脚的时钟周期与实际时钟输出管脚进行对比,验证待测时钟频率是否正确。

作为本发明实施例中soc芯片时钟功能验证方法,进一步地,还包含:通过设置用于待测时钟检测的参考时钟,利用该参考时钟来验证芯片时钟功能稳定性。进一步地,在参考时钟产生过程中,利用性能影响参数生成非理想状态下的参考时钟来验证芯片对时钟偏差的容忍程度。性能影响参数可包含但不限于:相位偏差及时钟抖动。

进一步地,基于上述的方法,本发明实施例还提供一种soc芯片时钟功能验证系统,包含:配置模块和验证模块,其中,

配置模块,用于从soc芯片外部管脚中选取用于引出芯片内部待测时钟的测试管脚;

验证模块,用于利用时钟仿真验证平台并根据芯片内时钟网络分布级数,对内部各时钟频率进行遍历,依次选择待测时钟,并通过测试管脚输出对待测时钟频率进行验证确认。

可以eda软件仿真为技术手段,在soc芯片外部管脚选择一个可用于时钟测试的管脚,将内部待测时钟经过一定系数的分频之后引出至外部管脚,通过观测外部管脚的输出,对时钟频率进行验证确认;在仿真验证平台中,根据芯片内部时钟网络分布的级数,通过对不同层级的寄存器配置操作,可对芯片内部的各时钟频率进行遍历,依次选择外部待测时钟;同时,针对参考时钟的构建,除时钟频率和时钟周期之外,将相位偏差、时钟抖动等因素也作为可选参数传递至参考时钟,可进一步验证系统功能的稳定性和鲁棒性。本发明具有可操作性强、实现简单、功能覆盖全面等优点。

为了更好地描述本发明的技术方案,如图4所示,从观测时钟选择、验证平台构建以及参考时钟生成等方面对本案方案进行阐述,具体为:

step1:设计一个专门用于时钟输出测试的外部管脚。若全芯片外部管脚资源比较紧张,也可选择一个可复用的外部管脚,用于时钟输出测试;

step2:根据时钟树结构设计多级时钟选择电路。根据全芯片的时钟网络分布,对每一级的时钟选择设计一个与之对应的配置寄存器,对该寄存器配置不同的值对应选择该级时钟网络的不同时钟,被选择的时钟作为该级测试时钟。因此,通过配置多级的寄存器的值,可选择全芯片的任一时钟作为测试时钟;

step3:设计合理的分频系数。根据全芯片不同时钟的频率,设计一个合理的分频系数k,将待测时钟经过特定的分频之后输出至时钟测试输出管脚。为降低芯片内部的设计实现,通常采用2n进行分频,例如进行16或32分频。之所以将测试时钟进行分频,是因为将测试时钟分频之后以较低频率进行输出,可降低整芯片外部管脚设计、封装的实现难度,也便于全芯片的fpga原型验证以及芯片回片之后的测试;

step4:构建仿真验证平台,在验证平台中通过配置各级时钟网络的时钟选择寄存器,可遍历选择全芯片的所有时钟。通过正确地配置寄存器,依次选择全芯片的每一个时钟,通过在验证平台中监测待测时钟的两个相邻的上升沿,可计算出该待测时钟的时钟周期,再将时钟周期乘以分频系数k,可以得到预期的时钟输出管脚的时钟周期;该预期的时钟输出管脚的时钟周期与实际的时钟输出管脚进行对比可验证待测时钟频率是否正确;

step5:参考时钟偏差的进一步验证。在对全芯片所有时钟的时钟频率验证通过之后,进一步验证各功能模块的稳定性及鲁棒性,其方法是在参考时钟产生过程中,将相位偏差、时钟抖动等参数依次考虑进去,生成非理想状态下的参考时钟再进行功能验证,验证全芯片对时钟偏差的容忍程度,确保全芯片功能模块的稳定性与鲁棒性。

为验证本案方案有效性,下面结合时钟树结构做进一步解释说明:

图5描述了根据时钟树结构来配置时钟选择寄存器选择待测试时钟的示意图,其中,a)所示为时钟树结构示例,假设该芯片包含多级时钟,时钟网络分布为树形结构,第一级时钟包含clk11,clk12和clk13,且clk11产生第二级时钟clk21,clk22,clk23和clk24,clk12产生第二级时钟clk25和clk26,clk13产生第二级时钟clk27和clk28,且clk27产生第三级时钟clk31,clk32和clk33,clk28产生第三级时钟clk34和clk35;b)所示为通过配置时钟选择寄存器以选择对应的测试时钟,例如,当配置sel1=0且sel21=2时,此时选择的测试时钟为clk23;当配置sel1=2且sel23=1且sel32=0时,此时选择的测试时钟为clk34。

图6描述了在eda仿真工具中,通过监测测试时钟的时钟周期,从而获得测试时钟的时钟频率。为了采样测试时钟周期,基于verilog硬件描述语言中提供的系统函数$realtime,可以获取当前采样的仿真绝对时间,本案实施例可通过连续两次采样测试时钟的上升沿,从而获得测试时钟的采样时钟周期;为了提升采样的准确性,本案实施例每次在间隔1us时间之后可进行再次采样,在采样三次之后再取采样时钟周期的平均值,如图6所示,最终得到测试时钟周期的时钟周期为:

t=(t1+t2+t3)/3=[(t2-t1)+(t4-t3)+(t6-t5)]/3

图7描述了在eda仿真工具中,考虑相位偏差、时钟抖动等参数条件以及非理想状态下的参时钟生成方法,主要包括以下步骤:

step1:传递初始参数及参数默认值,包括freq、phase_adj、jitter_en,jitter_min_ratio,jitter_max_ratio等,输出时钟clk初始值为0。其中,freq为默认时钟频率,单位为mhz,phase_adj为相位偏差,jitter_en为时钟抖动的使能信号,jitter_min_ratio和jitter_max_ratio分别表示时钟抖动的最小百分比和最大百分比;默认情况下,phase_adj和jitter_en的值均为0;

step2:传递freq和phase_adj的值,计算相位偏差phase_delay;

step3:在延迟phase_delay时间单位之后,产生生成时钟的每个周期;

step4:根据freq,jitter_en,jitter_min_ratio和jitter_min_ratio,通过计算得到时钟抖动jitter。计算方法为首先根据jitter_min_ratio和jitter_min_ratio产生一个介于两者之间的数值jitter_ratio,再计算jitter的值,参考计算公式为:

jitter=(freq×jitter_ratio/100)×jitter_en

step5:产生一个随机数polarity,polarity的值为0或1;

step6:根据freq,jitter及polarity的值,得到该时钟周期内的实际频率,即:

freq=(polarity=1)?(freq+jitter):(freq-jitter)

根据该时钟周期的时钟频率,可产生该时钟周期的时钟;依此循环,一直产生每个时钟周期的时钟;最终得到非理想状态下的参数化时钟。

本案可满足数字集成电路时钟频率功能正确性的验证、数字集成电路对时钟频偏容忍的功能鲁棒性的验证,通过设计一个专门用于时钟输出测试的外部管脚,并将待测时钟经过一定系数的分频引出至时钟输出外部管脚;利用仿真验证平台,通过配置各级时钟网络的寄存器值,遍历全芯片的所有时钟,将每一时钟的预期输出时钟频率与测试时钟输出管脚进行对比,完成自动化验证;在基本的时钟频率验证完成之后,在参考时钟的产生中引入相位偏差、时钟抖动等因素,可验证全芯片对时钟偏差的容忍程度,确保全芯片功能模块的稳定性和鲁棒性。

除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本发明的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述系统实施例中的对应过程,在此不再赘述。

在这里示出和描述的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制,因此,示例性实施例的其他示例可以具有不同的值。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、系统和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述系统的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1