Quick Synopsys Synthesis and Simulator Setup

Here is the step-by-step procedure to get Synopsys quickly to work:

0) This is located at http://bear.ces.cwru.edu/eecs_318/

1) Make a directory in your home directory. For example, SYNOPSYS
   mkdir ~/SYNOPSYS

2) Within this directory you must have a directory call WORK.
   This directory is used by Synopsys tools to hold temporary values.
   mkdir ~/SYNOPSYS/WORK

3) Now, the tools need two setup files within the SYNOPSYS directory

3.1) "~/SYNOPSYS/.synopsys_dc.setup" is required to run dc_shell

company = "Case Western Reserve University" ;
designer = "Francis G. Wolff";

/* ------------------------------------------------------------- */
/* Setup SEARCH_PATH to point to the library installation area   */
/* containing the appropriate symbol and synthesis libraries.    */
/* ------------------------------------------------------------- */

search_path = { . ./WORK /home2/synopsys/synthesis/libraries/syn }
/* analyze -lib WORK -format vhdl file.vhd */
/* The default for -lib is define_design_lib */
define_design_lib WORK -path ./WORK

target_library = { class.db }

/* file types end in db: .db and .sldb (=.sl + db) */
link_library = { class.db }

/* file types: .sdb (.s + db) */

/* symbol_library = { class.sdb } */
view_background = "blue";
symbol_library = { class.sdb generic.sdb }
net_name_layer.visible= false
pin_name_layer.visible= false
plot_command = "lpr -Polin404"

3.2) "~/SYNOPSYS/.synopsys_vss.setup" is required to run
the simulation properly
--Unix commands to show setup:
--       /home2/synsopsys/sparcOS5/sim/bin/show_vss_setup
--       /home2/synsopsys/sparcOS5/sim/bin/show_setup
WORK            > DEFAULT
DEFAULT         : ./WORK
TIMEBASE            = ns

4) The Synopsys also requires a shell setup file. This setup
file requires that you use "cshell". If your shell is different
than shell then (a) either change your Unix shell by the "chsh"
command, or (b) Start another shell by typing "/usr/bin/csh".
Remember that .* files are hidden, to view them type "ls -a".

The following file is required in your home directory

set history=300 savehist=300
set path=( . /usr/ucb /bin /usr/bin /usr/local/bin /usr/ccs/bin )
set path=( ${path} /usr/local/sbin /usr/sbin /sbin )
set path=( ${path} /usr/bin/X11 /usr/X/bin /usr/X/demo )
# solaris paths
set path=( ${path} /usr/dt/bin /usr/openwin/bin
/usr/dt/appconfig/netscape )

umask 077
set prompt="cshell-${user}@`hostname`:${cwd}> "
setenv TERM vt100
setenv PRINTER olin404

if( ${?prompt} ) then
      alias setprompt 'set prompt = "cshell-${user}@`hostname`:$cwd> "'
#     The following displays only the tail of the path
#     alias setprompt 'set prompt = "cshell-${user}@`hostname`:$cwd:t> "'
      alias cd 'cd \!* ; setprompt'
      alias pushd 'pushd \!* ; setprompt'
      alias popd 'popd \!* ; setprompt'

# required by g++ compiler, runtime sharable libraries
setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:/usr/dt/lib:/usr/openwin/lib

# require by make CC default
#setenv CC /usr/local/bin/gcc

setenv LM_LICENSE_FILE 27000@vlsi.ces.cwru.edu
setenv SYNOPSYS /home2/synopsys/synthesis

if -d $SYNOPSYS then
  # Setup environment for Synopsys tools
  # Solaris: ln -s /usr/openwin/lib /usr/lib/X11
  #          need /home/usrs/wolff/.Xdefaults
  #          need /home/users/wolff/.synopsys_vss.setup
  #          need /home/users/wolff/.synopsys_dc.setup

  source $SYNOPSYS/admin/setup/environ.csh

  # Synopsys Online Documentation: sold
  set path = ( ${path} ${SYNOPSYS} )
  set path = ( ${path} ${SYNOPSYS}/${ARCH}/bin )
  set path = ( ${path} ${SYNOPSYS}/${ARCH}/license/bin )
  setenv MANPATH ${MANPATH}:${SYNOPSYS}/doc/license/man

  # design_analyzer, dc_shell, fpga_shell, bc_shell
  set    path = ( ${path} ${SYNOPSYS}/${ARCH}/syn/bin )
  setenv MANPATH ${MANPATH}:${SYNOPSYS}/doc/syn/man
  setenv MANPATH ${MANPATH}:${SYNOPSYS}/doc/pt/man

  # designware
  set    path = ( ${path} ${SYNOPSYS}/${ARCH}/dware/bin )

  set    path = ( ${path} ${SYNOPSYS}/${ARCH}/pc/bin )
  setenv MANPATH ${MANPATH}:${SYNOPSYS}/doc/pc/man

  setenv MANPATH ${MANPATH}:${SYNOPSYS}/doc/motif/man

  set    path = ( ${path} ${SYNOPSYS}/${ARCH}/ssi/bin )

  set path = ( ${path} ${SYNOPSYS}/${ARCH}/vhmc/bin )

  # Synopsys version 1999.10 includes gcc
  #      --> /home2/synopsys/sparcOS5/gcc/gcc-2.6.3/lib/gcc-lib/
  #setenv GCC_EXEC_PREFIX /usr/local/bin/gcc

  echo ".cshrc information: $SYNOPSYS is mounted"
  echo ".cshrc warning:     $SYNOPSYS is not mounted"

setenv SYNOPSYS_SIM /home2/synopsys/simulation
if -d $SYNOPSYS_SIM then
  # vhdlan, vhdldbx, vhdlsim (event-based simulators)
  source $SYNOPSYS_SIM/admin/setup/environ.csh
  echo ".cshrc information: $SYNOPSYS_SIM is mounted"

  # Setup environment for Cyclone RTL cycle-based simulator
  #source $SYNOPSYS/admin/setup/snps_cy.setup
  echo ".cshrc warning:     $SYNOPSYS_SIM is not mounted"

alias  ls ls -aF
alias  m  more

5) To run and test dc_shell copy the following
into ~/SYNOPSYS/generic_mux.vhd

library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;

-- General format Dest, Src1, Src2, ...

entity generic_mux is
  generic (n:     integer   := 8 -- number of normal inputs -- highest

  port (F:    out std_logic_vector(n-1 downto 0);
        X0:   in  std_logic_vector(n-1 downto 0);
        X1:   in  std_logic_vector(n-1 downto 0);
        S:    in  std_logic_vector(0 downto 0)

architecture generic_mux_arch of generic_mux is

     F <= X1 WHEN "1",
          X0 WHEN OTHERS;


configuration generic_mux_cfg of generic_mux is
  for generic_mux_arch 
  end for;
end generic_mux_cfg;

6) SYNTHESIS (script based)
   (a) First open up a cshell window using the .cshrc script
   (b) All design must done in the SYNOPSYS directory and
       NOT outside.

   (c) cd ~/SYNOPSYS
   (d) dc_shell
   (e) analyze -f vhdl generic_mux.vhd
   (f) elaborate generic_mux -arch generic_mux_arch -update

       Note: elaborate works on the entity name of the file
       read in in step (e). The -arch is the name of the
       architecture declared in the file.
   (g) uniquify
   (h) compile
   (i) write -hierarchy
   (j) quit

7) VIEWING LOGIC (GUI based synthesis)
   (a) cd ~/SYNOPSYS
   (b) design_analyzer
   (c) read => generic_mux.db
   (d) double click on icon until logic is displayed

8) SIMULATION (script based)
   Simulation is separate of synthesis. It is not required to do
   synthesis to do simulation.
   (a) cd ~/SYNOPSYS

   (b) vhdlan -NOEVENT generic_mux.vhd

   (c) vhdlsim generic_mux_cfg
       Note: generic_mux_cfg is NOT a filename but the name
       of the configuration file declared in the file in step (b)

   (d) ls
       Note: display vhdl objects

   (e) cd GENERIC_MUX
       Note: go inside generic_mux object

   (f) ls -t
       Note: display the port and signals and their types
       of generic_mux

   (g) ls -v
       Note: display their current values

   (h) help ls
       Note: display help information for the ls command

   (i) assign "0" S
       Note: assign std_logic_vector of 1 bit to signal S

   (j) assign "00100100" X0

   (k) assign "00001111" X1

   (l) ls -v
         N               8
         F               X"??"
         X0              X"24"
         X1              X"0F"
         S               X"0"  
         _P0             (no value)

   (m) run
   (n) ls -v
         N               8
         F               X"24"
         X0              X"24"
         X1              X"0F"
         S               X"0"  
         _P0             (no value)

       NOTE: which is what we expect for a 8-bit datapath mux
             with S=0 and X0==>F
   (o) quit

   (a) cd ~/SYNOPSYS

   (b) vhdlan -NOEVENT generic_mux.vhd

   (c) vhdldbx generic_mux_cfg
       Note: generic_mux_cfg is NOT a filename but the name
       of the configuration file declared in the file in step (b)

   (d-n) Can do all the same steps as script based vhdlsim.

   (o) quit

10) For further Synopsys notes see
    (a) CWRU EECS VLSI CAD Group
    (b) EECS 318 CAD Design Class

Best Wishes. Francis G. Wolff, fxw12@po.cwru.edu