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"

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 / design
components for use wherever needed : addition,
fanout, random. However Vanilla doesn't like some
implementations :-( particularly random and fanout_linear.


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 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). Vanilla
   doesn't seem to like it but i presume that it should work for a
   good synthesiser. 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.
 * Makefile : ? This is one of Michael's files.
 * random : a simple file that can be used as random bit generator
   if you can't access to /dev/urandom (ie under Windows). This is
   left here only for commodity but only as a least-resort solution.
 * random.vhdl : this package declaration provides a way to initialise signals
   to a rather "random" value, by reading a file, which should be
   /dev/urandom. It is used for stability/reset testings.
 * random_file.vhdl implements the random package's functions.
 * random_clear.vhdl is another, stripped-down version which can be used
   if your tool doesn't support proper file I/O, but in return,
   it is not random at all... Use it only if cat.vhdl fails.
 * vanilla.sh and simili.sh perform the sanity checks,
   compile the packages and test them with the help of
   test_fanout.vhdl and test_rand.vhdl
 * deprecated/ contains some files which are not working and/or
   unfinished.
