Devido a um problema no software Intel® Quartus® Prime Pro Edition v21.1 e anterior, você pode ver que o resultado da síntese está incorreto quando o nome da variável instacionada de uma estrutura é o mesmo que um de seus membros.
Por exemplo, na definição da estrutura abaixo, quando o design usa in.data,ele é sintetizado como in.data.data,que é o elemento da estrutura. Isso significa que a largura de bits é de 256 bits quando deve ser de 258 bits ou seja, sop de 1 bits, eop de 1 bits e dados de 256 bits.
teste de interface #(parâmetro WIDTH=256) ();
struct typedef embalado {
sop lógica;
eop lógica;
dados da lógica [WIDTH-1:0];
} data_t;
data_t dados;
endinterface
......
teste #(. WIDTH(256)) in();
atribuir dout = in.data;
......
Para resolver este problema, não use o mesmo nome para a estrutura como um, se for membro.
Este problema foi corrigido a partir do software Intel® Quartus® Prime Pro Edition v21.2.