LAB4) Synthesizing the ALU

In this lab we introduce logic synthesis to the methodology, processing our macros from the first labs. We will use Synopsys (TM ) Design Compiler and Chips Express technology library descriptions to create structural netlists of technology-mapped library cells.

Outline

1) References
2) How Design Compiler Works
3) Preparing to Run Design Compiler
4) Synthesis Experiments


1) References:




2) How Design Compiler Works






The alu.tcl script looks like this for IBM

set search_path \                                                                                                     
{. /afs/btv/data/uvm_class/chips_express/lib/synopsys/cx3003 \                                                        
   ~jswift/uvm_class/chips_express/lib/synopsys/cx3003 \                                                              
   synopsys_root + "/libraries/syn" };                                                                                
set link_library  { cx3003_core.typ.db  };                                                                            
set target_library  "cx3003_core.typ.db";                                                                             
set symbol_library  "cx3003_core.typ.sdb";                                                                            
                                                                                                                      
define_design_lib WORK      -path ~/ee295/lab4/WORK                                                                   
define_design_lib IEEE_EXTD -path ~/ee295/lab4/IEEE_EXTD                                                              
                                                                                                                      
analyze -library IEEE_EXTD -format vhdl "~/ee295/lab4/vhdl_src/stdl1164_vector_arithmetic.vhd"                        
analyze -library IEEE_EXTD -format vhdl "~/ee295/lab4/vhdl_src/stdl1164_vector_arithmetic-body.vhd"                   
analyze -library IEEE_EXTD -format vhdl "~/ee295/lab4/vhdl_src/stdl1164_extended.vhd"                                 
analyze -library IEEE_EXTD -format vhdl "~/ee295/lab4/vhdl_src/stdl1164_extended-body.vhd"                            
                                                                                                                      
analyze -library WORK      -format vhdl "~/ee295/lab4/vhdl_src/dlx_types.vhd"                                         
analyze -library WORK      -format vhdl "~/ee295/lab4/vhdl_src/alu.vhd"                                               
elaborate alu -library WORK  -architecture behavior                                                                   
                                                                                                                      
check_design                                                                                                          
set_max_area 2000                                                                                                     
set_load 20 "result"                                                                                                  
set_max_delay 16  -from s1 -to result                                                                                 
compile  -map_effort high                                                                                             
                                                                                                                      
set vhdlout_dont_write_types  true                                                                                    
set vhdlout_write_components  false                                                                                   
set vhdlout_write_entity  false                                                                                       
set vhdlout_use_packages  { ieee.std_logic_1164.all cx3003_core.vcomponents.all work.dlx_types.all work.alu_types.all }
write  -format vhdl -hierarchy  {"alu"} -output ~/ee295/lab4/vhdl_src/alu_gates.vhdl                                  
                                                                                                                      
report_timing                                                                                                         
report_area                                                                                                           
exit                                              
                                
                                    
 



  3) Preparing to run Design Compiler

Running interactive style
3.1) Log on to your workstation and cd to your ~/ee295 directory

3.2) Untar the lab files
jswift@eda06:/afs/btv.ibm.com/u6/jswift/ee295                                     
$ tar -vxf ~jswift/public/lab4.tar                                                
x lab4                                                                            
x lab4/alu.tcl, 1449 bytes, 3 media blocks.                                       
x lab4/vhdl_src                                                                   
x lab4/vhdl_src/stdl1164_extended-body.vhd, 9351 bytes, 19 media blocks.          
x lab4/vhdl_src/stdl1164_extended.vhd, 3432 bytes, 7 media blocks.                
x lab4/vhdl_src/stdl1164_vector_arithmetic-body.vhd, 45789 bytes, 90 media blocks.
x lab4/vhdl_src/stdl1164_vector_arithmetic.vhd, 14640 bytes, 29 media blocks.     
x lab4/setup_DC_IBM, 202 bytes, 1 media blocks.                                   
x lab4/setup_DC_UVM, 121 bytes, 1 media blocks.                                   
x lab4/IEEE_EXTD                                                                  
x lab4/WORK                                                                       

3.3) Change to the lab4 directory and copy your alu design files from lab2
jswift@eda06:/afs/btv.ibm.com/u6/jswift/ee295
$cd  ./lab4

jswift@eda06:/afs/btv.ibm.com/u6/jswift/ee295/lab4
$cp   ~/ee295/lab2/vhdl_src/   ./vhdl_src
You should have a full set of vhdl files


3.4) Run the setup_DC_IBM or setup_DC_UVM script
jswift@eda06:/afs/btv.ibm.com/u6/jswift/ee295/lab4   
$ . setup_DC_IBM         ( Use setup_DC_UVM at UVM )

3.5) Run Design Compiler
jswift@eda06:/afs/btv.ibm.com/u6/jswift/ee295/lab4                                                                     
$ dc_shell-t -f alu.tcl                                                                                                
                                                                                                                       
                        DC Professional (TM)                                                                           
                           DC Expert (TM)                                                                              
                            DC Ultra (TM)                                                                              
                         VHDL Compiler (TM)                                                                            
                          HDL Compiler (TM)                                                                            
                        Library Compiler (TM)                                                                          
                         Power Compiler (TM)                                                                           
                      DesignWare Developer (TM)                                                                        
                          DesignPower (TM)                                                                             
                                                                                                                       
             Version 2001.08 for rs6000 -- Aug 22, 2001                                                                
              Copyright (c) 1988-2001 by Synopsys, Inc.                                                                
                         ALL RIGHTS RESERVED                                                                           
                                                                                                                       
This program is proprietary and confidential information of Synopsys, Inc.                                             
and may be used and disclosed only as authorized in a license agreement                                                
controlling such use and disclosure.                                                                                   
                                                                                                                       
Initializing...                                                                                                        
set search_path {. /afs/btv/data/uvm_class/chips_express/lib/synopsys/cx3003    ~jswift/uvm_class/chips_express/lib/syn;
. /afs/btv/data/uvm_class/chips_express/lib/synopsys/cx3003    ~jswift/uvm_class/chips_express/lib/synopsys/cx3003    s

***
report_timing                                                        
Information: Updating design information... (UID-85)                 
                                                                     
****************************************                             
Report : timing                                                      
        -path full                                                   
        -delay max                                                   
        -max_paths 1                                                 
Design : alu                                                         
Version: 2003.03-2                                                   
Date   : Thu Oct 30 22:15:36 2003                                    
****************************************                             
                                                                     
Operating Conditions: quick_nom   Library: cx3003_core               
Wire Load Model Mode: top                                            
                                                                     
  Startpoint: s1[28] (input port)                                    
  Endpoint: result[0] (output port)                                  
  Path Group: default                                                
  Path Type: max                                                     
                                                                     
  Point                                    Incr       Path           
  -----------------------------------------------------------        
  input external delay                     0.00       0.00 f         
  s1[28] (in)                              0.00       0.00 f         
  U697/Z (iv10)                            0.44       0.44 r         
  U1215/Z (or20)                           0.22       0.66 r         
  U1623/Z (iv10d)                          0.07       0.74 f         
  U1081/Z (ao3120)                         0.24       0.98 f         
  U696/Z (iv10)                            0.30       1.28 r         
  U1214/Z (ao3221)                         0.25       1.53 r         
  U1211/Z (ao3221)                         0.26       1.79 r         
  U1208/Z (ao3221)                         0.26       2.05 r         
  U1205/Z (ao3221)                         0.26       2.31 r         
  U1202/Z (ao3221)                         0.26       2.57 r         
  U1199/Z (ao3221)                         0.26       2.83 r         
  U1196/Z (ao3221)                         0.26       3.08 r         
  U1193/Z (ao3221)                         0.26       3.34 r         
  U1190/Z (ao3221)                         0.26       3.60 r         
  U1187/Z (ao3221)                         0.26       3.86 r         
  U1184/Z (ao3221)                         0.26       4.12 r         
  U1181/Z (ao3221)                         0.26       4.38 r         
  U1174/Z (ao3221)                         0.26       4.64 r         
  U1170/Z (ao3221)                         0.26       4.90 r         
  U1166/Z (ao3221)                         0.26       5.16 r         
  U1162/Z (ao3221)                         0.26       5.41 r         
  U1157/Z (ao3221)                         0.26       5.67 r         
  U1153/Z (ao3221)                         0.26       5.93 r         
  U1149/Z (ao3221)                         0.26       6.19 r         
  U1145/Z (ao3221)                         0.26       6.45 r         
  U1141/Z (ao3221)                         0.26       6.71 r         
  U1137/Z (ao3221)                         0.26       6.97 r         
  U1134/Z (ao3221)                         0.26       7.23 r         
  U1131/Z (ao3221)                         0.26       7.49 r         
  U1123/Z (ao3221)                         0.26       7.74 r         
  U1119/Z (ao3221)                         0.26       8.00 r         
  U1115/Z (ao3221)                         0.26       8.26 r         
  U1109/Z (ao3221)                         0.29       8.55 r         
  U832/Z (iv10)                            0.21       8.76 f         
  U1225/Z (ao4223)                         0.31       9.07 r         
  U1003/Z (mxh21)                          0.26       9.33 r         
  U873/Z (iv10d)                           0.06       9.39 f         
  U872/Z (iv10p)                           6.56      15.95 r         
  result[0] (out)                          0.00      15.95 r         
  data arrival time                                  15.95           
                                                                     
  max_delay                               16.00      16.00           
  output external delay                    0.00      16.00           
  data required time                                 16.00           
  -----------------------------------------------------------        
  data required time                                 16.00           
  data arrival time                                 -15.95           
  -----------------------------------------------------------        
  slack (MET)                                         0.05           
                                                                     

report_area                                                                                           
                                                                                                      
****************************************                                                              
Report : area                                                                                         
Design : alu                                                                                          
Version: 2003.03-2                                                                                    
Date   : Thu Oct 30 22:15:36 2003                                                                     
****************************************                                                              
                                                                                                      
Library(s) Used:                                                                                      
                                                                                                      
    cx3003_core (File: /afs/btv/data/uvm_class/chips_express/lib/synopsys/cx3003/cx3003_core.typ.db)  
                                                                                                      
Number of ports:              104                                                                     
Number of nets:              1275                                                                     
Number of cells:             1207                                                                     
Number of references:          51                                                                     
                                                                                                      
Combinational area:       1380.000000                                                                 
Noncombinational area:       1.000000                                                                 
Net Interconnect area:      undefined  (No wire load specified)                                       
                                                                                                      
Total cell area:          1381.000000                                                                 
Total area:                 undefined                                                                 
1                                                                                                     
exit                                                                                                  
                                                                                                      
Thank you...          
                                                                                

                           
Note the timing and area report results

Running Interactive Style with the GUI.
3.6) Enter
$ design_analyzer &
[1]     35188


Use the read pulldown menu




4) Synthesis Experiments

Rerun design compiler adjusting the max_delay setting from 16 to 12 in 1 nSec increments
Create a table plotting results of delay Vs. area for the alu.
Reduce the area limit from 2000 to 1800 and re-run

Discuss your results, What is the sweet spot for this design in this technology?
What kinds of things are being done differently from run -to-run to explain the results?


Extra Credit
Using the timex command to get datapoints of run time Vs delay
Extra, Extra Credit
Repeat for Reg_file