Lab 8: Introduction to Synopsys

What is Synopsys?

Synopsys' headquarters are based in Mountain View, California. They employee about 3,000 people worldwide. In 2000 the revenue was about $783 million. Their objective is to produce electronic design automation tools. Their products are sold in North America, Europe, Japan, the Pacific Rim, Isreal, and Latin America. They have also formed relationships with IBM, Toshiba, and SEMATECH.

"Synopsys provides a full range of high-level design automation solutions for the design of integrated circuits, systems on a chip (SoCs) and electronic systems. By combining its expertise in high-level sysnthesis technology with its knowledge of silicion's physical effects, Synopsys employs system-level verification, RTL to GDSII closure and intellectual property solutions to help its customers get their silicon working quickly and accurately. Our products improve our customes' designs from virtually every vantage point, including performance, complexity, quality-of-results, cost power and time-to-market." -- Synopsys.com

The flow diagram (from Synopsys' website) depicts the areas in which Synopsys tools are capable of being involved :

So what does this mean to us? Basically, Synopsys provides a suite of tools to aid designers in the development and verification of circuits. Designers are able to specify the desired design at a high level, VHDL and Verilog, and Synopsys will synthesize this down to gate level. In addition there are tools designers can use along the way for verification, simulation, and power analysis.

Using the Synopsys Tools

There are two seperate tutorials that will guide to through simulation, synthesis and power analysis. You should run through each of the tutorials before you start on the lab assignment.

Two Entity Implementations

In this lab, you will implement two different entities , MAX_1CMP and MAX_4CMP, which both calculate the maximum value of 8 inputs when the enable signal, enable, is high. Each input is a 4-bit number. The output, MaxValue, is the largest of the eight 4-bit inputs. In addition, the entitiy sets the output, Done, when the maximum value is computed indicating that the correct value is now on the output signal.


The MAX_1CMP entity consists of a single comparator which reads in two 4-bit inputs and outputs the larger or the two. You are only allowed to use a single comparator. This means that you will have to come up with a scheme and maybe some additional hardware to figure out the maximum input. A potential algorithim might be the following:

   max_val = 0;

   for( i=0 ; i<8 ; i++){
      max_val = max(max_val, input[i]);
   }

   output = max_val;
   
This algorithim can be optimized, or an entirely different algorithim can be used.

The Max_4CMP entity consists of a single comparator which reads in four 4-bit inputs and outputs the largest of the four inputs. You are again only allowed to use a single comparator. This means you will have to come up with another slightly modified scheme and potentially additional hardware. If we just copied the first algorithim we might end up with the following:

   max_val = 0;

   for( i=0; i<8; i++){
      max_val = max(max_val, input[i], input[i+1], input[i+2]);
   }

   output = max_val;
   
The above algorithim clearly does not take advantage of the 4-input comparator. This algorithim can easily be opitimized to use the new hardware available.

Implement both the MAX_1CMP and MAX_4CMP entites. Synthesize and simulate for correctness beign sure to use a testbench that illustrates robust testing. Measure the power consumed by both designs, and be sure to include the size (gate count) of each design.

State Machine Template for Synopsys

   type STATE_TYPE is ( S0, S1, .... ); 
   state : STATE_TYPE ;
   
   ...
   
   process( ... )
   begin
   
   if( rst = '1' ) then
      -- initialize stuff here

   elsif( clk'event and clk = '1' ) then
      case state is
         when S0 =>
            -- do stuff
         when S1 =>
        
   ...
 
      end case;
   end if;
   end process;

   

Lab Questions

In your lab report, be sure to include the power consumed and size of each design. Explain the tradeoff between the two designs. You should also include your testbenches and explain how they ensure correctness.

In embedded systems design, we are always trying to reduce the power consumed by a design. However, in the second design we use a four input comparator. This design is clearly larger than a design which only uses a two input comparator. Why would we use the second design which will consume more power when our objective is always to reduce power consumption? (HINT: define energy. How does this parameter factor in?)


CS122B, Winter 2002