Conflicto de nombre de tipo entre bibliotecas FPGA

2

He adquirido núcleos FPGA de dos proveedores diferentes, ambos escritos en VHDL. Ambos núcleos tienen un tipo definido llamado ahb_slv_out_vector pero los dos tipos no son compatibles. Necesito usar ambos tipos en mi módulo de nivel superior, pero hay un conflicto obvio.

Las bibliotecas se importan desde

work.amba.all

y

<vendorname>.amba.all

¿Cómo puedo eliminar la ambigüedad de los dos nombres de tipo en mi módulo de nivel superior y permitir que otros archivos que los importan continúen usándolos con su nombre actual?

    
pregunta kjgregory

1 respuesta

6
  

Las bibliotecas son importadas de
  work.amba.all
  y
  vendorname.amba.all

No, no lo son.

Se importan de work.amba y vendorname.amba . El all en las cláusulas de uso simplemente contamina su espacio de nombres con todo lo que hay en esas dos bibliotecas.

Por lo tanto, no hagas eso.

En su lugar, utilice nombres completos

Use work.amba;  
Use vendorname.amba;  
... 
signal Mine   : work.amba.ahb_slv_out_vector;
signal Theirs : vendorname.amba.ahb_slv_out_vector;

y las dos señales coexistirán muy felices. Tenga en cuenta que son tipos completamente diferentes, por lo que probablemente tendrá que escribir funciones de conversión de tipos entre ellos si alguna vez se cumplen.

Si la mayor parte de su código involucra a la biblioteca de Trabajo con algunas raras excepciones de la otra, entonces felizmente puede use work.amba.all; para reducir la cantidad de nombres completamente calificados, usándolos solo para la otra biblioteca.

    
respondido por el Brian Drummond

Lea otras preguntas en las etiquetas