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