《低功耗方法学》翻译——第五章:设计功率门控

2024-01-28 12:28

本文主要是介绍《低功耗方法学》翻译——第五章:设计功率门控,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!



第五章:设计功率门控

本章从前端RTL视角描述了功率门控。图5-1所示为设计中的关键组件。

功率门控的主要问题包括开关网络和功率门控控制器的设计。我们也需要决定何时何处插入保留触发器和隔离单元。 

5.1 开关结构设计

电源门控的详细晶体管结构具有高度的技术特殊性,在附录A中会详细描述。但在这里我们将考虑开关结构设计的一些架构方面问题。

第一个架构上的问题是切换VDD(“header”开关)还是切换VSS(带“footer”开关)还是两者都切换。

关于这个问题,已经发表了许多学术论文。一些作者主张P通道“Header”开关门控VDD电源,N通道“Footer”开关门控VSS接地。然而,两个这样的高阈值电压的电源开关与栅极串联,导致在栅极看到更显著的电压下降。这种下降反过来又导致设计中逻辑门的延迟增加。

在许多实际设计中,这种性能损失是不能容忍的,而且只有一个轨道被切换。

对于 Header 样式(header)的开关结构,当开关关闭时,电源门控块的内部节点和输出向地轨塌缩。对于 Footer 样式的开关架构,当开关断开时,内部节点和所有输出电荷流向电源轨。 

注意此处没有保证电源门控节点会对地完全放电或者对电源完全充电。相反,当通过开关的泄漏电流被开关单元的亚阈值泄漏平衡时,达到平衡。这就是为什么在功率门控块的输出上需要隔离单元的原因之一,如本章稍后所述。

从功能性视角来看,使用header单元存在几个理由:

外部电源门控(切换芯片外部的电源)仅适用于切换VDD。VSS通常在板上很常见,原因有很多,包括为ESD(静电保护)提供传导路径。如果外部和内部功率门控都在同一芯片上使用,那么在芯片上切换VDD将在两种功率门控条件下导致类似的行为;这简化了功能验证、时序收敛和功率分析。

在SoC设计中,使用多个电源供电正变得越来越普遍。这些设计需要对在不同电压下工作的电路块之间的信号进行电平转换。电平转换器通常被设计为具有公共接地和两种不同的供电电压。在使用这种设计方法的芯片中,功率门控块切换接地可能是一个问题

最后,设计师们认为 “off” 意味着信号被拉到地面。当切换电源而非接地时,更容易考虑所有的系统设计问题。

支持footer单元方法的论点,即开关VSS,是基于开关本身的电气特性。这将在第十四章讨论。

建议

  • 切换电源轨道或接地,而不是两者,以减少电压下降。
  • 在设计阶段早期决定 header 还是 footer 开关最自然地适合系统设计
  • 如果芯片上也将使用外部电源门控,那么 header 开关可能是最合适的选择。
  • 如果在芯片上使用多功率轨道和/或电压缩放,header 开关可能是最合适的选择。

陷阱

  • 小心“footer”电源门控与外部开关电源轨道或多个供电电源混合使用。这使得功能、时序和功率分析变得复杂,并对标准单元库提出了更复杂的需求。

5.1.1 控制开关结构

控制开关结构的一个关键问题是在打开电路块的电源时限制过冲电流。过大的瞬时电流会导致电源电压出现尖峰,可能损坏始终上电模块中的寄存器,以及电源门控块中的保留寄存器。

第14章描述了控制这种过冲电流的各种方法。一种典型的方法是将控制信号用菊花链连接到开关上。每个开关结构通常有数百个(或更多)开关并行操作;来自电源控制器的控制信号连接到第一个开关,并缓冲(有适当的延迟)信号,并将其发送到下一个开关。

这个花菊链的结果是,从断言的“通电”信号,到块被通电需要一些时间。因此,开关结构通常会提供一个应答信号表明网络已经完全上电;这个信号可以简单地是“通电”控制信号的最终缓冲版本

打开开关结构的一种更激进的方法是依次使用几种通电控制信号。第一控制信号可以打开一组弱或“小电流”开关,启动电源,但限制过冲电流。第二控制信号可以打开主电源开关

无论具体的控制方法如何,在通电顺序的过程中,都需要等待开关结构完全通电后,才能使电源门控块恢复正常运行。此通电顺序的时间由电源控制器负责。

请注意,电源开关结构的控制信号——整个电源开关和应答信号的菊花链——必须始终通过上电的缓冲器进行缓冲,而不是通过电源门控的缓冲器缓冲。这给电源门控区域的电源布线增加了一定程度的复杂性。

5.1.2 电源门控控制的建议和避坑

建议:

  • 功率控制器需要针对所使用的特定技术的功率门控结构进行设计。
  • 应为功率门控控制端口提供断言,以匹配所选的开关技术,从而确保RTL设计环境中的功能验证和覆盖率。
  • 测试期间,功率门控控制信号必须可控。

陷阱:

  • 将外部电源门控(切换外部导轨)与内部电源门控(在芯片上切换电源)相结合可能很棘手。在内部电源门控期间“始终接通”的电源在外部电源门控期间可能不会“始终接通。在这种情况下,需要仔细设计和验证。

5.2 信号隔离

一旦我们解决了开关结构的设计和控制,下一个问题就是指定隔离策略。

电源门控区域的每个接口都需要管理。我们需要确保该区域断电不会导致通电块的任何输入中出现直通电流。此外,我们需要确保掉电块悬空的输出不会导致上电块中出现错误行为。

电源门控块的输出是主要问题,因为它们可能会导致其他块的电气或功能问题。电源门控块的输入通常不是问题——它们可以通过通电块驱动到有效的逻辑值,而不会在断电块中产生电气(或功能)问题。

5.2.1 信号隔离技术

控制断电块输出的基本方法是使用一个隔离单元将输出固定为一个特定的合法值。 

隔离单元有三种基本类型:将信号固定为“0”,将信号固定为“1”,以及将信号固定为最新值。

在大多数情况下,只要将输出固定到非活动状态就足够了。当使用高电平有效的逻辑时,最常见的方法是将值固定为“0”。一个具有“与门”逻辑的功能可以实现这一点。对于低电平有效的逻辑,或门功能将输出固定在逻辑“1”。

只要控制输入处于适当的(“隔离”)状态,当信号输入浮动时,钳位(Clamp)库单元就可以避免撬棍(短路直通)电流和泄漏路径。此外,它们的综合模型通常具有额外的属性,以确保这些单元永远不会被作为逻辑优化的一部分所优化掉、错误地插入缓冲或被反相(invert)。

图5-2左侧所示为“与”样式隔离单元的示意图,隔离单元的输出钳夹在低电平;当低电平有效的隔离信号“ISOLN”为高电平时,信号传输至输出端;当信号“ISOLN”为低电平时,输出被钳夹在低电平。

图5-2右侧所示为“或”样式隔离单元的示意图,隔离单元的输出钳夹在高电平;当低电平有效的隔离信号“ISOLN”为低电平时,信号传输至输出端;当信号“ISOLN”为高电平时,输出被钳夹在高电平。 

这些钳位门为它们所隔离的信号增加了延迟。对于某些关键路径,这种增加的延迟可能是不可接受的,例如在内存接口上。

不增加全门级延迟的替代隔离技术是使用上拉或下拉晶体管。然而,这种方法在功率门控网络上引入了多个驱动器,需要仔细排序以避免争用。即使上拉或下拉晶体管是相对较弱的器件,总数也可能很多,以至于来自总线争用的过多电流可能会导致问题。避免争用的排序由功率控制器完成。

图5-3左边所示为下拉样式的钳夹低电平的示意图;当“ISOL”为高电平,输出被钳夹至低电平;当“ISOL”为低电平,信号signal则通过输出端。

图5-3右边所示为上拉样式的钳夹高电平的示意图;当“ISOLN”为低电平,输出被钳夹至高电平;当“ISOL”为高电平,信号signal则通过输出端。 

为避免输出端毛刺,上电器件输出需要隔离,直到电源稳定。这种测序对箝位单元来说是直接的,但对上拉/下拉晶体管来说可能非常具有挑战性,因为每当这些晶体管在激活状态下重新通电时,它们都会与输出值发生冲突。

请注意,即使是少量的连续电流通过它们,晶体管型的钳位器也会导致金属迁移和可靠性问题。它们也给测试带来一个大问题——每当网络上有多个驱动程序时,测试就变得非常困难。

因此,尽管面积和时间成本较低,便携式RTL设计也不推荐上拉和下拉钳位器。相反,建议使用“门样式”的单元格样式,并在本节的其余部分中进行了描述。然而,上下拉式晶体管方法在关键时序路径中,在理解信号协议,并且可以通过设计消除(并验证要消除)争用的特殊情况下是有用的

5.2.2 输出或输入隔离

正如上面所说的,对功率门控块的输出进行隔离是为了避免浮动输出驱动已上电模块输入的电特性问题。从逻辑上来说,我们是否对那些输出信号(电源门控块内部)或者输入信号(已上电模块内部)进行钳位器隔离是没有差别的。

但是存在影响抉择的很重要的现实问题。

功率门控模块的一些输出很可能驱动多个已上电模块的输入。如果在接收侧进行输出隔离,那么每一个输出端驱动的单元都需要一个隔离器。因此,考虑到面积的节约,我们选择在电源门控模块内部进行输出隔离

在电源门控模块内部隔离输出使得分析变得更简单。一旦我们认为门控模块内所有的输出都被正确地隔离,我们就完成了整个验证。相反,如果那些信号在接收模块隔离,那么输出信号的每一个扇出都必须很好的检验以确保隔离单元放置的正确性。如果电源门控块在不同的应用进行重复使用,这种分析就要重新进行一遍。

然而,在源端进行输出隔离需要一些布局布线上的约束。与功率门控模块内部其他逻辑门不同的是,隔离单元在断电期间需要仍然保持有电。因此,包含功率门控模块的电压域需要提供开关电源和始终通电电源(always-on)。这在一定程度上使芯片的电源布线复杂化,但现代EDA工具能够解决这个问题。

不论是在源端还是目的端进行输出隔离,EDA工具都必须注重隔离单元的独特特性。如果隔离在源端,那么工具一定不可以使用电源门控的缓冲器来缓冲隔离单元的输出。如果隔离在目的端,那么工具一定不可以使用始终上电的缓冲器缓冲信号(隔离前的信号)。隔离单元的控制信号一定要使用始终通电的单元缓冲。

同样的,布局布线期间的优化一定不可以使用隔离单元替换非隔离单元。

基于上面说的各种原因,我们强烈建议可重复使用的IP可以将隔离单元内嵌在IP里面,从而隔离的复杂性被SOC级集成所掩盖。

5.2.3 接口协议和隔离

功率门控模块的接口设计有两个目标:最小化泄露功率、避免,避免不必要或者不正确的行为。

考虑如下情形,功率门控模块的输出送至始终上电模块。当功率门控模块断电时,上电模块会接收到钳夹信号的电平值。如果这些信号是高电平有效,它们被钳夹至高电平,目的端可能会将这些信号翻译为命令,进而产生不正确的行为。将这些信号钳夹至他们各自的无效状态是避免上述问题最好的策略。对于大部分设计而言,意味着将这些信号钳夹至“0”。

本指南的一个可能的例外是复位。通常,复位为低电平,因此将其箝位为低电平表示接口上的复位状态。事实上,这可能是在断电期间驱动重置的最合适的值。这样可以确保在通电期间断言复位。(这就是我们在SALT芯片上所做的。)无论如何,在断电期间,将接口信号钳夹到有效或非有效状态的影响都是值得考虑的。

现在考虑一个功率门控块的情况,它的输出去到另一个(独立的)功率门控块。因为这些块是独立电源门控的,所以它们的输出必须隔离。但在一些情形中,源端模块断电,目的端模块也会断电。这种情况下,信号被钳夹到错误的电平会导致泄漏电流增加。例如,如果(目的端模块)VDD切换,(源端模块的)输出被钳夹至“1”,那么从钳夹输出端到地可能存在寄生电流路径。这可能会导致不必要的泄露功耗。

因此,对于header模式的开关设计, 基本建议是:使用高电平有效的信号和低电平有效的复位,并将所有信号钳夹到“0”。

对于“footer”模式切换电源门控区域,我们建议高电平有效信号和低低电平有效复位,并将所有信钳夹为“0”。这个规则有一个可能的例外:如果在接收模块的输入处使用传输门。如果使用传输门,我们可能需要钳夹为“1”,以避免通道泄漏。这种情况将在第12章中详细讨论。在这种情况下,可能有必要使用高电平有效信号来避免功能问题。由于大多数现有的协议使用高电平有效信号,这可能会带来一个设计挑战。

注意:我们一般倾向于高电平有效信号和低电平有效复位信号,这有两个原因:这是最常用的设计方法,这也使其成为简单、易于调试的RTL。

最后需要注意的是,对于复杂协议,可能需要更加复杂的隔离策略:将信号钳夹至它们上次电平值。此方法允许在进程中重新开始此协议,而不是从复位状态开始。这种策略需要一个锁存的隔离单元,并不是在所有的器件库都可用,并且仅在绝对需要的情况下使用。

5.2.4 隔离的建议与避坑

建议:

  • 功率门控模块的输出端需要隔离;
  • 除非使用非常特殊的接口协议(多驱动可能会导致加重实现(布局布线)的复杂性),否则使用隔离单元而不是上下拉类型的钳位器实现隔离;
  • 确保隔离控制信号的恒0(stuck-at-0)和恒1故障在测试期间可以被发现。这有助于在制造测试期间验证隔离是否有效。

避坑:

  • 确保隔离单元一直上电;
  • 时钟上的隔离钳位器会使时钟树合成和时序收敛相当复杂。时钟树平衡尤其会变得困难。如果可能,请避免在电源门控模块内部生成外部模块需要使用的时钟。

5.3 状态保留和恢复方法

给定功率交换结构和隔离策略,便可以对逻辑模块进行功率门控。但是,除非使用了保留策略,否则当模块被断电时,所有的状态信息都会丢失。要在通电时恢复操作,该块必须从外部源恢复其状态,或者从复位条件建立其状态。在任何一种情况下,所需的时间和功率都可能是显著的。

在许多情况下,一种快速保存和恢复状态的显式保留策略可以提供一种更快、更节能的方法,在通电后获得模块功能。

保留策略的重要性取决于子系统的特性。主要由数据流驱动的数字信号处理单元如果提供新的输入数据,则可能能够从复位状态开始启动。然而,外围进程或缓存进程通常具有大量的冗余状态,因此重新加载此状态所需的总线通信量过大。

有几种保存和恢复功率门控模块内部状态的方法:

  • 基于读写寄存器的软件方法;
  • 一种基于扫描链的片外状态存储方法;
  • 使用保留寄存器;

通过软件方法,始终通电模块中的处理器在电源关闭序列期间读取电源门控块的寄存器。该状态信息存储在处理器的存储器中。在上电序列期间,处理器读取其内存,并将状态写回通电块。这种方法有几个缺点:

  • 总线流量大大减慢了断电和通电顺序。
  • 总线冲突会使保存/恢复时间变得不确定,从而更难决定何时值得关闭模块。
  • 必须编写软件并将其集成到系统的软件中,以处理断电和上电。这使得软件的可重用性大大降低,并且需要编写软件的工程师对硬件有更广泛的了解。

鉴于以上原因,我们将聚焦于其余两种方法来保留状态,使上电顺序对系统的其他部分更加透明。

5.3.1 使用扫描链实现状态保留

用于制造测试的扫描链可以重新用于状态保留,几乎没有增加面积开销。

在这种方法中,一组专用的扫描链被用于功率门控模块。在断电过程中,扫描寄存器像在扫描测试中一样移位,但输出连线至存储器。这个内存可以在芯片上,也可以在芯片外,但如果在芯片上,它需要始终通电。在通电期间,扫描链从内存中加载状态信息。

请注意,一旦状态被扫描到内存中,整个子系统就可以被电源门控关闭。没有必要对保留寄存器始终上电。

从RTL设计的角度来看,当然也有一些挑战。最基本的挑战是,扫描触发器在综合之前不会插入和连接——但在综合之前,必须在RTL级别对控制器进行编码和调试。

甚至寄存器的数量和扫描链的长度也只有在初始实现之后才知道。因此,需要对电源控制的排序器进行参数化,以管理与实现相关的计数器值。它还必须提供对扫描使能和扫描链的显示控制;这些后来被连接到网络列表中。

为了实现最快的保存和恢复时间,我们希望使用内存数据总线的全位宽将保留数据写入内存中。这意味着我们应该使扫描链的数量等于内存数据总线的宽度。在实践中,这可能是太多的扫描链而不能实际用于制造测试。但通常我们会使用至少8条扫描链,而且可能是8的整数倍。

如果使用了更多的一个链,那么就需要平衡扫描链-也就是说,它们必须都是相同的长度。这种平衡是必要的,因为控制器生成一个单一的移位使能信号,这是由所有的链共享,也被用来控制数据进入内存和读出内存。为了达到这种平衡,我们可以在短链上添加额外的寄存器。

请注意,保留内存必须足够大,以容纳扫描位的数量。此外,在保存状态和恢复状态两方面都存在实时延迟成本。这随着模块被扫描状态信息的变大而增长,并且是使用扫描链数量的函数。

将寄存状态的读出和写入也需要一个能耗成本。如果使用了外部存储器,那么IO开关功率可能会很显著。即使使用内部内存,也可能需要大量的动态功率来通过扫描链移动数据。移位的模式高度依赖于状态;在最异常的情况下,块中的每一个触发器都在每个时钟上切换。这比典型的情况翻转更剧烈(和功率),并可能产生一个不可接受的电压降。

现代的测试和实现工具已经需要处理这样一个事实,即在扫描期间,电平翻转的活动性可以比正常操作期间高得多。这些工具扫描分析实际的电压下降,并允许工程师调整链的数量和时钟顺序,以保持电压下降到一个可接受的水平。但是需要小心避免过度的电压下降会破坏数据。

尽管存在这些挑战,但基于扫描的状态保留方法在某些情况下是有用的。长期睡眠期间,通过完全关闭整个子系统,特别是关闭外部电源,节省泄漏是显著的。如果可以通过扫描链恢复状态,而不是在通电后从复位状态开始,这种节能就更加重要。

图5-5所示是基于扫描的状态保存和恢复方法,为了使画图小一些,简化为4位宽。注意其中一条扫描链比其他的都短,增加了一个触发器保持扫描链平衡。一旦扫描链平衡,状态就可以被保存至存储器(“SCAN-OUT & SAVE STATE DATA”),之后可以从存储器恢复状态(“SCAN-IN & RESTORE STATE DATA”),这样刚上电模块就回到断电前的状态。

网表布局布线(扫描链插入)之前的RTL级的功能测试和仿真是一个挑战, 但并非不可逾越。

一种方法是在RTL设计中添加一些条件代码,它仅在模拟基于扫描的保留方法时进行编译。这段代码模拟了这些移位寄存器的行为,并可以包含在简单的测试序列中,以验证控制器是否正常工作,数据是否被正确地写入并从内存中读取。

下面是一个虚拟CPU扫描链的RTL模型的例子,它将使用16个扫描链来支持实现保留功能。注意,扫描链用了虚拟数据。

    `define CPU_SCAN_LEN 257 /* set to implementation length once known */`ifdef RTL_SLEEP_EMULATEparameter scan_reg_length = `CPU_SCAN_LEN;reg [15:0] scanword [0:scan_reg_length-1];integer i;/* initialize the scan chain to count pattern, or more draconian X */initial beginfor (i=0; i < scan_reg_length; i=i+1)beginscanword[i]<=i; // or 16’hXXXX;end end/* emulate scan shift CPUSI -> CPUSO */always@(posedge CLK) beginif (CPUSE == 1'b1) /* when SCAN ENABLE is active */beginfor (i=1; i < scan_reg_length; i=i+1)beginscanword[i]<=scanword[i-1];end scanword[0] <= CPUSI[15:0];endendassign CPUSO [15:0] = scanword[scan_reg_length-1];`endif

在后期阶段,应该执行门极级网表仿真,以确保特定实现的扫描链和控制信号真的正确连接,并且正确长度的扫描链已经实现和平衡。 

5.3.2 保留寄存器

在电源门控时提供状态保留的另一种方法是用保留寄存器替换标准寄存器。保留寄存器包含一个“影子”寄存器,它可以在断电时保持寄存器的状态,并在通电时恢复它。与主寄存器不同,影子寄存器总是通电的。

图5-6显示了两个保留寄存器。在每一种情况下,主寄存器——主从锁存器——都由开关电源轨道“VDD SW”供电。CLK、D和RESETN引脚都在主寄存器上工作,该主寄存器驱动Q输出。

此外,还有一个影子寄存器“RET”,用于保存和恢复状态到主寄存器。阴影寄存器是由始终通电轨道上的“VDD”驱动的。

如图5-6左侧所示,当断言SAVE时,主寄存器的状态被加载到阴影寄存器中。当断言恢复时,阴影寄存器的状态将被加载回主寄存器中。保存(SAVE)和恢复(RESTORE)是电平敏感的信号。

图5-6右侧寄存器,当RETAIN信号拉高,主寄存器的状态加载到影子寄存器,当RETAIN信号拉低,影子寄存器的状态回读到主寄存器。RETAIN是一个边沿敏感型信号。

第13章讨论了保留寄存器的详细设计。这里,我们将仅对他们发表一些看法。

现实中的保留寄存器都有一些面积开销,通常是20%或更多。一些保留寄存器合并保护带,以尽可能可靠地隔离保留状态,以免受到短暂的的电源门控的影响。在这种情况下,面积开销可以大到50%或更多。在具有大量寄存器的设计中,区域影响可能是显著的。

不幸的是,如果要使用芯片上的保留策略,这种开销是不可避免的。考虑另一种选择。我们可以限制实现只使用低泄漏、高阈值电压(VT)的寄存器,并将它们连接到不切换开关的电源导轨。然后,我们将简单地电源门控寄存器级之间的所有有泄漏功率的(低阈值电压或混合阈值电压VT)组合逻辑。然而,在任何合理大小的块中,复位和时钟网络通常必须通过高泄漏的低阈值电压VT的缓冲树来满足时序。这些缓冲树为该块贡献了很大一部分的泄漏功率,因此它们必须是电源门控的。但一旦这些线网被电源门控,这些时钟和复位的不定态会损坏寄存器。

除了面积开销之外,保留寄存器的使用还需要一个更复杂的功率控制器。 

5.3.3 “保留”的电源控制器设计

控制器必须作为电源管理控制状态机的一部分来管理保存和恢复信号的显式排序。

与主寄存器相比,影子寄存器可能相当慢,但我们需要确保主寄存器中的值在整个保存操作过程中都是稳定的。出于这个原因,大多数设计师在执行保存之前就停止了时钟。当然,在断电之前,必须完成上述操作

在电源恢复且电源门控瞬变(瞬变指的,电源上电的一瞬间有较大的电流)消退后,才能执行恢复。在将新值加载到主寄存器之前,必须完成恢复操作。因此,大多数设计人员在恢复操作完成之前不会重新启动时钟。

虽然电源门控控制器在设计上需要一些小心,但将标准触发器替换为实际使用的保留寄存器可以在实现(布局布线)期间自动完成。类似地,保存/恢复控制信号的连接可以完美地连接到保留寄存器。这些控制信号需要作为始终上电的网络来实现,以避免在电源门控期间的状态损坏,但可以对RTL设计十分透明。

保留-寄存器方法的优点之一是,它允许保留策略对RTL设计者基本透明。在这个意义上,它严格遵循自动扫描插入和连接的模型。为了保持“保留”操作对RTL设计的透明性,在保留期间不能激活时钟或复位。否则,RTL设计将不得不显式地处理保存/恢复行为和时钟/复位行为之间的冲突。

为了减少泄漏,时钟和复位树很可能在断电期间关闭。为了保持这些不定态(仿真中的X)信号不会损坏保留寄存器,保留必须优先于时钟和复位。在设计电源门控控制器时,必须了解电源门控库中可用单元的行为,以确保“影子”寄存器不会因不确定的时钟和复位而损坏。

【笔记】数字电路中的float,应翻译为不定态、不确定电平。

5.3.4 部分保留 VS 全状态保留

电源门控的关键架构决策之一是在断电期间需要保留多少状态。保留块的完整状态——即,用保留寄存器替换所有寄存器——提供了最健壮、最易于验证和最透明的电源门控形式。

然而,在一些设计中,对完全状态保留的区域开销需要考虑部分状态保留——只保留块的部分内部状态。但部分状态保留带来了一些重大挑战。

在部分状态保留中,只有“架构可见”状态被保存和恢复。挑战在于确保所有非保留的寄存器在合法、安全和可验证的状态上电。

非保留寄存器的候选示例是FIFOs、存储器和计数器。将这些设备转换为保留寄存器可能相当昂贵。在某些设计中,仅仅确保它们通电到一个已知的状态可能是合适的。对于FIFO,这将意味着重置FIFO控制器,以表明FIFO是空的。对于内存,我们可以重置内存控制器,使它考虑到未初始化的内存。我们可以把计数器重置为零。

深状态和浅状态的概念可能有助于确定非保留寄存器的候选状态。浅层状态是指直接控制设计逻辑的寄存器,即在设计中可以绘制为状态转移图的部分深度状态是指状态机使用的寄存器,但其中包含大量的辅助数据,例如内存、计数器和fifo。我们通常不会将这些寄存器作为状态转移图的一部分来绘制。

对于部分保留,一个合理的策略可能是保存和恢复浅层状态,并有一个单独的策略来处理深层状态。重置深度状态寄存器的控制器是一种可能的策略

然后问题变成如何在通电时验证保留和非保留状态的组合是否可以使模块正确重新启动。在仿真过程中,我们将所有寄存器(深度和浅状态)的输出设置为X。也就是说,我们损坏了除影子寄存器(保留触发器内的)之外的所有寄存器。

验证电源门控后正确启动的关键是确保X态没有传播。也就是说,在通电顺序完成后,应该没有不定态X在电路中,除了内存中的内容。而内存中的X应该不能够传播和影响电路的功能。

仔细和选择性地使用复位可以解决这个问题。但是我们需要保证我们只复位非保留的寄存器,这样我们就不会干扰保留寄存器的恢复功能。

因此,对于保留和非保留存储,有单独的复位信号变得很重要。然后,我们可以在电源门控后构建通电序列,以恢复保留状态,并初始化所有的非保留寄存器。

因此,用于部分保留的电源控制器必须驱动独立(命名)复位信号到子系统的适当部分。需要进行一些严格的功能测试,以确保不存在可能导致死锁的非法状态组合。

5.3.5 系统级问题和保留

一个更微妙的复杂性来自于与时钟门控的潜在交互作用,这将在设计流程中进一步实现。构成启用时钟门控条件的所有状态位都需要仔细管理:要么保留,要么重新初始化为一个安全和可重新启动的条件。通过这种方式,时钟门控单元中的透明锁存器的内容就可以被干净地重新生成——而不需要对时钟门控单元增加保留功能。

类似地,使用时钟的双边沿也可能是一个实际的问题。在电源断电序列中,时钟停止在“0”状态。这使得时钟门控锁存透明;当电源和状态恢复时,形成时钟门控的条件通过锁存器传播,恢复正确的值到时钟门控寄存器的输入。

如果在相同的设计中同时使用上升沿和下降沿触发的触发器,那么我们停放时钟就不能使所有的时钟门控锁存器透明。因此,我们将无法正确地恢复所有的数据。

保留功能也会使扫描测试更加复杂。为了进行扫描测试,我们需要迫使保留触发器进入其正常工作模式。因此,当我们进入扫描模式(对于电源门控块)时,我们需要设置电源控制器,以便保存和恢复都被取消断言。当我们进入电源控制器本身的扫描模式时,我们需要放宽这个约束,以便扫描可以用来测试保存和恢复信号的生成。

5.3.6 状态保留的建议和避坑

建议:

  • 如果实现部分保留,则为设计的保留存储部分和非保留存储部分提供单独的复位。这允许对复位和 恢复/重新初始化 操作进行干净的电源验证。
  • 在实现部分保留时,确保状态机和线性序列机对非保留状态没有依赖关系,以避免依赖状态的死锁或无效状态条件。(如果必须使用非保留状态测试许多保留状态值,则要验证的状态空间可能非常大)。
  • 如果专用保留寄存器的区域影响太大,则可以选择重复使用制造扫描链。尽管这需要在生成测试结构后谨慎地将其干净地映射到网表实现上,但这可以在RTL编码的控制状态机中相对干净地进行管理。
  • 测试期间,保留控制必须可控、可观测。

避坑:

  • 过冲电流管理或保留电源噪声较差会导致可能损坏保留寄存器,导致重启时处于不安全/无效状态。在RTL功率控制(以及在物理实现中)中必须非常小心,以确保功率安全地重新应用。
  • 部分保留需要更严格的复位和恢复验证,以确保在保留/恢复状态重新初始化的非保留状态之间永远不存在死锁条件。
  • 影响保留状态的时钟门控使能条件在其整个扇入状态上设置保留寄存器,以确保“下一个状态”序列正确运行。
  • .基于扫描的存储和恢复方法很可能使用系统总线将数据 传输到/加载自 内存中。这个总线通常可以有等待状态;因此,需要注意确保扫描 保存/恢复 控制器可以支持等待状态,而没有任何数据丢失。
  • 在制造测试期间,测试保留寄存器实际上保留数据的失败可能导致现场故障。

5.4 电源门控控制 

给定电源切换结构、隔离策略和保留策略,我们现在可以设计控制断电和通电顺序的电源控制器。

5.4.1 电源控制顺序

根据上述讨论,对一个无保留地功率门控门控我们提取如下需求。

为了对一个区域进行无保留电源门控:

  • 清空任何正在进行的总线或外部操作
  • 在适当的阶段停止时钟,以尽量减少进入电源门控区域的泄漏
  • 断言隔离控制信号,以将所有输出停放在安全状态下
  • 断言模块的复位信号,以使其在复位条件下通电
  • 断言电源门控控制信号以关闭模块

为恢复电源:

  • 取消断言电源门控控制信号以恢复模块电源
  • 根据电流过冲的管理方法和技术,可选地对多个控制信号进行分阶段通电排序
  • 取消断言复位信号,以确保门控通电后的干净初始化
  • 取消断言隔离控制信号,以恢复所有输出
  • 重新启动时钟,没有任何毛刺,也不违反最小脉冲宽度的设计约束条件

图5-7为无保留的电源门控模块地电源控制时序。

对于一个有状态保留功能的模块,我们必须在电源门控时序中增加保存和恢复信号。

为了实现对具有状态保留功能的区域实施电源门控:

  • 清空任何正在进行的总线或外部操作
  • 在适当的阶段停止时钟,以尽量减少进入电源门控区域的泄漏
  • 断言隔离控制信号,以将所有输出停放在安全状态下
  • 断言状态保留保存条件(脉冲或者边沿触发)
  • 对模块中的非保留寄存器断言复位信号,以使其在复位条件下通电
  • 断言电源门控控制信号以关闭模块

为恢复电源和保留状态:

  • 取消断言电源门控控制信号以恢复模块电源
  • 根据电流过冲的管理方法和技术,可选地对多个控制信号进行分阶段通电排序
  • 取消断言复位信号,以确保门控通电后的干净初始化
  • 断言状态保留恢复条件(脉冲或者边沿触发)
  • 取消断言隔离控制信号,以恢复所有输出
  • 重新启动时钟,没有任何毛刺,也不违反最小脉冲宽度的设计约束条件

5.4.2 握手协议

电源门控需要花费时间。电源门控开关结构必须限制电压毛刺以免破坏保留寄存器或其他已上电逻辑。绝大多数的设计通过限制上电期间的电流来达到此目的,由此限制了电压上升到最终值的速率。

电源控制器必须适应此过程。特别是,它在发起恢复操作之前必须等待直到电源上电完成。也就是说,它必须在电源打开和恢复之间插入一个延迟。

最简单的方法是在控制器顺序中建立一个固定的延迟。计数器可以增加足够的时钟周期来满足通电或断电的时间。然而,在RTL中嵌入这样的时间常数会将RTL与特定的开关结构实现的时间联系起来。其结果是,IP明显变得不方便或不可重用的。即使将工作产品迁移到下一代技术节点上,其中的电源门控时间将会不同,也需要对RTL进行更改。

因此,我们建议使用请求-确认的握手机制来控制电源开关结构

图5-9显示了该协议的一个示例。电源控制器发出一个N_PWR_REQ去关闭电源开关结构。当电源完全关闭时,该开关结构负责返回N_PWR_ACK。上电时,控制器取消断言N_PWR_REQ以打开开关结构。当开关结构完全打开并安全进行时,开关结构需要取消断言N_PWR_ACK。当控制器看到确认时,它继续断言恢复并继续进行通电顺序。

第14章提供了关于如何设计开关结构以支持确认信号的更多细节。

在很多应用中,电源确认信号是异步的——它的时序取决于开关结构的设计。鉴于这个原因,电源控制器需要将此信号同步到自己的时钟域下后再使用。

5.4.3 电源门控控制器的建议和避坑

建议:

  • 使用请求和确认信号的握手来设计电源门控的控制时序。
  •  内置联锁和同步,以确保安全的唤醒顺序。

避坑:

  • 一种关键情况是,当控制器试图在断电后立即给块通电时,而实际上断电还没有完成。也就是说,当电源门控结构仅部分断电时,通电序列开始。设计者在设计功率控制器时需要仔细考虑这种情况。请记住,断电时间取决于半导体工艺和温度

5.5 电源门控设计验证——RTL仿真

接下来,我们将考虑在RTL级别上验证功率门控电路的问题。这是一个挑战,因为硬件描述语言(hdl)并没有提供在RTL级别上描述电源连接的各种机制。为了仿真电源门控,我们需要扩展Verilog——可以通过修改代码或使用一组单独的命令来描述电源连接和电源切换。

统一电源格式(UPF)定义了电源门控的语言格式和仿真语义。许多UPF标准都讨论了电力策略的实现;这方面将在第11章中进行讨论:实现电源门控。在这里,我们将限制我们对仿真电源门控问题的讨论。

EDA公司正在迅速着手实现UPF,并提供自动仿真电源门控的能力。对于那些正在使用还不支持UPF的仿真器的人,可以通过向RTL添加特殊代码,或者手动或通过脚本,来实现许多UPF仿真语义。

(注意:我们在这里描述的基于脚本的方法假设了一个严格的RTL编码风格,如在重用方法手册中描述的。它还依赖于为时钟和复位使用一致的命名方案。)

在RTL级别仿真功率门控所需的关键功能包括:

  • 功率门控的功能建模(包括当电源门控时,强迫令输出为不定态X)
  • 隔离的功能建模
  • 保存和恢复的功能建模
  • 电源门控/状态保留/电路复位 优先级的功能建模

除了仿真,还应增加断言和功能覆盖率,以验证控制网络的正确时序和优先级。

5.5.1 RTL中的功率门控行为推断

第一步是模拟关闭一个块的效果。

UPF提供了一种机制(一组tcl命令),用于定义电源域(Verilog模块集)和一套到电源域的供电(电源和地面供电网)。

第65页的图5-10显示了我们想要仿真的设计的电源连接。Verilog模块my_module(实例U1)有一个header开关,该开关可以控制模块中的所有逻辑。电源门控控制器取消断言pwr_req关闭模块电源,断言pwr_req为模块通电。信号pwr_ack是表示开关已完成断电/上电的确认信号。在RTL级别上,它只是pwr reg的一个缓冲版本。在门级网网列表中,它将会有真正的延迟。

这个设计的UPF可能是:

create_power_domain top -include_scopecreate_power_domain top_power_domain -include_scopecreate_supply_net VDD_SOC -domain top_power_domainconnect_supply_net VDD_SOC -ports {pad_VDD_SOC}create_supply_net VSS_SOC -domain top_power_domainconnect_supply_net VSS_SOC -ports {pad_VSS_SOC}set_scope U1 create_power_domain my_power_domain -include_scopecreate_supply_net sw_vdd -domain my_power_domainset_domain_supply_net my_power_domain  -primary_power_net sw_vdd  -primary_ground_net /top/VSS_SOCcreate_power_switch my_power_switch-domain my_power_domain -input_supply_port {my_sw_input_port /top/VDD_SOC}-output_supply_port {my_sw_output_port sw_vdd}-control_port {my_sw_control_port /top/pwr_req}-ack_port {my_ack_port /top/pwr_ack}-on_state {pwr_on_state my_input_port{my_sw_control_port ==1 })}-off_state {pwr_off_state {my_sw_control_port == 0}}

如果我们在仿真时包含此UPF代码,则将发生以下情况:

  •  当pwr_req变为低电平(要求断电)时,开关将关闭U1中的所有单元。也就是说,所有寄存器的输出都设置为X(不定态),U1的所有输出端口都设置为X。所有进程都处于非活动状态。同时,pwr_ack设置为低电平,通知电源控制器电源已经完全关闭。UPF支持为确认信号分配一个延迟,但对于RTL仿真,我们使用默认的零延迟。
  • 当pwr_req变为高电平(要求恢复电源)时,则开关将电源接通U1中的所有单元。也就是说,所有的寄存器恢复它们的正常操作,所有的连续分配和组合过程恢复。同时,pwr_ack拉高,通知电源控制器电源已完全接通。

如果我们使用不支持UPF的仿真器,我们可以通过直接修改RTL来完成类似的行为。

要做到这一点,我们需要对RTL中的所有时序语句进行一致的异步复位(或置位)和同步时钟样式。然后,就可以编写一组功率门控和行为的条件集,以允许严格的仿真建模:

  • 当电源门控时,对所有寄存器输出强制“X”
  • 确保电源门控时内部状态设置为“X”,以验证电源门控后是否复位了状态
  • 正确建模电源门控/复位/时钟的优先级,以确保正确排序

例如,请考虑以下代码: 

always @ (posedge clk or negedge nrst) 
beginif (!nrst)current_state <= 4'b0101;elsecurrent_state <= next_state;
end

这可以被自动转化为如下代码:

`ifdef RTL_PG_EMULATEwire sw_vdd;assign sw_vdd = pwr_req & pwr_ack;
`endifalways @ (posedge clk or negedge nrst
`ifdef RTL_PG_EMULATEor negedge sw_vdd
`endif
) 
begin
`ifdef RTL_PG_EMULATEif (!sw_vdd)current_state <= 4'bXXXX;else
`endifif (!nrst)current_state <= 4'b0101;elsecurrent_state <= next_state;end
end

当仿真时定义了宏 RTL_PG_EMULATE,电源门控信号sw_vdd则会被添加到进程的敏感列表中。在always描述的时序进程中具有最高优先级,在模块断电时迫使current_state变为X。 

因此我们可以写一个脚本去修改 my_module 中的每个时序进程,让其具有上述代码的电源门控行为。注意,顶层必须增加额外的代码以连接pwr_req 和 pwr_ack信号到电源控制器。

还要注意,这里仿真的行为与UPF语义并不相同——只有寄存器输出设置为X,而不是模块的输出端口。因此,如果任何输出纯粹是输入的组合函数,那么通过上述修改,该输出将不会设置为X。需要额外的脚本才能将这样的输出设置为X。

5.5.2 推断电源门控和RTL中的保留行为

对于使用保留功能的设计,下一步就是修改RTL对保留行为建模:

  • 初始化保留状态变量为“X”以捕获在 SAVE 操作之前无效的 RESTORE 状态;
  • “SAVE”操作时,采样寄存器状态到一个外部推断的保留状态变量。
  • 当电源门控时,所有寄存器输出强迫为“X”
  • “RESTORE”操作时,从保留状态变量重新初始化状态
  • 正确建模电源门控/复位/时钟的优先级,以确保正确排序

同样地,我们可以增加UPF代码或者写脚本直接改变RTL代码。

UPF提供了提供了用于声明“always on”供电网络的命令,可用于保留寄存器保存和恢复控制信号。默认情况下,set_retention 命令将电压域的所有寄存器都转化为保留寄存器。

set_retention my_retention_strategy-domain my_power_domain-retention_power_net VDD_SOC
set_retention_control my_retention_strategy-domain my_power_domain-save_signal {SAVE posedge}-restore_signal {NRESTORE negedge}

UPF为这些命令声明了如下的语义。我们和之前一样用相同的例子开始:

always @ (posedge clk or negedge nrst) 
beginif (!nrst)current_state <= 4'b0101;elsecurrent_state <= next_state;
end

 我们增加上述UPF代码,仿真器的行为和我们在RTL代码中增加下面两个进程的效果相同。

reg [3:0] save_current_state;
always @ (posedge SAVE) 
beginsave_current_state <= current_state;
endalways @ (negedge NRESTORE) 
begincurrent_state <= save_current_state;
end

请注意,这种方法意味着NRESTORE、clk和nrst三个信号必须是互斥的;在任何时候只能有一个是有效的。否则,在驱动 current_state 的不同进程之间可能会出现冲突。电源门控控制器的设计必须符合此要求。我们可以在仿真期间使用断言来检查是否没有违反此要求。

如果我们不使用支持UPF的仿真器,我们可以编写一个脚本,对RTL进行相同的修改。

生成的代码将被添加到RTL中:

`ifdef RTL_PG_EMULATEreg [3:0] save_current_state;
always @ (posedge SAVE) 
beginsave_current_state <= current_state;
end
always @ (negedge NRESTORE) 
begincurrent_state <= save_current_state;
end
`endif

注意,使用UPF,我们可以通过在源文件列表中包含UPF来控制是否仿真保留。当我们使用脚本修改RTL时,我们需要使用条件编译 if-def 来控制仿真。

5.6 设计的测试问题

可测试性设计测试(DFT)最佳实践设计的一个关键组成部分是提供对时钟和复位的外部控制。这使得标准的自动测试模式生成工具能够同时生成高覆盖率的测试向量。

电源门控设计为测试设计创造了一些额外的挑战。这些挑战包括:

  • 电源门控、保留和隔离信号的外部控制和可观察性
  • 处理测试过程中的最大电流和功率限制
  • 测试电源交换网络是否有正确的模拟行为
  • 测试正确的关闭、隔离、保留行为
  • 测试电源门控控制器功能正确

5.6.1 功率门控控制

最佳实践RTL设计要求设计者确保复位的稳定性的可控性。所有派生或重新同步的复位(或预设)均从外部可控的复位控制引脚复用。也就是说,在测试模式下,我们必须能够覆盖系统中的所有复位,并从外部引脚提供一个主复位。

出于类似的原因,设计者需要提供功率门控控制网络的可控性。在测试期间,我们需要能够:

  • 防止扫描测试模式意外地切换状态机输出,从而激活子系统的电源门控。
  • 防止扫描测试模式意外地切换隔离钳夹信号。
  • 防止扫描测试模式意外地断言恢复和损坏扫描寄存器中的数据。

因此,在测试模式下,所有来自电源门控控制器的信号都需要进行门控或多路复用。强制隔离信号和恢复关闭期间的扫描是一个最低的要求。一个更好的解决方案是在测试模式下提供对来自外部引脚或片上测试控制器的这些信号的直接控制。

在某些设计中,在测试期间强制关闭电源门控(强制所有电源门控块进入加电模式)是一种选择。但在许多设计中,由于芯片的整体功率限制,这是不可接受的做法。

5.6.2 扫描测试期间的功率限制

在扫描测试期间,扫描链中的所有触发器都可能在每个时钟中翻转。这意味着在测试期间,开关活动(以及动态功率)可以比正常运行时高得多。事实上,在扫描测试期间的动态功率可能会超过封装的能力,导致过热和对芯片的损害。

出于这个原因,我们希望能够关闭芯片中的所有电源门控块,除了一个正在测试的块。为此,我们需要能够在测试模式期间控制来自外部引脚的电源门控信号。我们还需要设计扫描链,使每个电源门控块都有单独的链。我们不能让被测块的扫描链通过一个断电的模块。

根据设计,可以复用芯片的IO引脚以提供所需的控制。在其他设计中,我们可能需要使用一个JTAG控制器和一些专用逻辑来控制这些电源门控、隔离和保留信号。

5.6.3 测试开关网络

开关网络中的制造问题难以检测到。控制缓冲器或开关晶体管故障可能导致一些电源门不能正确打开,导致过高的电压降。这可能导致最终产品不达到其性能规范。

其他缺陷可能会导致一些电源开关永久打开,从而导致电流消耗过大。这种情况可以使用IDDQ测试进行部分测试,但可能并不总是可检测到的。IDDQ阈值(s)应该被设置为验证电池寿命的任何必要的规格。

快速测试是一种自动的方法,能够识别一些故障的电源开关。高阻抗或电源开关中断可能导致关键路径的时序故障。转换故障测试将发现其中许多,有针对性的路径延迟测试可以解决其他问题。然而,没有一种解决方案是简单的,所以可能需要一些功能性的的测试。在测试开发期间必须注意,以确保对测试中的每个电源模式提供所有必要的时钟控制。

需要进行某种形式的静电流(IDDQ)测试来验证电源开关是否正确关闭。对于功率门控芯片,芯片被放入许多静息状态(每个“睡眠”模式至少一个),IDDQ被测量并与其指定值进行比较。泄漏测量可能需要很长时间,但专门的测量技术和DFT都可以减少测试时间和提高结果的质量。由于背景泄漏可能很高,现代IDDQ测试方法会比较多个测量值,有时是跨多个裸片(die),而不是设置单个阈值。

除了这些测试之外,需要确认电源域可以在不破坏其他(通电)块的行为和寄存器内容的前提下断电上电。此外,我们需要测试当其他块断电时保留寄存器是否保持状态。这样的测试可能相当具有挑战性,因为启动一个块的影响可能高度依赖于设计,同时也取决于相邻模块中进行了多少活动。但在某些设计中,可能值得开发功能向量来验证这种行为。

5.6.4 测试隔离和保留

在正常扫描测试过程中,我们将隔离控制信号强制设置到非钳夹状态。然后,作为芯片正常扫描测试的一部分,对隔离单元(处于非钳夹状态)的正确功能进行了测试。

我们可以用两种不同的方式来测试在钳夹状态下的隔离单元:

  • 我们可以使用功能测试
  • 我们可以重复接收块的扫描测试,同时钳夹被测试块的隔离输出。当隔离的输出钳夹在一个确知值时,这些就成为芯片其他块的固定输入

保留寄存器的制造测试要求0和1都可以保存和恢复。这可以通过一个特殊的扫描测试来实现:

  • .一个交替的1和零的模式被扫描到触发器中
  • 断言 SAVE(从我们的外部控制)
  • 交替的1和零的互补模式被扫描到触发器中
  • 可选地,模块断电,然后上电
  • 断言 RESTORE
  • 扫描出结果,并检查触发器是否已正确恢复

然后我们可以用1和0的反向模式来重复测试。

注意,在测试中包含了断电/上电,测试者必须可以控制待测试模块的电源门控。

5.6.5 测试功率门控控制器

通过上述技术,我们可以为功率门控设计提供有效的制造测试,只有一个例外:我们一直在强制功率门控控制器的输出。现在我们需要测试一下。

我们可以通过功能测试或扫描来测试功率门控控制器。功能测试将针对具体设计进行。扫描测试方法要求我们在扫描过程中强制功率控制器输出输出到适当的状态,这样我们可以避免在测试过程中意外地功率网格中上下跳变(即,功率不稳定)。促进这种控制的一个方法是将电源门控控制器封装在IEEE1500 封装中。这种方法确保了功率门控控制器的完全可控性和可观察性,同时允许我们保持控制器的输出在一个稳定值。

建议:

  • 测试期间,时钟和复位信号必须在外部控制
  • 电源门控控制信号也必须在外部控制
  • 在扫描测试过程中,隔离控制信号需要进行可控控制
  • 在扫描测试中,保留控制必须保持可控。
  • 在“stuck-on”功率门控可能导致终端客户系统中的产品故障的情况下,应提供对IDDQ测试的支持。

陷阱:

  • 为IDDQ测试确定适当的目标值是一个挑战。由于在整个制造过程中泄漏电流的广泛分布,功率门控静态电流测量只能相对于全电流测量。一种方法是要求每个测量都有一个相对于其他测量的值,例如要求睡眠状态泄漏小于操作泄漏的20%。

第五章翻结束~

 

 

这篇关于《低功耗方法学》翻译——第五章:设计功率门控的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/653633

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

怎么让1台电脑共享给7人同时流畅设计

在当今的创意设计与数字内容生产领域,图形工作站以其强大的计算能力、专业的图形处理能力和稳定的系统性能,成为了众多设计师、动画师、视频编辑师等创意工作者的必备工具。 设计团队面临资源有限,比如只有一台高性能电脑时,如何高效地让七人同时流畅地进行设计工作,便成为了一个亟待解决的问题。 一、硬件升级与配置 1.高性能处理器(CPU):选择多核、高线程的处理器,例如Intel的至强系列或AMD的Ry

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

SprinBoot+Vue网络商城海鲜市场的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质创作者,全网30w+

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已

单片机毕业设计基于单片机的智能门禁系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍程序代码部分参考 设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订

Spring的设计⽬标——《Spring技术内幕》

读《Spring技术内幕》第二版,计文柯著。 如果我们要简要地描述Spring的设计⽬标,可以这么说,Spring为开发者提供的是⼀个⼀站式的轻量级应⽤开发框架(平台)。 作为平台,Spring抽象了我们在 许多应⽤开发中遇到的共性问题;同时,作为⼀个轻量级的应⽤开发框架,Spring和传统的J2EE开发相⽐,有其⾃⾝的特点。 通过这些⾃⾝的特点,Spring充分体现了它的设计理念:在

开题报告中的研究方法设计:AI能帮你做什么?

AIPaperGPT,论文写作神器~ https://www.aipapergpt.com/ 大家都准备开题报告了吗?研究方法部分是不是已经让你头疼到抓狂? 别急,这可是大多数人都会遇到的难题!尤其是研究方法设计这一块,选定性还是定量,怎么搞才能符合老师的要求? 每次到这儿,头脑一片空白。 好消息是,现在AI工具火得一塌糊涂,比如ChatGPT,居然能帮你在研究方法这块儿上出点主意。是不

创业者该如何设计公司的股权架构

本文来自七八点联合IT橘子和车库咖啡的一系列关于设计公司股权结构的讲座。 主讲人何德文: 在公司发展的不同阶段,创业者都会面临公司股权架构设计问题: 1.合伙人合伙创业第一天,就会面临股权架构设计问题(合伙人股权设计); 2.公司早期要引入天使资金,会面临股权架构设计问题(天使融资); 3.公司有三五十号人,要激励中层管理与重要技术人员和公司长期走下去,会面临股权架构设计问题(员工股权激