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
Xilinx DSP slices instaniation with Impulse C
Started by Aleksandar, Feb 15 2007 10:48 PM
4 replies to this topic
#1
Posted 15 February 2007 - 10:48 PM
#2
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
? Please read the section entitled "Using External HDL Hardware Functions" in the CoDeveloper User Guide for details.
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
Ralph Bodenner
Impulse Accelerated Technologies, Inc.
Impulse Accelerated Technologies, Inc.
#3
Posted 22 February 2007 - 03:20 AM
Hi,
thank you very much for the answer and the guidelines!
Best regards.
Aleksandar
thank you very much for the answer and the guidelines!
Best regards.
Aleksandar
#4
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
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
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.
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.
Impulse Accelerated Technologies, Inc.
1 user(s) are reading this topic
0 members, 1 guests, 0 anonymous users











