Jump to content


Xilinx DSP slices instaniation with Impulse C


  • You cannot reply to this topic
4 replies to this topic

#1 Aleksandar

    Newbie

  • Members
  • Pip
  • 2 posts

Posted 15 February 2007 - 10:48 PM

Hello,

Is it possible to instantiate DSP48E slices (Virtex-5) or DSP48 slices (Virtex-4) directly from the Impulse C sources or I have to do it manually by editing the resulting HDL ?

Thanks,
Best regards.
Aleksandar

#2 RalphBodenner

    Advanced Member

  • Admin
  • PipPipPip
  • 348 posts

Posted 21 February 2007 - 04:28 PM

It's not possible to directly instantiate DSP48s in Impulse C code*. Our general approach is to allow synthesis tools to choose the most appropriate resources for implementing the HDL generated by CoDeveloper. Xilinx XST for example, will automatically infer DSP48s for multipliers, accumulators, and so on.

You can exert control over how DSP48s are inferred in Xilinx XST by setting constraints. For version 8 of XST, this document offers some guidelines:

http://toolbox.xilinx.com/docsan/xilinx8/b.../xst0035_6.html

Other synthesis tools may also offer similar control over FPGA resource allocation.


* - Well, not entirely true. You can use the CO IMPLEMENTATION pragma and some HDL coding of your own to explicitly instantiate a DSP48 to replace a C function call in your Impulse C program. This use of CO IMPLEMENTATION is not recommended, but who are we to say no unsure.gif ? Please read the section entitled "Using External HDL Hardware Functions" in the CoDeveloper User Guide for details.
Ralph Bodenner
Impulse Accelerated Technologies, Inc.

#3 Aleksandar

    Newbie

  • Members
  • Pip
  • 2 posts

Posted 22 February 2007 - 03:20 AM

Hi,
thank you very much for the answer and the guidelines!

Best regards.
Aleksandar

#4 charles

    Newbie

  • Members
  • Pip
  • 1 posts

Posted 07 March 2007 - 07:24 AM

Hello,

I'm really interested about DSP48E (virtex 5) usage as well.

My design is mainly based upon floating-point arithmetic.
I would like to take benefit from the DSP48E slices for some operations, and do others operations in logic only, all running in the same process. Is that possible?

As well, is it possible to decide the numbers of DSP48E to be used within one operation?
(for example, in the case of a floating-point multiplication, to choose between 3 DSP + no logic, or 1DSP + some logic).

Can CoDeveloper manage custom floating-point and fixed-point formats as it is possible within some IP cores from xilinx?

Thanks for your answers,

Regards,

Charles

#5 RalphBodenner

    Advanced Member

  • Admin
  • PipPipPip
  • 348 posts

Posted 07 March 2007 - 09:38 AM

Fine-grained control over operator implementation in the FPGA fabric is not yet supported in Impulse C. For now, we recommend controlling DSP48 usage by providing constraints to the Xilinx tools, as documented in the link above.

Impulse C supports operations on fixed-point formats with 8, 16, 32, or 64 total bits. Adding a custom format is simply a matter of writing C macros for the operations and format sizes you wish to use (see co_math.h for examples).

We only support the standard single- and double-precision floating-point formats, using the 'float' and 'double' C types.
Ralph Bodenner
Impulse Accelerated Technologies, Inc.





1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users