Cadence封装绘制:从UFQFPN48看PCB制造工艺协同设计

.NET8入门:15.ASP.NET Core MVC进阶——View 本文深入介绍了ASP.NET Core MVC中的五种视图类型及其应用。主要内容包括:1)普通视图作为基础页面展示;2)布局视图定义公共结构模板;3)部分视图实现UI片段复用;4)视图组件封装复杂逻辑并支持异步;5)区域视图用于大型项目模块化管理。通过图书管理系统的示例,详细展示了各类视图的创建方法、调用方式和工作流程,并对比了视图组件与部分视图的区别。文章还阐述了MVC视图的完整生命周期,帮助开发者理解视图的查找、编译、渲染过程。这些技术要点为构建结构化、可维护的ASP.NET Core应用提供了实用指导 阅读详情

1. 为什么画封装不是“照着 datasheet 量尺寸”那么简单

Cadence 用户刚接触 PCB 设计时,最常掉进的第一个坑,就是把“画封装”当成纯体力活:打开 STM32F411 的 datasheet,翻到 UFQFPN48 封装那页,抄下引脚间距 0.5mm、体宽 7.0mm、焊盘长 1.0mm……然后在 Cadence 的 Padstack Editor 里一顿输入,保存,往原理图一拖,就以为万事大吉。我当年也是这么干的——结果第一次打板回来,UFQFPN48 器件根本没法上锡,四个角翘起,中间虚焊,AOI 检测直接标红 12 处开路。返工拆焊时烙铁一碰,焊盘连同铜箔一起被揭下来。

问题出在哪?不是尺寸抄错了,而是你漏掉了 datasheet 里藏在第 23 页 footnote 里的那行小字:“Recommended solder paste stencil aperture: 0.12mm thick stainless steel, opening size = pad length × 0.85, pad width × 0.85”。这句话背后是一整套制造工艺链的约束:钢网厚度、锡膏流变特性、回流炉温曲线、PCB 板材 Tg 值、甚至车间湿度——而 Cadence 封装绘制,本质是 在数字世界里提前预演物理世界的制造极限 。你画的不是几何图形,而是焊点成型的“模具”。

UFQFPN48 这类 0.5mm 间距的 QFN 封装,焊盘边缘到芯片本体的距离只有 0.2mm,热膨胀系数 mismatch 稍微失控,就会导致“枕头效应”(head-in-pillow)或“空洞率超标”。Cadence 的封装编辑器里,Padstack 的 Layer Stackup 设置、Soldermask Expansion 的正负值选择、Pastemask 的缩放比例,每一个参数都不是孤立存在的。比如 Soldermask Expansion 设为 -0.05mm,表面看是让阻焊开窗比焊盘小 0.05mm,实际效果是防止锡膏在回流时被阻焊层“挤”向焊盘外侧,减少桥连风险;但若设成 +0.1mm,虽然看起来更“保险”,却会导致阻焊覆盖部分焊盘,造成上锡不良。这些细节,datasheet 从不直接告诉你,它只给你一个“推荐值范围”,而 Cadence 封装绘制,就是要把这个范围翻译成可执行的、与你的 PCB 工厂能力匹配的精确参数。

所以,真正意义上的“Cadence 元器件封装绘制”,核心不是画图能力,而是 制造知识 + 工艺理解 + 工具操作 三者的咬合。你得知道嘉立创的常规钢网厚度是 0.12mm,而深南电路支持 0.10mm;得明白 IPC-7351 标准里 “Density Level B” 对于 UFQFPN48 意味着焊盘长度要预留 0.15mm 的贴片公差余量;还得清楚 Cadence Allegro 的 Padstack Editor 中,“Regular Pad”、“Soldermask Pad”、“Pastemask Pad” 三个层的数值关系,如何影响 Gerber 输出的最终形态。这就像厨师做菜,光有菜谱(datasheet)不够,你还得懂火候(回流曲线)、刀工(钢网开口)、食材新鲜度(PCB 板材批次)——而 Cadence 封装,就是你写给工厂的“烹饪说明书”。

提示:别迷信“网上下载的封装库”。我见过某知名开源项目里 STM32F411 的 UFQFPN48 封装,Pastemask 比 Regular Pad 大了 0.2mm,用在嘉立创打板时,锡膏溢出导致相邻引脚短路。封装不是通用件,它必须和你的具体工艺线绑定。

2. UFQFPN48 封装的 Cadence 实操四步法:从 datasheet 到可生产 Padstack

画一个能过量产验证的 UFQFPN48 封装,不能靠感觉,必须有一套可复现、可审计的流程。我把它拆解为四个硬性步骤,每一步都有明确的输入、操作、验证标准。这套方法我在带新人时强制要求写进设计 CheckList,三年下来,封装相关的一次性打板成功率从 68% 提升到 94%。

2.1 第一步:锁定工艺边界——不是查 datasheet,而是查你的 PCB 厂家工艺文件

很多人第一步就错了:直接打开 STM32F411 的 datasheet。正确顺序是——先打开你选定的 PCB 厂家(比如嘉立创、深南、欣兴)的《工艺能力说明书》PDF。重点找三个参数:

  • 最小阻焊桥宽度(Soldermask Bridge) :决定你焊盘之间的最小间距。嘉立创现行标准是 0.1mm,意味着两个焊盘中心距必须 ≥ 焊盘宽度 + 0.1mm。
  • 钢网厚度(Stencil Thickness) :决定 Pastemask 缩放比例。嘉立创常规 0.12mm,高端线支持 0.10mm。
  • 最小钻孔/蚀刻公差(Fabrication Tolerance) :决定焊盘尺寸的冗余量。嘉立创对 0.5mm 间距器件,推荐焊盘长度比引脚长 0.15~0.2mm。

拿 UFQFPN48 举例:datasheet 写引脚长度 0.45mm,宽度 0.25mm,间距 0.5mm。按嘉立创工艺,焊盘长度至少取 0.45 + 0.15 = 0.60mm,宽度取 0.25 + 0.05 = 0.30mm(加宽是为了补偿蚀刻公差),中心距严格等于 0.5mm。如果厂家支持 0.10mm 钢网,Pastemask 可以设为焊盘尺寸 × 0.9;若只支持 0.12mm,则必须 × 0.85。这一步没做完,后面全白搭。

2.2 第二步:Padstack 构建——三层 Pad 的数值逻辑链

在 Cadence Allegro 的 Padstack Editor 里新建一个 UFQFPN48_0.5mm 的 Padstack,关键不是填数字,而是理清 Regular、Soldermask、Pastemask 三层的数学关系:

  • Regular Pad(顶层/底层铜皮) :这是焊点的物理基础。设为矩形,长 0.60mm,宽 0.30mm,中心对齐引脚。
  • Soldermask Pad(阻焊开窗) :必须比 Regular Pad 大,否则阻焊会盖住焊盘。但不能太大,否则锡膏易溢出。计算公式: Soldermask = Regular + (2 × Soldermask_Expansion) 。嘉立创推荐 Expansion = +0.05mm,所以 Soldermask 尺寸 = 0.60×0.30 + 0.10mm = 0.70×0.40mm。
  • Pastemask Pad(钢网开口) :这是锡膏量的阀门。计算公式: Pastemask = Regular × Stencil_Scale_Factor 。0.12mm 钢网对应 Scale Factor = 0.85,所以 Pastemask = 0.60×0.30 × 0.85 = 0.51×0.255mm(实际输入时四舍五入为 0.51×0.26mm)。

这三个尺寸不是独立设置的,而是一个闭环:Pastemask 决定锡膏体积,Regular Pad 决定焊点承载面积,Soldermask 决定锡膏能否被“框”在有效区域内。Cadence 的 Padstack Editor 里,这三个层必须在同一 Padstack 下定义,且 Layer Assignment 必须正确(Top Layer 对应 Regular,Soldermask_Top 对应 Soldermask,Pastemask_Top 对应 Pastemask)。漏设一层,Gerber 输出时该层就缺失,工厂拿到的就是废稿。

2.3 第三步:Footprint 绘制——丝印、坐标原点、极性标记的工程意义

Padstack 只是焊盘,Footprint 才是完整的器件“身份证”。在 Allegro 的 Package Symbol Editor 里,除了放置 48 个焊盘,还有三处极易被忽略但致命的细节:

  • 丝印轮廓(Silk Outline) :不能画成 datasheet 上的芯片外形(7.0×7.0mm),而要画成“贴片时视觉定位的辅助框”。我习惯画一个比芯片大 0.3mm 的矩形(7.3×7.3mm),并在左下角留出 0.5mm×0.5mm 的缺口——这是贴片机光学识别的基准点,缺了它,贴片机可能把器件旋转 90 度。
  • 坐标原点(Origin) :必须设在器件的几何中心,而不是左下角。因为 Allegro 的自动布局、DRC 检查、甚至后续的 SI 仿真,都依赖这个原点。设错原点,整个器件在 PCB 上的位置会系统性偏移。
  • 极性标记(Polarity Mark) :UFQFPN48 的 Pin1 定义在 datasheet 的“Package Top View”图里,是一个小圆点。丝印上必须用直径 0.5mm 的实心圆表示,且圆心必须精确落在 Pin1 焊盘的几何中心上。我见过因圆点画偏 0.1mm,导致贴片后 Pin1 错位,整块板功能失效。

这三处丝印信息,不是为了“好看”,而是为了给贴片机、AOI、维修人员提供无歧义的物理参照。Cadence 里画丝印用的是 Line 和 Circle 工具,但关键在 Layer 选择:必须放在 SilkTop 层,且线宽设为 0.15mm(太细机器看不清,太粗会覆盖焊盘)。

2.4 第四步:关联与验证——从 Capture 到 PCB 的端到端链路测试

画完 Footprint,不能直接扔进库。必须走完 Cadence 的完整链路验证:

  1. 在 Capture CIS 里,新建一个 UFQFPN48_STM32F411 的 Part,Assign 刚画好的 Footprint;
  2. 放到原理图,生成 Netlist;
  3. 导入 Allegro PCB Editor,Place 器件;
  4. 运行 Display > Show Ratsnest ,确认所有网络飞线正常连接;
  5. 运行 Manufacture > NC Manufacture > Create Drill Legend ,检查钻孔表是否包含该器件的散热焊盘(UFQFPN48 底部有大面积裸铜散热焊盘,需单独定义为 Thermal Via);
  6. 最关键一步: Manufacture > CAM File Export ,导出 Gerber,用 GC-Prevue 软件打开 Top Paste 、 Top Soldermask 、 Top Copper 三层叠图,目视检查 Pastemask 是否完全落在 Soldermask 开窗内,且四周有均匀间隙(≥0.05mm)。

这六步,少一步都可能埋雷。尤其第 6 步,我坚持要求团队新人必须手动叠图检查,而不是依赖 Cadence 的 DRC。因为 DRC 只检查规则,不检查“工艺合理性”——比如 DRC 会允许 Pastemask 比 Soldermask 大,但现实中这会导致锡膏被挤出,形成焊球。

注意:Cadence 的封装库路径管理极易出错。务必在 Setup > User Preferences > Design Paths 中,将 padpath 、 psmpath 、 devpath 三个路径指向你本地维护的、版本受控的库目录。不要用默认的 C:\Cadence\SPB_17.4\share\pcb\pcb_lib\packages ,那里是安装包自带库,混用会导致版本混乱。

3. Cadence 封装常见死结与破局思路:从“报警告”到“零缺陷”

在 UFQFPN48 封装实践中,有五个高频报错场景,它们不是软件 Bug,而是工艺认知断层的外显。解决它们,关键不是查命令,而是补知识。

3.1 死结一:“Pin1 not found in footprint” —— 不是 Footprint 画错了,是 Pin1 定义逻辑没吃透

Capture 原理图里放好 UFQFPN48 器件,更新到 PCB 时弹出警告:“Pin1 not found in footprint”。新手第一反应是重画 Footprint。其实根源在 Capture 的 Part 属性里: PCB Footprint 字段填的是封装名(如 UFQFPN48_0.5MM ),但 Pin1 Shape 字段没设。Cadence 默认认为 Pin1 是方形焊盘,而 UFQFPN48 的 Pin1 是普通矩形焊盘,只是位置特殊。必须手动在 Capture 的 Part 属性中,将 Pin1 Shape 设为 Square ,并确保 Footprint 里 Pin1 焊盘的 Shape 属性确实是 Square (哪怕视觉上是矩形,也要在 Padstack 里勾选 Square 选项)。这是因为 Cadence 的 Pin1 识别机制,依赖焊盘的 Shape 属性标签,而非物理形状。

3.2 死结二:“Soldermask clearance violation” —— 阻焊桥太窄,但改了尺寸还是报错

放置 UFQFPN48 后,DRC 报大量 Soldermask clearance violation 。你调大 Soldermask Expansion,问题依旧。真相是:Cadence 的 Soldermask Clearance 规则,检查的是 Soldermask Pad 边缘到 Adjacent Soldermask Pad 边缘的距离,不是到铜皮的距离。UFQFPN48 的引脚间距 0.5mm,焊盘宽 0.30mm,Soldermask Pad 宽 0.40mm,那么两个 Soldermask Pad 边缘距离 = 0.5 - 0.40 = 0.10mm。嘉立创最小阻焊桥是 0.1mm,理论上刚好达标。但 Cadence 默认的 Clearance Rule 设为 0.12mm,所以报错。解决方案不是改焊盘,而是进 Setup > Constraints > Physical ,找到 Soldermask 类别,把 Minimum Soldermask Sliver 改为 0.10mm,并确保 Soldermask to Soldermask 的 Min 值也设为 0.10mm。这是告诉 Cadence:“我的工厂能做到 0.10mm,别按默认值卡我”。

3.3 死结三:“Thermal pad not connected to net” —— 散热焊盘悬空,但网络名明明写了 GND

UFQFPN48 底部的大面积散热焊盘,在 Footprint 里画成了一个 Thermal Pad ,Capture 里也 Assign 了 GND 网络,但导入 PCB 后,DRC 显示未连接。问题出在 Padstack 的 Thermal Relief 设置。默认情况下,Cadence 会给散热焊盘自动生成热焊盘(Thermal Relief),即十字连接,但这需要 Thermal Pad 的 Pad Type 设为 Regular ,且 Thermal Relief 选项必须启用。如果设成了 Anti-pad 或 No Connect ,就会悬空。正确做法:在 Padstack Editor 里,为散热焊盘新建一个专用 Padstack, Regular Pad 设为 5.0×5.0mm, Soldermask Pad 设为 5.2×5.2mm, Pastemask Pad 设为 4.8×4.8mm,并在 Thermal Relief 选项卡中,勾选 Enable Thermal Relief , Spoke Width 设为 0.3mm, Gap 设为 0.2mm。这样生成的散热焊盘,才能被 Allegro 识别为可连接网络的实体。

3.4 死结四:“Package outline exceeds board outline” —— 丝印框超板边,但尺寸明明没超

画好 UFQFPN48 的丝印框(7.3×7.3mm),Place 到 PCB 后,DRC 报 Package outline exceeds board outline 。检查 Board Outline,尺寸远大于器件。问题在于:Cadence 的 Package Outline DRC 规则,默认检查的是 SilkTop 层的图形是否超出 Board Geometry/Outline 。但很多新人画丝印时,用了 Assembly_Top 层,或者误把 SilkTop 图形画在了 Board Geometry 层。解决方案:用 Display > Color/Visibility 关闭所有层,只开 SilkTop ,用 Edit > Find 选中所有 Line 和 Circle ,确认它们的 Layer 属性确实是 SilkTop ;再用 Shape > Select Shape 选中 Board Outline,确认其 Layer 是 Board Geometry/Outline 。两者层别必须严格匹配,DRC 才能正确比对。

3.5 死结五:“Missing pastemask layer in gerber” —— 导出 Gerber 缺钢网层,但 Padstack 里明明画了

导出 Gerber 时, Top Paste 文件为空,导致工厂无法制钢网。根本原因在 Manufacture > CAM File Export 的 Layer Mapping 设置。默认映射里, Pastemask_Top 可能被映射到了错误的输出层名(如 GTP 而非 GTP )。必须手动检查:在 CAM Setup 界面,左侧 Layer List 找到 Pastemask_Top ,右侧 Output Layer Name 必须设为 GTP (Gerber Top Paste);同理, Soldermask_Top 对应 GTS , Top Etch 对应 GT 。Cadence 的 Layer Name 和 Gerber 输出名是两套体系,映射错一个,就丢一层。我习惯在导出前,用 File > Export > Other > Layer Stackup Report 生成一份层叠报告,逐行核对映射关系。

这些死结,表面是 Cadence 操作问题,根子上都是对“封装=制造接口”这一本质的理解偏差。破局的关键,是把每次报错,都当作一次工艺知识补课的机会——查报错日志,定位到具体参数,再反推这个参数背后的制造含义。

4. 从 UFQFPN48 到全系列封装:建立你的 Cadence 封装知识树

画好一个 UFQFPN48 封装,只是入门。真正的效率提升,来自于把单点经验,沉淀为可复用、可扩展的知识体系。我花了两年时间,把常用封装按工艺特征分类,构建了一棵“Cadence 封装知识树”,它让新封装开发时间从平均 3 小时压缩到 20 分钟。

4.1 分类逻辑:按“焊点成型机制”而非“外形”划分

传统按 SOP、QFP、BGA 分类,容易忽略工艺共性。我按焊点物理成型方式分三类:

  • Type A:平面接触型(Planar Contact)
    如 UFQFPN、SOIC、TSSOP。焊点靠焊盘平面与引脚平面接触,锡膏量由 Pastemask 控制。核心参数是 Pastemask Scale Factor 和 Soldermask Expansion 。UFQFPN48 就属此类,所有 0.4mm~0.65mm 间距的 QFN/QFP 都适用同一套 Padstack 模板,只需按 datasheet 调整长宽。

  • Type B:柱状焊接型(Column Solder)
    如 BGA、LGA。焊点是球形锡球,靠表面张力回缩成型。核心参数是 Ball Diameter 、 Soldermask Dam (阻焊坝)、 NSMD/Pads (非焊盘上阻焊)。BGA 的 Soldermask 必须设为 NSMD (Non-Soldermask Defined),即阻焊开窗比焊盘大,让锡球能自由回缩;而 QFN 必须 SMD (Soldermask Defined),靠阻焊限制锡膏流动。混用会导致 BGA 焊球塌陷或 QFN 桥连。

  • Type C:通孔插装型(Through-Hole)
    如 DIP、Header。焊点靠焊料从底部爬升润湿。核心参数是 Drill Size 、 Annular Ring (环宽)、 Paste Mask (通常不设,因为不用锡膏)。这里 Drill Size 必须比引脚直径大 0.2~0.3mm, Annular Ring 至少 0.15mm,否则波峰焊时焊料无法充分包裹。

这棵树的主干,就是“焊点怎么成型”,分支才是具体封装名。当你理解了 UFQFPN48 属于 Type A,下次画 TQFP100(0.5mm 间距)时,直接调用 UFQFPN48 的 Padstack 模板,改长宽即可,无需从头算。

4.2 模板化:用 Excel 管理你的工艺参数矩阵

我维护一个 Excel 表格,名为 Cadence_Padstack_Template_Matrix.xlsx ,列为不同封装类型,行为工艺参数:

封装类型 引脚间距 Regular Pad 长 Regular Pad 宽 Soldermask Expansion Pastemask Scale Factor 推荐钢网厚度 最小阻焊桥
UFQFPN48 0.5mm 0.60mm 0.30mm +0.05mm 0.85 0.12mm 0.10mm
SOIC-8 1.27mm 1.50mm 0.80mm +0.08mm 0.95 0.15mm 0.15mm
BGA-144 0.8mm 0.45mm 0.45mm -0.03mm (NSMD) N/A 0.12mm 0.08mm

这张表不是凭空编的,而是基于三年打板数据反推:每一行都对应至少 5 次成功量产的案例。画新封装时,先查表找最接近的行,再根据 datasheet 微调。比如画一个 0.45mm 间距的 QFN,表里没有,但 UFQFPN48 是 0.5mm,就按比例缩放:长 = 0.60 × (0.45/0.5) = 0.54mm,宽 = 0.30 × (0.45/0.5) = 0.27mm,其他参数沿用。Excel 表还链接到工厂工艺文档的 PDF 页码,点击就能跳转,知识随时可查。

4.3 自动化:用 Skill 脚本批量生成 Padstack

Cadence 的 Skill 语言可以自动化重复劳动。我写了一个 gen_qfn_padstack.il 脚本,输入引脚数、间距、引脚长宽,自动创建 Padstack:

; gen_qfn_padstack.il
(defun gen_qfn_padstack (pin_count pitch lead_length lead_width)
  (let ((pad_length (+ lead_length 0.15)) ; 加 0.15mm 公差
        (pad_width (+ lead_width 0.05))
        (soldermask_exp 0.05)
        (pastemask_scale 0.85))
    (axlDBCreatePadstack 
      (list 
        (list "Top" "Regular" "Rectangle" pad_length pad_width 0.0)
        (list "Top" "Soldermask" "Rectangle" (+ pad_length (* 2 soldermask_exp)) (+ pad_width (* 2 soldermask_exp)) 0.0)
        (list "Top" "Pastemask" "Rectangle" (* pad_length pastemask_scale) (* pad_width pastemask_scale) 0.0)
      )
      (strcat "QFN_" pin_count "_" (format nil "%.2f" pitch) "mm")
    )
  )
)
; 调用示例:(gen_qfn_padstack "48" 0.5 0.45 0.25)

把这个脚本放在 allegro\pcb\scripts 目录,启动 Allegro 时自动加载。画 UFQFPN48 时,只需在 Command Window 输入 (gen_qfn_padstack "48" 0.5 0.45 0.25) ,一秒生成 Padstack。脚本里固化了工艺规则(如公差值、Scale Factor),避免人为计算错误。新人学 Skill 不用从头写,直接改这个模板就行。

4.4 版本控制:用 Git 管理你的封装库

封装库不是静态文件夹,而是动态演进的工程资产。我把 packages 、 padstacks 、 psm 三个目录纳入 Git 仓库,分支策略如下:

  • main 分支:已通过 3 次量产验证的封装,只接受 Merge Request;
  • dev 分支:新人开发的新封装,需提交 Test Report.md (含 Gerber 叠图截图、工厂反馈);
  • legacy 分支:老项目用的旧版封装,标注废弃原因(如“2022 年嘉立创工艺升级后停用”)。

每次 Commit,Message 必须写清变更依据:“[UFQFPN48] Update Pastemask scale from 0.85 to 0.82 per JLCPCB 2023-09 工艺公告”。这样,三年后有人问“为什么这个封装 Pastemask 是 0.82”,Git Log 里一眼就能看到答案。没有版本控制的封装库,迟早变成“谁都不敢动”的技术债黑洞。

这棵知识树,不是用来背的,而是用来砍的——砍掉重复劳动,砍掉试错成本,砍掉沟通歧义。当你能把 UFQFPN48 的经验,迁移到 TQFP、LQFP、甚至新型的 WLCSP 封装时,你就真正掌握了 Cadence 封装的底层逻辑。

5. 给初学者的三条血泪忠告:别踩我踩过的坑

带过十几届新人,看过太多人把封装当简单任务,结果在量产阶段栽大跟头。这三条忠告,不是理论,而是我亲手拆过 37 块报废板、赔过 2 次打板费、熬过 11 个通宵后,用真金白银换来的。

5.1 忠告一:永远不要用“复制粘贴”方式复用封装

新人最省事的做法,是找到一个看似相似的封装(比如网上下载的 STM32F103 的 LQFP48),Ctrl+C/Ctrl+V,改个名字叫 STM32F411_UFQFPN48,再改几个尺寸。这是自杀式操作。LQFP48 和 UFQFPN48 的焊盘结构完全不同:LQFP 是鸥翼引脚,焊盘向外延伸;UFQFPN 是底部焊盘,焊盘在芯片正下方。复制 LQFP 的 Padstack,Pastemask 会画在错误位置,锡膏全堆在空气里。更隐蔽的坑是:LQFP 的 Soldermask Expansion 通常是 +0.1mm(因为引脚外露),而 UFQFPN 必须 +0.05mm(因为引脚被包在壳内)。这种细微差异,复制粘贴时根本不会注意,但打板后就是 100% 失败。正确做法:每个新封装,都从空白 Padstack 开始,按本文第二章的四步法重做。前期多花 20 分钟,后期省下 20 小时返工。

5.2 忠告二:第一次打板,必须做“三明治叠图验证”

别信 Cadence 的 DRC,也别信自己的眼睛。量产前,必须用 GC-Prevue 或 CAM350,把 Top Copper 、 Top Soldermask 、 Top Paste 三层 Gerber 叠在一起,放大到 200%,逐个焊盘检查:

  • Pastemask 是否 100% 落在 Soldermask 开窗内?
  • Soldermask 开窗边缘到相邻焊盘铜皮的距离,是否 ≥ 工厂要求的最小阻焊桥?
  • Pin1 的丝印圆点,是否精确覆盖 Pin1 焊盘中心?

我见过最离谱的案例:一个封装 DRC 全绿,叠图一看,Pastemask 有 3 个焊盘偏移了 0.02mm,刚好卡在 Soldermask 边缘。工厂钢网加工时,这 0.02mm 的误差被放大,导致锡膏部分溢出,形成微小焊球,AOI 检测漏过,但产品在高温老化后全部失效。这种问题,DRC 永远抓不到,只有肉眼叠图才能发现。这一步不能省,它是你对工厂的最后防线。

5.3 忠告三:封装命名必须包含工艺标识,而非仅器件型号

很多人把封装命名为 STM32F411_UFQFPN48 ,看起来很规范。但问题来了:这个封装是按嘉立创工艺做的,还是深南电路?是 0.12mm 钢网,还是 0.10mm?下次换工厂,你得重新画。正确的命名法是 STM32F411_UFQFPN48_JLC_012 ,其中 JLC 代表嘉立创, 012 代表 0.12mm 钢网。如果要做深南的 0.10mm 版本,就叫 STM32F411_UFQFPN48_SSC_010 。命名里嵌入工艺信息,等于给每个封装打上“制造身份证”。库管理员看到 JLC_012 ,就知道它只能用于嘉立创 0.12mm 钢网订单;看到 SSC_010 ,就知道它适配深南高端线。没有这个标识,封装库就是一锅粥,谁也说不清哪个能用、哪个不能用。

这三条,每一条背后都是钱和时间。它们不是技巧,而是职业素养的底线——对制造负责,对产品负责,对自己负责。Cadence 封装绘制,从来不是软件操作考试,而是一场关于工程敬畏心的修行。

我在实际使用中发现,真正拉开高手和新手差距的,不是谁更会用快捷键,而是谁更愿意在画第一个焊盘前,先去读一遍工厂的工艺说明书。那个说明书里,藏着比任何教程都珍贵的答案。

ASP.NET MVC 入门5、View与ViewData 原帖地址:http://www.cnblogs.com/QLeelulu/archive/2008/10/04/1303913.html view在MVC模式中与用户进行最直接的接触,它负责数据的呈现。这里要注意一点就是,view只是负责数据的呈现,所以我们应该要尽量让view中不涉及业务逻辑的处理。 我们来添加一个Blog首页的view。在安装了ASP.NET MVC后,我们在添加新 阅读详情

相关推荐

java实现mavlink协议解析与封包上传数据,实现mavlink数据交互,附带代码、详解

本篇文章介绍了使用java来进行mavlink协议解析,封包与解包的过程,并附带源码供大家使用。MAVLink(Micro Air Vehicle Link,微型空中飞行器链路通讯协议)是无人飞行器与地面站(Ground Control Station ,GCS)或云端服务器之间通讯,以及无人飞行器之间通讯最常用的协议。它已经在PX4、APM、PIXHAWK和Parrot AR.Drone飞控平台上进行了大量测试。

qq_30279827的博客 1414

ASP.NET MVC的View是如何被呈现出来的?[设计篇]

在前面的四篇文章中,我们介绍了各种ActionResult以及相关的请求响应机制,但是与“View的呈现”相关的ActionResult是ViewResult。通过ViewResult的执行实现的对View的呈现比上面我们介绍的各种ActionResult要复杂得多,ASP.NET MVC内部设计了一个扩展的View引擎实现了最终的View呈现工作。[本文已经同步到《How ASP.NET MVC...

weixin_34221073的博客 192

从5V降到3.3V,你的LDO到底有多烫?手把手算功耗、选散热,避开这些坑

本文详细解析了LDO在5V转3.3V电路中的发热问题,提供了精确的功耗计算公式和散热设计方法。通过对比不同封装的热阻参数和优化PCB布局,帮助工程师有效降低LDO温度,避免热保护触发。文章还探讨了替代方案的技术拐点,为电源系统优化设计提供实用指导。

weixin_30304375的博客 413

视图文件存在但无法找到The view 'Index' or its master was not found or no view engine supports the searched loca

遇到的问题: 新建空的控制器,然后单机右键->添加视图,输入网址后报500错误,找不到视图。截图如下: 解决: 1.查看Views文件夹下是否存在XXX/XXX.cshtml文件,没有则添加。 2.如果存在cshtml文件,选择对应的cshtml文件,右键->属性->生成操作 改为 嵌入的资源 3.如果还有问题,就检查路由配置。 ...

乌药ice 4460

Dot Net设计模式—MVC模式

1 MVC设计模式简介   MVC结构是为那些需要为同样的数据提供多个视图的应用程序而设计的,它很好的实现了数据层与表示层的分离。MVC作为一种开发模型,通常用于分布式应用系统的设计和分析中,以及用于确定系统各部分间的组织关系。对于界面设计可变性的需求,MVC(Model-View-Controller)把交互系统的组成分解成模型、视图、控制器三种部件。   视图部件把表示模型数据及逻辑关系...

weixin_34289744的博客 223

Speedtree学习笔记(案例)——拥有多种材质的植物如何导入使用(以草为例)

注:Speedtree无论保存还是导入模型其存储路径不可有中文。 第一步拆分草的模型 根据所需的材质去拆分(例:假若草的果实,茎秆和叶子是不同的材质那么就需拆分为三份;假若画的全部颜色及材质一样就没有必要去拆分模型) 第二步导入草的模型 在Mesh面板中依次导入草的模型——Do nothing additional right now 第三步扩大草的生长区域范围(可省略)...

L人青的博客 4805

NetCore MVC 运行未找到Index.cshtml

添加语句:builder.Services.AddControllersWithViews().AddRazorRuntimeCompilation();引入对应版本nuget包:Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation。

不取姓名 2619

【低空经济】低空无人驾驶航空器运行管理系统设计方案

低空无人驾驶航空器运行管理系统(以下简称“系统”)旨在为低空域内的无人驾驶航空器(UAV)提供高效、安全、智能的运行管理服务。系统通过集成先进的通信、导航、监控、数据处理和人工智能技术,实现对低空域内无人驾驶航空器的实时监控、动态调度、风险评估和应急响应,确保其在复杂空域环境中的安全运行。系统的核心功能包括空域管理、飞行计划审批、实时监控、冲突预警、应急管理和数据分析。空域管理模块负责划分和管理低空域资源,确保不同飞行任务之间的空域隔离和高效利用。

2502_92579126的博客 1123

System.InvalidOperationException: 未找到视图“xxx”或其母版视图,或没有视图引擎支持搜索的位置。搜索了以下位置:

Intro 按照.net mvc 的规则,当我写下如下的Controller和Action之后: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace MvcMovie.Controllers { public class HelloWorldController : Controller { /

wuyujin1997的博客 5288

ASP.NET MVC零基础自学篇:(一)ASP.NET MVC简介

ASP.NET MVC 教程 ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。 ASP.NET 支持三种不同的开发模式: 1.Web Pages(Web 页面) 2.MVC(Model View Controller 模型-视图-控制器) 3.Web Forms(Web 窗体)。 MVC 编程模式 MVC 是三种 ASP.NET 编程模式...

灵活大胖子HDG 的博客 3432

关于112G和56G PAM4信号的有效回损(ERL)

本文探讨了回波损耗(RL)对高速数字通信系统性能的影响,重点分析了时域信道运行裕度(COM)与频域回波损耗指标的关联性。研究表明,传统频域回波损耗指标在预测系统性能时存在假阳性/假阴性问题,特别是对PAM-4信号系统影响更为显著。通过引入基于时域脉冲响应的有效回波损耗(ERL)指标,并结合判决反馈均衡器(DFE)的补偿效应,可更准确评估系统性能。实验表明,短封装器件虽然频域回波损耗较差,但在实际系统中表现更优。研究提出通过时域门控加权等方法优化ERL计算,为高速互连设计提供了更可靠的性能评估框架。

小孟同学的博客 262

[ASP.NET MVC]视图是如何呈现的

为了搞清楚ASP.NET MVC的请求过程,我们计划从结果追踪到源头。使用VS2012创建一个空白的ASP.NET MVC项目 然后创建一个HelloController 创建一个HelloView。在Views文件夹下创建一个Hello的文件夹,然后创建一个名为Index的View 然后再view中输入hello asp.net mvc4 点击App_Start下的Route...

weixin_34218890的博客 848

【PG高可用】一 PostgreSQL高可用方案repmgr部署(非常详细)

repmgr安装部署

DBA之路的博客 7028

ASP.NET 中的设计模式之MVC篇

ASP.NET 中的设计模式之MVC篇设计模式MVC页面控制器 模板与Page基类设计模式软件开发中,软件复用和团队协作都一直是最为人们关注的重要问题之一。有趣的是,这两个似乎属于软件工程范畴的问题都有一个共同的技术方面的解决之道:设计模式。  在这里,笔者无意对设计模式的含义进行过多介绍或者严格定义,只是给一个比较简单的理解:设计模式是对一些经常出现问题的一种解决方式,这种解决方式来自于许多开发

superhasty的专栏 2159

ASP.NET MVC企业级程序设计 第1章 初探asp.net mvc

一、ASP.NET MVC简介 1、为什么需要MVC设计模式(ASP.NET WebForm的缺点) 1)后端程序逻辑与前端UI高耦合 2)视图状态管理等机制导致网络带宽占用增加 2、适用场景: 1) ASP.NET WebForm适用于基于局域网的web应用程序(ERP, HR, CRM等企业内部管理系统) 2) ASP.NET MVC适用于基于因特网、高并发的中、大型web应用程序(门户网站、电商等) 3、主要概念: 1)组成:Model(模型)、View(视图)和Controller(控制器) Mod

高瑜的博客 3002

《C++等级认证CCF-GESP真题解析》专栏总目录

❤️ 专栏名称:《C++等级认证CCF-GESP真题解析》🌸 专栏介绍:中国计算机学会GESP《CCF编程能力等级认证》C++编程(1~8级)历届真题解析。🚀 订阅专栏:订阅后可阅读专栏内所有真题解析,真题持续更新中,欢迎订阅!

人生就是一个不断学习的过程 6197

ASP.net MVC5 简介

ASP.net MVC5 简介MVC是什么MVC是一种设计模式。 也就是Model-View-Controller 模型-视图-控制器。Model的功能Model试数据模型,用来封装与程序相关的数据,以及对数据操作的处理方法。 有关“数据处理”的范围都可以属于Model,比如: 数据库的访问操作(增删改查) 数据结构的定义 数据格式的验证 Model不依赖View或Controller,只需要关

5984

AI挖矿技术全景解析:从智能勘探到自主开采的2025年度技术演进与产业变革

随着全球关键矿产资源需求激增与开采难度加剧,人工智能(AI)技术正在重塑矿业全生命周期。本文系统综述了2025年AI挖矿技术的最新进展,涵盖从地质勘探、资源评估到自主开采、安全监控的完整技术链条。基于Elsevier 2025年发表的最新研究成果及IEEE会议前沿动态,本文深入分析了深度学习、强化学习、计算机视觉等核心技术在矿物识别、品位预测、设备维护等场景的应用机制。研究数据显示,AI技术已使勘探成功率提升45%,设备停机时间减少35%,整体运营效率提高40%以上。

nmdbbzcl的博客 2039

​asp.net mvc 如何设计view页面​

在MVC 中设计 View 页面需要综合考虑多个方面,下面将从基本结构、数据绑定、布局设计、用户交互和样式设计等角度为你详细介绍设计方法。

699

【ASP.NET MVC系列】详解View

本篇文章内容属于ASP.NET MVC系列视图篇,主要讲解View,大致内容如下: 1.Views文件夹讲解 2.View种类 3.Razor语法 4.对视图的基本操作 一 Views文件夹 (一) Views文件夹下常用文件种类 分析: 1.ASP.NET MVC页面基本被放在Views文件夹下; 2.利用APS.NET MVC模板生成框架,Views...

600

核素图(Table of Isotopes † CD ROM Edition).PDF

各种元素的衰变纲图: This work was supported by the Director, Office of Energy Research, Office of High Energy and Nuclear Physics, Nuclear Physics Division of the US Department of Energy under contract DE-AC03-76SF00098,subcontract LBL no. 4573810.

ASP.NET MVC中Controller与View之间的数据传递总结

在ASP.NET MVC中,经常会在Controller与View之间传递数据,因此,熟练、灵活的掌握这两层之间的数据传递方法就非常重要。本文从两个方面进行探讨:? Controller向View传递数据? View向Controller传递数据一、Controller向View传递数据1.       使用ViewData传递数据我们在Controller中定义如下:ViewData[“Message”] = “Hello word!”;然后在View中读取Controller中定义的ViewData数据

我的地盘 1669

PDA刷机!

刷MIUI系统的必备工具

asp.net core mvc View Component 应用

ViewComponent1、View 组件介绍在ASP.NET CORE MVC中,View组件有点类似于partial views,但是他们更强大,View组件不能使用model binding,当你调用它的时候仅仅依赖与你提供的数据一个View组件特点:   .呈现一大块而不是一个整体的响应。   .包含在控制器和视图之间发现的相同的分离问题和可测试行优点。   .可以包含参数和业务逻辑。

dotNET跨平台 2022

Asp.net mvc ViewModel

MVC规定,View即V是纯UI,不允许包含任何的逻辑层,所以在上节实例中已经违反了MVC基本准则(上节实例也是初学者应该遇到的内容),在上例中违反MVC的体系架构规则如下: 1、显示全名——逻辑层 2、使用红色标识年龄大于50的。使用简单逻辑改变了HTML元素的外观——逻辑层 ViewModel         面对可能的问题,微软就会提供解决该问题的方法,提出ViewModel,V

米奇老鼠 2656

基于Python实现WiFi室内定位的相关算法+源码+项目文档(毕业设计&课程设计&项目开发)

基于Python实现WiFi室内定位的相关算法+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档定位算法KNN方法[2]KNN方法的主要思路是:找出与TP的WiFi指纹相似度最高的K个RP,然后平均这K个RP对应的位置,最终得到TP的位置。Prob方法[3]Prob方法的主要思路是:通过贝叶斯公式,计算TP出现在每个RP上的后验概率,取k个概率最大的RP,然后平均这K个RP对应的位置,最终得到TP的位置。Stg方法[4]Stg方法是KNN方法的一种改进方法,它通过TP的k个信号最强的信号接入点来筛选RP,然后再应用KNN方法。Gk方法[5]GK方法的主要思路是通过高斯核密度估计器(Gaussian Kernel Density Estimator,GKDE)计算每个指纹位置的相对过饱和度的可能性,并通过平均与最高似然值对应的位置来确定TP的位置。

ASP.NET MVC

ViewStart.cshtml是一个全局的布局文件,程序中每个.cshtml页面都会默认使用_ViewStart提供的布局。同时.NET Framework 提供了多种技术框架,ASP.NET MVC是.NET Framework提供的众多技术框架中的一种,用于开发Web应用。ASP.NET MVC框架使用了约定大于配置的思想,按照框架约定的结构组织文件,浏览器请求某个Controller方法时,该方法默认返回与方法同名的.cshtml文件,浏览器接收.cshtml并渲染页面。.cshtml文件同名。

weixin_47249500的博客 1127

【三菱PLC例程】-超声波清洗机12槽程序(内有机械手的程序).zip

【三菱PLC例程】-超声波清洗机12槽程序(内有机械手的程序).zip

ASP.NET MVC 中 View 的设计

1. 前言  感觉有好长时间没有接触View 了,周末闲来无事,翻翻书桌上的书来回顾回顾ASP.NET MVC中View的相关内容。 2. View概述  View 通过应用程序在Action 中返回 ViewResult 或PartialViewResult,在运行阶段内部调用ExecuteResult 方法而产生模版转换(transforamtion),将运行阶段运算后产生的Mode...

dienen0325的博客 309
上一篇: HFSS PCB三维电磁仿真:裁剪、差分线与过孔建模实战
下一篇: Linux重启命令详解:从reboot到systemctl的生产环境安全实践
weixin_34226182
博客等级 码龄11年 3054粉丝 939原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值