Cadence 高速系统设计流程及工具使用三

5.8 约束规则的应用

5.8.1 层次化约束关系

在应用约束规则之前,我们首先要了解这些约束规则是如何作用在 Cadence 设计对象上的。Cadence 中对设计对象的划分和概念,如表 5-11 所示。

在 Cadence 系统中,把设计对象按层次进行了划分,从高到低,依次为 System、Design、Bus、Differential Pair、Xnet、Net、Match Group 和 Pin Pair。从这个划分中不难看出 Pin Pair 是最简单的网络连接关系,而 System 是最复杂的连接关系。规则的应用是按照表 5-11 中所示的继承和覆盖关系来进行的。例如,如果已经对一个总线定义了约束规则,但是没有对具体的单个线网进行规则约束,那么属于这个总线中的所有线网,都自动继承属于总线的约束规则。但是如果对某个具体线网定义了一个约束规则,而这个规则和总线中的定义相矛盾,那么这个具体线网的规则就具有更高的优先级,它会覆盖总线中的这个约束规则,但是对总线中的其他线网没有影响。

除了对 Xnet 需要进行解释之外,读者不难理解其他各个对象的含义和覆盖范围。由于 Xnet 是对 Net 对象的扩展,参照我们以前用过的图,对照 Net 的概念,我们来讲解一下 Xnet 的含义。

在图 5-28 中,是我们对网络名称为“DDR1_A<0>”的 Net 进行抽取的结果。那么我们知道,在设计原理图的时候,对于 DDR1_A<0>这个网络的设计,是通过 U1、U9、U10、U11 和 U12 的相应管脚上直接定义的同一个线网名称,从而定义了 DDR1_A<0>这个网络的连接关系,然后又加了一个上拉电阻 RP23,一端连接在 DDR1_A<0>这个网络上,而另一端直接连在 1.25V 的电源上。可是为什么我们在对 DDR1_A<0>这个网络进行抽取的时候,会出现 1.25V 的电源呢(DDR1_A<0>和 1.25V 是完全不同的两个网络)?这是因为,实际上是 SigXP 对 DDR1_A<0>这个网络进行的 Xnet 抽取。如同 Xnet 的定义所讲的,只有对整个 Xnet 网络进行抽取和仿真,才能够确定 DDR1_A<0>这个网络的传输特性。也就是说 Xnet 才是一个完整的电气网络,而我们命名的 DDR1_A<0>的网络只是我们最感兴趣的那个部分,是 Xnet 的一个组成部分,它并不构成一个完整的电气传输路径。这里请读者思考一个问题,SigXP 怎么知道哪些 Net 网络能够构成一个 Xnet,答案就是对 RP23 这个电阻的模型的定义,也就是说如果我们在抽取之前没有对 RP23 指定一个合适的器件模型,工具是不会按照这样的逻辑进行 Xnet 网络结构抽取的。所以,再次强调,对于器件模型的正确设置,是高速仿真分析工作的基础。

 5.8.2 约束规则的映射

了解了 Cadence 中设计对象的分类及约束规则在这些对象上应用的原则,我们就可以开始使用这些约束来指导布局布线了。在 SigXP 中设置好的约束后,通过菜单中的“File→Update ConstraintManager”命令或者通过单击工具栏上“Update CM”按钮就可以将设置好的约束导入到 Constraint Manager 中。此时,返回到 CM 约束管理器工作环境中(也就是之前对网络进行抽取的工作环境),会出现如图 5-29 所示的提示对话框。

 单击“Yes”按钮接受约束更新,这时在 CM 的约束管理器中会出现该约束条件在系统中的映射情况,如图 5-30 所示。

 要仔细阅读一下这个 LOG 文件,检查一下从 SigXP 中返回的约束及约束在 CM 约束管理器中的映射情况,例如,上面的 LOG 文件中,我们大致可以看到五个方面的内容,如图 5-30 中的五个虚线圈的标记所示。
1. SigXP 生成的约束名称和映射方式;

2. 该约束拓扑结构中所包含的网络要素;

3. 拓扑结构的映射方式;

5.8.3 Constraint Manager 的使用

当约束规则被正确映射到 CM 约束管理器中的设计对象后,在 Allegro 中进行布局布线时,CM 约束管理器会实时检查这些约束规则的执行情况,并以如图 5-31 所示的提示框形式显示这些信息。

 另一方面,在设计过程中或者设计结束后,也可以通过打开 CM 的约束管理器,从总体上来观察所有约束的执行情况。如果规则得到正确的执行,该项规则的执行结果及所有被该规则约束的设计对象会以绿色显示;如果设计中违反了某个规则,那么该规则的执行结果及违反了该规则的设计对象会以红色显示,如图 5-32 所示的例子,通过 CM 的约束管理器中这些明显的标记,可以非常直观并快速地对设计问题进行定位。

CM 的约束管理器不仅可以通过仿真来设置电气规则,也可以根据实际的设计需要,直接设置一些物理规则。如图 5-32 右下部分所示,在 CM 的约束管理器中可以直接对物理规则进行设置,如位于某层的线间距、线宽及过孔数量等。除此之外还有直接对网络和器件属性进行编辑管理的功能。总之,CM 的约束管理器是 Cadence 高速设计系统中,功能非常丰富和强大的设计规则管理工具。掌握好 CM 约束管理器的使用方法,对于提高高速系统设计的效率和正确性有很大的帮助。

除了这些基本的使用方法,为了用户方便地进行约束管理及团队合作的需求,CM 约束管理器还提供的约束规则的导入和导出功能,这样就可以在同一个设计的基础上,不同设计团队之间,比如 SI 工程师和 PCB Layout 工程师之间,非常方便地直接进行约束和执行结果的信息交换。

5.9 布线后的仿真分析和验证

在约束规则的指导下完成布局布线后,对于高速设计流程而言,就剩下了最后一步,那就是后仿真。很多工程师对这一步不太理解,因此也就不加以重视。但是,后仿真在实际工作中具有非常重要的作用。

5.9.1 布线后仿真的必要性

我们先来谈一下后仿真的必要性。首先我们来考虑一种情况,那就是在前仿真时我们所使用的模型参数,包括传输线参数、过孔模型,以及关键信号的串扰等,这些参数值都是来自仿真假设或者理论计算,它并不是一个布线后系统的真实反映。我们的设计规则是在前仿真的基础上得到的,那么在布线后就会有两种可能,一种可能是由于前仿真的参数偏差实际值太远,导致前仿真得出的设计规则没有方法在实际布线中得到执行;另一种可能是,即使前仿真的设计约束得到了执行,但是由于布线后的系统参数发生了变化,很有可能出现一些前仿真时没有考虑到的情况,以至于使得前仿真的结果可信度变差,甚至根本不再适用。这些问题的出现,使我们不得不在布线后再做一次仿真,一方面是解决前仿真中所设定的不恰当的规则定义导致的问题,另一方面根据后仿真的参数,来验证来自前仿真的规则在布线执行后的可信度。

还有一些情况在前仿真时无论如何也考虑不到的,比如串扰分析和关键信号的 EMI。在前仿真时所做的串扰分析,只是针对某个具体的线网对串扰的承受能力进行分析,按照这个分析结果来做出一些预防性的设计措施。按照这个“预防性”的串扰约束进行布线,并不见得能够达到预期的目标,但是在布局布线之后,所有的网络都已经有了固定的位置,线网之间的并行距离和间距都是真实可见的,这个时候所做的串扰分析就是实际情况的真实反映了。对于布线后仿真 EMI 的真实性和作用,相信读者更能够理解,当关键信号网络处在真实的布线环境中和真实的参考平面下,所做出的 EMI 分析才是正确的。而这些真实的环境,对于前仿真中的 EMI 是无法做到的,因此几乎没有人会在前仿真的流程中去做 EMI 分析。

5.9.2 布线后仿真流程

如上一节所述,后仿真的作用不仅仅是作为高速设计中 SI 工作 Sign-off 的一个步骤,更重要的是要在后仿真阶段,处理在前仿真过程中没有预料到的情况,以及完成那些不可能在前仿真中完成的任务。因此,在后仿真流程中,首先要进行比较全面的仿真,然后针对仿真中发现的问题,对问题进行定位,选择相关的网络进行仿真并解决问题。后仿真的流程如图 5-33 所示。

 由于在前仿真中,我们已经按照层次化的设计方法对信号完整性问题进行了分类仿真,并按约束规则驱动进行了布局布线,这样使得在后仿真中发现的问题成为可控并可精确定位的。根据作者的经验,解决在后仿真中发现的问题,一般要以前仿真的工作结果为基础。这是因为,后仿真中发现的问题,一般都是在布局布线中,由于物理参数的改变而引入的新问题,应该着重从多个网络之间的物理关系入手寻找解决方案,而不是轻易去否定前仿真中对单个网络所做的优化设计,除非有足够的理由这样做。从这里也可以看出,前仿真中所做的工作越充分可靠,后仿真的工作量和压力就越小,即使发现新的问题,也容易定位和解决。

后仿真的执行步骤和前仿真的步骤有些差别,但是其基本原理和计算引擎还是一致的。在 PCB 设计环境的菜单中,选择“Analyze→SVEMI→Prob”命令,启动后仿真界面,如图 5-34 所示。

 在图 5-34 中,可以通过设置网络名称的匹配模式,来选择网络进行分析。可以选择单个网络,也可以选择多个网络,然后单击“Reports”按钮,就进入了后仿真分析的参数设计界面,如图 5-35 所示。

 我们已经做过前仿真的流程,所以对这里出现的参数和含义不再详细讲解,相信读者(或通过“Help”文档)能够理解这些参数的设置含义及作用。需要说明的是虽然后仿真的结果通常以数据表格的方式给出,但是用户还是可以选择查看图形方式的仿真结果。例如在上一步中,不去单击“Reports”按钮,而是选择单击“Waveforms”按钮,就会出现如图 5-36 所示的关于 Waveforms 的参数设置界面。

 不论用户选择哪种后的仿真形式,Cadence 系统中所运行的软件都是一样的,SigNoise 分析引擎,当然结果数据也是一样的,只是 Reports 提供给用户的是数据报告,而 Waveforms 提供的是图形。之所以 Cadence 会以数据报告的方式提供后仿真结果,这是因为方法学的问题。在前仿真中,我们一般去仿真具有典型意义的网络,然后把这个网络的分析结果设置为规则,应用到同类型或者类似的网络中。而在后仿真中,没有哪个网络具有高于其他网络的典型意义,每个网络在布线后的系统中都需要同等对待,加以重视。

举个例子,在系统中有 DDR 的地址总线,DDR_A<13..0>,前仿真时,因为此时系统中存在的只是逻辑关系,并没有连接的物理信息,所以我们可以随意抽取其中的一根信号线,比如 DDR_A<0>,来代表 DDR_A 总线加以分析,并把得出的约束规则应用到 DDR_A 这个总线上进行布线。经过布线后,在 DDR_A 这个总线中,没有哪两个信号线所处的实际物理环境是相同的,没有哪个网络具有典型意义,我们必须在后仿真中对 DDR_A 中的所有信号线加以验证。这个时候,如果再像前仿真时候那样,逐个抽取图形化的网络表示,然后逐个绘制仿真波形,会显得十分烦琐,在实际操作中也是不太现实的。一个是浪费很多时间来绘图,另一个是对用户来讲,逐个对比波形图不如直接读取数据进行对比更方便和高效。

如果在数据报告形式的后仿真分析结果中发现某些性能没有达到设计目的,那么就需要对个别网络进行特殊处理。这时可以使用类似前仿真中的流程,单独对该网络进行拓扑结构抽取,进行仿真验证,甚至修改约束及重新布线。但作者推荐,在后仿真中发现问题后,首先要去检查相关网络的约束是否合理,一般来讲,在约束合理的情况下,对没有达到性能要求的网络进行单独的优化和调整,很快就能够达到约束要求。

在没有得到 SI 工程师确认和许可的情况下,不要轻易去修改约束要求,以使得后仿真结果变得“好看些”。对设计约束的修改非常危险,因为这样做通常会影响到很多网络,造成更加不可预期的后果。后仿真遇到最多的问题是串扰超标,因为在前仿真时,是没有办法对线网周围的情况进行考虑得非常完善周全的。通过适当调整布线能够解决大部分的问题。

5.10 电源完整性设计

尽管在 Cadence 的高速设计流程中没有显示 PI 这个环节,但是作为一个真正的高速系统设计,PI 是必不可少的内容。在这一节中,我们先来谈谈 Cadence 中对于电源完整性设计的思路和理念,然后介绍在 Cadence 设计工具中,如何实现电源完整性设计。

需要读者注意的是,一个完整的电源完整性设计需要设计者充分了解电源完整性涉及的各个元素,并逐个对设计元素进行精确建模。这里所说的不仅是对静态设计元素,如系统中所使用的叠层结构、电源/地平面及所使用的去耦电容器件的建模,还需要对系统的动态行为进行建模,如系统中每一个电源路径上的所有负载在某个时刻的 I/O 行为对电源系统的需求等。对于系统设计者而言,目前还缺乏对这些设计元素进行精确建模的方法。而从另外一个角度讲,即使有了这些建模的方法和资料,要完成这些模型的设计并应用到实际的电源完整性分析中,所获得的收益与付出的劳动时间成本相比也是不划算的。因此,在这里再一次体现了贯穿于仿真分析工作中的一个方法学问题,那就是时间和效率的均衡问题。在有限的时间内,在一定的设计和生产成本控制范围内,完成设计是工程师所关心的最终目标。因此,在以下的 Cadence 电源完整性设计环境中,也是按照工程学的方法(相对于科学研究而言)在一定条件下进行“精确”仿真,来完成电源系统设计。

5.10.1 电源完整性设计方法

随着现代高速信号的速率越来越高,信号边缘越来越陡,而芯片的供电电压持续下降,使得设计一个干净稳定的电源供电系统越来越具有挑战性,对于电源系统的分析也越来越难以控制。为了应对高速设计的挑战,在没有 PI 仿真的保证下,工程师们不得不在设计中使用更多的电容,期望通过“过度的设计”(Over Design)来确保电源系统的安全。而事实上,这种电容数量上的增加,是非常盲目的,它并不能保证电源系统的安全性,与此同时也不可避免地增加了系统设计和生产成本,影响产品的市场竞争力。

Cadence 的 PI 仿真环境为电源系统的设计并提供了一套完整的工具和设计流程。使用这套工具和流程,用户可以轻松解决高速电源系统中所面临的两大难题。

• 对于一个特定的设计而言,应该使用哪一类电容,以及每类电容的数量如何配置?

• 在布局布线设计中,如何确定电容的确切位置,以达到最佳设计效果?

通过第 3 章的学习,我们已经了解到,对于电源系统的设计,其设计目标就是要使整个电源系统阻抗足够小,能够满足在瞬间为系统中的功能部件提供所需的电流,并保持一定的电压纹波。由于在一个系统中,所有的功能部件并不是工作在同一时刻域下的,即使是同一个时钟域下的功能部件也不一定就在同一时刻对电源系统有供电要求。因此没有办法精确地知道所有功能部件对电源系统的确切需求。那么我们就必须进行保守设计,为系统中所有的可能工作频段设计出一个较低的目标阻抗。如图 5-37 所示的中间位置是目标阻抗曲线,如果我们能够设计出系统的阻抗在整个工作频段内都低于目标阻抗,那么就可以说这样的设计是成功的。(作者注:事实上,这里提到的关于电源完整性的保守设计,也是一种“过度的设计”。正如前面所说,到目前为止,所有的电源完整性分析软件都没有办法完全复制一个产品中电源系统的所有行为,那么只能通过设计一个在任何时刻、任何频率下都满足要求的电源系统,则一定能够满足该产品对电源系统的需求。只是这种在仿真软件指导下进行的“过度的设计”比纯粹的盲目设计更近了一步,至少根据去耦电容的特性和数量进行了有目的的设计,已经在设计安全性和生产成本中取得很大的优势,这是我们使用电源完整性设计的主要原因。)

又如我们在第 3 章中所学到的,稳定的电源系统设计,包含多种设计因素的综合结果,这些因素包括:电源供电模块、供电系统的去耦电容、PCB 叠层的电源—地平面结构,以及 IC 芯片的封装和 IC 芯片内部的电源去耦结构设计。而在这些因素中,电源供电模块和 IC 芯片的特性,对于系统设计者而言是没有能力进行干预的。因此,对于系统设计者而言只能从供电系统的去耦电容和 PCB 叠层中的电源—地平面结构这两个方面入手。在进行实际的设计之前,我们有必要了解这两个因素对整个电源系统阻抗的影响。根据研究结果,在电源供电系统中分布的去耦电容,它们的谐振效应对降低电源系统阻抗主要体现在几百 KHz 到几百 MHz 的频段之间,如图 5-37 中下部的 Capacitor 谐振曲线所示;而叠层结构中的电源—地平面的谐振效应主要体现在几百 MHz 到 GHz 的频段之间。这个结论告诉我们,在进行系统阻抗设计时,应该依据各设计因素的谐振特性,进行分频段独立的设计。

 有了这样的设计理念,我们可以先进行去耦电容的选型和数量的设计研究,而暂时不去考虑电源—地平面的谐振影响,在确定去耦电容的选型和配置策略之后,再考虑如何优化电源—地平面结构。但是如果当电源—地平面足够大的时候,有可能电源—地平面的谐振点和一些高频电容的有效去耦频段会重合,这时要精心选择适合的高频去耦电容,以便消除电源—地平面谐振点的影响。

为了方便读者对 Cadence 电源系统的设计方法进行理解和掌握,我们还是按照 Cadence 的 PI 设计流程对如何进行电源完整性设计进行讲解。在学习过程中,读者可以体会 Cadence 的 PI 设计方法如何解决本节开始提出的高速电源系统中面临的两个难题。

在 Cadence 的 PI 设计方法中,可以分为如下几个阶段。

• 设置电源完整性仿真参数数据库;

• 定义目标阻抗;

• 单节点仿真分析;

• 多节点仿真分析。

前两个步骤显而易见,是为了仿真分析做准备,对仿真进行参数设置。而后面的两个步骤是对电源进行仿真分析的两种形式,也是完成电源仿真分析的两个步骤,单节点仿真分析是为了验证系统中所使用的电容数量和种类能否满足要求频段内的阻抗,因此它不考虑电容在 PCB 中的具体物理位置。单节点仿真分析的电路模型如图 5-38 所示。

 在单节点的模型中,假设所有的电容都连接在一起,电源调压模块 VRM、仿真激励源、1A 的电源和电容并联在一起。显而易见,在这个模型中,忽略掉了电源系统中各元素实际的物理连接性(也即忽略了实际的连接阻抗)。通过单节点仿真分析,我们可以知道所选择的电容种类和数量是否能够满足电源分配系统的阻抗要求。如图 5-39 所示是一个例子,在这个例子中,加入电容以后的电源分配系统的阻抗明显降低了,但是谐振频率仍然在 21MHz 左右,阻抗超出了目标阻抗,因此可以判断,在这个设计中仍然要加入一个去耦电容,并且它的谐振频率应该在 21MHz 左右,用来降低电源系统的阻抗。

 读者应该注意到,尽管单节点仿真分析可以确定去耦电容的种类和数量,但实际的电源系统阻抗不仅取决于去耦电容的种类和数量,还取决于电容的分布位置。为了获得更精确的结果,应该按照布局布线后的去耦电容参数,噪声源及 VRM(Voltage Regulator Module)的实际物理位置,在整个相关频率范围内进行多节点仿真。多节点仿真从设计文件的实际布局提取物理参数进行精确仿真,这是多节点仿真和单节点仿真的最大区别。从这点来看,单节点仿真类似于 PI 的前仿真分析,用来确定去耦电容的种类和数量;而多节点仿真就是 PI 的后仿真分析,布局布线后的实际仿真分析,用来优化叠层设计和电容布局。

5.10.2 电源完整性设计分析步骤

要使用 Cadence 提供的电源完整性分析工具,用户需要有相应的 License。Cadence 的 PI 工具作为一个单独的分析模块,获得相应的授权后,它会出现在产品选项的列表框中,如图 5-40 所示。因此,要进行电源完整性分析,首先必须改变当前所使用的 Cadence 产品选项,然后选择“Allegro PCB PI option XL”选项。

 如前一节内容所述,进入到 Cadence 的电源完整性设计环境后,第一次使用 PI 工具进行仿真分析之前,需要对设计环境进行参数设置。这个过程和对高速信号进行仿真分析前的参数设置非常类似,相信使用过信号完整性分析工具的读者能够很快适应这个 PI 的参数设置过程。在菜单中选择“Analyze→Power Integrity...”命令,如果用户是第一次在设计中启动 PI 工具,那么系统会自动弹出参数设置界面,如图 5-41 所示。

从这个“Power Integrity Setup Wizard—Introduction”界面看,它会引导用户按照界面左边的流程一步一步完成设计环境所需参数的设置。这些参数包括如下几种。

• 板形外框设置;

• 叠层设计和电源电压设置;

• 器件选择;

• 器件库选择。

 这些参数中有一些与高速信号仿真分析的 SI 参数设置中的参数相同,有些是电源分析中所特有的。为方便读者理解,这里对每个参数设计过程及其对电源完整性分析的含义做个介绍。


• 板形外框设置

PI 的仿真工具需要完整的板框信息进行电源平面的参数抽取和器件布局,PI 仿真环境会自动读取设计文件中已有的板框信息,一般无须修改。但需要注意的是,这个板框的定义和实际设计文件中的板框有些不同,原则上 PI 仿真工具需要一个方形的区域进行仿真分析。所以,用户可以指定一个区域,作为“板框”,它只是用来做 PI 仿真,并不是真正的板框。用户可以根据自己的仿真需要定义这个仿真区域。


• 叠层设计和电源电压设置

对于电源完整性设计,读者不难理解这个参数的必要性。同样,PI 仿真环境会自动读取设计文件中已有的叠层信息,以及在各个电源平面中已经存在的电源平面划分和相关网络的指定。设计者需要核对在这个参数设置界面中所显示的信息,一般没有错误,无须修改。PI 仿真分析工具会根据这些信息进行电源平面的参数抽取。注意,并不是所有的电源平面划分都可以进行 PI 分析,如果所划分的电源平面面积比较小,那么 PI 将忽略对这个平面的分析。用户可以在“Power Integrity Control”界面中指定要分析的电源平面的最小面积参数。


• 电源、地平面对设置

用户通过这个界面指定一个电源和地平面对,把这对电源/地平面对作为接下来的 PI 分析对象。可以一次指定多个电源/地平面对,同时对这些平面对进行仿真。


• 器件选择

在这个界面中列出了当前设计中所使用的所有电容类型,用户可以指定哪些电容器件可以参与到当前的 PI 仿真分析中。去耦电容有两个作用,一方面是集成电路的蓄能电容,提供和吸收该集成电路开门和关门瞬间的充放电能;另一方面旁路掉该器件的高频噪声。选取好的高频去耦电容可以去除高到 1GHz 的高频成分,陶瓷片电容或多层陶瓷电容的高频特性较好。在设计印刷线路板时,最好在每个集成电路的电源和地之间都加一个去耦电容,当然要看是否有足够的物理空间。对电容的种类和数量的配比选择原则,请参考 3.5 节中的内容。


• 器件库选择

用户既可以从设计文件中提取电容类型,也可以从库文件中提取电容和电容的器件模型。这样做的目的是使用户有机会修改不受当前设计中所包括的电容类型的限制,可以通过添加其他类型的电容来改善电源完整性设计。一般推荐使用该界面下的“Project Library”选项,这样在 PI 设计中所使用的电容可以和原理图设计中使用的库文件同步。如果在这个阶段对去耦电容进行了比较大的修改,可以直接反标到原理图设计中,而如果选择了其他类型的库文件,那么这些对去耦电容的修改是不能和原理图设计同步的。

按照流程设置好这些参数之后,最后就会进入到如图 5-42 所示的电源完整性分析界面。在进行仿真分析之前,用户还需要在这里对要确认电源完整性分析的平面设置目标阻抗和仿真类型(单节点仿真或多节点仿真)。单节点仿真的设置比较简单,只需设置目标阻抗参数及选择所需电容数量即可。对于多节点仿真,由于涉及噪声源和电容具体的物理位置及电容布线参数,就需要用户单击界面中右上角的“Control”按钮,进行其他一些关于多节点仿真分析的设置。

 5.10.3 多节点仿真分析

由于分析方法的不同,多节点仿真需要更多的参数及参数控制。在进行这些参数设置之前,我们首先需要了解多节点电源完整性仿真分析的原理。多节点仿真分析是按照用户定义的网格尺寸,通过将电源/地平面分隔成若干独立的网格,对每个网格进行 RLC 建模,并将 VRM、噪声源及去耦电容按其布局中的具体位置连接到合适的节点上,通过确定每个节点附近的阻抗来进行更精确的仿真的。如图 5-43 所示是电源平面的网格结构模型。

 为使仿真准确,网格尺寸的大小必须大于系统最高频率所对应波长的 1/10。当然,网格划分得越细,仿真精度越高,但是仿真的时间也就越长。一般取系统中最高频对应波长的 1/10,就能得到比较准确的结果。例如,如果系统的最高工作频率为 133MHz(DDR 存储模块的工作频率),电路板介质材料是 FR-4,介电常数 ε 为 4.5,于是波长如下:Wavelength=光速C/(信号频率x√介电常数)=3x10^8m/s/(133MHz  x√4.5)=1063.32mm

计算完仿真所需的网格尺寸之后,在图 5-42 中,单击“Control”按钮,进行电源完整性仿真分析参数的设置,出现如图 5-44 所示的“Power Integrity Control”参数设置界面。

在这个参数设置界面中,共有三个选项卡。


• “Standard”选项卡。主要用来设置两个参数,一个是仿真分析的截止频段 Corner Frequency,意为 PI 工具只在这个频率范围内进行电源完整性仿真分析。如果在这个频段内能够满足阻抗要求,那么就达到设计目的。在超出了这个频段,电源目标阻抗可以按照 Slope 所定义的斜率变化,实际的电源系统阻抗小于这个斜率,仍然认为是可以满足设计要求的。另外一个参数就是前面已经提到过的,当所分析的电源 Shape 面积和整个 PCB 的面积比小于一定比例时,PI 工具忽略这个 Shape,不作为电源完整性的分析对象。


• “Simulation”选项卡。在这个界面中主要实现对电源网格建模的设置。按照上面对系统工作频率所对应的波长的分析,结合当前 PCB 的实际尺寸,从仿真精度和速度两方面考虑,来设置一个适合的网格尺寸。其中参数“Adaptive Level”是为了提高 PCB 设计中不规则形状 Shape 的仿真精度而增加的变化因子,读者可以参考“Allegro PCB PI User Guide.pdf”文件详细了解该参数的使用方法。对于仿真结果,通常选择“Frequency Domain Impedance Display”选项作为显示方式。其他参数含义都比较清楚,在此不再赘述。


• “Mounted Inductance”选项卡。用来设置在多节点仿真中如何提取器件在 PCB 上安装之后实际的引线电感。这也是多节点仿真中考虑器件实际物理位置的一个体现。由于该选项卡比较简单,在图 5-44 中没有显示此选项卡内容。

 接下来,为进行多节点分析,还需要加入电源模块 VRM 模型和噪声源,在 PI 的设计环境中,单击鼠标右键选择“Add VRM”和“Add Noise Source”这两个功能命令即可,在 PCB 上选择适当的位置,可加入相应的 VRM 和噪声源。对 VRM 和噪声源的参数修改可以通过直接在这些元素上单击鼠标右键,选择“Edit”命令(或者其他如“Move”、“Delete”等命令)。例如,选择一个 VRM,选择“Edit”命令之后,将打开图 5-45 中上面的界面,在这个界面中,再单击“Model Edit”按钮,将打开图下半部的模型参数设置界面。读者在使用这个 VRM 模型时,需要对这几个参数有所了解。


• Slew inductance,由于 VRM 对电流的相应能力,可以通过公式计算获得。例如,单击该参数右面的“Calculate”按钮,将弹出如图 5-46 所示的对该参数进行计算的对话框。在该 VRM 例子中供电电源为 2.5V,允许纹波为 4%,对电流的相应能力为 2A/1.5μs,这样,可以得出 Slew inductance 为 75nH。

• Flat resistance,VRM 中电容的等效电阻。

• Output inductance,VRM 在安装到 PCB 上后,和 PCB 连接的等效引线电感。

• Output resistance,VRM 在安装到 PCB 上后,和负载之间连接的等效电阻。

这是 Cadence 的 PI 工具提供的简单四元素 VRM 模型,读者也可以根据自己的需求来建立 VRM 模型,并把模型加入到仿真库中,从而在 PI 中使用用户自定义的 VRM 模型。这个过程和在高速信号仿真中添加器件模型的过程是一样的。

 以上是在电源仿真分析中加入 VRM 的介绍,对于噪声源的使用方法和操作过程和 VRM 的相同,这里不再赘述。希望读者参照 VRM 的使用,通过自己的练习,学习并掌握如何在仿真分析中加入和修改噪声源。在完成这些参数和设计元素的设置以后,就可以使用多节点仿真进行电源系统的仿真分析了。

通过以上内容的学习,相信读者应该已经很清楚,在叠层设计已经确定的情况下,进行电源完整性设计实际上就是电容的合理使用。而这个合理使用不仅仅是从电容的种类和数量上进行合理使用,电容在实际的 PCB 中的安装和布线方式同样对电源性能有很大的影响。因此在下面的章节中,我们将讨论电容在 PCB 设计中关于布局和布线的问题。

5.10.4 电容的布局和布线

对于电容的布局,首先要提到的就是安装距离。容值最小的电容,有最高的谐振频率,去耦半径最小,因此尽量放在最靠近芯片的位置;容值稍大些的可以距离稍远,最外层放置容值最大的。但是,所有对该芯片去耦的电容都应尽量靠近芯片。在放置时,最好均匀分布在芯片的四周,对每一个容值等级都要这样,必须对整个芯片所在区域均匀去耦。

在安装电容时,要从焊盘拉出一小段引出线,然后通过过孔和电源平面连接,接地端也是同样。这样流经电容的电流回路为:电源平面→过孔→焊接引出线→焊盘→电容→焊盘→引出线→过孔→地平面,图 5-47 显示了电流的回流路径。

 在 PCB 的设计中,电容引线方式和过孔放置的基本原则就是让这一环路面积最小,进而使总的寄生电感最小。图 5-48 中显示了几种电容引线方式和过孔的放置方法。

 • 第一种方法从焊盘引出很长的引出线,然后连接过孔,这会引入很大的寄生电感,一定要避免这样做,这是最差的电容安装方式;

• 第二种方法在焊盘的两个端点紧邻焊盘打孔,比第一种方法的回流路径面积小得多,寄生电感也较小,可以接受;

• 第三种方法在焊盘侧面打孔,进一步减小了回路面积,寄生电感比第二种方法的更小,是比较好的方法;

• 第四种方法在焊盘两侧都打孔,和第三种方法相比,相当于电容每一端都是通过过孔的并联接入电源平面和地平面,比第三种方法的寄生电感更小,只要空间允许,尽量用这种方法;

• 最后一种方法在焊盘上直接打孔,寄生电感最小,但是通常在焊接过程中可能会出现问题,是否使用这种方式要看加工和生产能力。

在实际设计中通常使用的是第三种和第四种布线和过孔设置方法。需要强调的是,有些工程师为了节省布线空间,有时让多个电容使用公共的过孔。但任何情况下都不要这样做,这样做不仅会减弱电容的去耦能力,还可能由于过孔和引线的共用将不同的噪声源耦合在一起,破坏电源完整性。

由于印制线越宽,电感越小,所以从焊盘到过孔的引出线要尽量加宽,如果可能,尽量和焊盘宽度相同。这样即使是0402封装的电容,也可以使用20mil 宽的引出线,过孔可以使用 20mil 或 12mil,16mil 或 8mil。0402 封装的电容引出线和过孔安装如图 5-49 所示。

 5.10.5 合理认识电容的有效去耦半径

对于电容的放置位置,几乎所有的设计要求中都会提到电容布局要尽量靠近芯片,这已经成为所有人的共识。但是为什么要这样做,有些资料从减小回路电感的角度来分析了这个问题。确实,减小回路电感是最直观,也是最直接原因,这样做是必需的。还有一些资料进一步从电容有效去耦半径去分析,如果电容摆放离芯片过远,超出了它的有效去耦半径,电容将失去它的去耦作用,但是这些分析都不够全面。在本节中,作者来谈谈如何从减小回路电感、电容去耦半径、电容响应时间及补偿电流强度几个方面来综合认识这个问题。

理解有效去耦半径最好的办法就是考察噪声源和电容补偿电流之间的相位关系。当芯片对电流的需求发生变化时,会在电源平面的一个很小的局部区域内产生电压扰动,也即噪声源,电容要补偿这一电流(或电压),就必须先感知到这个电压扰动。信号在介质中传播需要一定的时间,因此从噪声源的电压波动到电容感知到这一波动之前有一个时间延迟。同样,电容所提供的补偿电流到达扰动区域也需要一个延迟,因此必然造成噪声源和电容补偿电流之间的相位上的不一致。

特定的电容,对与它自身谐振频率相同的噪声补偿效果最好,我们以这个频率来衡量这种相位关系。设电容谐振频率为f,对应波长为λ,有效补偿电流表达式可写为:

I=A·e^-j2πf2R/C

其中,A是电容能够及时反应的电流幅度,R为需要补偿的区域到电容的距离,C为信号传播速度,I为到达噪声源的补偿电流强度。

当噪声源到电容的距离达到四分之一波长时,补偿电流的相位为π,和噪声源相位刚好差 180°,即完全反相。此时补偿电流不再起作用,去耦作用失效,补偿的能量无法及时送达。为了能有效传递补偿能量,应使噪声源和补偿电流的相位差尽可能得小,最好是同相位的。距离越近,相位差越小,补偿能量传递越多,如果距离为 0,则补偿能量百分之百传递到扰动区域。这就要求电容距离噪声源尽可能得近,要远小于λ/4。在实际应用中,按照经验数据,这一距离最好控制在λ/50之内。

举例说明,一个 0.01μF,0402 封装的陶瓷电容,假设布线和安装到电路板上后总的寄生电感(包括本体等效电感 ESL,引线电感,以及引线等效电感)为 1.5nH,那么其布线并安装后的谐振频率为:

f=1/2π√(1/L·C)=1/2π√(1/1.5x10^-9x0.01x10^-6)=41.1MHz

谐振频率所对应的周期约为 24ns。假设信号在电路板上的传播速度为 200ps/inch,则谐振频率所对应的波长为 120inch。选取电容去耦半径为 1/20050=2.4inch,大约等于 6cm。所以,本例中的电容只能对它周围大约 6cm 范围内的电源噪声进行补偿,即它的去耦半径为 6cm。但是,对于 0.01μF 的电容,我们真的会按照 6cm 的去耦半径来布局么?

稍有 Layout 工作经验的工程师都知道,6cm 的有效去耦半径是个比较大的范围,如果按照这个距离去放置电容,那么设计非常容易,这样的约束也失去了指导设计的意义。这是因为有效去耦半径是从电容本身的性质出发而得出的结论,而我们研究电容有效去耦半径的出发点是为了给噪声源提供及时而充足的电流。

请读者注意这里的两个关键词:及时和充足。如果真的按照 6cm 的距离来放置这个电容,那么对于噪声源的反应延迟就是 0.48ns+0.48ns=0.96ns,即噪声信号到达电容及电容送出补偿电流的延迟叠加。这个补偿延迟对于高速信号而言是不允许的,并且从公式(5.1)来看,随着噪声源和电容之间距离的加大,能够达到噪声源的有效电流强度按指数迅速衰减,而且随着补偿电流的释放,电容本身的补偿能力也会下降,实际能够到达噪声源的补偿电流强度也会很低,这不是我们希望得到的结果。因此,综合考虑有效去耦半径、补偿延迟和补偿电流强度几个方面,才有业界公认的结论:去耦电容离噪声源越近越好!

不同类型的容值的电容,谐振频率不同,去耦半径也不同。对于大容量电容,因为其谐振频率很低,对应的波长非常长,因而去耦半径很大,这也是为什么通常不太关注大电容在电路板上的放置位置的原因。而对于小容量电容,因去耦半径很小,应尽可能地靠近噪声源,也就是需要去耦的芯片。

至此,我们完成了对电源完整性仿真分析工具使用的介绍。正如在本节开始时,作者曾经指出的,电源完整性仿真分析的任务是在有限的时间内,在一定的设计和生产成本控制范围内,使用工程近似的方法,完成工程师所关心的设计目标。因此相对于科学性研究而言,电源完整性设计是一种定性分析,在一定条件下的“精确”仿真,引导工程师按照正确的设计方向来完成电源系统设计。基于这种理念,在 Cadence 的 PI 工具的使用过程中,不可避免地要使用很多“近似”参数及加入人为控制因素,例如,对于电源/地平面的建模,对 VRM 参数的设置,以及噪声源的参数设置和布局等,都包含了很多“近似”和人为控制的因素,它不存在绝对的对与错,只有合理和不合理之分。而且,读者在阅读 Cadence 软件中的使用手册和帮助文档时,会常常遇到类似下面的语句:

Note:This value does not necessarily represent the actual switching current profile.It is used to help you validate the effectiveness of decoupling,not intended to obtain the actual voltage variation of the power supply.

这从软件本身也说明了一些参数的设置并不需要非常精确的值,这些值仅仅是为了验证或者得出一个大致的结论,所以只要这些值在一个合理的范围内就能满足要求。但是读者也必须要清醒地认识到,在能力所及的范围内,尽量获得准确的参数值,能够尽快使电源完整性仿真设计收敛,缩短设计周期,提高设计效率。而如何从大量的数据中获得相对精确的参数估计,需要读者从实践中不断总结,通过对比仿真分析和实验测量的数据,对模型和参数进行校正和求精,加深对工具的理解,这样才能逐步提高对工具的掌控能力。

5.11 SSN 的设计分析

读者会注意到,尽管在 Cadence 的后仿真分析功能界面中,有 SSN 分析这一项,如图 5-35 所示,但是作者并没有提及如何去做此项功能的分析和验证。其原因我们在第 3 章中已经讲过,SSN 更多的是芯片内部的电源完整性问题,对于板级系统设计人员来说,我们基本上没有任何机会或者能力来做所谓的优化设计。事实上,做好板级电源系统的优化,也就是在改善系统的 SSN 性能。

对于一个常用的、具有固定功能的芯片而言,比如我们这个设计中所使用的 DDR 存储芯片,SSN 主要是依靠芯片厂商在芯片制造过程中所能提供的性能保证。在板级应用系统中,我们只能尽量提供良好的外部工作环境,以期望能够实现该芯片应有的性能。然而,也有一个例外,那就是如果芯片的功能能够依据用户的功能而动态改变,这个时候用户就应该关注由于功能的动态改变而带来的芯片内部 SSN 性能的变化。比如我们设计中所使用的 FPGA 芯片,它的功能是可以被用户重新定义的,随着功能的改变,其芯片的内部电路结构也会发生改变,因此在不同的功能和电路结构下,芯片的 SSN 性能也会不同。但这种对 SSN 性能的关注,并不应该在系统设计后期由仿真分析功能实现,而在系统需求和功能定义的早期,就应该仔细考虑此类芯片的 SSN 性能设计需求。

在 FPGA 的设计厂商也充分认识到了这一点,因此在系统设计初期,FPGA 的厂商都会提供关于某款 FPGA 芯片的 SSN 性能设计指导。比如,我们这个设计中所使用的 XC2VP30-6FF1152C 芯片,Xilinx 提供了相应的指导文件“XAPP669,Managing Ground Bounce in Large FPGAs.pdf”,这个文件可以从 Xilinx 的网站上获得,也可以从网上下载的资料中找到。在这个文件中,Xilinx 要求 FPGA 的用户按照自己的系统性能需求,对 I/O 的管脚分配和使用模式进行统计分析,并依据 Xilinx 所提供的算法进行验证。如果能够通过验证,那么 FPGA 的 SSN 性能就可以得到保证,否则就需要用户去调整管脚分配使用模式。该读者自行去学习这个应用文件,以及如何保证 Xilinx FPGA 的 SSN 性能的方法。

因此,尽管 SSN 在高速设计领域是个“炒”得很热的话题,但是,一般来讲,对于系统设计工程师而言,SSN 设计的方法学可以总结如下:如果系统设计中使用的全都是固定功能的芯片,那么基本上没有必要去考虑某个芯片的 SSN 问题。与其花时间研究某个芯片的 SSN 性能,还不如做好整个电源系统的优化。但是,如果系统设计中使用了类似 FPGA 这样的可变功能的芯片,那么就需要特别注意芯片厂商所提供的设计指导,甚至一些辅助分析工具,以验证该芯片的 SSN 性能是否能够适应本系统的设计需求。

5.12 小结

在本章中,我们详细介绍了 Cadence 的高速设计流程,以及相应工具的使用方法。希望读者注意的是,作者多次提到,由于 Cadence 的工具功能非常丰富,工具中所涉及的参数种类繁多,功能选项也非常多,在本文中没有对软件功能、参数和选项一一翻译介绍(事实上,在没有 Cadence 公司授权的情况下,对 Cadence 公司所属的软件产品进行翻译并作为商品出版是侵犯版权的行为)。作者尽可能地从实用角度出发,介绍高速系统的设计理念和功能流程,使读者在使用软件进行实际设计操作之前,从方法学的角度理解和掌握 Cadence 高速电路设计系统和使用方法。对具体的软件操作,功能使用及参数的设置,需要读者结合自己的实际工作在实践中进行学习和掌握。

为巩固学习成果,让读者真正掌握如何用 Cadence 进行高速系统分析和设计,在下一章中,我们用一个实际的项目作为例子,一步一步带领读者完成 Cadence 高速设计的所有步骤,解决在设计中所遇到的各种问题,直至设计出一个实用的产品。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/80195.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ScaleTransition 是 Flutter 中的一个动画组件,用于实现缩放动画效果。

ScaleTransition 是 Flutter 中的一个动画组件&#xff0c;用于实现缩放动画效果。它允许你对子组件进行动态的缩放变换&#xff0c;从而实现平滑的动画效果。ScaleTransition 通常与 AnimationController 和 Tween 一起使用&#xff0c;以控制动画的开始、结束和过渡效果。 基…

深入解析:如何基于开源p-net快速开发Profinet从站服务

一、Profinet协议与软协议栈技术解析 1.1 工业通信的"高速公路" Profinet作为工业以太网协议三巨头之一,采用IEEE 802.3标准实现实时通信,具有: 实时分级:支持RT(实时)和IRT(等时实时)通信模式拓扑灵活:支持星型、树型、环型等多种网络结构对象模型:基于…

m个n维向量组中m,n的含义与空间的关系

向量的维度与空间的关系&#xff1a; 一个向量的维度由其分量个数决定&#xff0c;例如 ( n ) 个分量的向量属于 Rn空间 。 向量组张成空间的维度&#xff1a; 当向量组有 ( m ) 个线性无关的 ( n ) 维向量时&#xff1a; 若 ( m < n )&#xff1a; 这些向量张成的是 Rn中的…

excel大表导入数据库

前文介绍了数据量较小的excel表导入数据库的方法&#xff0c;在数据量较大的情况下就不太适合了&#xff0c;一个是因为mysql命令的执行串长度有限制&#xff0c;二是node-xlsx这个模块加载excel文件是整个文件全部加载到内存&#xff0c;在excel文件较大和可用内存受限的场景就…

Python 爬虫基础入门教程(超详细)

一、什么是爬虫&#xff1f; 网络爬虫&#xff08;Web Crawler&#xff09;&#xff0c;又称网页蜘蛛&#xff0c;是一种自动抓取互联网信息的程序。爬虫会模拟人的浏览行为&#xff0c;向网站发送请求&#xff0c;然后获取网页内容并提取有用的数据。 二、Python爬虫的基本原…

Spring Security 深度解析:打造坚不可摧的用户认证与授权系统

Spring Security 深度解析&#xff1a;打造坚不可摧的用户认证与授权系统 一、引言 在当今数字化时代&#xff0c;构建安全可靠的用户认证与授权系统是软件开发中的关键任务。Spring Security 作为一款功能强大的 Java 安全框架&#xff0c;为开发者提供了全面的解决方案。本…

【物联网】基于树莓派的物联网开发【1】——初识树莓派

使用背景 物联网开发从0到1研究&#xff0c;以树莓派为基础 场景介绍 系统学习Linux、Python、WEB全栈、各种传感器和硬件 接下来程序猫将带领大家进军物联网世界&#xff0c;从0开始入门研究树莓派。 认识树莓派 正面图示&#xff1a; 1&#xff1a;树莓派简介 树莓派…

第21节:深度学习基础-激活函数比较(ReLU, Sigmoid, Tanh)

1. 引言 在深度学习领域,激活函数是神经网络中至关重要的组成部分 它决定了神经元是否应该被激活以及如何将输入信号转换为输出信号 激活函数为神经网络引入了非线性因素,使其能够学习并执行复杂的任务 没有激活函数,无论神经网络有多少层,都只能表示线性变换,极大地限…

Fiori学习专题三十:Routing and Navigation

实际上我们的页面是会有多个的&#xff0c;并且可以在多个页面之间跳转&#xff0c;这节课就学习如何在不同页面之间实现跳转。 1.修改配置文件manifest.json&#xff0c;加入routing&#xff0c;包含三个部分&#xff0c;config,routes,targets; config &#xff1a; routerC…

【HarmonyOS NEXT+AI】问答05:ArkTS和仓颉编程语言怎么选?

在“HarmonyOS NEXTAI大模型打造智能助手APP(仓颉版)”课程里面&#xff0c;有学员提到了这样一个问题&#xff1a; 鸿蒙的主推开发语言不是ArkTS吗&#xff0c;本课程为什么使用的是仓颉编程语言&#xff1f; 这里就这位同学的问题&#xff0c;统一做下回复&#xff0c;以方便…

Booth Encoding vs. Non-Booth Multipliers —— 穿透 DC 架构看乘法器的底层博弈

目录 &#x1f9ed; 前言 &#x1f331; 1. Non-Booth 乘法器的实现原理&#xff08;也叫常规乘法器&#xff09; &#x1f527; 构建方式 ✍️ 例子&#xff1a;4x4 Non-Booth 乘法器示意 &#x1f9f1; 硬件结构 ✅ 特点总结 ⚡ 2. Booth Encoding&#xff08;布斯编码…

GET请求如何传复杂数组参数

背景 有个历史项目&#xff0c;是GET请求&#xff0c;但是很多请求还是复杂参数&#xff0c;比如&#xff1a;参数是数组&#xff0c;且数组中每一个元素都是复杂的对象&#xff0c;这个时候怎么传参数呢&#xff1f; 看之前请求直接是拼接在url后面 类似&items%5B0%5D.…

iOS App 安全性探索:源码保护、混淆方案与逆向防护日常

iOS App 安全性探索&#xff1a;源码保护、混淆方案与逆向防护日常 在 iOS 开发者的日常工作中&#xff0c;我们总是关注功能的完整性、性能的优化和UI的细节&#xff0c;但常常忽视了另一个越来越重要的问题&#xff1a;发布后的应用安全。 尤其是对于中小团队或独立开发者&…

A* (AStar) 寻路

//调用工具类获取路线 let route AStarSearch.getRoute(start_point, end_point, this.mapFloor.map_point); map_point 是所有可走点的集合 import { _decorator, Component, Node, Prefab, instantiate, v3, Vec2 } from cc; import { oops } from "../../../../../e…

深度解析动态IP业务核心场景:从技术演进到行业实践

引言&#xff1a;动态IP的技术演进与行业价值 在数字化转型加速的今天&#xff0c;IP地址已从单纯的网络标识演变为支撑数字经济的核心基础设施。动态IP作为灵活高效的地址分配方案&#xff0c;正突破传统认知边界&#xff0c;在网络安全防护、数据价值挖掘、全球业务拓展等领…

MySQL 性能调优:从执行计划到硬件瓶颈

MySQL 性能调优&#xff1a;从执行计划到硬件瓶颈 一、性能调优的宏观视角与核心挑战 在数字化浪潮下&#xff0c;企业数据量呈指数级增长&#xff0c;MySQL 作为主流关系型数据库&#xff0c;面临着巨大的性能压力。某电商平台日均订单量突破千万&#xff0c;高峰期数据库响…

开源数字人框架 AWESOME - DIGITAL - HUMAN:技术革新与行业标杆价值剖析

一、项目核心价值:解锁数字人技术新境界 1. 技术普及:降低准入门槛,推动行业民主化 AWESOME - DIGITAL - HUMAN 项目犹如一场技术春雨,为数字人领域带来了普惠甘霖。它集成了 ASR、LLM、TTS 等关键能力,并提供模块化扩展接口,将原本复杂高深的数字人开发流程,转化为一…

robotframe启动ride.py

我的双击ride.py会自动用pycharm打开&#xff0c;变成代码文件 解决方法&#xff1a;定位到ride.py所在文件夹&#xff08;在anaconda的scripts里面&#xff09;&#xff0c;文件夹上方输入cmd 再输入该命令即可

怎样简单实现不同数据库的表间的 JOIN 运算

数据分析涉及不同业务系统时就要做跨库计算&#xff0c;而表间 JOIN 是最麻烦的&#xff0c;很多数据库都不具备这样的能力&#xff0c;用 Java 取数再计算又太复杂。用 esProc 完成跨库 JOIN 会简单很多。 数据与用例 车辆管理系统&#xff08;DB_Vehicle&#xff09;保存了…

Nacos源码—4.Nacos集群高可用分析三

大纲 6.CAP原则与Raft协议 7.Nacos实现的Raft协议是如何写入数据的 8.Nacos实现的Raft协议是如何选举Leader节点的 9.Nacos实现的Raft协议是如何同步数据的 10.Nacos如何实现Raft协议的简版总结 6.CAP原则与Raft协议 (1)CAP分别指的是什么 (2)什么是分区以及容错 (3)为…