ID 683796
Date 9/24/2018
Public

## 1.11.4.1.3. Creating Black Boxes in VHDL

Any design that is not defined in the project, or included in the list of files to be read for a project, is treated as a black box by the software. Use the syn_black_box attribute to indicate that you intend to treat the component as a black box. In VHDL, you must have a component declaration for the black box.

Although VHDL is not case-sensitive, a .vqm (a subset of Verilog HDL) file is case-sensitive. Entity names and their port declarations are forwarded to the .vqm file. Black box names and port declarations are also passed to the .vqm file. To prevent case-based mismatches, use the same capitalization for black box and entity declarations in VHDL designs.

The example shows the A.vhd top-level file. Follow this same procedure for any lower-level files that contain a black box for any block beneath the current level of hierarchy.

### VHDL Black Box for Top-Level File A.vhd

LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY synplify;
USE synplify.attributes.all;

ENTITY A IS
PORT (data_in : IN INTEGER RANGE 0 TO 15;
clk, e, ld : IN STD_LOGIC;
data_out : OUT INTEGER RANGE 0 TO 15 );
END A;

ARCHITECTURE a_arch OF A IS

COMPONENT B PORT(
data_in : IN INTEGER RANGE 0 TO 15;
clk, ld : IN STD_LOGIC;
d_out : OUT INTEGER RANGE 0 TO 15);
END COMPONENT;

COMPONENT F PORT(
d : IN INTEGER RANGE 0 TO 15;
clk, e: IN STD_LOGIC;
q : OUT INTEGER RANGE 0 TO 15);
END COMPONENT;

attribute syn_black_box of B: component is true;
atrribute syn_black_box of F: component is true;

-- Other component declarations in A.vhd go here
signal cnt_out : INTEGER RANGE 0 TO 15;

BEGIN

U1 : B
PORT MAP (
data_in => data_in,
clk => clk,
ld => ld,
d_out => cnt_out );

U2 : F
PORT MAP (
d => cnt_out,
clk => clk,
e => e,
q => data_out );

-- Any other code in A.vhd goes here

END a_arch;

After you complete the steps above, you have a netlist for each partition of the design. These files are ready for use with the incremental compilation flow in the Intel® Quartus® Prime software.