delorie.com/archives/browse.cgi   search  
Mail Archives: geda-user/2024/01/24/00:54:49

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]" <geda-user AT delorie DOT com>
Date: Tue, 23 Jan 2024 20:52:06 -0900
Message-ID: <CAC4O8c_FTDR8o603fWdhz0Rh_OgKybeTKuDM5cnJXNknQCYLoQ@mail.gmail.com>
Subject: [geda-user] Allowing pins/pads with zero clearance to contact polygons
To: geda-user AT delorie DOT com
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

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019