Tutorials

// Get information about current user to see which version of the tutorials we display.
global $current_user ;
get_currentuserinfo() ;
$userHasAccessToRoccc = current_user_can('roccc') ;
$userHasAccessToConvey = current_user_can('roccc_convey') ;
$userHasAccessToPico = current_user_can('roccc_pico') ;

if ($userHasAccessToRoccc)
{
echo 'The following tutorials correspond to ROCCC 2.0 version 0.7.4.’ ;
}
else
{
echo ‘The following tutorials correspond to ROCCC 2.0 version 0.6.0.’ ;
}

?>

1. Getting Started

  • Installing ROCCC 2.0   Installing ROCCC 2.0: Step by step instructions on downloading and installing both the ROCCC 2.0 compiler and the Eclipse GUI plugins. At the end of this tutorial, ROCCC will be set up and ready to use.
  • GUI Overview   GUI Overview: Get a brief overview of all the various menus, buttons, and views that come with the ROCCC GUI.

2. Basic Construction

  • Project Creation Project Creation: Learn how to create your own project in the ROCCC GUI for organizing your modules and systems.
  • Module Construction Module Construction: Learn how to create and properly code a new module in ROCCC.
  • System Construction System Construction: Learn how to create and properly code a new system. We will also go over how to determine how many data elements ROCCC will expect from your streams.

3. Re-usability

  • Using Compiled Modules Using Compiled Modules: Take advantage of ROCCC 2.0's bottom up design to reuse modules you have already compiled in other components.
  • Adding and Using External Cores Adding and Using External Cores: Learn how to tell ROCCC that you have external cores available for use and how to call those external cores in your code.

4. Optimizations

  • High-Level High-Level: Learn about all of the high-level optimizations available for modules and systems and how to call them. These include loop unrolling, inlining, and systolic array generation.
  • Low-Level Low-Level: Learn about all of the low-level optimizations available for modules and systems and how to call them. These include arithmetic balancing, copy reduction, and maximizing precision.
  • Area vs Frequency Area vs Frequency: Tune the level of pipelining and compaction of your circuit to achieve the right level of area vs frequency.
  • Stream Accessing Stream Accessing: Increase the number of parallel input and output channels on your streams. This will also go over how to set the maximum number of outstanding memory requests for input streams.

5. Advanced Usage

  • Bit Width Specification Bit Width Specification: Learn how to specify bit sizes of integer and floating point variables in ROCCC 2.0.
  • Control Flow Control Flow: See how ROCCC 2.0 translates C-level control flow down to hardware so you get a better idea of what kind of circuit you are creating.
  • Intrinsic Usage and Management Intrinsic Usage and Management: See how ROCCC 2.0 handles non-standard hardware operations such as integer division, floating point operations, and variable casts.

6. Testing and Porting

  • Testbench Generation Testbench Generation: Generate VHDL testbenches out of your modules and systems to verify the correctness of your circuit.
  • PCore Generation PCore Generation: Generate Xilinx PCores from modules and run them on FPGAs using EDK.
  • Connecting to ROCCC Generated Code Connecting to ROCCC Generated Code: See what signals ROCCC generates for modules and systems and how to connect to them.
  • // If the user has access to the additional plugins, give them links to these new tutorials

    //if ($userHasAccessToConvey)
    //{
    // echo '

  • Using the Convey HC-1 PortUsing the Convey HC-1 Port: See how to create synthesis and simulation projects for use on the Convey HC-1.
  • ‘ ;
    //}
    //if ($userHasAccessToPico)
    //{
    // echo ‘

  • Using the Pico PortUsing the Pico Port: See how to create projects for synthesis and simulation for use on the Pico M501.
  • ‘ ;
    //}
    ?>