Na região declarativa da arquitetura VHDL às vezes uso configurações incorporadas como for and_gate_inst : and_gate use entity work.and_gate(rtl);
Mas não sei como escrever essa configuração incorporada quando a instância está dentro de uma geração. Talvez isso não seja suportado. A instrução de configuração incorporada em meu exemplo de código produz um erro e não está correta:
library ieee;
use ieee.std_logic_1164.all;
entity and_gate is
port (
inp1_i, inp2_i : in std_logic;
out_o : out std_logic
);
end entity;
architecture rtl of and_gate is
begin
out_o <= inp1_i and inp2_i;
end architecture;
library ieee;
use ieee.std_logic_1164.all;
entity embedded_conf is
end entity embedded_conf;
library work;
architecture struct of embedded_conf is
signal inp1, inp2, out1 : std_logic;
component and_gate is
port (
inp1_i : in std_logic;
inp2_i : in std_logic;
out_o : out std_logic
);
end component;
for dummy_g for and_gate_inst : and_gate use entity work.and_gate(rtl); -- Not correct!!!
begin
dummy_g: if true generate
and_gate_inst : and_gate
port map (
inp1_i => inp1,
inp2_i => inp2,
out_o => out1
);
end generate dummy_g;
end architecture;
Alguém sabe como deve ser essa configuração incorporada?
Uma especificação de configuração (por exemplo, especificação de configuração IEEE 1076-2008 7.3) é um item declarativo de bloco que pode ser encontrado em uma parte declarativa da arquitetura (3.3.2 Parte declarativa da arquitetura) ou em um corpo de instrução de geração (11.8 Gerar instruções):
Não há capacidade de especificar hierarquia em uma especificação de configuração (não para for ). Para isso você precisaria de uma declaração de configuração que fosse uma unidade primária e seria alvo de elaboração (-e) e simulação (-r) com ghdl.
Observe que há apenas uma indicação de ligação possível quando a entidade de palavra reservada é usada:
Isso seria invocado como:
Usando ghdl com back-end gcc ou llvm. Para a versão mcode apenas o -r após todas as unidades de design terem sido analisadas em uma ou mais bibliotecas.
Observe também que poucas ou nenhumas cadeias de ferramentas de síntese para síntese de FPGA suportam declarações de configuração, embora isso fosse um requisito na IEEE Std 1076.6-2004 RTL Synthesis (retirado devido à falta de participação do fornecedor).
As configurações de bloco nas declarações de configuração também podem ser aninhadas: