J'écris un noyau de bande passante normale en C++ pour FPGA, qui lit quelque chose à partir de la mémoire de l'hôte et l'écrit à différents endroits dans l'hôte. J'utilise des structures, dont l'un des éléments est des adresses pour les tampons d'entrée et de sortie. L'outil de synthèse de haut niveau donne une erreur pour la dernière ligne du code suivant.Erreur: L'expression n'est pas assignable C++ struct
struct addr_struct {
ap_uint<64> address;
ap_uint<32> size;
ap_uint<16> type;
ap_uint<16> flags;
};
struct addr_struct CA_INPUT;
struct addr_struct CA_OUTPUT;
din_mem = 0x00;
dout_mem = 0x00;
ap_uint<32> i;
ap_uint<512> temp;
ap_uint<512> *din_mem;
ap_uint<512> *dout_mem;
for(i=0; i<2048; i++){
temp= (ap_uint<512> *)(din_mem + CA_INPUT.address + i*64);
(ap_uint<512> *)(dout_mem + CA_OUTPUT.address + i*64) = temp;}
note, ceci est une violation stricte aliasing –