X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f X-Recipient: geda-user AT delorie DOT com X-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706075540; x=1706680340; darn=delorie.com; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=og8C8+iC5lHIfJMube4Bhv/u8pas2mIo3Gmo8ZaIjIs=; b=EikB74OEYck/TU387yLzjV77iI2mZYjwBVrGB8n8a0Uzpj3m4blypcO/Vl/QJbobtU rSRbYVnDwLfmoByBSF/WJEzblIvdiP+jmJlLy9aSW6SPHeHDEyA+xTkhhBuQc0M1UqHt JTe53WGF3KpsSAYeeXkMg6msMPnWqpl6x6bUlmhQj3MqziZ8ZQV8fafvVqg1oDCnlPv8 2CEopjzHvPPYhIDMscKeERS8Fp7NUDsI+PMx2aKfTzFZzmcAFYX2E8EFT5Cqj3VHQ2ET GlWaH25DUPBruFdUmupihAXhZKCsAUpGVRHOSOCu3NPGcswEzSJtXusf0CdgREyP9Ic6 IanA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706075540; x=1706680340; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=og8C8+iC5lHIfJMube4Bhv/u8pas2mIo3Gmo8ZaIjIs=; b=wlfTXKnHdXQ48emErHRxeWve5QuAZwcyjj/iAuIbBdniW6jwYt4ECsKgKC4iAaNFeM lESCj6QZ4oA3vFhpArnKTyeQ+AX8Z/KX69+4XjZE1Qed2dGLzeaywoastI0RC3r3IraV lMO3ju068HDqHsXnV4xZei4D7vnSCEwyaEUhiW5L2+OkWaaxhWH3kqFciUjrFHFZgtol AwuU/s72hO3oujPY+jPcTqAZalEveVWlQJLEWdSyStltOgFiiyyQ1R6t00p99udVJ5UL cbsJrt+cxcFv87LqA1kY/bRcTrET/jk7wqREfB51oK22EgwTxvCGLIn1u/hbh1ltscqP b74Q== X-Gm-Message-State: AOJu0Yyyl3ERctjiR2icV2hr7FkZx9myCtMpBk4LIlEV0le9+kpBNn2o +BLJFicsAU49T/jfYWBzbivzhwV33kUJI7ZNipxyXwMR5XJyVPEtI095ImFYmhryUc2LTuwwFX3 4od7s6JOGOTo61IIJHOG8zgzrwRfOJgFEF/s= X-Google-Smtp-Source: AGHT+IHA01RLAwT7d2A9I6xTNXzLCN22QLIZuGpT07KsbbPRK/cebdwOkCv3MitShoi8mvX+D0VN36QUcZcZj8cwSoQ= X-Received: by 2002:a05:6512:2382:b0:50f:98d:35e4 with SMTP id c2-20020a056512238200b0050f098d35e4mr3820535lfv.0.1706075538350; Tue, 23 Jan 2024 21:52:18 -0800 (PST) MIME-Version: 1.0 From: "Britton Kerin (britton DOT kerin AT gmail DOT com) [via geda-user AT delorie DOT com]" Date: Tue, 23 Jan 2024 20:52:06 -0900 Message-ID: Subject: [geda-user] Allowing pins/pads with zero clearance to contact polygons To: geda-user AT delorie DOT com Content-Type: text/plain; charset="UTF-8" Reply-To: geda-user AT delorie DOT com A while back there was some discussion here about different ways of connecting pins/pads to polygons (e.g. ground pads to ground plane). At least some people like to do this by setting the clearance for the pin/pad to zero, then simply drawing the ground plane over the part. It's a nice way to do it because it removes the need to have little hard-to-select traces everywhere to connect e.g. ground pins to ground plane (which in turn makes it much less painful to move parts around after the fact. This used to work without any DRV violations, but a fix to the polygon clearance tests by Charles Parker in de49a513 seems to show that it only ever worked by accident. However the current code in master contains this code that explicitly allows zero-clearance vias to contact polygons: case VIA_TYPE: if (clearance == 0) { /* Vias with zero clearance are allowed, make sure it's connected. */ if (obj_touches_poly(&thing1, polygon, GetLayerNumber(PCB->Data, layer))) break; else { /* not connected to the polygon, raise an error*/ new_polygon_not_connected_violation (layer, polygon); break; } } I think this same condition should apply to PAD_TYPE and PIN_TYPE objects as well, because it's essentially correct to take zero to mean zero, and incorrect to do otherwise. What I don't agree with is the subsequent requirement that the object touch the nearby polygon, for the following reasons: * It adds significantly more meaning to clearance == 0 than that setting explicitly states * As implemented it triggers on nearby polygons that aren't meant to be connected * As implemented the message doesn't make clear what the problem is (refers only to flag and doesn't mention clearance) and gives a wrong prescription for the case of a nearby polygon that isn't supposed to be connected. * It doesn't catch thin connections (as happens for DRC elsewhere) anyway * Complete misses with polys that are supposed to be connected are caught by connectivity anyway Changing this to honor the literal meaning of clearance == 0 while not adding any unexpected implicit meaning would be fairly low-risk: it wouldn't change any existing board, and would only impact users who have deliberately set clearance to zero. So far as I know none of the available footprint libraries ship footprints with clearance set that way by default. Thoughts? Britton