[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: gEDA-user: Support for busses
On Saturday 08 November 2003 16:35, Bill Cox wrote:
> 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.
with [4], do you mean then that it is A4 above (in A1,A2,A3,A4) if it is one
based? I don't see how you want to make the user aware that a signal is 1
based or 0 based.
Remember there are logical and physical busses in many designs. Cadence do
make a difference between logical and physical busses. I havent quite grasped
the difference in Cadence as I consequently use the <> bus declaration.
What I do recognize is a need to make simplified representation of complex
signal collections. An example may be on the very top level of a chip or a
module used in a chip, you want to have a human-readable bus name, say,
control[15:0] which go between the two blocks uRom and Accu and consist of
regtl<7:0>,regls<3:2,0>,regrt<9,7,5,3,1> which are the actual lines. (the
names are made up for example only)
This way you don't need to change the top level bus if the local signal names
change due to reusability. (I could use a different uRom module for the same
Accumulator if the uRom happen to have other signal names) Care must be taken
on the left to right assignment on each of the end of the busses, but that is
also the reason why I use <> all the time in Cadence. (Also there are some
netlisting errors if I use [])
--
Svenn