There is nothing much wrong in the code. Error is due to the the entity name. You may have a another entity with same name in same library. You may defined the specified entity in the specified files. However, all entities are being compiled to the same library. Compile the specified entities in different libraries. That is compile entity prob_c5_1 in different library. or you can change the entity name and compile entity in same library. Find the code with different entity name as below: and compile it in same library. library IEEE; USE ieee.std_logic_1164.all; ENTITY prob_c5_differ IS PORT( V,F,H : In std_logic; original,reduced : OUT std_logic ); END prob_c5_differ; Architecture arc OF prob_c5_differ IS begin original <= (H and F) OR (H and V); reduced <= (F OR V) AND (H); End arc; If it still give some errors than compile the entity in different library other than work. Solution There is nothing much wrong in the code. Error is due to the the entity name. You may have a another entity with same name in same library. You may defined the specified entity in the specified files. However, all entities are being compiled to the same library. Compile the specified entities in different libraries. That is compile entity prob_c5_1 in different library. or you can change the entity name and compile entity in same library. Find the code with different entity name as below: and compile it in same library. library IEEE; USE ieee.std_logic_1164.all; ENTITY prob_c5_differ IS PORT( V,F,H : In std_logic; original,reduced : OUT std_logic ); END prob_c5_differ; Architecture arc OF prob_c5_differ IS begin original <= (H and F) OR (H and V); reduced <= (F OR V) AND (H); End arc; If it still give some errors than compile the entity in different library other than work..