gnetlist ignores duplicate inout-symbols

Bug #698524 reported by nobody
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
gEDA
Fix Released
High
Peter TB Brett

Bug Description

If an inout symbol is instantiated twice on a subsheet, the resulting gsch2pcb silently ignores one of them. This results in missing connections in the pcb.

IMHO, gsch2pcb should either trough an error message, or include all instances into the netlist.

---<(kaimartin)>---

Revision history for this message
Peter TB Brett (peter-b) wrote :

This is a problem with gnetlist, not gsch2pcb.

Revision history for this message
KaiMartin (kmk-familieknaak) wrote :
Download full text (13.2 KiB)

gschem files to reproduce the bug: inout_master.sch and inout_

/-------------inout_master.sch----------------
v 20080127 1
C 40000 40000 0 0 0 EMBEDDEDtitle-A3-2.sym
[
B 40000 40000 16500 11600 15 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
T 52300 41800 5 10 0 0 0 0 1
graphical=1
L 49000 40700 55200 40700 15 0 0 0 -1 -1
L 55200 41800 55200 40700 15 0 0 0 -1 -1
L 56150 40350 56050 40100 15 0 0 0 -1 -1
L 55200 40450 56500 40450 15 0 0 0 -1 -1
L 55200 41100 56500 41100 15 0 0 0 -1 -1
B 49000 40000 7500 1800 15 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
T 49100 40800 15 8 1 0 0 0 1
TITLE
T 52300 41300 5 30 0 1 0 4 1
Title=Titel
T 49100 40100 15 8 1 0 0 0 1
FILE:
T 51400 40300 5 16 0 1 0 4 1
filename=filename.sch
T 55300 41200 15 8 1 0 0 0 1
REV.:
T 55850 41500 5 16 0 1 0 4 1
revision=revision
T 55300 40100 15 8 1 0 0 0 1
PAGE:
T 56050 40100 5 16 0 1 0 6 1
page=n
T 56200 40100 5 16 0 1 0 0 1
number_of_pages=m
T 55300 40550 15 8 1 0 0 0 1
DATE:
T 55850 40850 5 12 0 1 0 4 1
date=DD.MM.YY
T 53900 40100 15 8 1 0 0 0 1
DRAWN BY:
T 54450 40450 5 16 0 1 0 4 1
author=author
L 55200 40700 55200 40000 15 0 0 0 -1 -1
L 53600 40700 53600 40000 15 0 0 0 -1 -1
]
{
T 52300 41300 5 30 1 1 0 4 1
Title=duplicate inout test
T 51400 40300 5 16 1 1 0 4 1
filename=inouttest.sch
T 55850 41500 5 16 1 1 0 4 1
revision=1
T 56050 40100 5 16 1 1 0 6 1
page=1
T 56200 40100 5 16 1 1 0 0 1
number_of_pages=2
T 55850 40850 5 12 1 1 0 4 1
date=08.08.08
T 54450 40450 5 16 1 1 0 4 1
author=-<(kmk)>-
}
C 43700 43300 1 0 0 EMBEDDEDinouttest.sym
[
B 44000 44200 2400 3300 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
P 44000 47200 43900 47200 1 0 1
{
T 44100 47200 5 10 1 1 0 0 1
pinlabel=in_kmk
T 43900 47300 5 10 0 1 0 7 1
pinnumber=1
T 43900 47300 5 10 0 1 0 7 1
pinseq=1
}
T 44000 47600 8 10 0 1 0 0 1
refdes=SUB?
T 45200 44300 8 10 0 1 0 4 1
source=inouttest_sub.sch
T 45200 47300 8 20 0 1 270 1 1
description=inouttest
B 44000 43700 2400 500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
T 44000 49200 5 8 0 0 0 0 1
device=none
T 44000 48600 5 8 0 0 0 0 1
dist-license=GPL 3, see http://www.gnu.org/licenses/gpl-3.0.txt for details
T 44000 49000 5 8 0 0 0 0 1
comment=template for subsheet
T 44000 48800 5 8 0 0 0 0 1
author=Kai-Martin Knaak, <email address hidden>
T 44000 48200 5 8 0 0 0 0 1
numslots=0
T 44000 48400 5 8 0 0 0 0 1
use-license=free, no restrictions
P 44000 46700 43900 46700 1 0 1
{
T 44100 46700 5 10 1 1 0 0 1
pinlabel=in_geda
T 43900 46800 5 10 0 1 0 7 1
pinnumber=1
T 43900 46800 5 10 0 1 0 7 1
pinseq=1
}
]
{
T 44000 47600 5 10 1 1 0 0 1
refdes=SUB1
T 45200 44300 5 10 1 1 0 4 1
source=inouttest_sub.sch
T 45200 47300 5 20 1 1 270 1 1
description=inouttest
T 44000 49200 5 8 0 0 0 0 1
device=none
}
C 42800 47100 1 0 0 EMBEDDEDresistor-2.sym
[
P 43700 47200 43550 47200 1 0 0
{
T 43600 47250 5 8 0 1 0 0 1
pinnumber=2
T 43600 47250 5 8 0 0 0 0 1
pinseq=2
T 43600 47250 5 8 0 1 0 0 1
pinlabel=2
T 43600 47250 5 8 0 1 0 0 1
pintype=pas
}
P 42800 47200 42952 47200 1 0 0
{
T 42900 47250 5 8 0 1 0 0 1
pinnumber=1
T 42900 47250 5 8 0 0 0 0 1
pinseq=1
T 42900 47250 5 8 0 1 0 0 1
pinlabel=1
T 42900 47250 5 8 0 1 0 0 1
pintype=pas
}
B 42950 47100 600 200 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
T 43200 47450 5 10 0 0 0 0 1
device=RESISTOR
T 43000 47400 8 10 0 1...

Revision history for this message
KaiMartin (kmk-familieknaak) wrote :

netlist produced with the files inouttest_master.sym and inouttest_sub.sch :

/-----------inouttest_master.net---------------
GND R6-1 R5-1 SUB1R4-2 SUB1R3-2 SUB1R2-2 SUB1R1-2
SUB1noname6 SUB1R1-1
SUB1noname5 SUB1R3-1
noname2 SUB1R4-1 R6-2
noname1 SUB1R2-1 R5-2
\-----------inouttest_master.net---------------

Note, only the second instance of an in symbol is reflected by the netlist. SUB1R1 is not connected to R5 and SUB1R3 is not connected to R6.

---<(kaimartin)>---

Revision history for this message
KaiMartin (kmk-familieknaak) wrote :

Expected behaviour:

Regard all instances of inout symnbols with the same refdes as connecting to the same net. That is, connect them all to the respective in port of the subsheet symbol.

Altenatively stopp with an error message that hints to the offending inout symbol.

Actual behaviour:

Only the second inout symbol is connected to the port. This silently ignores some connections the desginer has drawn in gschem.

---<(kaimartin)>---

Revision history for this message
Peter TB Brett (peter-b) wrote : Bug verified

Verified that this bug is still a problem.

Archive of testcase files (copied & pasted from KaiMartin's comments)
attached.

 status triaged

Changed in geda:
status: New → Triaged
Peter TB Brett (peter-b)
Changed in geda:
assignee: nobody → Peter TB Brett (peter-b)
Roland Lutz (rlutz)
Changed in geda:
status: Triaged → Fix Committed
Revision history for this message
KaiMartin (kmk-familieknaak) wrote : Re: [Bug 698524] Re: gnetlist ignores duplicate inout-symbols

Roland Lutz <email address hidden> schrieb am 26. September 2019:

(...)

> ** Changed in: geda
> Status: Triaged => Fix Committed

:-)
Danke.
Auf das Problem war ich auf die harte Tour gestoßen. Eine Leiterplatte
hatte fehlende Verbindungen...

Welche der beiden Varianten hast Du umgesetzt?
Das steht bestimmt in den README, ist mir aber nicht im Kopf geblieben.

---<)kaimartin(>---

--------------------------
> --
> You received this bug notification because you are a member of gEDA Bug
> Team, which is subscribed to gEDA.
> https://bugs.launchpad.net/bugs/698524
>
> Title:
> gnetlist ignores duplicate inout-symbols
>
> Status in gEDA:
> Fix Committed
>
> Bug description:
> If an inout symbol is instantiated twice on a subsheet, the resulting
> gsch2pcb silently ignores one of them. This results in missing
> connections in the pcb.
>
> IMHO, gsch2pcb should either trough an error message, or include all
> instances into the netlist.
>
> ---<(kaimartin)>---
>
> To manage notifications about this bug go to:
> https://bugs.launchpad.net/geda/+bug/698524/+subscriptions

--
Kai-Martin Knaak
Email: <email address hidden>
Öffentlicher PGP-Schlüssel:
https://keyserver.ubuntu.com/pks/lookup?op=index&search=0x7B0F9882

Revision history for this message
Roland Lutz (rlutz) wrote :

> Welche der beiden Varianten hast Du umgesetzt?

I chose a combination of both variants: the I/O ports are connected to each other and to the pin of the subschematic symbol, but a warning is issued as this is most probably a user error and should be corrected.

Revision history for this message
Roland Lutz (rlutz) wrote :

released in gEDA/gaf 1.10.0

Changed in geda:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.