中文 英语

时钟被扭曲了

时钟网络是复杂的,对性能至关重要,但通常被视为事后考虑。如果做错了,可能会毁了你的芯片。

受欢迎程度

在逻辑层面上,同步设计非常简单,时钟就这样发生了。但是时钟网络可能是芯片中最复杂的,它在物理层面上充满了最多的问题。

对某些人来说,时钟就是芯片的交流电源。对其他人来说,它是一个几乎无法分析的模拟网络。具有讽刺意味的是,没有语言来描述时钟,很少有工具来自动化它的设计,以及一个拼凑的分析系统。此外,时钟的分配方式几乎没有取得重大进展,这继续成为一个日益复杂的问题。

“时钟信号是芯片的生命线,”英特尔首席产品经理Pradeep Thiagarajan说西门子EDA.“它们直接或间接地决定了集成电路中所有模块的功能,无论是模拟还是数字,合成时钟频率及其导数本身就是一门艺术。然而,将它们可靠地分布到封装的芯片中,穿过芯片和从芯片中分离出来可能是一个难题,这里存在许多复杂的问题。主要的挑战在于确保任何时钟信号的波剖面在到达接收电路或位置的途中不会恶化到超出预期的程度。我所说的波动剖面是指振幅、频率、摆速、占空比及其特定应用的抖动。”

随着越来越多的芯片接近网线的限制,从单个同步时钟操作芯片变得不可能。“如果你不能在一个时钟周期内通过芯片,你必须把事情看作是本地同步的,但有更远距离的运行,要么是异步时钟,在那里你通过同步器,或者你使用的方法从良好的旧CPU时间-你建立一个低倾斜的时钟网格,”Michael Frank说,研究员和系统架构师Arteris IP.“问题是时钟会消耗能量,而你有巨大的被缓冲的树木,养活了大量的失败。”

节能设计往往有大量的时钟域。“一块蓝牙芯片可能有数百个时钟区域,”高通半导体业务部门的产品营销总监Marc Swinnen说有限元分析软件.“他们把它分成很多个时钟,这样他们就可以在原子级上关掉东西。大型桌面驱动的,cpu类型的东西,它们都只是一个大时钟区域。他们甚至都懒得费心。当你越来越关注电力时,时钟区域的数量就会增加。”

但是cpu有许多不同的问题。Arteris的Frank说道:“如果你同时运行一个大区域,你便需要从一个点开始提供养分,并将其分配到一个平衡的树中。”“然后,你要努力确保每个用逻辑信号进行对话的人都处于该树中相同层次的某个地方。这会导致很多问题,特别是如果你考虑到时钟本身不是固定的东西。你可能有动态电压和时钟缩放(DVFS)你也必须测试这些东西。你可能有一个扫描过程,它使用时钟通过一个大的移位寄存器来移动和移动所有东西,现在你必须满足触发器之间不同逻辑路径的设置和保持时间。”

时钟无处不在。Movellus总裁兼首席执行官莫·费萨尔(Mo Faisal)说:“你必须在块级别考虑时钟,就在flops的旁边,你必须在核心级别考虑时钟,然后你必须在核心集群上考虑时钟,如果你有一个NOC或某种互连,你必须考虑它,当然还有任何类型的IOs和内存。”“SOC的每一层,每一个层次——这是一件大事,它会产生影响。每一皮秒都很重要,人们可以使用一些技术,但非常有限。所使用的架构实际上已经相当过时了。在过去的20多年里,时钟网络的架构几乎没有创新。”

定义的时钟
时钟影响芯片开发过程的每个阶段,从架构定义到物理分析再到测试。但对于大多数公司来说,没有明确定义的方法,也没有人负责监督设计。

公司CDC和SDC约束产品研发总监Paras Mal Jain说:“这一切都始于一个临时的时钟架构规范Synopsys对此.“时钟没有明确的语言。每个顾客的做法都不一样。一家公司将使用CSV文件,另一家公司将使用XML文件。它们都很容易出错。时钟网络没有一个所有者。根据时钟架构师规范,他们可能会使用自己的机制来生成约束。这些流到多个工具中。他们将进入验证,他们将进入实现,签名和下游工具。没有人跟踪这个,在每个阶段,都在对时钟进行修改。 Nobody’s making sure these clock network changes are actually in sync with the clock architecture.”

有些公司确实有钟表设计师。Movellus的费萨尔说:“如果你看看这个行业有多少钟表设计师,你会发现这个数字非常有限。”“总共在50到100之间。这些是知道如何做高性能时钟分布结构的时钟架构师。”

他们都是非常特别的人。西门子的Thiagarajan补充道:“这本身就是一种职业。“分配时钟需要有人以正常的方式思考,并打破常规来评估各种问题。这绝对是一个需要投入精力的高度关注领域,以确保在芯片内部和芯片外部都能很好地进行分发。它需要了解前端和后端任务。在决定要在芯片上使用哪种结构或中继器时,需要一种全面的方法。这取决于对信号完整性的要求,你想要它走多远,以及你需要它有多健壮。”

大多数公司都没有这样的人。“对于CPU设计,时钟是很早就考虑到的,”Frank说。“在其他开发相对有限IP的设计中,这是一个通常被拖延的问题,直到物理设计出现。然后进行时钟树合成(CTS)。有一些工具可以帮助你,然后你可以尝试根据你插入的时钟关闭计时。”

如果不从时钟规范开始,仍然必须生成约束。Ansys的Swinnen说:“树是一组子树,不仅从上到下有约束,而且从分支到分支也有约束。”“有时你会有多个循环路径。你可以做一个简单的约束,假设整棵树必须有100皮秒的倾斜。这很好,让你的生活变得简单,但这也会给你一棵巨大的,非常重的树,消耗大量的能量和面积。为了解决这个问题,你必须将其分解,并说,‘这部分逻辑并不需要如此紧密的倾斜,这部分逻辑的延迟确实需要更短。’然后,CTS工具必须管理所有这些限制,并为您提供最小的功率结构,以满足这些倾斜和延迟要求。”

依赖这些工具有一个缺点。费萨尔说:“如果你看看时钟树合成是如何工作的,你会在设计时对其进行优化,但这就是你得到的解决方案。”“实际上,你的芯片可以在各种不同的环境中运行。如果你要运输数十亿个单元,你就会有各种各样的硅倾斜。使用CTS或任何其他基于工具的技术,您可以优化它,使t等于零。’在那之后,一切都是次优的。”

增加了并发症
其他常见的设计技术使事情更加复杂。Synopsys的Jain说道:“在早期,游戏只有两种模式,即功能性和测试性。“现在可能有几十种功能模式。关闭所有模式的时间是一个很大的挑战。在过去,公司会连续运行以验证每种模式。这是不可扩展的。他们希望EDA工具更加高效,能够进行多模式分析。”

但不仅仅是模式。Thiagarajan说:“模拟设计师往往主要关注功能模式。“但最重要的是,你还有计时角和可靠性测试。它需要对每种模式和场景进行全面的验证,而这些场景可能仅在IP或块级别上看不到。只有当你扩大范围,使用更大的横截面视图,甚至是芯片级视图来看待它时,你才会开始体验到它们。”

新的复杂程度也在增加。“在单片芯片中,电力网络和时钟网络是连续的,”费萨尔说。“他们在物理上是相连的。在基于芯片的系统中,情况不再是这样。你的供电网络也是分散的。每个芯片都有它自己的,然后你的时钟网络到处都是,你不再有能力有一个明确的关系。这就是为什么这个行业现在需要发明各种各样的接口——一堆电线、AIB和最近的UCIe——来将数据从一个芯片移动到另一个芯片。你实际上已经失去了时间基础。你不知道不同芯片上的时间。”

提出的解决方案采用了不同的方法。弗兰克说:“对于2.5D,有些人正在考虑在封装外部产生时钟,并从这一点开始,为每个芯片提供一个受控的时钟。”“另一种选择是将其视为异步边界。(UCIe就是一个例子。)如果你看看构建物理物理的设计,时钟恢复就是一切。你花了很多精力和精力来重新制造时钟。第三种解决方案是源同步时钟(HBM就是一个例子),其中您交付带有数据的时钟来构建独立的任务,就像本地化的时钟域只是接口。从那里,你知道如何进入内部时钟域。”

意想不到的耦合
如今,意外结婚是一个日益严重的问题。“时钟和电源是紧密相关的,”Ansys公司PowerArtist产品管理主管普里蒂·古普塔(Preeti Gupta)说。“像打开或关闭电源域这样的简单事情可能会导致主要的电流峰值,从而导致电压下降,进而影响计时。电源门控和时钟门控都需要仔细考虑。”

功率变化直接影响时钟。斯温宁说:“时钟的滴答声应该同时响起。”“当你建立了你的时钟网络,倾斜就是它。但是,如果您监控某个特定触发器的到达时间,就会发现有些滴答声会早一点到达,有些会晚一点到达,而且可能是随机的。这叫做时钟抖动。主要原因是动态电压降。如果一堆闸在某个区域开关,它们就会降低当地的电压。穿过这片区域的时钟突然慢了一点。但是在下一个时钟边缘,它们没有切换,所以它通过得稍微快一点。根据开关行为,时钟会抖动。 You have to take that into account in your setup and hold checks.”

有些问题仍然隐藏着。“如果你有一个从一个功率域到另一个,一个电压域到另一个的数据路径,我正在做传统的验证,我不会发现任何问题,”Jain说。“看起来接收者和发送者都有相同的时钟,但因为它们是不同的电压域,你可以有一个时钟域交叉(CDC)问题。由于功率域和不同的电压域,您的时钟可能会在不同的时间切换,所以您必须真正担心处理电压域的不同类型的验证。”

频率上升也会产生影响。“在1千兆赫的频率下,你没有太多的机会来缓解电涌,因为电力的传播速度不是很快,”弗兰克说。“这是因为电网的电感性,这就是为什么人们开始把芯片分成功率域,并给它们注入很多引脚。您可以看到有数百个电源和接地引脚的包。如果你想拥有千兆赫的时钟频率,你能做的不多,在最坏的情况下,每个人都在千兆赫的前200皮秒内切换。”

电力产生热量,这也会产生影响。弗兰克补充说:“随着整个系统的升温,温度变化必须得到控制。”“随着电压的变化,会有噪音、摆动和抖动。这意味着你必须考虑你需要多少保证金,以及如何在信号上关闭计时。”

利润率直接等同于在业绩、功率或面积上损失的机会。

这一点,以及许多其他因素,增加了复杂性。Faisal说:“计时闭合、变化、倾斜——这变成了一个非常复杂、多维、多面的问题,特别是如果你加上DVFS的话。”“如果有人的SoC从0.5到1伏运行,他们将面临一个很大的挑战,即在0.5伏关闭设置,然后在1伏关闭保持。最大的挑战之一是,在这些角落里,你的时钟倾斜和时钟变化将会非常不同,可能会有很多倍的不同。”

实现时钟
时钟网络实现考虑了几种技术。Thiagarajan说:“在先进的finFET工艺节点中,趋势已经从单端分配方案转向差分方案,以提供抗干扰性。”“差分结构能够在较低的电压下工作,这可以降低电力利用率和EMI排放。然而,它确实增加了模拟内容,这将需要自定义布局来解决差异块和相关当前参考结构的不匹配和精度问题。差分时钟有优点也有缺点,特别是对于较新的工艺技术。它们的目的是增加电路密度,但确实会增加信号拥塞。”

Movellus一直在开发更多的自适应时钟网络。费萨尔说:“通过添加智能时钟网络(见图1),您可以动态优化时钟,因为它在环境中使用,以及它所处的操作条件。”“它需要感知工作条件的能力,知道你正在运行在0.5伏或1伏,然后自动纠正任何芯片上的变化和倾斜。它可以适应温度和电压,并纠正整个芯片上时钟的对齐,这样你的计时问题就会简单得多。”

图1:智能时钟网络。来源:Movellus

图1:智能时钟网络。来源:Movellus

大多数人继续使用旧的技术。“对于远距离通信,人们求助于源同步时钟或完全异步事务之类的东西,”Frank说。“源同步是指当你从一个源发送信号时,你在源处生成时钟,并将它从信号源驱动出来。一个例子是数据总线,你把它和时钟连接起来,所以它朝着同一个方向飞行,最终到达数据的目的地。由于时钟随数据移动,因此控制偏差要容易得多。然后你用它自己的时钟锁住数据,并将其视为一个同步(相同频率但不同相位)或异步接口。”

在接口处必须非常小心。“高速接口正在增加CDC分析的复杂性,”Jain说。“我们需要同时考虑介观同步和plesio同步接口。传统的同步器将无法工作。Plesio-synchronous是指时钟不完全同步,频率略有不匹配。两者在相位上有细微差别,但也不是完全不同步的。”

许多陷阱等着我们。Frank说:“这就是为什么物理设计时间表在增长。“我知道有几个芯片因为没有正确地进行计时而出现问题。这是你认为人们现在已经学会的东西。但是当使用多个时钟域时,人们仍然会遇到问题,并且这些域以相同的时钟频率运行。如果你错过了时钟边缘,那没什么大不了的。但如果你们彼此靠得很近,你们就是在锻炼亚稳度每个时钟周期都有问题。由于这是一个统计问题,你最终会把你的平均失败时间缩短到很短的时间。”

结论
时钟很硬。它们不是第一次出现在架构图或RTL中的完美逻辑信号。它们必须得到尊重,处理它们不应该是一个实际的执行问题。工艺技术、设备尺寸和新的包装方法增加了复杂性,分析工具被拉伸到极限。你越早开始看你的时钟,你就越不可能被扭曲。



留下回复


(注:此名称将公开显示)

Baidu