( ESNUG 325 Item 8 ) ---------------------------------------------- [8/18/99]
Subject: ( ESNUG 321 #10 322 #5 ) A Module Compiler Trick Synopsys AE's Hide
> Keep me anon, but the Synopsys AE's are always trying to keep people from
> using a very powerful feature of Module Compiler -- it used to be in the
> documentation, but they even took it out of there!
>
> For carry save arrays, there is a way to access the carry and sum terms
> prior to the final add. This is great if you want to control pipelining
> yourself, instead of hoping that MC finds the right place for your regs.
> The example below does a simple multiply, but registers the values prior
> to the the final add.
>
> module TEST (Z, X, Y);
> input [w-1:0] X, Y;
> output [2*w-1:0] Z;
> wire [2*w-1:0] PRODS, PRODC;
>
> directive local (carrysave="convert", pipeline="off");
> wire [w*2-1:0] PROD = X*Y;
> csconvert(PRODS, PRODC, PROD);
> PRODS_reg = sreg(PRODS);
> PRODC_reg = sreg(PRODC);
> Z = ACC0+ACC1; //Adding the two terms together, or to another
> //signal brings um back together.
> endmodule
>
> You can use this to create superfast accumulators or if the Multiplier
> feeds other adders you can often save a carry propagate add.
>
> To be fair to the Synopsys AE's, this approach has 2 drawbacks:
>
> 1. Hard to verify
> 2. if you try to do any logic on these outputs seperately, you can
> really screw yourself (like trying to check if they are zero...)
>
> At my last company we used this feature to get great results!
>
> - [ Casper, The Friendly Ghost ]
From: [ A Synopsys Module Compiler CAE ]
Hello John,
I would like to respond to ESNUG 322, Item 5: "A Module Compiler Trick
That Synopsys AE's Hide".
Casper is right, the carrysave is a very powerful technique. It takes
only a couple of lines of code to implement but can result in a
significant reduction in area and/or delay depending on the design
architecture. The problem is, as Casper mentioned, one can fall in a lot
of trouble if this very powerful feature is not used correctly.
Now that MC is widely deployed and there are well trained users of MC
everywhere, we'll start documenting this feature along with a use
methodology, starting with release 2000.02.
- [ A Synopsys Module Compiler CAE ]
|
|