OpenCores
URL https://opencores.org/ocsvn/ht_tunnel/ht_tunnel/trunk

Subversion Repositories ht_tunnel

[/] [ht_tunnel/] [trunk/] [README.txt] - Rev 19

Compare with Previous | Blame | View Log

=========================================
        HyperTransport Tunnel
=========================================

This project describes a HyperTransport tunnel for hardware synthesis using 
the SystemC C++ API.  It was developped to be integrated as a core into a 
larger hardware project.  You can either synthesize the core using a SystemC 
synthesis tool or simulate it using any C++ compiler.  The design was 
developped using SystemC 2.0.1

The tunnel is technology independent, so it can be used with any technology 
(Xilinx FPGAs,  Altera FPGAs, standard cell proces, etc.)  The design uses 
synchronous dual-port (one read and one write port) memories by having input 
and outputs ports to those memories.  So when instanciating the design, you 
must connect those ports either to memories in a real circuit or to a memory 
model in simulation.

The design has many options and to change them, you need to modify the file 
rtl/systemc/core_synth/constants.h.  It contains all the options and 
configuration option available.  This includes various modes : if the retry 
mode is enabled, if DirectRoute is enabled, etc.  It is also used to setup 
the Configuration Space Registers : the address space used by the application, 
the ID number of the application, etc.

For code documentation, you can run doxygen (a documenation tool) with the 
doxygen.config.  It will generate HTML documentation in doc/doxygen/html

For higher level documentation, look in the doc folder.  At the moment of 
writing this readme, the doc folder is empty but hopefully by the time you 
read this there will be some proper documentation.  But at least remember 
that the source code is fairly well documented (in .h files) so don't be 
afraid to go read at least the module descriptions in the .h files.

For synthesis
=============

The design was originally designed for the Synopsys SystemC Compiler tool, 
but it is now discontinued.  Alternatives are Celoxica Agility Compiler and 
Forte Cynthesizer.  Agility 1.0 is not compatible with the core but version 
2.0 might be when it is released.  I have not had the chance to try 
Cynthesizer so I do not know if it works.  If you have the chance of trying 
it, let me know!  I have synthesized multiple configurations of the design 
and tested them in post-synthesis simulation, but those versions are useless 
in a real application since the tunnel needs to be re-synthesized when the 
CSR configuration changes, and every project usually has a different CSR 
configuration.

For simulation in a larger project
==================================

To simulate it within a larger SystemC project, just include all the source 
files in rtl/systemc in your project and instanciate the top level 
vc_ht_tunnel_l1 module to use just like any SystemC module.  But bear in mind 
that this is an RTL description, so simulation is pretty slow.

For simulation in ModelSim
===========================

The .do file contains most of the commands necessary to compile the design 
in ModelSim and run the main testbench, but to simulate it in your project 
you will need a top level that instanciates the design and links it with 
other designs.  In other words, the .do file is only a set of commands to 
get you started and run a testbench.  ModelSim allows to run SystemC alongside 
netlists, VHDL, Verilog or anything supported my ModelSim.

For simulation alone
====================

The bench directory contains many testbenches to test the design.  The tests 
done are VERY limited.  Some tests are self-checking and others simply 
stimulates the design and the output has to be manually checked.

If you are using MS Visual Studio, there are projects files already prepared 
to compile and run the testbenches.  All you have to do is update the location 
of the SystemC include directory and the SystemC link library location in the 
project.

If you are using GCC, I am not too familiar with the configure scripts that 
search to see if SystemC is properly installed, is the correct version, etc. 
etc.,  so there are no configure/makefile files ready to use out of the box.  
Also, the fact that SystemC includes a "main" function often conflicts with 
autoconfigure tests.  I have tried the global testbench using KDevelop and 
it works perfectly.

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.