Puede haber un malentendido sobre el significado de 'IP'.
Es posible programar la estructura de un FPGA, es decir, las LUT programables y todo, desde el principio. Sin embargo, los bits y las puertas y las tablas en un Xilinx y un Altera son diferentes, y son diferentes de una familia a otra, por lo que es como un código de ensamblaje de un micro, todos tienen diferentes códigos de máquina de bajo nivel. No creo que nadie haga eso, al menos, no comercialmente.
En general, es más fácil usar VHDL y escribir AND, OR y vector AGREGAR asignaciones, y dejar que el asignador las convierta en entradas de LUT. No llamaría a eso 'IP', llamaría a eso compilación. Cuando su VDHL que implica puertas y cierres NAND golpea un compilador Altera o un compilador Xilinx, ya que la estructura es diferente, las tablas LUT se programarán de manera diferente, pero la función de bajo nivel que ha descrito en el VHDL se implementa de la misma manera .
Si desea utilizar el hardware específico que proporcionan Xilinx y Altera, como las RAM de doble puerto o el acumulador multiplicador de 48x24, debe usar primitivas específicas del proveedor. Pero tienes control total sobre cómo te conectas a ellos. Todavía no llamaría a esta IP.
Si desea usar un FFT empaquetado, un filtro FIR de muestreo descendente o un decodificador Viterbi, o el ARM incorporado proporcionado o licenciado por el proveedor para su arquitectura, ya sea gratis (con las herramientas) o pagado para la licencia, eso es IP.