当前位置: 首页 > article >正文

数字ic后端设计从入门到精通4(含fusion compiler, tcl教学)CMOS VLSI Design

Layout Design Rules


一、什么是 Layout Design Rules?

布局设计规则是一套用于指导芯片物理设计的几何约束条件,确保设计可以在特定制造工艺下被正确制造。这些规则通常由代工厂(foundry)提供,规定了最小线宽、间距、层间重叠等参数。

1. 基于微米(Micron-based)的设计规则

  • 工业界常用以**微米(μm)**为单位的具体数值来表示设计规则。
  • 比如一个0.18 μm工艺中,最小多晶硅宽度是0.18 μm。
  • 缺点:不同工艺之间的规则不能直接迁移,因为不是所有规则都能按比例缩放。

二、Scalable Design Rules(可扩展设计规则)

为了便于在不同工艺之间迁移设计,学术界和一些原型设计服务提出了可扩展设计规则

1. Mead & Conway 提出的 Lambda 规则

  • 引入了一个基本单位 λ(Lambda)Q,代表工艺分辨率的一半。
  • Q = ½ × 最小晶体管沟道长度(即最小多晶硅宽度)
  • 例如,在0.18 μm工艺中,Q = 0.09 μm。

2. 可扩展性的优势

  • 所有尺寸都以 Q 的整数倍表示。
  • 同一套布局可以适用于不同工艺,只需调整 Q 的值即可。
  • 虽然不如实际微米规则紧凑,但易于理解、学习和迁移。

三、MOSIS 设计规则简介

MOSIS 是一个面向学术和研究用途的低成本芯片原型服务平台,它采用了一套基于 Q 的通用可扩展设计规则

主要规则示例(适用于双金属层 n-well 工艺):

层级最小宽度/间距备注
金属层 / 扩散层4Q防止断路
接触孔(Contact)2Q × 2Q上下层需留出至少1Q的覆盖
多晶硅(Poly)2Q在晶体管区域需与扩散层重叠2Q
Poly 与 Contact 间距3Q确保不短路
N-well 包围 pMOS6Q并远离 nMOS 至少 6Q

这些规则虽然保守,但非常适合教学和初学者使用。


四、晶体管尺寸表示法(W/L)

晶体管的尺寸通常用其宽度与长度之比 W/L 来表示。

示例:

  • 图中展示了一个nMOS晶体管,W/L = 4/2。
  • 若Q=0.3 μm,则实际尺寸为:
    • 宽度 = 4 × Q = 1.2 μm
    • 长度 = 2 × Q = 0.6 μm
  • 这种尺寸被称为单元晶体管(unit transistor)

pMOS vs nMOS

  • pMOS晶体管通常更宽,因为空穴迁移率低于电子。
  • 例如,pMOS可能是2×unit width,而nMOS是1×unit width。

五、数字电路中的常见做法

在数字电路中,通常选择最小沟道长度的晶体管,原因如下:

  • 更快(短沟道晶体管响应更快)
  • 更小(节省面积)
  • 更省电(降低动态功耗)

因此,设计师常只标注晶体管的宽度倍数,默认使用最小长度。


六、总结

类型单位可扩展性应用场景
微米规则(Micron-based)μm❌差工业量产
Lambda/Q规则整数倍Q✅强学术、教学、快速原型设计

尽管随着工艺进入深亚微米(< 180 nm),工业规则变得极为复杂且不可扩展,但基于Q的简单规则仍然是理解复杂规则的基础。


芯片布局规划

物理设计始于芯片的布局规划,这一过程对主要单元的面积进行估算,并定义它们之间的相对位置。布局规划对于确定提议的设计是否符合预算的芯片面积以及估计连线长度和连线拥堵情况至关重要。

布局规划的重要性与迭代过程
  • 初步布局规划 应在逻辑大致确定后立即准备。该过程涉及反馈循环:布局规划往往会建议对逻辑(及微架构)做出更改,这又反过来影响布局规划。
  • 例如,假设微架构师认为某个缓存需要2周期的访问延迟。如果布局规划显示数据缓存可以放置在靠近执行单元的位置,则缓存访问时间可能减少到单个周期,从而允许微架构师在保持相同性能的同时减少缓存容量。一旦缓存缩小,就需要重新考虑布局规划以利用数据通路附近新获得的空间。
布局规划中的挑战与解决方案
  • 布局规划的一大挑战在于估算每个单元的大小而不必经过详细的芯片设计(这取决于布局规划和连线长度)。此部分假设已经做出了良好的估算,并描述了布局规划的样子。
  • 图1.62展示了包括垫框在内的MIPS处理器芯片布局规划。顶层块是控制器和数据通路。在这两个块之间留有一个布线通道,为控制信号提供通往数据通路的路由空间。数据通路进一步划分为字切片。垫框包含40个I/O垫,这些垫连接到芯片封装上的引脚。
特定于MIPS处理器的例子
  • 布局规划按比例绘制并标注尺寸。该芯片采用0.6μm工艺,在一个1.5×1.5毫米的芯片上设计,因此芯片的一边为5000λ。每个垫为750λ×350λ,因此垫框内的最大可能核心区域为3500λ×3500λ=12.25百万λ²。
  • 由于布线通道的存在,实际的核心区域为4.8百万λ²,大于各块面积之和。这种设计被称为“垫限制”,因为I/O垫决定了芯片面积。大多数商业芯片都是“核心限制”的,即芯片面积由除垫之外的逻辑决定。
芯片结构分类与布局策略
  • 芯片上的结构可分为随机逻辑、数据通路、阵列、模拟电路和输入/输出(I/O)。不同的结构有不同的布局需求:
    • 随机逻辑数据通路 通常使用标准单元构建,如反相器、NAND门和触发器。标准单元提高了生产力,因为每个单元只需绘制和验证一次。
    • 阵列 如RAMs、ROMs和PLAs,由二维重复的相同单元组成。自动布局生成器可用于内存阵列和随机逻辑,但对数据通路还不够成熟。
    • 模拟电路 需要仔细设计和仿真,但由于其相对较少的晶体管数量,涉及的布局也相对较小。
    • I/O单元 对每个制造工艺高度调优,通常由工艺供应商提供。

此外,在布局规划过程中选择金属方向也是一个重要的决策。例如,MIPS布局规划使用水平金属1线、垂直金属2线和水平金属3线。不同层之间交替的方向使得在不同层上交叉走线变得容易。这种安排有助于优化芯片内部的布线效率,减少潜在的信号干扰,并支持更紧凑的设计。通过这样的方法,设计师能够有效地规划芯片的各个组成部分,确保高效利用芯片面积,并达到预期的性能目标。

标准单元(Standard Cells)

在现代集成电路设计中,标准单元(Standard Cells) 是一种高度结构化的布局方法,广泛用于数字逻辑电路的自动化设计。它们是预先设计好的、具有固定高度但可变宽度的功能模块(如反相器、与非门、触发器等),可以在芯片上按行排列,并通过金属线进行互连。


一、标准单元的基本结构

根据文中描述的标准单元库(见书中内封面图示),其布局具有以下特点:

  • 电源和地线(Power & Ground):使用 Metal1 层水平布线。
    • 宽度为 8Q,以承载更大的电流。
    • 中心间距为 90Q。
  • 晶体管区域划分
    • nMOS 晶体管 放置在单元底部 40Q 的区域内。
    • pMOS 晶体管 放置在顶部 50Q 的区域内。
  • 阱接触与衬底接触:放置在电源/地线轨道下方,确保 n-well 和 p-substrate 正确偏置。
  • 输入输出引脚:使用 Metal2 层垂直布线,便于跨行连接。
  • 多晶硅(Polysilicon):垂直方向运行,形成晶体管栅极。
  • 扩散层(Diffusion)和 Metal1:通常水平布线,但在必要时 Metal1 也可垂直走线以节省空间。

二、单元尺寸与对齐规则
  • 所有单元的宽度都是 8Q 的整数倍,这样可以保证 Metal2 布线轨道的数量为整数。
  • 单元按行排列(tiled in rows),每行之间至少保留 110Q 的垂直间距
  • 在双金属层工艺中,Metal1 水平布线 通常放置在行之间的布线通道中,布线通道的高度取决于需要布线的信号数量。

三、自动布局布线工具的应用

随着 EDA 工具的发展,现代 IC 设计越来越多地依赖于 自动布局布线(Place & Route, P&R)工具

  • 图1.64 展示了一个控制器的自动布局结果。虽然图中省略了 pMOS 晶体管周围的 n-well 区域,但仍可以看出单元的整齐排列。
  • 使用这些工具可以快速将逻辑网表映射到标准单元库中,并完成布线任务。

四、多层金属对布线的影响

当工艺支持更多金属层时,布线方式也发生变化:

  • 三金属层工艺(3-level metal process)
    • Metal3 水平布线,间距为 10Q。
    • 每个单元上方可容纳 11 条水平布线轨道
    • 如果这个数量足以满足所有水平连线需求,则可以省去传统的布线通道。

这种“Over-the-cell routing(OTC)”技术显著提高了布线效率,减少了芯片面积浪费。


五、从 RTL 到物理实现的全流程设计
  • 现代自动综合工具和布局布线工具已经足够强大,能够将高级语言(如 VHDL 或 Verilog)描述的逻辑直接映射到标准单元。
  • 图1.65 展示了一个完整的 8 位 MIPS 处理器从 VHDL 描述自动生成物理布局的结果,采用的是 130nm 工艺、7 层金属。
  • 虽然合成后的设计缺乏明显的手工优化结构(如清晰的数据通路或控制单元边界),但可以看到约有 26 行标准单元 排列在布线之下。
  • 总面积约 4 MQ²(即 4 百万 Q²)

六、标准单元设计的优势与局限性
特性优势劣势
设计效率高,可完全自动化面积利用率不如定制设计
性能一般稍逊于定制设计可预测性强,适合大规模设计
易用性易于复用、验证缺乏结构性,后期优化困难
成本低设计成本,适合量产不适用于高性能关键路径

小结

标准单元法是一种高效且结构化的设计方法,特别适合使用自动化工具进行大规模数字系统的设计。它简化了布局布线过程,使得设计师可以专注于功能实现而非物理细节。尽管其性能和面积可能略逊于手工优化的定制设计,但在大多数商业应用中,标准单元仍是首选方案,尤其是在时间紧迫、资源有限的情况下。

Pitch Matching(间距匹配)

在集成电路物理设计中,Pitch Matching(间距匹配) 是一种优化布局密度和互连效率的关键技术。它要求相邻单元在连接边界上具有相同的尺寸(即“对齐”),以便它们能够“无缝拼接”在一起。


一、间距匹配的背景与意义

在图1.64中展示的控制器布局中,芯片面积主要被**布线通道(routing channels)**占据。这些通道是为了让金属线穿过标准单元之间预留的空间,虽然便于布线,但会显著增加整体面积。

为了提高布局密度并减少长连线带来的延迟,可以采用一种更紧凑的设计方法:将互连线直接集成到单元内部,使单元之间能够无缝对接(snap together)。这种方法需要满足一个前提条件:相邻单元必须在连接边上的尺寸一致,也就是实现 pitch matching


二、什么是 Pitch?

在标准单元设计中,“pitch” 指的是一个单元在某个方向上的总宽度或高度,包括其内容加上必要的空白空间(如供电轨道、布线空间等)。通常我们关注两个方向的 pitch:

  • 水平方向 pitch:单元的宽度,决定它能否与其他单元横向对接。
  • 垂直方向 pitch:单元的高度,决定了它能否与上下行中的其他单元纵向对接。

三、间距匹配的实际影响
  • 如图1.66所示,如果单元 D 的宽度小于与其连接的单元 B 和 C,则无法完全对接,导致留下空隙,浪费面积。
  • 如果增加单元 D 的宽度以匹配 B/C,虽然解决了对接问题,但也可能迫使 B 或 C 增大,从而影响整个模块的总面积。

因此,在进行 pitch 匹配设计时,需要从全局出发,协调各个模块的大小,以达到最优的整体面积和性能。


四、MIPS 数据通路中的实例(图1.67)

图1.67展示了 MIPS 处理器数据通路的详细布局结构,其中体现了多个 pitch-matched 单元的应用:

  • 8个水平字切片(bitslices):清晰可见,每个 bitslice 处理一位数据,且它们在宽度上保持一致,确保了水平方向的 pitch 匹配。
  • 顶部的 zipper 行:包含3行解码器电路,这些解码器在垂直方向上与寄存器文件(register file)实现了 pitch 匹配,使得它们可以直接堆叠在一起,无需额外布线通道。
  • 控制信号布线
    • 使用 Metal2(第二层金属) 垂直布线,用于传输时钟、多路选择器控制信号、寄存器使能信号等。
  • 数据路径布线
    • 使用 Metal3(第三层金属) 水平布线,位于单元上方,用于在同一 bitslice 内传输数据信号。

这种结构利用了多层金属的优势,实现了高效的数据传输和模块间的紧密集成。


五、数据通路单元的尺寸估算
  • 单元高度(Height)
    • 取决于晶体管宽度以及需要在上方布线的 Metal3 线条数量。
    • 对于较简单的数据通路,典型高度为 60–100Q
  • 单元宽度(Width)
    • 取决于单元内部逻辑的复杂度。例如,ALU bitslice 比加法器 bitslice 更宽。
    • 所有 bitslice 应尽量统一宽度,以实现水平方向的 pitch 匹配。

六、总结
概念描述
Pitch Matching相邻单元在连接边上的尺寸一致,实现无缝拼接
Snap-together Cells集成布线的紧凑单元,减少布线通道,提升面积利用率
优势减少芯片面积、缩短连线长度、提升性能
挑战需要全局规划、协调各模块尺寸、增加设计复杂度
应用场景数据通路、寄存器文件、高速关键路径等结构化模块

通过合理使用 pitch matching 技术,设计师可以在不牺牲功能性的前提下,大幅提升芯片的面积利用率和电气性能。它是现代高性能 ASIC 设计和 SoC 架构中不可或缺的一部分。

Slice Plans(切片规划)

在集成电路设计中,Slice Plan(切片规划) 是一种用于描述和分析数据通路(datapath)结构的高级布局抽象方法。它主要用于帮助设计师在实际进行物理布局之前,快速估算布线需求、面积开销以及潜在的布线拥堵情况。


一、什么是 Slice Plan?

一个 slice plan 展示了数据通路中各个“位切片”(bitslice)的排列顺序,以及每个 bitslice 内部布线轨道(wiring tracks)的分配情况。

  • 每个 bitslice 对应于数据通路中处理一位数据的部分。
  • 图中的点(dot)表示某条总线信号经过该单元,并且在该单元中被使用。
  • 每个单元都标注了其类型和宽度(以 tracks 为单位),便于计算整体宽度。

例如:

在图1.68中,“pc”是程序计数器寄存器(PC flop)的输出,同时也作为 srcA 和地址多路复用器的输入。这表明这条信号线需要在多个 bitslice 中传递和使用。


二、Slice Plan 的作用
  1. 估算布线长度与拥堵情况

    • Slice plan 可以清晰地展示哪些区域会有较多的信号线穿过或使用,从而提前识别出可能的布线瓶颈。
    • 例如,在图中可以看到,寄存器文件上方有七条布线轨道被同时使用,是整个数据通路中最拥挤的地方
  2. 面积估算

    • 每个 bitslice 的宽度(tracks)可以从标准单元库中查得。
    • 将所有 bitslice 的宽度相加,即可得到整个数据通路的总宽度(以 tracks 或 λ 表示)。
      • 示例:319 tracks × 8λ/track = 2552λ 宽度
    • 数据通路的高度由行数和每行的 pitch(间距)决定。
      • 示例:共 12 行(8 个 bitslice + 1 个 zipper + 3 个地址解码器)
      • 每行高度为 110λ → 总高度 = 12 × 110λ = 1320λ
  3. 空间利用率分析

    • 地址解码器通常只占据其所在行的一小部分,其余空间可能未被利用。
    • 在更紧凑的设计中,可以考虑让控制器或其他模块共享这些空闲区域,提高芯片面积利用率。

三、Slice Plan 的组成要素
元素描述
Bitslices每个 bitslice 处理一位数据,如 ALU、加法器、移位器等
Wires/Buses用线条表示信号线,点表示该信号在该单元中被使用
Tracks布线轨道数量,反映布线密度和复杂度
Width Annotation每个单元的宽度(以 tracks 数表示)
Row Count整个数据通路包含多少行(bitslice + 控制逻辑)

四、Slice Plan 的优势
  • 快速评估设计可行性:无需完整布局即可预估面积和布线难度。
  • 优化布局前的重要参考:可指导后续的 floorplan 和 place & route 工作。
  • 促进模块化设计:通过 slice plan 明确各功能模块之间的连接关系。
  • 节省时间成本:避免在不合理的架构上投入过多精力进行详细布局。

五、总结
概念说明
Slice Plan用于数据通路的高层次布局规划工具
用途布线拥堵分析、面积估算、模块化设计支持
关键指标Bitslice 数量、布线轨道数、单元宽度、行数与行高
优点快速、直观、实用,适用于早期设计阶段

Arrays(阵列结构)

在集成电路设计中,Arrays(阵列) 是一种高度规则化的布局结构,通常用于实现具有重复功能的模块,如存储器(RAM、ROM)、可编程逻辑阵列(PLA)、乘法器等。这类结构因其规则性而非常适合自动化布局和面积估算。


一、PLA(Programmable Logic Array)简介

图1.69 展示了一个用于控制有限状态机(FSM)的 可编程逻辑阵列(PLA),它实现了下一状态逻辑和输出逻辑的功能。

  • AND 平面(左侧):用于生成输入变量的各种组合项(即“与项”或“最小项”)。
  • OR 平面(右侧):将这些与项进行逻辑或操作,得到最终的输出函数。

PLA 可以实现任意一个以“积之和”(sum-of-products)形式表示的布尔函数,是一种非常灵活的组合逻辑实现方式。更多细节见第12.7节。


二、PLA 的布局与面积估算

PLA 的布局具有很强的规律性,因此其面积可以很容易地通过以下方式估算:

1. 垂直方向(宽度):
  • 每个输入信号占用 2 个垂直轨道(vertical tracks)
  • 每个输出信号占用 3 个垂直轨道
  • 额外开销(如电源线、控制信号等)约需 6 个轨道
2. 水平方向(高度):
  • 每个乘积项(product term / minterm)占用 1.5 个水平轨道
  • 额外开销(如布线空间、控制电路)约需 14 个轨道

由此可以推算出整个 PLA 所需的轨道数量,并结合每个轨道的尺寸(通常为8λ),换算成实际面积。


三、PLA 实际面积计算示例

文中给出的具体数据如下:

  • PLA 主体区域:500λ × 350λ
  • 外部寄存器部分(四个 Flip-Flop):336λ × 220λ

这些 Flip-Flop 是 FSM 控制逻辑的一部分,但由于无法集成到 PLA 内部,所以作为额外模块放置在外围。

整个控制器的高度由 PLA 的高度加上一些布线通道决定。


四、PLA 与综合控制器的对比
特征PLA 控制器综合控制器(图1.64)
设计方式手工规划、结构化自动综合、标准单元
面积500λ × 350λ + 外围寄存器1500λ × 400λ
布局效率高(规则性强)较低(布线浪费较多)
性能更快(固定结构,延迟可控)稍慢(路径不规则)
设计难度中高(需要手动优化)低(自动综合工具完成)

从这个对比可以看出,虽然综合控制器的设计过程更加高效,但其面积利用率明显低于 PLA 结构。这主要是因为自动综合工具产生的布线通道占用了大量空间。


五、Array 结构的优势与适用场景
优势应用场景
高密度布局存储器(RAM、ROM)
易于面积估算数据通路中的 ALU、移位器等
高性能控制逻辑(如 PLA)
易于复用IP 模块、FPGA 架构

小结

阵列结构(如 PLA)是数字 IC 设计中非常重要的一类结构,尤其适用于需要实现复杂组合逻辑、且对面积和性能有较高要求的场合。它们的规则性和可预测性使得手工设计和面积估算变得相对简单,同时也便于自动化工具生成。

尽管现代设计越来越依赖于标准单元库和自动综合工具,但在某些关键路径或核心控制模块中,采用 PLA 或其他阵列结构仍然能够显著提升芯片的整体效率和性能。

Area Estimation(面积估算)

一个优秀的布局规划依赖于合理的面积估算,而这种估测在逻辑设计最终确定之前可能是困难的。有经验的设计者可能通过比较过去类似模块的面积来估计当前模块的面积。如果没有这样的数据可供参考,表1.10提供了一些典型的数值用于面积估算。

面积估算中的关键因素:
  • 大型布线通道:需要考虑以8 Q/轨道间距的大布线通道。
  • 晶体管尺寸:较大的晶体管显然占用更大的面积,这可以通过宽度(W)和长度(L)作为函数纳入面积估算中。
  • 存储器外围电路:对于存储器而言,不要忘了解码器和其他外围电路,它们通常占据与存储比特本身一样多的面积。
  • 密度差异:数据通路和阵列通常比标准单元实现更高的密度。

图1.68展示了数据通路片计划(datapath slice plan),其中包含了各种基本逻辑组件如多路复用器、寄存器、加法器等。该图帮助设计师了解各功能块之间的连接关系以及如何有效地安排这些组件,以便优化面积使用。

表1.10 列出了不同元素的典型布局密度,例如随机逻辑、数据通路、SRAM、DRAM、ROM等的面积估算。这些数据为设计师提供了基础,使得他们可以根据项目的具体需求做出更准确的面积预测。

设计调整与保守估算
  • 微调设计:只要有足够的时间,几乎总是可以在设计中削减几lambda的空间。然而,除非某个元素重复出现次数众多,占芯片总面积的主要部分,或者因为布局错误导致某区块空间不足需要缩小,否则进行这样的努力往往不是好的投资。
  • 保守估算的重要性:在布局规划时采取保守的面积估算尤为重要,特别是当存在增加更多功能性的风险时。

PLA for Control FSM (控制FSM的PLA)

图1.69展示了一个用于控制有限状态机(FSM)的可编程逻辑阵列(PLA)。PLA可以计算任何以积之和形式表示的函数,它由AND平面和OR平面组成,分别用于生成输入变量的各种组合项,并将这些组合项进行逻辑或操作得到最终输出函数。PLA因其规则性结构,易于进行面积估算和布局设计。

表1.10 典型布局密度

元件面积
随机逻辑(双层金属工艺)1000 – 1500 Q² / 晶体管
数据通路250 – 750 Q² / 晶体管 或 6WL + 360 Q² / 晶体管
SRAM1000 Q² / bit
DRAM(在DRAM工艺中)100 Q² / bit
ROM100 Q² / bit

此外,一些单元库供应商会指定典型的标准单元布局密度,以kgates/mm²表示。一般情况下,一个门被定义为包含六个晶体管的三输入静态CMOS NAND或NOR。在具有八个金属层的65nm工艺中(Q约为0.03μm),对于随机逻辑,可以达到160–500 kgates/mm²的密度,相当于大约370–1160 Q²/晶体管。具有多个金属层的工艺由于不需要布线通道,因此能够获得高密度。

综上所述,有效的面积估算是集成电路设计流程中的重要环节,它直接影响到整个芯片的布局规划和性能表现。通过合理利用历史数据和典型值,结合具体的项目要求,设计师可以制定出更加精确和高效的布局方案。

相关文章:

数字ic后端设计从入门到精通4(含fusion compiler, tcl教学)CMOS VLSI Design

Layout Design Rules 一、什么是 Layout Design Rules&#xff1f; 布局设计规则是一套用于指导芯片物理设计的几何约束条件&#xff0c;确保设计可以在特定制造工艺下被正确制造。这些规则通常由代工厂&#xff08;foundry&#xff09;提供&#xff0c;规定了最小线宽、间距、…...

win10 局域网内聊天

在 Windows 10 的局域网 中&#xff0c;如果你想实现 多个用户之间的聊天功能&#xff0c;可以选择以下几种方案&#xff0c;取决于你需要的是&#xff1a; • ✅ 命令行纯文字聊天&#xff08;如 Linux talk&#xff09; • ✅ 图形界面聊天室 • ✅ 局域网广播消息 • ✅ 多人…...

STM32-DMA数据转运(8)

目录 一、简介 二、存储器映像 三、DMA框图​编辑 四、DMA基本结构 五、两个数据转运的实例 一、简介 直接存储器存取简称DMA&#xff08;Direct Memory Access&#xff09;&#xff0c;它是一个数据转运小助手&#xff0c;主要用来协助CPU&#xff0c;完成数据转运的工作…...

电机控制储备知识学习(一) 电机驱动的本质分析以及与磁相关的使用场景

目录 电机控制储备知识学习&#xff08;一&#xff09;一、电机驱动的本质分析以及与磁相关的使用场景1&#xff09;电机为什么能够旋转2&#xff09;电磁原理的学习重要性 二、电磁学理论知识1&#xff09;磁场基础知识2&#xff09;反电动势的公式推导 附学习参考网址欢迎大家…...

使用 React 实现语音识别并转换功能

在现代 Web 开发中&#xff0c;语音识别技术的应用越来越广泛。它为用户提供了更加便捷、自然的交互方式&#xff0c;例如语音输入、语音指令等。本文将介绍如何使用 React 实现一个简单的语音识别并转换的功能。 功能概述 我们要实现的功能是一个语音识别测试页面&#xff0…...

[Git]ssh下用Tortoisegit每次提交都要输密码

问题描述 ssh模式下&#xff0c;用小乌龟提交代码&#xff0c;即使在git服务端存储了公钥&#xff0c;仍然要每次输入密码。 原因分析 小乌龟需要额外配置自己的密钥&#xff0c;才能免除每次输密码。 解决方案 1.配置好ssh密钥 具体方法参考我前一篇文章&#xff1a; […...

如何查看项目是否支持最新 Android 16K Page Size 一文汇总

前几天刚聊过 《Google 开始正式强制 Android 适配 16 K Page Size》 之后&#xff0c;被问到最多的问题是「怎么查看项目是否支持 16K Page Size」 &#xff1f;其实有很多直接的方式&#xff0c;但是最难的是当你的项目有很多依赖时&#xff0c;怎么知道这个「不支持的动态库…...

ESP32C3连接wifi

文章目录 &#x1f527; 一、ESP32-C3 连接 Wi-Fi 的基本原理&#xff08;STA 模式&#xff09;✅ 二、完整代码 注释讲解&#xff08;适配 ESP32-C3&#xff09;&#x1f4cc; 三、几个关键点解释&#x1f51a; 四、小结 &#x1f527; 一、ESP32-C3 连接 Wi-Fi 的基本原理&a…...

HTTP方法和状态码(Status Code)

HTTP方法 HTTP方法&#xff08;也称HTTP动词&#xff09;主要用于定义对资源的操作类型。根据HTTP/1.1规范&#xff08;RFC 7231&#xff09;以及后续扩展&#xff0c;常用的HTTP方法有以下几种&#xff1a; GET&#xff1a;请求获取指定资源的表示形式。POST&#xff1a;向指…...

机器学习中分类模型的常用评价指标

评价指标是针对模型性能优劣的一个定量指标。 一种评价指标只能反映模型一部分性能&#xff0c;如果选择的评价指标不合理&#xff0c;那么可能会得出错误的结论&#xff0c;故而应该针对具体的数据、模型选取不同的的评价指标。 本文将详细介绍机器学习分类任务的常用评价指…...

# YOLOv3:基于 PyTorch 的目标检测模型实现

YOLOv3&#xff1a;基于 PyTorch 的目标检测模型实现 引言 YOLOv3&#xff08;You Only Look Once&#xff09;是一种流行的单阶段目标检测算法&#xff0c;它能够直接在输入图像上预测边界框和类别概率。YOLOv3 的优势在于其高效性和准确性&#xff0c;使其在实时目标检测任…...

MySQL的Docker版本,部署在ubantu系统

前言 MySQL的Docker版本&#xff0c;部署在ubantu系统&#xff0c;出现问题&#xff1a; 1.执行一个SQL&#xff0c;只有错误编码&#xff0c;没有错误提示信息&#xff0c;主要影响排查SQL运行问题&#xff1b; 2.这个问题&#xff0c;并不影响实际的MySQL运行&#xff0c;如…...

Mac QT水平布局和垂直布局

首先上代码 #include "mainwindow.h" #include "ui_mainwindow.h" #include <QPushButton> #include<QVBoxLayout>//垂直布局 #include<QHBoxLayout>//水平布局头文件 MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), …...

服务器制造业中,L2、L6、L10等表示什么意思

在服务器制造业中&#xff0c;L2、L6、L10等是用于描述服务器生产流程集成度的分级体系&#xff0c;从基础零件到完整机架系统共分为L1-L12共12个等级。不同等级对应不同的生产环节和交付形态&#xff0c;以下是核心级别的具体含义&#xff1a; L2&#xff08;Level 2&#xf…...

回答 | 图形数据库neo4j社区版可以应用小型企业嘛?

刚在知乎上看到了一个提问&#xff0c;挺有意思&#xff0c;于是乎&#xff0c;贴到这里再简聊一二。 转自知乎提问 当然可以&#xff0c;不过成本问题不容小觑。另外还有性能上的考量。 就在最近&#xff0c;米国国家航空航天局——NASA因为人力成本问题&#xff0c;摒弃了使…...

Linux操作系统从入门到实战(二)手把手教你安装VMware17pro与CentOS 9 stream,实现Vim配置,并配置C++环境

Linux操作系统从入门到实战&#xff08;二&#xff09;手把手教你安装VMware17pro与CentOS 9.0 stream&#xff0c;实现Vim配置&#xff0c;并编译C文件 前言一、安装VMware17pro二、安装CentOS9.02.1 为什么选择CentOS9&#xff0c;与CentOS7对比2.1 官网下载CentOS9.02.2 国内…...

软考架构师考试-UML图总结

考点 选择题 2-4分 案例分析0~1题和面向对象结合考察&#xff0c;前几年固定一题。近3次考试没有出现。但还是有可能考。 UML图概述 1.用例图&#xff1a;描述系统功能需求和用户&#xff08;参与者&#xff09;与系统之间的交互关系&#xff0c;聚焦于“做什么”。 2.类图&…...

后端系统做国际化改造,生成多语言包

要将你当前系统中的 中文文案提取并翻译为英文语言包&#xff0c;建议采用 自动扫描 翻译辅助 语言包生成 的方式&#xff0c;流程如下&#xff1a; ✅ 一、目标总结 提取&#xff1a;扫描后端 C# 和 Java 代码中的 中文字符串 翻译&#xff1a;将中文自动翻译为英文&#x…...

论文学习_Trex: Learning Execution Semantics from Micro-Traces for Binary Similarity

摘要&#xff1a;检测语义相似的函数在漏洞发现、恶意软件分析及取证等安全领域至关重要&#xff0c;但该任务面临实现差异大、跨架构、多编译优化及混淆等挑战。现有方法多依赖语法特征&#xff0c;难以捕捉函数的执行语义。对此&#xff0c;TREX 提出了一种基于迁移学习的框架…...

在VirtualBox中安装虚拟机后不能全屏显示的问题及解决办法

在VirtualBox中安装Windows或Linux虚拟机后&#xff0c;将遇到启动虚拟机后&#xff0c;只能在屏幕中的一块区域里显示虚拟机桌面&#xff0c;却不能全屏显示的问题。要解决此问题&#xff0c;需要在虚拟机中安装与VirtualBox版本相对应的VBox GuestAdditons软件。 这里…...

《大规模电动汽车充换电设施可调能力聚合评估与预测》MATLAB实现计划

模型概述 根据论文&#xff0c;我将复刻实现结合长短期记忆网络(LSTM)和条件变分自编码器(CVAE)的预测方法&#xff0c;用于电动汽车充换电设施可调能力的聚合评估与预测。 实现步骤 1. 数据预处理 导入充电数据 (Charging_Data.csv)导入天气数据 (Weather_Data.csv)导入电…...

CSS flex:1

在 CSS 中&#xff0c;flex: 1 是一个用于弹性布局&#xff08;Flexbox&#xff09;的简写属性&#xff0c;主要用于控制 flex 项目&#xff08;子元素&#xff09;如何分配父容器的剩余空间。以下是其核心作用和用法&#xff1a; 核心作用 等分剩余空间&#xff1a;让 flex …...

Python 字典键 “三变一” 之谜

开头&#xff1a;读者的“玄学”字典谜题 上周&#xff0c;朋友发来了一段让他抓耳挠腮的代码&#xff1a; >>> {True: foo, 1: bar, 1.0: baz} {True: baz} “我明明定义了布尔True、整数1、浮点数1.0三个键&#xff0c;结果字典里只剩True一个键&#xff0c;值…...

Spring Boot中HTTP连接池的配置与优化实践

精心整理了最新的面试资料和简历模板&#xff0c;有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 一、HTTP连接池的核心价值 在微服务架构和分布式系统场景中&#xff0c;HTTP客户端频繁创建/断开连接会产生显著的性能损耗。通过连接池技术可以实现&#x…...

初识XML

初识XML <?xml version"1.0" encoding"utf-8" ?> <!--根标签只能有一个--> <!--第一行永远都是 <?xml version"1.0" encoding"utf-8" ?> 前面不允许出现任何其他东西&#xff0c;空格换行等均不行 --> &…...

element-ui分页的使用及修改样式

1.安装 npm install element-ui -S 2.在main.js中引入,这里是全部引入&#xff0c;也可以按需引入 import ElementUI from element-ui import element-ui/lib/theme-chalk/index.css Vue.use(ElementUI) 3.使用 layout"prev, pager, next, jumper" &#xff1a;jumpe…...

2025年第十六届蓝桥杯软件赛省赛C/C++大学A组个人解题

文章目录 题目A题目C&#xff1a;抽奖题目D&#xff1a;红黑树题目E&#xff1a;黑客题目F&#xff1a;好串的数目 https://www.dotcpp.com/oj/train/1166/ 题目A 找到第2025个素数 #include <iostream> #include <vector> using namespace std; vector<i…...

物理:人的记忆是由基本粒子构成的吗?

问题: 基因属于人体的一部分,记忆也是人体的一部分,那么为什么基因可以代际遗传,但是记忆却被清空重置。如果基因是由粒子构成,那么记忆是不是也应该由粒子构成?如果记忆是粒子构成的,那么能否说明记忆永恒,即使死亡了身体被分解了,那么只要保证其身体有关的所有粒子被…...

Memcached 的特性和使用场景介绍,以及集群搭建

以下是 Memcached 的特性和使用场景介绍,以及集群搭建的详细示例: 特性 高性能 内存存储:数据存储在内存中,读写速度极快。简单协议:使用基于文本的简单协议,通信高效。分布式架构 一致性哈希:采用一致性哈希算法,将数据均匀分布到多个节点,支持动态增减节点,减少数…...

uni-app,小程序中的addPhoneContact,保存联系人到手机通讯录

文章目录 方法详解简介 基本语法参数说明基础用法使用示例平台差异说明注意事项最佳实践 方法详解 简介 addPhoneContact是uni-app框架提供的一个实用API&#xff0c;用于向系统通讯录添加联系人信息。这个方法在需要将应用内的联系人信息快速保存到用户设备通讯录的场景下非…...