资讯动态

数字芯片设计基石:标准单元(Standard Cell)从原理到后端实践

发布时间:2026/10/13 15:48:05 来源:尧图企业网站定制
第一次接触数字后端时我最困惑的问题不是“怎么用工具”而是“工具到底在操作什么东西”。打开版图看到密密麻麻的图形感觉像在看一座陌生城市的排水系统。直到有人告诉我一句话你看到的这些绝大多数都是标准单元也就是Standard Cell。这句话之后整个数字芯片设计流程突然串起来了。如果你也是刚开始接触芯片设计或者对“标准单元”这个基础概念一直只知其名不知其里这篇文章就是为你准备的。我会从它为什么会出现、内部长什么样、库里有哪几类、参数表怎么读再到综合和布局布线里它怎么被“消费”最后补一些实际项目里踩过的坑。希望能帮你把这块“乐高积木”拼进自己的知识版图里。1. 从手工摆放晶体管到“标准化积木”标准单元诞生的底层逻辑1.1 早期设计一个晶体管一个晶体管地画在上世纪六七十年代数字芯片设计的画风完全不一样。工程师拿到逻辑图之后要在版图编辑器里一个晶体管一个晶体管地摆放一个接一个地画金属连线。PMOS放哪NMOS放哪栅极怎么弯才不会浪费面积电源线从哪里绕过来最顺——这些全得靠手工判断。那个年代设计一颗芯片团队规模通常不小但效率仍然很低。几千只晶体管可能还算好一旦设计规模到几万个晶体管手绘版图就变成了一件几乎不可能完成的任务。更尴尬的是不同工程师画出来的“与非门”长得还不一样有人喜欢竖着摆有人习惯横着放引脚位置也不同。导致下一颗芯片想复用之前的设计资产时基本要重新来一遍。我当时看到早期芯片的照片时核心感受是“像手工艺品”。它确实有工艺美感但这种方式没法规模化。芯片产业要放大规模必须先解决“晶体管怎么批量摆进去”的问题而答案就是标准单元。1.2 “标准”两个字到底标准在哪里标准单元最核心的思路是把数字电路里那些高频出现的基础功能——反相器、与非门、或非门、触发器——做成一批“规格统一”的固定版图块然后像拼积木一样把它们并排放在一起。这里说的“标准”不是指所有单元长得一样而是指它们遵循一套共同的约束高度一致所有标准单元在版图里拥有相同的高度这个高度通常对应一个“行高”row height比如若干条布线轨道。宽度则根据逻辑复杂度和驱动能力变化想宽就宽、想窄就窄。电源轨位置统一每个单元顶部是VDD底部是VSS或者反过来相邻单元并排后电源轨自动接成一条完整的长线。引脚落在规定网格上输入输出引脚pin的高度层、水平位置都在设计规则允许的网格内这样单元放好之后金属线从上方或下方穿过就能稳定地访问到引脚。拼接触发器机制两个单元左右相邻时边界处没有冲突不需要额外留出安全间隙直接并靠即可这个特性在EDA里叫abutment。正因为有了这些约束布局工具才敢放心地把几千个、几百万个单元一排排摆下去而不需要每次判断单元边界是否合法。标准单元的“标准”本质上是把物理设计里的自由度砍掉一大截换取自动化。1.3 从“单元”到“单元库”一次设计反复复用单个单元只是积木真正有价值的是“一整套积木”也就是标准单元库。库里面包含了几百种不同功能、不同尺寸、不同性能的单元。为什么要做成“库”因为芯片设计本质上是一次大投入、无数次复用的过程。一个单元从电路设计到版图实现再到工艺验证背后要经过原理图仿真、版图设计、设计规则检查、电路一致性检查、寄生参数提取等一系列流程。这套流程成本很高但库建好之后所有芯片项目都能共用。这也带来了两个直接影响设计周期大幅缩短逻辑设计人员不用关心晶体管级电路怎么画物理设计人员不用一扇门一扇门地手工摆放。设计质量相对可控库里的每个单元都经过了完整物理验证只要按规则使用不太容易出现底层电路问题。我经常打一个比方标准单元就是乐高里那块最基础的2×4砖块。你可以用它搭墙、搭车、搭房子但不用自己开模去生产一块砖。芯片设计里那些复杂的CPU、GPU、通信基带本质上就是几十亿块标准单元砖通过金属线拼出来的。2. 拆开一块标准单元CMOS内部结构的物理细节2.1 先看懂CMOS晶体管的“四个端口”要理解标准单元内部长什么样先得把单个晶体管看明白。CMOS工艺里的晶体管无论是老的平面工艺还是后来主流的鳍式工艺核心端口都可以理解为四端器件栅极Gate控制极像“水龙头开关”。在版图里通常是一条多晶硅或金属层图形。源极Source电荷出发的一端。漏极Drain电荷到达的一端。体/衬底端Bulk可简单理解为晶体管“底座”的电位。PMOS在N阱里NMOS在P型衬底或P阱里。体端的电压必须接对否则晶体管容易出现闩锁等问题。很多人初学时分不清源漏其实在数字单元里不用太纠结PMOS和NMOS天然互补源漏对称真正要记住的是电源从哪进、地又从哪出以及栅极控制当前通路是导通还是截止。一个标准单元就是把若干PMOS和NMOS组合起来实现一个布尔逻辑功能。最经典的是反相器上面一个PMOS接到VDD下面一个NMOS接到VSS两个栅极连在一起作为输入两个漏极连在一起作为输出。输入为高时NMOS导通拉到地输入为低时PMOS导通拉到VDD。输出永远和输入反相这就是最基础的标准单元。2.2 一个二输入与非门的单元内部构造以数字电路里最常见的二输入与非门NAND2为例看看一个标准单元内部是怎么组织的。逻辑功能很简单只有两个输入都为高时输出才为低。CMOS实现方式是两个PMOS并联连接在VDD和输出之间两个NMOS串联连接在输出和VSS之间。物理排布上标准单元内部有非常明显的“分区感”上半部分PMOS所在的N阱区域PMOS通常横向排布源端接VDD。下半部分NMOS所在的P阱/P衬底区域NMOS也横向排布源端接VSS。中间一条水平走向的多晶硅栅极图形穿过PMOS和NMOS的有源区形成栅极。输入信号从栅极接入。输出节点由PMOS漏区和NMOS漏区共同连接到某一条金属层上的输出引脚。这个布局结构直接决定了标准单元“等高”的物理基础。单元高度必须能容纳两条水平方向的晶体管阵列加上电源轨、有源区、栅极间距和必要的隔离区域。版图画得越紧单元高度越低芯片面积越小但这又受限于工艺设计规则。注意NAND2这种串并结构只是最简单的例子。像AOI与或非门、加法器里的复合门、选择器MUX内部结构会更复杂但底层思路一致用P管网络接通VDD的“上拉路径”用N管网络接通VSS的“下拉路径”两组网络受同样的输入信号控制互为镜像关系。2.3 为什么所有单元必须等高前面提到“等高”是标准单元最核心的物理约束。这件事值得展开讲讲因为很多人理解“等高”只是觉得排得整齐但在物理设计里它直接影响布线效率和电源分配方式。单元在芯片里不是散着放的而是按“行”排列。一行单元顶部都有一条VDD电源轨底部都有一条VSS电源轨。上下两行单元相邻时上面一行的底部VSS会和下面一行的顶部VSS合并成同一条电源轨所以整个芯片的电源网络其实是由无数段标准单元电源轨焊接而成的。如果单元高度不统一电源轨对不齐整个布图就会乱套。“等高”还跟布线轨道绑定。单元高度一般用金属布线轨道的整倍数来衡量比如一个库的行高是9个track、12个track、15个track等。track越多单元高度大单元内部可以放出更宽的晶体管驱动能力更强也给布线层留了更多垂直方向绕线的空间。但代价是面积变大。所以你会发现同一个工艺节点下有人用高密度库有人用高性能库最直观的差别往往就在track数和单元高度上。3. “货架”上的乐高系列单元库里到底有什么类型3.1 逻辑单元从反相器到复杂复合门单元库的第一大类也是最基础的是组合逻辑单元。它们实现纯粹的布尔逻辑没有记忆功能。最常用的是这些反相器INV最基础输出是输入取反。缓冲器BUF输出等于输入主要用来增强驱动能力。NAND与非门和NOR或非门2输入、3输入、4输入、8输入都有。输入数越多串联晶体管数量越多速度会变慢。AND/OR很多库里不提供原始版本而是用“NAND反相器”或“NOR反相器”组合实现因为CMOS里NAND/NOR天然更省晶体管。AOI/OAI复合门与或非、或与非。这类单元把多个逻辑级压缩在一个单元里能显著减少一级延迟。选择器MUX和异或门XOR算术逻辑、数据通路里高频使用。每种逻辑功能还会配套不同“输入数量”和“驱动强度”的版本。比如NAND2_X1、NAND3_X2、NAND4_X1这种命名方式后面跟的乘数代表驱动强度。驱动越大单元越宽面积越大但能驱动更大的负载。3.2 时序单元让芯片记住状态的积木组合逻辑没有记忆能力芯片能跑程序、能存状态靠的是一大类“时序单元”。标准单元库里的时序单元几乎都围绕触发器Flip-Flop和锁存器Latch展开。最常用的是D触发器DFF时钟沿到来时把输入端D的值锁定到输出Q。在此基础上还有一堆变体带异步复位/置位不受时钟控制复位信号一来立刻把输出强制拉低或拉高这对芯片上电初始化和错误恢复非常关键。带时钟使能EN使能无效时触发器保持原状态不更新这能避免多余翻转降低动态功耗。扫描触发器Scan FF多一个测试模式选择端口测试模式下把多个触发器串成移位寄存器方便制造完成后测试芯片内部逻辑。现代单元库里几乎每个触发器都有扫描版本。时序单元的物理构造比组合逻辑复杂不少内部包含反相器对构成的主从锁存结构、时钟反相器树、可能的复位控制逻辑。单元宽度通常是普通组合单元的几倍。但对外部来说你只需要关注setup time、hold time、clock-to-Q delay这几个参数——后面细说。3.3 不干活却不能少的“工具人”单元除了实现逻辑功能的单元库里还有一批“特殊功能单元”。它们不做逻辑运算但没有它们整个芯片无法正常工作。填充单元Filler Cell单元之间会有空隙必须用填充单元占满。它们不接入信号作用是保持N阱和扩散区连续避免工艺制造时出现密度不足的凹坑或断差。衬底接触/阱接触单元Tap/Well Pickup负责把N阱和衬底接到固定电位防止门锁效应。芯片里要周期性地放置这些单元。去耦电容单元Decap Cell一种特意做成电容的单元接在电源和地之间当电路瞬间抽取大量电流时提供局部电荷缓冲缓解电压跌落IR drop瞬态问题。Tie单元Tie-High/Tie-Low用作把某个端口固定接逻辑高或逻辑低它比直接接电源轨更规范能避免噪声干扰逻辑状态。天线效应保护单元Antenna Diode金属走线在制造过程中可能积累电荷、击穿栅氧化层这类单元提供一个可泄放电荷的二极管路径在高风险节点插入。端盖单元Endcap放在每行单元的两端保证行尾边界没有凸出的阱图形同时保护电源轨端部。以前我刚接触库内容列表时看到几十个“XXFILLER”“XXTAP”单元以为它们不重要结果后端做DRC时被坑了两次才发现每个单元都是有职责的。它们就像是片场里的场务和灯光——不是主角但缺了就拍不下去。3.4 库里真正的大头驱动强度×阈值电压矩阵上面介绍了“有哪些类型”。但真实单元库远比这个庞大因为每个逻辑功能和时序功能都会乘上一个“驱动强度”维度再乘上一个“阈值电压”维度。驱动强度好比同一款玩具分成“普通版”“加大版”“超大版”。对单元来说主要是把内部晶体管宽度放大。常见标记是X1、X2、X4、X8甚至X16、X20。驱动越大单元就能驱动更大的负载电容但输入电容也更大面积也大。阈值电压维度通俗说就是晶体管“开关的敏感度”。高阈值单元HVT开关慢一点但漏电很小适合不要求性能的地方。标准阈值单元SVT也叫RVT性能和漏电比较平衡默认选择。低阈值单元LVT或超低阈值单元ULVT开关快但漏电明显增加适合关键路径。于是库的规模就呈倍数膨胀。假设有50种逻辑功能、6档驱动强度、4档阈值电压再加上时序单元的变体一个“中等规模”的标准单元库有几千个逻辑单元是很正常的。如果加上在不同电压域、不同工艺角下的建模数据单元库文件本身会大到以GB计。4. 读懂单元“说明书”时序、功耗、面积这些参数从哪里来4.1 延迟不是固定数字时序弧与查表模型对数字工程师来说标准单元最重要的信息是“它快不快”。但这里有个容易误解的地方单元的延迟不是一个固定数字它取决于输入信号的转换时间和输出端负载电容。输入信号上升越慢输出延迟越大输出挂的负载越大延迟也越大。库里如何表达这种依赖关系答案是查表——EDA术语里叫NLDM非线性延迟模型或CCS电流特性模型本质上是把延迟看成两个变量的函数输入转换时间input slew和输出负载电容output capacitance。单元的延迟特性还会分成很多条“时序弧”。比如二输入与非门A输入上升导致输出下降的延迟A输入下降导致输出上升的延迟B输入上升导致输出下降的延迟B输入下降导致输出上升的延迟。四条弧分别建模因为不同输入端到输出的物理路径长度、晶体管数量可能不一样延迟天然不同。到了触发器还要额外看setup time、hold time和clock-to-Q delay。这些参数同样依赖输入数据转换时间、时钟转换时间和输出负载。它们直接决定了一条路径能否在规定的时钟周期内稳定工作。4.2 功耗参数不止一种芯片功耗现在几乎是第一优先级的指标。看一个标准单元功耗也分几块内部功耗Internal Power单元内部节点充放电消耗的能量发生在输入变化时。库里给出一个“能量值”用查表方式表达。开关功耗Switching Power输出端对负载电容充放电消耗的能量这部分主要看外接负载不算单元自身能力但在路径功耗计算中一定要算进去。漏电功耗Leakage Power晶体管即使在关断态也有微小电流通过阈值电压越低的单元漏电越大。漏电的值基本不随活动变化是一个相对固定的值。所以你在功耗报告里看到的某个单元功耗贡献通常是内部功耗加开关功耗再加漏电功耗。低功耗设计里常说的“多阈值电压混合”本质就是在性能和漏电之间做权衡关键路径用LVT跑得快非关键路径用HVT省漏电。4.3 物理参数面积、引脚位置和布线轨道除了逻辑参数每个标准单元还有一堆物理参数它们在后端流程里直接决定布图是否合法。面积最好理解。标准单元的面积等于宽度乘以行高。行高是固定的所以单元宽度越小越便宜。一个二输入与非门可能只有反相器的1.2到1.5倍面积而一个扫描触发器可能是它的4到6倍。引脚位置同样重要。单元的输出引脚和输入引脚默认在某一层金属常见是M1或特定层上有固定的可访问位置。布局工具布线时必须先“访问”到引脚才能连出去。如果大量单元的引脚位置不合理或者被遮蔽了布线拥塞就会爆炸。还有一类参数叫“障碍”Obstruction表示单元内部哪些物理区域禁止布线金属穿过。比如单元内部有较高的金属块垂直方向的布线金属就不能从那块区域过去。库越优秀障碍越少布线资源越多工程师的日子越好过。4.4 用一张表直观感受单元规格差异为了更直观我拉一个典型库中反相器和与非门的简化参数对比方便你建立数量感。数值不来自某个具体工艺只用来理解量级和相对关系。单元相对面积相对输入电容上升延迟下降延迟相对漏电INV_X11.01.0基准基准基准INV_X42.42.3慢约15%慢约15%基准INV_X83.83.9慢约25%快约20%基准NAND2_X11.31.4略高略高基准NAND2_X1_LVT1.31.4快约30%快约30%高约8到10倍看到这里你可能会觉得奇怪驱动大的单元为什么上升延迟反而慢因为输入电容变大了。驱动强度提升能减轻下游负载的影响但上游驱动它也要付出代价。这也是为什么后端工程师不能无脑选大驱动单元——后面实操部分专门讲。5. 从综合到布局布线标准单元在真实流程里如何被“消费”5.1 逻辑综合的映射决策库里挑单元像点菜RTL代码Verilog/VHDL进入综合工具后工具要做的最核心的事情之一就是把逻辑描述“映射”成标准单元实例和连线。这个过程里综合工具会根据你设定的时钟周期约束、面积目标、功耗目标从库里做出一系列选择一个“ab”的逻辑可以用NAND2实现也可以用AND2实现还可能用两个NAND2NAND2INV实现工具会根据驱动能力和时序需求选择最优解。同一种逻辑功能工具会根据它驱动的负载大小选择X1、X2还是X4版本对于关键路径可能会优先选LVT单元而把HVT留给非关键路径。复杂数据通路的逻辑结构优化比如进位链、选择器树也会影响最终网表中单元的类型和数量。综合后的门级网表本质上就是一张“标准单元清单和接线表”。此时芯片还是纯逻辑世界的东西要到后端工具里才会变成物理图形。5.2 布局把积木一排一排摆进版图物理设计阶段第一个大任务是布局Placement。工具拿到网表后要决定每个标准单元放在芯片哪一行、哪个位置。布局约束就来自标准单元的物理属性。工具会把单元按高度对齐排进row里同一行里单元并靠遇到电源轨位置不对的单元还要翻转方向。布局不是简单的“找个位置放下”它要考虑逻辑距离相互之间有大量连线关系的单元尽量放近否则后面布线长度会爆炸。拥塞某些局部区域单元密度太高后面布线的金属资源会不够就报congestion。时钟结构时钟单元、触发器会被优先处理因为时钟树综合对时序影响巨大。电源分布每几百微米就要放tap单元连接衬底电位否则有闩锁风险。布局完成后再做合法化legalization把所有单元对齐到标准row上再插填充单元填满空隙。到了这一步版图里已经能看到一排排标准单元整齐排列的样子了。5.3 布线让积木之间的“引脚”连成电路布局解决“积木放哪”布线解决“积木怎么连通”。标准单元内部的电路已经固定后端要做的是把单元之间的引脚用金属线连起来。布线工具要走的路有一部分就在单元“头顶”上方通过一行行的金属轨道访问到单元的pin。这也是为什么单元高度必须是track的整数倍为什么pin位置必须在固定网格上。布线过程中最怕的是“pin被挡住”。如果上下两层布线资源都被占满或者某个单元周围的绕线通道太窄就可能出现布线溢出overflow。解决方法是局部换单元、挪位置或者退回到布局阶段重新优化。布线的最终输出是一整套带物理形状的数据比如GDS级别的版图信息。此时标准单元才从“逻辑积木”真正变成了“物理积木”。5.4 时序收敛与ECO换单元是调整手段流片之前芯片要一遍遍做静态时序分析STA。假如关键路径的建立时间不满足工程师不会去改RTL而会更喜欢做ECO工程变更指令直接在物理层面换标准单元。常见替换包括大驱动替换把路径上驱动不足的单元从X1换到X2或X4加速信号传播。阈值电压替换把关键路径上的SVT单元换成LVT单元换取性能把非关键路径的LVT换成HVT省漏电。逻辑重组如果路径级数太多可能要把串行的小门换成复合门减少逻辑深度。ECO的好处是局部快速修正对版图影响小。但前提是单元库里必须有对应尺寸和引脚完全兼容的“替换候选”。如果库设计得好ECO就像乐高换一块蓝色砖——规格相同、颜色不同如果库设计不好换单元可能牵一发动全身。6. 实操避坑与组合策略驱动强度、阈值电压与ECO的取舍6.1 驱动强度不是越大越“快”刚做数字设计的人很容易有个误区哪条路径时序不满足就把路径上所有单元换成大驱动。结果时序可能没修好功耗和面积倒先爆了。原因前面提过驱动强度变大单元输入电容也跟着变大。这一步单元变快了上一步单元要驱动一个更大的负载延迟反而增加。一旦路径是串联级联的大驱动替换的收益很容易被前级负载恶化抵消。我实际项目里遇到过一条路径连续换了三个X4单元的驱动到X8结果WNS一点没动结果后面排查发现瓶颈根本不在单元驱动能力而在线网过长、RC延迟太大。真正有效的做法是先把长走线局部调整、插入缓冲器再去调单元驱动。经验是驱动强度调整适合处理局部负载较轻但速度略慢的路径不适合处理长线RC主导的路径。看时序报告时先分清是逻辑延迟占比大还是线延迟占比大再决定动刀方向。6.2 阈值电压组合低功耗设计的核心手法多阈值电压混合是当前数字芯片低功耗的常规打法。思想就一句话别让所有晶体管都用同一个阈值。关键路径上的单元用LVT提高速度非关键路径和存储类逻辑用SVT或HVT压低漏电。逻辑综合和物理实现工具会按约束自动做这个分配但工程上还需要人为干预。我见过不少项目前期为了省时间把全库默认设成SVT。等功耗分析报告出来后漏电功耗超标又要全芯片扫描式替换把大量非关键路径单元换到HVT。换完之后还要重新做时序收敛返工量非常大。更好的做法是在项目一开始就把单元库按阈值电压分成几个“bucket”在综合阶段就给工具设定不同区域的阈值电压偏好。关键模块用LVT资源其余模块强制HVT/SVT留出少量LVT余量给后段ECO用。很多功耗激进的项目还会做“阈值电压分配优化”让工具自动决定每个实例用哪种设备但留给它的候选池越大工具求解时间越长项目上要平衡。6.3 ECO替换时的隐性陷阱ECO换单元看起来简单但有几个坑我建议你提前注意。第一引脚图兼容性。同一个逻辑功能的X1和X2单元虽然功能相同但输入输出引脚在物理上的位置、所在层可能不同。直接替换后布线工具可能没法访问新引脚。所以ECO前一定要检查单元间是否pin compatible一般库里会有专门的ECO cell或满足相同site的兼容定义。第二天线效应可能重新触发。换了驱动强度更大的单元后栅极面积变了金属线收集电荷的能力相对也可能变化原本没问题的节点可能突然出现天线违例。ECO完成后应该重新跑一遍工艺相关检查。第三动态功耗与IR drop。高频翻转的关键路径如果大量换成LVT单元瞬间电流会集中在某个区域引发局部电压跌落。ECO后最好做一次功耗分布复核别让原本不是热点的区域变成新瓶颈。6.4 布局密度、填充单元与拥塞余量最后聊一个几乎所有后端工程师都会遇到的实际问题标准单元放着放着位置不够了。这里的“不够”不是指芯片面积放不下而是布线资源拥挤。某些区域逻辑关系密集单元堆得满满当当但布线通道就那么几条金属线从头顶和脚下走不进去。工具会报congestion map红成一片。解决办法通常有二一是给工具留“密度上限”布局时设置最大利用率比如70%或80%。多留白不是浪费面积是给布线买保险。尤其是含有大量RAM、模拟模块或时钟树的复杂芯片局部密度非常不均匀留白比算死用量要安全得多。二是看好填充单元。填充单元不参与逻辑但它们必须在布局阶段留出空间。有些项目因为忘了在ECO后补fill芯片制造时出现了密度违例density rule violation轻则返工修版图重则影响良率。我在一次项目tape-out前就因为某层图形密度不足被要求重新插fill、又跑了一遍全芯片验证那几天的体验至今难忘。6.5 拿到一个新标准单元库我建议你先做三件事如果你第一次接触一套陌生的标准单元库可以按这个顺序快速建立认知先看行高和track数。这决定了物理版图的基本尺度也直接影响你评估面积时的心算模型。打开单元列表按“功能—驱动—阈值”三维分类过一遍。看常用单元有没有典型组合缺失。比如库里如果只有SVT没有LVT那高性能设计会很痛苦如果时序单元没有扫描版本可测试性设计会非常麻烦。跑一个最小的综合测试用例。比如一段简单的计数器或状态机约束它到某个频率观察工具在什么库组合下能收敛重点看关键路径上工具选择了哪些驱动和阈值电压的单元。这一跑基本就能判断这套库的“性格”是偏速度还是偏省面积。6.6 一个值得养成的习惯把库数据当成设计文档来读个人经验里最有帮助的一步是逼自己把标准单元库当“设计文档”而不是“工具配方”来读。不要只看某个单元的延迟表格而要多想一步为什么这类单元驱动范围只做到X4为什么这个复合门用的是AOI结构而不是先做AND再接INV为什么这个工艺库里反相器的最小宽度是这个值这些问题背后是电路设计、工艺规则、版图效率的综合权衡。当你能够从“单元库里为什么有这个选项”倒推出芯片设计的诸多约束再去理解综合、布局布线、时序收敛这些流程就不再是背步骤而是真正建立起了系统的工程直觉。标准单元看起来小但它把半导体工艺、电路设计、逻辑自动化、物理实现全部串在一起。把这颗乐高积木吃透后面再大的芯片你都能看懂它是怎么拼出来的。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑