[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: gEDA-user: Support for busses
Bill Cox wrote:
Keith Outwater wrote:
-- Busses get netname attributes of the form "FOO[3:0],BAR[2],ENWR".
Net's tapping busses is for visual apperance. The connection to the
bus is implicit in the signal name that must appear on the net
somewhere anyway.
Yes, but what if you don't name the net? Wouldn't it be nice if you
could simply rip off a bus member using a 'rule' attribute and forget
about having to name the ripped net?
Here's an example of why this is a Good Thing:
Let's say I create a schematic with four memory chips which connect
to a 32 bit data bus named cpu_data[31:0]. On each chip, I rip 8
bits from the bus. Most schematic editors require me to name each
ripped net: cpu_data[0], cpu_data[1], ... Now this is a big hassle
and does not add any useful information whatsoever to the schematic
since I already know the bus name (it's cpu_data). What happens now
when I decide to change the bus name to local_data[31:0]? You
guessed it: everything has to be renamed. This makes editing a pain
and reuse a real pain.
Instead of this drudgery, how about allowing a 'rule' attribute to be
placed on a bus ripper to indicate the index of the bus member to be
connected to the ripped net? For example, if I want to rip
cpu_data[4] off of the bus, I place a bus ripper on the bus and
change the rule attribute to 4. Whatever net I connect to the other
end of the bus ripper gets connected to cpu_data[4]. Simple. This
approach completely avoids the redundant placement of bus names on
the ripped nets and allows the entire bus to be renamed by changing
the bus name in one place. Obviously, there needs to be a net name
resolution policy, but that's no big deal. Better yet, if there is a
net name conflict, pop up a dialog and ask the user what he wants to do.
BTW, as far as I know, only Mentor's Design Architect gets this stuff
right. Maybe Cadence does too. Then again both tools cost some real
money.
This sounds good to me. How about if we let the user set the
"netname" attribute to a simple index, like "[4]"? Then the full name
could be obtained from the tap.
Hi, Keith.
I want to implement the bus tap rules you suggest. I went to go write
the code and realized I don't have quite enough information. In
particular, busses can be multiple signals concatentated. For example,
a legal bus name is "A1,A2,A3,A4", or "a[7:0],b[7:0]". If I simply put
an attribute name on a bus tap like [4], then I assume that means the
5th signal in the bus. However, if the bus name is "a[63:32]", I would
like to be able to tap signals with names like "[35]", rather than
making them 0-based indexes.
How should I deal with this? If you have a good scheme, I'll go write it.
Thanks,
Bill