[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

gEDA: Adding Bus Functionality



Hello,
	I've just recently started to look at gEDA for use in my projects.  The
show stopper for me right now is full bus functionality.  I need to be able
to have bussed pins on symbols and use wire naming to combine/extract nets
from busses.  Just from looking at gschem, it looks like the tool does not
cause any problems with any of the functionality above.  I can add pins with
a comma separated list of pin numbers instead of one.  Busses seem to work
fine also and gschem doesn't have problems with net labels including [x:y]
range identifiers.  So it seems that the only changes to support busses
correctly would be in the netlister.  Does this sound correct?

So, being a compatent programmer I think I might tackle this problem myself.
Can someone point me to  the correct portions of gnetlister that might have
to be modified for correct bus functionality?

Here are a list of the changes I propose to make(some of this may already be
there):
1) busses should contain a label attribute in the form of name[x:y] where
x>y and the bus width is x-y+1 (ex. data[7:0])

2) nets can feeding or coming from busses should be named name[i] where x >=
i >= y

3) pins on symbols may contain bus notation.  If so, the pin# attribute
should contain a comma separated list of the pins for this bus in the same
order as the range.

4) gnetlister will recognize busses and split the bus into separate nets
with names in the form name_i and correctly hook them up based on the bus
notation described above.

5) Gnetlister much check that every net has a source and that if buses are
connected to pins that the pin is of the same width as the bus.

6) Where a bus is connected to a pin, only the width must match.  The range
may be different (ex. data[47:40] connects to pin q[7:0]).  Both will
modified to be x:0 range before nets are matched (ex. 47->7, 46->6, ...).


1-3 don't seem to cause any problems with gschem so there are no changes
needed there.  4-6 will be changes in gschem.  I'm not sure if the name
changing from name[i] to name_i is necessary for PCB.  Does anyone know?


Thanks.


-Paul Lanier