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

Re: [f-cpu] New snapshot for EU_INC and EU_CMP



On Tue, Jul 30, 2002 at 01:04:30AM +0200, Michael Riepe wrote:
> On Mon, Jul 29, 2002 at 08:48:13PM +0200, Etienne LABARRE wrote:
> > Hi all,
> > 
> > New snapshot include a lot of changes and features :
> > 
> > INC unit and CMP unit are now two different units, for simplify and
> > decrease latency
> > 
> > Both units are based to the same component : find_lsb
> >  It's a binary tree for find the first null lsb in a word.
> >  It supports SIMD operations (size of chunk = 8, 16, 32, 64, 128, 256
> >  bits)
> >  It's based to only one function : and_reduce. It's is a standard
> >  function of ieee.std_logic_1164 library.
> 
> Did you find source code or documentation for package std_logic_misc?

???? It's standard library. Packages std_logic_1164 and std_logic_misc
are available with all vhdl tools.
(For example, with Simili, in Simili_dir/lib/ieee/stdlogicmisc.vhd)


> 
> I noted that you use ieee.numeric_std in your designs, which is a
> no-no. Or did you include it by mistake?

Oop's ! It's an error. My code don't need ieee.numeric_std... I have
forgotten to remove this line.

> 
> >  Latency of find_lsb is not exactly know, but i can estimate this
> >  to 3 level of 4-and, and 1 level of mux, or more exactly 2 level of
> >  8-and, and 1 level of mux. The precise latency is not important,
> >  because max latency will be fixed by timing constraints during synthetisis process.
> >  (It's an explain of my choice of standard function. "Just an
> >  Illusion"
> >  will can explain this more easy that me, i think...)
> 
> I'm afraid that a timing constraint will `blow up' the unit.

The problem of "6 levels of 4 and gates" is to depend to final
techno. 
I think taht this criteria is ok for FPGA techno, but not optimized for
the others.
I call standard functions, because synthetisis tools will have (i hope) available 
pre-routed (and optimized) functions for chosen technology.
==> the code don't must depend to techno.


> BTW: for 256 bits, you need *four* levels of 4-and.

Exactly, but 6-levels criteria is for 64 bits only.

> 
> > For INC unit, the data flow is :
> >  1 level of mux
> >  find_lsb : 3 level of 4-and, 1 level of mux
> >  1 level of xor
> >  2 level of mux
> >  total is 8 levels.
> >  Critical datapath is only for ABS operation.
> > 
> >  Supported operations :
> >  INC, DEC, NEG, ABS, LSB0, LSB1
> > 
> >  All operations are tested by my testbenches.
> > 
> > For CMP unit, the data flow is :
> >  1 level of xor,
> >  1 level of mux,
> >  find_lsb : 3 level of 4-and, 1 level of mux
> >  2 level of mux,
> >  total is 8 levels.
> >  Critical datapath is for CMP, MIN, MAX, SORT operations.
> 
> I doubt that you can get away with 8 cycles. From my experience, 64-bit
> CMP alone needs 1 level of 2-xor, 3 levels of 4-and, 1 level of 2-xor,
> 1 level of 2-and plus 3 levels of 4-or, giving a total of 9 levels.

Hmm, i have perhap's made an error. Can you look at my code ?

Etienne.

*************************************************************
To unsubscribe, send an e-mail to majordomo@seul.org with
unsubscribe f-cpu       in the body. http://f-cpu.seul.org/