f-cpu/vhdl/common/README.txt
created Sun Sep  9 22:46:02 by whygee@f-cpu.org
version dim dec 30 06:17:29 2001 : working towards "stable"
updated Tue Jun 25 22:36:00 2002 : fanout_linear works with Vanilla
updated Thu Jun 27 07:48:59 2002 : random_simple works and test.sh too.

This directory contains design files that are shared
by different units. This is more a "library"
than the files in f-cpu/vhdl/configuration because
they represent "components" and not their properties.

It all started by the remark that Michael uses the
same adder component for the ASU and the IMU, but
he duplicated the files. I decided to create this
directory instead. This directory will be further
populated with other elements as they appear necessary.

Currently, we have several reusable units and design
components for use wherever needed : addition,
fanout, random... However it is sometimes difficult to
port and we discover tool limitations here :
for example, Michael's "generic_adder.vhdl" is rejected
by ncsim.


Overview :
 * bit_manipulation.vhdl is created and used for the shifter unit.
 * cat.vhdl is just a test that checks if your VHDL tool understands
   binary file I/O. This utility is not used in the core :-)
 * fanout.vhdl is a generic architecture for a "fanout" entity
   which must distribute a simple signal simultaneously to all the
   2**n output signals and insert the necessary buffers. fanout.vhdl
   is only a "behavioural" definition which uses the short,
   syntaxic way.
 * fanout_linear.vhdl is a non-recursive implementation of the binary
   tree. I have derived a formula which gives the index from another
   index. There are some graphical explanations in fanout_tree.obj
   (the source) and fanout_tree.eps (if you don't have tgif).
   I should write a recursive version but i don't remember the
   trick for Simili (there is one, otherwise it doesn't work).
 * generic_adder.vhdl is Michael Riepe's Generic Carry-Increment Adder,
   used in several parts of the design. [fails with ncsim]
 * Makefile : ? This is one of Michael's files. 
 * random_simple.vhdl : this package provides a way to initialise signals
   to a rather "random" value, by reading /dev/urandom. It is
   used for stability/reset testings, not in the "core".
 * test.sh performs the sanity checks, compile the packages
   and tests them with the help of test_fanout.vhdl and test_rand.vhdl
 * deprecated/ contains some files which are not working, deprecated
   or unfinished.
