Primero considera la diferencia entre C y OpenCL. C es un lenguaje, mientras que OpenCL es un marco que incluye todos los recursos necesarios para compilar en múltiples destinos y ejecutarlos en paralelo (colas / envío / sockets, etc.).
El 'kit' de Altera OpenCL es similar, ya que no es solo un compilador de hardware, sino que también incluye controladores DDR, controladores PCI, controladores de host, etc. Este hardware adicional está integrado en segundo plano y la interfaz / envío del controlador del host, etc. la principal diferencia entre la codificación en C y el uso de herramientas de C a HDL frente a OpenCL para FPGA.
Con una herramienta C-to-HDL, aún necesita hacer el resto del SOC y todos los controladores de software y aplicaciones para usar una tarjeta de acelerador de algoritmo basada en FPGA (por ejemplo). Con OpenCL, el mismo código puede compilarse para múltiples objetivos (cpu / gpu / fpga) sin cambios (aunque esto agrega algunas restricciones a lo que es este código).
Y, por supuesto, hay muchas buenas razones para codificar el HDL y construir el SOC. La solución OpenCL de Altera es una solución muy interesante para la programación FPGA de uso general.
--edit--
Para ver un ejemplo, vea el diseño de referencia de Mandelbrot de Altera:
enlace
A partir de esto, puede ver que el material de origen principal son los archivos cpp / h y un archivo de descripción de la placa, el software y el hardware de 'soporte' para hacer que su kernel de OpenCL entre en el hardware y hablar con él está oculto de la capa de OpenCL a través de 'Altera OpenCL 'SDK.
Si tuviera que encontrar una solución comparable con una herramienta de C a HDL, comenzaría con el núcleo compilado desde el convertidor, luego integraría esto con el hardware DDR, PCIe y DMA (el SOC) y luego codificaría los controladores para pasar todos estos datos e integrar este controlador con el sistema de gestión de colas OpenCL. Bastante trabajo.