www.delorie.com/archives/browse.cgi   search  
Mail Archives: geda-user/2016/05/13/00:59:41

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=20120113;
h=mime-version:sender:date:message-id:subject:from:to;
bh=ITs9SfHgTmfCv4aZy/CbW5KqEIJZdyRjWErM7iJ+cdY=;
b=vKrQRkRNXC0JjlE8acmiZAwLwVsLD+vF/d+eVVL5aZtrZbXytGjwppoYIFJuXyAiLN
iE9tJPXFsApqHiOar/5e1C91UP1puzv9HvEWdUkYdNV2rDRXr9o5o9zd9q7cfSeeqHOw
BBiWIfDp08VTgeV/G/RL2VZPjp4IudYUvs5/4Am+hjyEbdwmjxcD9bi7VQnLNl6oRfzM
5yPY9e+w2KfgNCA7HT/drMfaztCZNQc0E/msfXY3MpE6z92/e1ZhWLrj8ayfFxjRZD7j
8rSebCmOhzCLKs6T6yRUmCB0+TzA8vO8ztr8VNp5862PkA16UygmhPfuZc51wEWbpnxA
bSEw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20130820;
h=x-gm-message-state:mime-version:sender:date:message-id:subject:from
:to;
bh=ITs9SfHgTmfCv4aZy/CbW5KqEIJZdyRjWErM7iJ+cdY=;
b=dN3AU7DJp9PmGPZw07bJM0T3pHOIqmqiiokJCVa5PL+Yrg9CUmjSn2QGoDg+rkj+UV
jK2xzVKs258IpLDzBEHL57JdofijVXp+eXbwhjI4mMIsI7eTE6AkbYfz/LEJD9UvpDeH
u7ghpH8AHqsF2sVm+yhevVolAfiXpAjXMzAkwYEpp/R0jNoE+WAhF5MHt40txzkgV/8d
8edl3VEt28O1VSalftILPIdf9eAMVYWq5uPGHT9OfZPBI5USlQwRqHyA8vv+Bk8UoR5M
zDrtPl5ElQzSHylR+tU00YPZAlYbAQY/TMUYK9flpdGesHubvVa8NoqnG2ExuEXka04r
a1wg==
X-Gm-Message-State: AOPr4FXro6icxTMo/qO0DxN2le+qlAJfhI1ULz0Pw86Sn/kz6oqQHhTNDseQANcjYepLhYKgWgc+kFf4P5WnPA==
MIME-Version: 1.0
X-Received: by 10.37.48.2 with SMTP id w2mr6494936ybw.86.1463115488355; Thu,
12 May 2016 21:58:08 -0700 (PDT)
Sender: silicon DOT on DOT inspiration AT gmail DOT com
Date: Fri, 13 May 2016 14:58:08 +1000
X-Google-Sender-Auth: LWryCUIOpMDZ89d-Xi7LGOqpIFA
Message-ID: <CAKakQccEbYhkhWZ1fO9EUiWjuZygctwfUcYFOtUJ5o=hdOWJPQ@mail.gmail.com>
Subject: Re: [geda-user] Differential pair support
From: "Stephen Ecob (stephen DOT ecob AT sioi DOT com DOT au) [via geda-user AT delorie DOT com]" <geda-user AT delorie DOT com>
To: geda-user AT delorie DOT com
Reply-To: geda-user AT delorie DOT com

--94eb2c034488f3665d0532b21e7d
Content-Type: text/plain; charset=UTF-8

Here's a basic implementation of differential pair support.

The code in "differential.c" needs to be placed inside action.c

The code is run by typing

:MakeDifferential(TargetWidth,gap)

where TargetWidth is the width of lines to transform and gap is the
thickness of the gap to insert.

The pictures show a 19 mil trace that is transformed into a
differential pair with thickness 7 mil and gap 5 mil.  This was done
by typing

:MakeDifferential(19mil,5mil)

Caveats:

* Doesn't support undo properly. Back up your work before running.

* Doesn't work well with straight line intersections, it creates gaps
and overhangs at the intersections. The workaround is to use arcs for
changing direction, as it handles line to arc intersections
beautifully.

Enjoy!

--94eb2c034488f3665d0532b21e7d
Content-Type: text/x-csrc; charset=US-ASCII; name="differential.c"
Content-Disposition: attachment; filename="differential.c"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_io58fbzx2

LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCgpzdGF0aWMgY29uc3QgY2hhciBtYWtlZGlmZmVyZW50
aWFsX3N5bnRheFtdID0KICAiTWFrZURpZmZlcmVudGlhbCh3aWR0aCwgZ2FwKSI7CgpzdGF0aWMg
Y29uc3QgY2hhciBtYWtlZGlmZmVyZW50aWFsX2hlbHBbXSA9ICJTcGxpdHMgbGluZXMgaW50byBk
aWZmZXJlbnRpYWwgcGFpcnMuIjsKCi8qICVzdGFydC1kb2MgYWN0aW9ucyBNYWtlRGlmZmVyZW50
aWFsCgpFeHBlcmltZW50YWwgY29kZSB0aGF0IHNwbGl0cyBsaW5lcyBpbnRvIGRpZmZlcmVudGlh
bCBwYWlycy4KCiVlbmQtZG9jICovCgpzdGF0aWMgaW50CkFjdGlvbk1ha2VEaWZmZXJlbnRpYWwg
KGludCBhcmdjLCBjaGFyICoqYXJndiwgQ29vcmQgeCwgQ29vcmQgeSkKewogIGNoYXIgKndpZHRo
ID0gQVJHICgwKTsKICBjaGFyICpnYXAgPSBBUkcgKDEpOwogIENvb3JkIHcgPSAxMDAwMDAwOwog
IENvb3JkIGcgPSAyMDAwMDA7CiAgQ29vcmQgdDsKICBDb29yZCB4MSx5MSx4Mix5MjsKICBkb3Vi
bGUgd3gsIHd5OwogIGRvdWJsZSBpLCBvZmZzZXQ7CiAgZG91YmxlIG54LCBueTsKICBMaW5lVHlw
ZSAqbGluZTI7ICAKICBBcmNUeXBlICphcmMyOyAgCgogIGlmICh3aWR0aCAmJiBnYXApCiAgICB7
CiAgICAgIHcgPSBHZXRWYWx1ZSAod2lkdGgsIE5VTEwsIE5VTEwpOwogICAgICBnID0gR2V0VmFs
dWUgKGdhcCwgTlVMTCwgTlVMTCk7Cgl9CiAgdCA9ICh3IC0gZykgLyAyOwogIG9mZnNldCA9IChk
b3VibGUpKChnK3cpPj4yKTsKICAvL3ByaW50Zigidz0lZCwgZz0lZCwgdD0lZFxuIiwgdywgZywg
dCk7CSAKCiAgQUxMTElORV9MT09QIChQQ0ItPkRhdGEpOwogICAgewoJICBpZiAoVEVTVF9GTEFH
IChMT0NLRkxBRywgbGluZSkgfHwgbGluZS0+VGhpY2tuZXNzICE9IHcpCgkJY29udGludWU7Cgkg
IEFkZE9iamVjdFRvU2l6ZVVuZG9MaXN0IChMSU5FX1RZUEUsIGxheWVyLCBsaW5lLCBsaW5lKTsK
CSAgRXJhc2VMaW5lIChsaW5lKTsKCSAgcl9kZWxldGVfZW50cnkgKGxheWVyLT5saW5lX3RyZWUs
IChCb3hUeXBlICopIGxpbmUpOwoJICBSZXN0b3JlVG9Qb2x5Z29uIChQQ0ItPkRhdGEsIExJTkVf
VFlQRSwgbGF5ZXIsIGxpbmUpOwoJICBsaW5lLT5UaGlja25lc3MgPSB0OwoJICB3eCA9IChkb3Vi
bGUpKGxpbmUtPlBvaW50Mi5YIC0gbGluZS0+UG9pbnQxLlgpOwoJICB3eSA9IChkb3VibGUpKGxp
bmUtPlBvaW50Mi5ZIC0gbGluZS0+UG9pbnQxLlkpOwoJICBpID0gMS4wIC8gc3FydCh3eCp3eCAr
IHd5Knd5KTsKCSAgbnggPSAtd3kgKiBpICogb2Zmc2V0OwoJICBueSA9IHd4ICogaSAqIG9mZnNl
dDsKCSAgeDEgPSBsaW5lLT5Qb2ludDEuWCAtIChDb29yZClueDsKCSAgeTEgPSBsaW5lLT5Qb2lu
dDEuWSAtIChDb29yZClueTsKCSAgeDIgPSBsaW5lLT5Qb2ludDIuWCAtIChDb29yZClueDsKCSAg
eTIgPSBsaW5lLT5Qb2ludDIuWSAtIChDb29yZClueTsKCSAgbGluZS0+UG9pbnQxLlggKz0gKENv
b3JkKW54OwoJICBsaW5lLT5Qb2ludDEuWSArPSAoQ29vcmQpbnk7CgkgIGxpbmUtPlBvaW50Mi5Y
ICs9IChDb29yZClueDsKCSAgbGluZS0+UG9pbnQyLlkgKz0gKENvb3JkKW55OwoJICAKCSAgU2V0
TGluZUJvdW5kaW5nQm94IChsaW5lKTsKCSAgcl9pbnNlcnRfZW50cnkgKGxheWVyLT5saW5lX3Ry
ZWUsIChCb3hUeXBlICopIGxpbmUsIDApOwoJICBDbGVhckZyb21Qb2x5Z29uIChQQ0ItPkRhdGEs
IExJTkVfVFlQRSwgbGF5ZXIsIGxpbmUpOwoJICBEcmF3TGluZSAobGF5ZXIsIGxpbmUpOwoKCSAg
aWYgKChsaW5lMiA9IENyZWF0ZURyYXduTGluZU9uTGF5ZXIgKGxheWVyLCB4MSwgeTEsCgkJCQkJ
CSAgeDIsIHkyLAoJCQkJCQkgIHQsIGxpbmUtPkNsZWFyYW5jZSwKCQkJCQkJICBsaW5lLT5GbGFn
cykpKQoJCXsKCQkgIEFkZE9iamVjdFRvQ3JlYXRlVW5kb0xpc3QgKExJTkVfVFlQRSwgbGF5ZXIs
IGxpbmUyLCBsaW5lMik7CgkJICBEcmF3TGluZSAobGF5ZXIsIGxpbmUyKTsKCQkgIENsZWFyRnJv
bVBvbHlnb24gKFBDQi0+RGF0YSwgTElORV9UWVBFLCBsYXllciwgbGluZTIpOwoJCX0KICAgIH0K
ICBFTkRBTExfTE9PUDsKICAKICBBTExBUkNfTE9PUCAoUENCLT5EYXRhKTsKICB7CglpZiAoYXJj
LT5UaGlja25lc3MgIT0gdykKCSAgY29udGludWU7CgoJQWRkT2JqZWN0VG9TaXplVW5kb0xpc3Qg
KEFSQ19UWVBFLCBsYXllciwgYXJjLCBhcmMpOwoJRXJhc2VBcmMgKGFyYyk7CglyX2RlbGV0ZV9l
bnRyeSAobGF5ZXItPmFyY190cmVlLCAoQm94VHlwZSAqKSBhcmMpOwoJUmVzdG9yZVRvUG9seWdv
biAoUENCLT5EYXRhLCBBUkNfVFlQRSwgbGF5ZXIsIGFyYyk7CgogICAgYXJjLT5UaGlja25lc3Mg
PSB0OwogICAgYXJjLT5XaWR0aCArPSAoQ29vcmQpb2Zmc2V0OwogICAgYXJjLT5IZWlnaHQgKz0g
KENvb3JkKW9mZnNldDsKCglTZXRBcmNCb3VuZGluZ0JveCAoYXJjKTsKCXJfaW5zZXJ0X2VudHJ5
IChsYXllci0+YXJjX3RyZWUsIChCb3hUeXBlICopIGFyYywgMCk7CglDbGVhckZyb21Qb2x5Z29u
IChQQ0ItPkRhdGEsIEFSQ19UWVBFLCBsYXllciwgYXJjKTsKCURyYXdBcmMgKGxheWVyLCBhcmMp
OwoKCWlmICgoYXJjMiA9IENyZWF0ZU5ld0FyY09uTGF5ZXIgKGxheWVyLCBhcmMtPlgsIGFyYy0+
WSwKCQkJCQkgIGFyYy0+V2lkdGggLSAyICogKENvb3JkKW9mZnNldCwgYXJjLT5IZWlnaHQgLSAy
ICogKENvb3JkKW9mZnNldCwKCQkJCQkgIGFyYy0+U3RhcnRBbmdsZSwKCQkJCQkgIGFyYy0+RGVs
dGEsCgkJCQkJICB0LAoJCQkJCSAgYXJjLT5DbGVhcmFuY2UsCgkJCQkJICBhcmMtPkZsYWdzKSkp
Cgl7CgkgIEFkZE9iamVjdFRvQ3JlYXRlVW5kb0xpc3QgKEFSQ19UWVBFLCBsYXllciwgYXJjMiwg
YXJjMik7CgkgIERyYXdBcmMgKGxheWVyLCBhcmMyKTsKCSAgQ2xlYXJGcm9tUG9seWdvbiAoUENC
LT5EYXRhLCBBUkNfVFlQRSwgbGF5ZXIsIGFyYzIpOwoJfQoKICB9CiAgRU5EQUxMX0xPT1A7CiAg
CiAgcmV0dXJuIDA7Cn0KCi8vIE5CIGFkZCB0aGUgZm9sbG93aW5nIHRvIHRoZSBhY3Rpb25fYWN0
aW9uX2xpc3RbXSBhcnJheSBuZWFyIHRoZSBlbmQgb2YgYWN0aW9uLmMKICB7Ik1ha2VEaWZmZXJl
bnRpYWwiLCAwLCBBY3Rpb25NYWtlRGlmZmVyZW50aWFsLAogICBtYWtlZGlmZmVyZW50aWFsX2hl
bHAsIG1ha2VkaWZmZXJlbnRpYWxfc3ludGF4fQogICwgIAoK
--94eb2c034488f3665d0532b21e7d
Content-Type: image/png; name="pcb1.png"
Content-Disposition: attachment; filename="pcb1.png"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_io595shs1

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
Rz71b1KX8W4AAAAASUVORK5CYII=
--94eb2c034488f3665d0532b21e7d
Content-Type: image/png; name="pcb2.png"
Content-Disposition: attachment; filename="pcb2.png"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_io595vyz2

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
--94eb2c034488f3665d0532b21e7d--

- Raw text -


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