Tutorial:ASIC Design Tutorials

From NCSU EDA Wiki
Jump to: navigation, search

INTRODUCTION

The tutorials in this section are used in ECE 564 - ASIC Design - originally called ECE 520. So some of the references below refer to ECE 520, but it is really the same course. This course deals with the design of complex digital systems, their synthesis and their verification. To this end, students are given an introduction to the necessary CAD tools, particularly for simulation and synthesis of such systems. The following tutorials progressively build up the knowledge base required.


Tutorial1: Introduction to Simulation and Synthesis

This tutorial provides a brief introduction to the tools that are going to be used for design of ASIC systems. To this end, we will be using Mentor Graphics Modelsim for simulation and the Synopsys Design Compiler environment for synthesis. It is interesting to note that the Modelsim tool enables compilation of multiple design/verification/modeling units (each of which might be in a different language) into a common library (called the working library) and a common design representation. This enables each individual unit of the entire simulation to be compiled independently and incremental compilation to be performed.

This tutorial was developed using a Red Hat Enterprise Linux workstation running RHEL 5.11.

The files that are needed for this tutorial are listed below. (please download and store per the instructions provided within the tutorials):

  • Files for PartA: Simulation:
    • counter.v
    • test.v
    • modelsim.ini
  • Files for PartB: Synthesis:
    • .synopsys_dc.setup
    • setup.tcl
    • read.tcl
    • Constraints.tcl
    • CompileAnalyze.tcl

Use this command from a Unix/Linux terminal to copy the Tutorial and needed files into a directory named ece520-tut1:

git clone /afs/eos.ncsu.edu/lockers/research/ece/paulf/usr/ece520/Tutorial1.git ece520-tut1

You can also access the tutorial via Github.

Tutorial2: Introduction to Methodology for Design Analysis

This tutorial provides an example-based step-by-step introduction to the methodology that is going to be followed for the analysis of designs. The aim is to provide a realistic power and timing value for a design by running the design through a prototyping flow that provides a layout-based view of the circuit performance. This requires that you start off with the netlist that results from synthesis as explained in Tutorial 1. This Tutorial also provides information on the directory structure that is going to be followed for organization of your work. The main logical steps of this tutorial are (starting with a synthesized netlist per Tutorial 1):

  • The PAD_Flow.pl script that comes with this tutorial is run to create the Standard Parasitic Exchange Format (SPEF) file. This file captures the capacitance and resistance of the wiring network in your design. This is explained in Section 5.a of the tutorial.
  • The testbench is modified to be able to capture the toggling statistics of the nets in the design. This information is captured in a Switching Activity Interchange Format (SAIF) file. The method for doing this is explained in Section 5.b. THIS IS A MANUAL STEP.
  • The PAD_Flow.pl script is run to create final power and delay information for the design using the SAIF and SPEF files from the previous steps. This is explained in Section 5.c of the tutorial.

The files that are needed for this tutorial are listed below.

  • PAD_Flow.pl The automation script for analysis.
  • synth.tcl A tcl script for running automatic synthesis.
  • auto.tcl A tcl script for doing automatic power estimation.
  • counter.v The design that we are working with. It is a larger version of the counter from Tutorial 1.
  • test.v The initial testbench for the Design Under Test.
  • test_switching.v The testbench with commands for SAIF creation that will be used in Section 5.b.
  • modelsim.ini Copy to ./SIMULATION/run_f and ./SIMULATION/run_s after setup
  • Library_fwd.saif Copy to ./SIMULATION/run_f after setup
  • designenv.tcl Copy to ./SYNTH/run_f after setup
  • Tutorial_2_extension.docx Recent Tutorial Extension instructions
  • pr_tut1.zip Recent Tutorial Extension support files

Use this command from a Unix/Linux terminal to copy the Tutorial and needed files into a directory named ece520-tut2:

git clone /afs/eos.ncsu.edu/lockers/research/ece/paulf/usr/ece520/Tutorial2.git ece520-tut2

You can also access the tutorial via Github.

Tutorial3: Complex Design Example and Memory Generator

This tutorial provides the reasoning and steps to be followed in designing more complex systems. Dealing with IO requirements, hierarchy, and separation of control and data paths is explained. The creation of SRAMs using Memory Generators is explained and the incorporation of Memory Models in the timing and power analysis of a design is shown.

This tutorial was developed using a Red Hat Enterprise Linux workstation running RHEL 5.11.

The files that are needed for this tutorial are listed below:

  • CreateModel.pl The Memory Generator script.
  • Engine.v The search engine that forms the core of the datapath.
  • Controller.v The Controller that manages the operation of the datapath.
  • top_with_mem.v The file that integrates top.v and the Memory Model.
  • top.v The top level integration of the controller and the engines.
  • test.v The initial testbench for the Design Under Test.
  • test_switching.v The testbench with commands for SAIF creation.
  • cache.cfg Cache configuration.
  • memdata.txt The 8 bit memory image that will be loaded into the memory array using $readmemh().
  • TwoMemories.pdf Explains the means of performing the power analysis with multiple memories
  • top_with_2mem.v A file that integrates top.v and two memories instead of just one.

Use this command from a Unix/Linux terminal to copy the Tutorial and needed files into a directory named ece520-tut3:

git clone /afs/eos.ncsu.edu/lockers/research/ece/paulf/usr/ece520/Tutorial3.git ece520-tut3

You can also access the tutorial via Github.

Tutorial4: FPGA Design Flow using Xilinx ISE Environment

This tutorial provides a brief overview of how to design hardware systems for FPGAs. It assumes knowledge of Verilog, and will show you how to take an existing Verilog design, and target it to a specific FPGA. This is a useful skill in industry because many designs are prototyped using FPGAs due to quick time-to-market and low initial cost. This tutorial will cover how to access the Xilinx software at NC State, then will cover Design Input, Synthesis, Constraining, Implementation and Bitstream Creation.

Use this command from a Unix/Linux terminal to copy the Tutorial and needed files into a directory named ece520-tut4:

git clone /afs/eos.ncsu.edu/lockers/research/ece/paulf/usr/ece520/Tutorial4.git ece520-tut4

You can also access the tutorial via Github.

Tutorial5: DesignWare Instantiation

DesignWare provides high quality IP to reduce risk and time-to-market which makes it very useful in ASIC design. This tutorial provides an example of instantiation of a floating point adder/subtractor using DesignWare IP.

This tutorial was developed using a Red Hat Enterprise Linux workstation running RHEL 6.6 using synopsys2013 and modelsim10.0c

Use this command from a Unix/Linux terminal to copy the Tutorial and needed files into a directory named ece520-tut5:

git clone /afs/eos.ncsu.edu/lockers/research/ece/paulf/usr/ece520/Tutorial5.git ece520-tut5

You can also access the tutorial via Github.

Tutorial6: FPGA Design Using Altera

This tutorial provides a brief overview of how to design hardware systems for FPGAs. It assumes knowledge of Verilog, and will show you how to take an existing Verilog design, and target it to a specific FPGA. This is a useful skill in industry because many designs are prototyped using FPGAs due to quick time-to-market and low initial cost. This tutorial will cover how to access and use the free Web version of Altera's simulation and design tools.

Use this command from a Unix/Linux terminal to copy the Tutorial and needed files into a directory named ece520-tut6:

git clone /afs/eos.ncsu.edu/lockers/research/ece/paulf/usr/ece520/Tutorial6.git ece520-tut6

You can also access the tutorial via Github.

Tutorial7: Downloading and Using the Student Version of Modelsim

Here's how to download the student version of Modelsim SE, so you can use it locally if remote access is unavailable.

  1. Download the student version of Modelsim SE from model.com.
  2. Install it on your local machine.
  3. Follow the instructions on the website and provide your email address. A license will be sent to you via email.
  4. Copy the necessary modelsim.ini file from a tutorial webpage and save it in the following directory:
    "installation directory"/examples
    This is the default directory when you run modelsim. If you change the running directory, please remember to save "modelsim.ini" there.
  5. Copy all your design files and testbench file into the same directory:
    "installation directory"/examples
    Again, you can change your working directory if needed.
  6. Launch modelsim, and use the same commands that we do on Linux machines
    setenv MODELSIM modelsim.ini
    vlib mti_lib
    Compile your design and testbench using "vlog"
  7. Double-click the top level test bench module in subwindow "library->mti_lib"
  8. You should be able to run a simulation of any duration now.