[comp.lsi] Summary -- arithmetic operators using octtools

patel@umvlsi.ecs.umass.edu (Baiju Patel) (05/29/90)

I had requested information on designing arithmatic operators using octtools.
All the responses basically suggested that I use built-in operations that
are provided within bdsyn (such as +, -, * etc.). 
I myself has developed an iterative multiplier using booths algorithm.
If anybody is interested in it, I will be more than happy to send you the
bdsyn and bdnet files.

The three responses that I recieved are: 
----------------------------------------

> I just hit the same problem myself trying to come up with a quick and
> dirty ALU. Assuming you have the OCT tools already, look in the
> Postscript manual for Bdsyn. (Oct ver 3.5) Bdsyn can
> produce any combinational logic which you can specify in their
> ADA-like language. The expressions listed on page 11 provide library
> expressions like add, multiply, shift, and so on. Of course, you
> probably take a speed and space hit as far as optimality is concerned.
> Here's the first try at my ALU in the Bdsyn language (it might not work):
>!
>!	alu.bds -  32-bit Alu Logic, input file for BDSYN
>!
>!	Mitchell N. Perilstein
>!	Department of Computer Engineering and Science
>! 	Case Western Reserve University, Cleveland OH
>!	usenet: {decvax,sun}!cwjcc!alpha!mitch 
>! 	arpa:   mitch@alpha.ces.CWRU.edu

---------------------------------------------------
From paul@m2c.org Thu May  3 13:02:15 1990

Since the oct tools are basically synthesis tools, the concept
of generators, as in MAGIC, is obsolete. If you need an adder,
you can use the BDS synthesis language. A sample BDS file
for an 8 bit adder is:

model adder sum<7:0> = a<7:0>, b<7:0>;
routine main
sum = a + b;
endroutine;
endmodel;

An 8 bit multiply might look like:

model multiply sum<7:0> = a<7:0>, b<7:0>;
routine main
sum = a * b;
endroutine;
endmodel;


Note that the multiply will generate a lot more logic.

Assuming you want a standard cell layout of the adder, and 
that the BDS file is named "adder.bds", the following sequence 
of commands will get you to a layout:

bdsyn -o adder.bds > adder.blif
misII -f script.msu -T oct -o adder:logic adder.blif
wolfe -o adder:placed adder:logic

You can view the resulting layout with vem:

vem -G+0+0 -Fadder:placed -G+200+200 &

Paul
-------------------------------------------------------------
From ricks@shambhala.berkeley.edu Thu May  3 12:58:48 1990
You can use bdsyn to generate your function pretty easily.
BDSYN has a library of +, *, -, >, <, =, ... so you don't
have to specify the exact function (logically), however you
get whatever style the library has.  You can use misII to
"change the style" somewhat (use timing based optimization 
to convert a ripple-carry adder into something different).
[~octtools/lib/bdsyn/bdsyn.lib contains the library description]

Example:

N bit adder:

MACRO BITS = 32 $ENDMACRO;
MACRO MSG = BITS-1 $ENDMACRO;

MODEL adder s<MSB:0>, co = a<MSB:0>, b<MSB:0>, ci

ROUTINE main;
	STATE temp<MSB+1:0>;
	temp = a + b + c;
	IF temp<MSB+1> THEN co = 1 ELSE co = 0;
	s = temp;
	END;
ENDROUTINE;
ENDMODEL;

			Rick Spickelmier