[Open-graphics] Center for High-Performance Reconfigurable Computing

Arnaud Boulan arnaud.boulan at libertysurf.fr
Mon Oct 16 05:00:53 EDT 2006


Quoting Timothy Miller <theosib at gmail.com>:

> On 10/15/06, William DUCK <guillaume.fortaine at wanadoo.fr> wrote:
>
>>
>> NSF Center for High-Performance Reconfigurable Computing (CHREC)
>>
>
> This is a long-term sort of project idea for us.  The holy grail would
> be to convert arbitrary C or Fortran code into FPGA logic.  (This
> would be especially good for Cray computers that arrange Opterons with
> Xilinx FPGAs.)  A more realistic goal, however, would be to convert a
> restricted subset of C into gates.


Hello,

This is the first time I post here, even though I have been following  
OGP development for a long time. So first i'd like to thank everyone  
involved in OGP for their great job.

Now, regarding high level synthesis:
In the university where I learned hardware design, there is such a  
project that is beeing developped. You can have a look at it here:
http://www-asim.lip6.fr/recherche/disydent/doc.html
"Disydent" (Digital System Design Environment) is a framework for  
co-design of embedded systems. In this framework, an application is  
described as a set of modules communicating through FIFOs. Each  
modules is written in a subset of the C language, and these modules  
can be either run in software directly, or synthezised as a hardware  
coprocessor with the "ugh" (user guided high level synthesis) tool

Here is an example of what such a module would look like:

  /*** HCF EXAMPLE ***/
  #include <ughc.h>

  /*** channels ***/
  ugh_inChannel21 ina;
  ugh_inChannel21 inb;
  ugh_outChannel21 outa;

  /*** registers ***/
  uint21 a;
  uint21 b;

  /*** behavior ***/
  void hcf()
  {
    while (a!=0)
     if (a<b)
       b -= a;
     else
       a -= b;
  }

  void ugh_main(void)
  {
    for ( ;; ) {
      ugh_read(ina,&a);
      ugh_read(inb,&b);
      hcf();
      ugh_write(outa,&a);
    }
  }

  /*** HCF END EXAMPLE ***/

Taking this (and a file describing constraints on the datapath) as an  
inmput, the hardware synthetizer is able to generate the datapath and  
fsm implementing the module at a given clock period.

"Disydent" is publicly available and distributed under the GPL  
license, so if you like you can try to play with it :)
If you have any questions about this tool, do not hesitate to ask.

Arnaud



More information about the Open-graphics mailing list