Drogheda/03-Architecture-Hardware/Auditoria-Final-V56-V57/sec3-paquete.tex

147 lines
12 KiB
TeX
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

% ================================================================ PAQUETE
\section{A $\cdot$ El paquete de fabricación}\label{sec:paquete}
\subsection{¿Los Gerber son el cobre que auditamos?}
Sí. Cada capa exportada por el Fabrication Toolkit se comparó contra una regeneración hecha hoy con
\texttt{kicad-cli} 10.0.4 sobre copias de los mismos archivos. Primero se compararon los comandos Gerber
quitando solo los comentarios y atributos X2 (\texttt{\%TF}/\texttt{\%TA}/\texttt{\%TO}, que el Toolkit escribe
como \texttt{G04} y \texttt{kicad-cli} como extendidos); después, por tipo de primitiva.
\hwtab{\begin{tabular}{@{}L{2.83cm}L{1.89cm}L{1.89cm}L{8.87cm}@{}}
\toprule
\cab{\cw{Capa} & \cw{V5.6} & \cw{V5.7} & \cw{Resultado}}\\
\midrule
F.Mask $\cdot$ B.Mask $\cdot$ F.Paste $\cdot$ B.Paste $\cdot$ F.Silk $\cdot$ B.Silk $\cdot$ Edge.Cuts & idénticas & idénticas & Comando por comando (1319 / 261 / 976 / 5 / 24 702 / 339 / 15 comandos en V5.6).\\
\rowcolor{HelgenMist} PTH.drl $\cdot$ NPTH.drl & idénticos & idénticos & NPTH: 8 barrenos iguales. PTH: iguales una vez normalizada la notación de ranuras (el Toolkit escribe \texttt{G00/M15/G01/M16}, \texttt{kicad-cli} \texttt{G85}; ambas válidas para JLC).\\
F.Cu $\cdot$ In1.Cu $\cdot$ In2.Cu $\cdot$ B.Cu — pads (flashes) y pistas (trazos) & idénticos & idénticos & 1236 / 547 / 547 / 547 flashes y 1564 / 130 / 193 / 377 trazos en V5.6; mismos conjuntos exactos en ambos.\\
\rowcolor{HelgenMist} F.Cu $\cdot$ In1.Cu $\cdot$ In2.Cu $\cdot$ B.Cu — rellenos de zona (regiones) & 0.000 mm$^2$ XOR & 0.000 mm$^2$ XOR & Contra un relleno fresco hecho con \texttt{pcbnew} \emph{con el proyecto cargado} (reglas \texttt{.kicad\_dru} y netclasses). A 20 $\mu$m por pixel no hay un solo pixel distinto.\\
\bottomrule
\end{tabular}}
\begin{helgennotice}[Hallazgo P-1 (11:30) — el repo guardaba el relleno viejo; el Gerber traía el fresco. Cerrado a las 13:00]
Las regiones del Gerber \textbf{no} son las que están guardadas en los \texttt{.kicad\_pcb} del repo: contra el
relleno guardado difieren 6.4 mm$^2$ (V5.6 F.Cu), 7.4 mm$^2$ (V5.7 F.Cu) y 9.5 mm$^2$ (V5.7 B.Cu), justo donde la
pasada 6 (T34--T37) agregó vías y movió el hilo de sensado. Los scripts T no rellenan zonas; el Toolkit sí
(\texttt{AUTO FILL: true}). Por eso el paquete está bien, pero \textbf{el archivo en disco no}: una exportación
sin rellenar (o un \texttt{kicad-cli pcb export gerbers}, que no rellena) mandaría cobre de GND encima de la vía
de \net{/SYS5V} en (138.7, 117.45) de T35 y de las vías de entrada de RS1 de T34 (figura \ref{fig:relleno}).
Esto ya lo vimos en forma de «sin conectar» falsos el 21-oct; hoy se vio en forma de corto.
\textbf{Arreglo (Leo, 5 min):} abrir cada tarjeta, \textsf{B}, guardar, \texttt{git commit}. Regla nueva (D-22-3):
\emph{los scripts T que agregan o quitan cobre terminan con un rellenado del GUI antes del commit}.
\textbf{Hecho a las 13:00} (ver la re-verificación al final de esta sección); falta el commit.
\end{helgennotice}
\begin{figure}[H]\centering
\includegraphics[width=\linewidth]{fig/fig-relleno-viejo.png}
\caption{Relleno guardado en el repo (pasada 5) contra el relleno del Gerber (fresco). En rojo, el cobre que
tendría el archivo en disco y el Gerber no: pasa encima de la vía de T35 en V5.6 y de la vía de GND de C129 de T37
en V5.7.}\label{fig:relleno}
\end{figure}
\subsection{Capas, taladros y mínimos contra la capacidad de JLC (4 capas)}
\hwtab{\begin{tabular}{@{}L{4.20cm}L{3.06cm}L{3.06cm}L{5.16cm}@{}}
\toprule
\cab{\cw{Parámetro} & \cw{V5.6} & \cw{V5.7} & \cw{Límite JLC / comentario}}\\
\midrule
Contorno & 140.0 × 100.0 mm & 140.0 × 100.0 mm & Igual que V5.5; cabe en el HBOX.\\
\rowcolor{HelgenMist} Capas de cobre & F $\cdot$ In1 $\cdot$ In2 $\cdot$ B & igual & Stackup JLC04161H-7628 escrito en el archivo (T30): 0.035 / 0.0175 / 0.0175 / 0.035 mm, núcleo 1.065 mm, prepreg 7628.\\
Pista mínima & 0.20 mm (3 tramos), 0.25 mm (158) & 0.20 (2), 0.25 (167) & JLC 4 capas: 0.09 mm. Holgura mínima por regla 0.15 mm (DRC limpio).\\
\rowcolor{HelgenMist} Vías & 0.8/0.3 (268) $\cdot$ 0.6/0.3 (118) $\cdot$ 0.8/0.4 (8) $\cdot$ 0.5/0.3 (1) & 268 $\cdot$ 125 $\cdot$ 8 $\cdot$ 1 & Barreno mínimo 0.30 mm (JLC $\ge$ 0.15; las vías de 0.1 mm de \net{/NTC} ya no existen, T30). Anillo mínimo 0.10 mm ($\ge$ 0.13 recomendado por JLC: la 0.5/0.3 es una).\\
NPTH & 3 × 2.75 mm (MH7/9/10 ArduSimple) $\cdot$ 3 × 3.20 (MH4/5/6 placa base; MH4 en (185.2, 90.3)) $\cdot$ 2 × 3.25 (postes del RJ45 J10) & iguales & Los 6 barrenos de la V5.5 de producción, menos MH11 (abrazadera, decisión del 16-oct).\\
\rowcolor{HelgenMist} Ranuras PTH & 13 (conectores) & 13 & Expresadas como ruta; JLC las acepta.\\
Serigrafía & 2 avisos: contorno de MOD1 recortado por el borde; 1 sobre la máscara de MH6 & iguales & Cosméticos.\\
\rowcolor{HelgenMist} Cajetín & «EINARBoard HBOX V5.6», rev 5.6, 2026-10-19 & «… V5.7», rev 5.7 & Correctos (T30).\\
Acabado & \texttt{copper\_finish None} en el archivo & igual & Se elige en el pedido: \textbf{ENIG} (recomendado para QFN de 0.5 mm; HASL con plomo vale si el presupuesto manda).\\
\bottomrule
\end{tabular}}
\subsection{Pasta y pads térmicos — la condición 1 del pedido}
El DFM del 8 de octubre (regla permanente: \texttt{drogheda-dfm-ltc4040-qfn}) nació de los puentes y bolas de
soldadura que Leo vio en \refdes{U6} en las V5.5 y V4. La regla pedía pasta $\le$ 50 \% en el pad térmico y
\emph{vías fuera de las ventanas de pasta o pedido con Epoxy Filled \& Capped}. Medido sobre el Gerber de hoy:
\hwtab{\begin{tabular}{@{}L{2.10cm}L{2.86cm}L{2.29cm}L{2.48cm}L{5.34cm}@{}}
\toprule
\cab{\cw{Pieza} & \cw{Pad térmico} & \cw{Pasta} & \cw{Vías dentro} & \cw{Consecuencia}}\\
\midrule
\refdes{U6} LTC4040 QFN-24 0.5 mm & 2.65 × 3.65 mm & 6 ventanas 0.95 × 0.85 = \textbf{50 \%} & \textbf{3} (0.6/0.3), las tres dentro de ventanas & Sin tapar, la pasta se mete en la vía: la pieza se inclina y puentea a 0.5 mm. \textbf{Pedir vías Epoxy Filled \& Capped + rayos X en U6.}\\
\rowcolor{HelgenMist} \refdes{U7} AP64350 ESOP-8 & 3.2 × 2.5 mm & \textbf{100 \%} (huella easyeda2kicad) & 4 (0.8/0.3) & Paso 1.27 mm: tolera, y la misma opción del pedido lo cubre. Siguiente revisión: pasta al 60 \%.\\
\refdes{U25} TPS54360B HSOP-8 (V5.7) & 2.5 × 3.2 mm & \textbf{100 \%} & 6 (0.8/0.3) & Igual que U7.\\
\rowcolor{HelgenMist} \refdes{U26} SC7A20 LGA-12 & — & 100 \% (pads 0.5 × 0.28) & 0 & Normal.\\
\bottomrule
\end{tabular}}
\begin{figure}[H]\centering
\includegraphics[width=0.92\linewidth]{fig/fig-u6-pasta.png}
\caption{\refdes{U6}: pad térmico, ventanas de pasta al 50 \% y las tres vías térmicas dentro de las ventanas,
en V5.6 y V5.7. Es la razón de la condición 1 del pedido.}\label{fig:u6pasta}
\end{figure}
\subsection{BOM y lista de posiciones}
\begin{itemize}
\item \textbf{Cuadre con el PCB.} V5.6: 247 huellas en el PCB; 226 filas en la CPL y 226 referencias en el BOM;
las 21 restantes son exactamente las que deben faltar: \refdes{JP1--JP6}, \refdes{TP1--TP7}, \refdes{MOD1},
\refdes{MH4/5/6/7/9/10} (fuera de BOM y posiciones, T30) y \refdes{R109} (DNP). V5.7: 252 / 229 / 229, con
\refdes{R124} y \refdes{R125} (DNP, divisor de EN de U25) además. Ninguna fila sin código LCSC; ningún código
distinto entre la propiedad de la huella y el BOM.
\item \textbf{Rotaciones.} El Toolkit corrigió, como en la V5.5, las huellas de biblioteca KiCad (U6 QFN 0$\to$90°,
Q7/U14 SOIC 0$\to$270°, U16 LQFP 180$\to$90°, U17 SOT-223 0$\to$180°, SOT-23 0$\to$180°, CP\_Elec 180$\to$0°, …). Las
huellas \texttt{Drogheda-v6} (easyeda2kicad: \refdes{U7}, \refdes{U25}, \refdes{U26}, \refdes{L22}) y
\refdes{D34} (\texttt{D\_SMC}, nuevo) \emph{no} están en su tabla y salen con la rotación de KiCad. Para huellas
convertidas de EasyEDA eso es lo correcto (conservan la orientación de JLC), pero \textbf{nunca se ha fabricado
con ellas}: condición 2 del pedido, confirmar en el visor. Los diodos SMA/SMB/SOD y las SOT ya pasaron en la
V5.5 con la misma convención.
\item \textbf{Códigos nuevos verificados en JLC:} \refdes{D34} C85100 = B560C-13-F (5 A, 60 V, SMC);
\refdes{F2} C99550 = Littelfuse 0452003.MRL (3 A, 125 V, NANO2 lento); \refdes{L22} C840531 = Bourns
SRP1265A-100M (10 $\mu$H, 15.5 A sat., 16.5 m$\Omega$); \refdes{Y4} C32346 = Epson FC-135 (CL 12.5 pF, 70 k$\Omega$);
\refdes{U17} C15578 = TLV1117LV33DCYR (Iq $\approx$ 100 $\mu$A, no los 5 mA de un AMS1117); \refdes{U25} C524806;
\refdes{U7} C2071691; \refdes{U26} C5126709; \refdes{C129} C19702; \refdes{C130} C1525. Todos «Extended» salvo
los básicos conocidos; existencias se confirman al cargar el BOM.
\item \textbf{Easy wins de BOM} (sin tocar cobre): \refdes{D10} SMBJ33A C224019 $\to$ \textbf{SMBJ33CA}
(bidireccional, misma huella D\_SMB; p.\,ej.\ C8838 Littelfuse o C2688178 — el que tenga existencia);
10 nF 0603 con dos códigos (\refdes{C100/C125/CBST1} C1589 básico y \refdes{CCOMP2} C57112 extendido): unificar en
C1589; \refdes{C22} dice «22uF/50V» pero C138687 es 10 $\mu$F/50 V (es la pieza que ya se usó en V5.5: corregir la
etiqueta, no la pieza); para las 108 / 322: \refdes{U14} SP3485EN $\to$ THVD1410DR (C2671345, mismo pinout SOIC-8,
receptor a prueba de bus abierto y ±16 kV) y \refdes{U15} MAX3232 $\to$ TRS3232E (mismo SOIC-16), como en la v6.
\end{itemize}
\subsection{Lo mecánico que cambió sin cambiar el contorno}
Los conectores que atraviesan la pared del HBOX no se movieron (\refdes{J9}, \refdes{J11} USB-C; \refdes{J10}
RJ45; \refdes{P15}/\refdes{P16}; \refdes{H4}; \refdes{P1}). Los JST internos del borde superior sí: respecto a la
V5.5, \refdes{P4} (batería) 25 mm en V5.6 y 38 mm en V5.7; \refdes{P6} (ventilador) 18 / 29 mm; \refdes{P8} (LED
del panel) 17 / 29 mm; \refdes{P11} (cutoff) 12 / 21 mm; y en V5.7 \refdes{P14} (RGB) pasó del borde derecho al
superior (68 mm) y los LED del gauge \refdes{DB1--DB4} al borde derecho (14--21 mm). Nada de esto rompe la
tarjeta; lo que hay que revisar con la primera unidad son los \textbf{largos de los arneses} y, si el gauge se ve
por la tapa, la \textbf{tapa de la V5.7} (hallazgo P-7).
\subsection{Re-verificación de las 13:30 sobre los archivos de las 13:00}\label{sec:reverif}
Leo rellenó las zonas, guardó los dos tableros y regeneró los paquetes a las 13:00 (V5.6 \texttt{338ee14b},
V5.7 \texttt{85baca51}; \texttt{HBOX\_v5\_Rev6\_PROD.zip} \texttt{01e1a39d}, \texttt{Rev7} \texttt{7d2fe248};
BOM y CPL con el mismo SHA-256 que en la mañana). Se repitió el método A sobre copias nuevas
(\texttt{\_to\_delete/audit-20261022b/}, script \texttt{verify.sh} + \texttt{gcmp\_b.py}):
\hwtab{\begin{tabular}{@{}L{7.4cm}L{2.1cm}L{2.1cm}L{4.1cm}@{}}
\toprule
\cab{\cw{Comparación (F.Cu, In1, In2, B.Cu a 20 $\mu$m)} & \cw{V5.6} & \cw{V5.7} & \cw{Lectura}}\\
\midrule
A $\cdot$ relleno guardado en el \texttt{.kicad\_pcb} vs relleno fresco con el proyecto cargado & 0.000 mm$^2$ & 0.000 mm$^2$ & \textbf{P-1 cerrado}: el archivo en disco ya es lo que se fabrica\\
\rowcolor{HelgenMist} B $\cdot$ paquete de las 13:00 vs archivo guardado (sin rellenar) & idéntico & idéntico & El Toolkit y el archivo coinciden\\
C $\cdot$ cobre de las 13:00 vs cobre auditado en la mañana (pads, pistas, rellenos) & idéntico & idéntico & Nada más cambió: 2264 / 396 y 2253 / 403 pistas / vías\\
\rowcolor{HelgenMist} D $\cdot$ paquete 13:00 vs paquete de la mañana: máscaras, pasta, serigrafía, contorno, taladros & idéntico & idéntico & Mismo paquete, con el relleno ya en el repo\\
DRC con \texttt{.kicad\_dru}, relleno y paridad & 3 MOD1 $\cdot$ 0 $\cdot$ 13 PF & 3 MOD1 $\cdot$ 0 $\cdot$ 13 PF & Igual que en la mañana\\
\rowcolor{HelgenMist} BOM y CPL & SHA iguales & SHA iguales & \refdes{D10} sigue como SMBJ33A: la condición 3 sigue viva\\
\bottomrule
\end{tabular}}
Lo único distinto dentro de los \texttt{.kicad\_pcb}, fuera de los rellenos, es la caché de glifos
(\texttt{render\_cache}) de los textos de serigrafía «EINARBoard 5.x» y «www.helgen.tech» en la fuente MADE Evolve
Sans: cosmético, porque la serigrafía exportada es idéntica región por región. \textbf{El veredicto de la mañana
no cambia.} Si la sesión paralela de \emph{quick wins} toca el BOM o el cobre, se vuelve a correr
\texttt{verify.sh} + \texttt{gcmp\_b.py} (5 min) antes de pagar.