Problème critique
Pour les interfaces DDR2 et DDR3 ciblant Arria V ou Cyclone Appareils V avec le paramètre Activer l’interface de mémoire externe dure largeurs de l’extrémité avant de plusieurs ports activées comme indiqué dans les éléments suivants tableau, un facteur de correction est nécessaire.
Ce problème peut entraîner une panne de conception dans la simulation. Ce Le problème affecte les interfaces DDR2 et DDR3 ciblant la mémoire dure ressources d’interface sur Arria V ou Cyclone les périphériques V. Ce problème sera résolu dans une version ultérieure des contrôleurs SDRAM DDR2 et DDR3 avec UniPHY.
Largeur totale de l’interface mémoire
| Largeur avant multiport | Correction requise |
8
32
-1
8
64
-2
8
128
-3
8
256
-4
16
64
-1
16
128
-2
16
256
-3
32
32
1
32
128
-1
32
256
-2
40
160
-1
40
320
-2
La solution à ce problème est la suivante :
- Dans un éditeur de texte, ouvrez le fichier
altera_mem_if_hard_memory_controller_top(arriav/cyclonev).sv. - En
altera_mem_if_hard_memory_controller_top(arriav/cyclonev).sv, ajoutez les lignes suivantes après// New parameters for HMC:
parameter AVL_ADDR_WIDTH_PORT_0 = AVL_ADDR_WIDTH ;
parameter AVL_ADDR_WIDTH_PORT_1 = AVL_ADDR_WIDTH ;
parameter AVL_ADDR_WIDTH_PORT_2 = AVL_ADDR_WIDTH ;
parameter AVL_ADDR_WIDTH_PORT_3 = AVL_ADDR_WIDTH ;
parameter AVL_ADDR_WIDTH_PORT_4 = AVL_ADDR_WIDTH ;
parameter AVL_ADDR_WIDTH_PORT_5 = AVL_ADDR_WIDTH ;
- En
altera_mem_if_hard_memory_controller_top(arriav/cyclonev).sv, remplacerAVL_ADDR_WIDTHpar les cartes correspondantes,AVL_ADDR_WIDTH_PORT_#par exemple :
Remplacer input [AVL_ADDR_WIDTH - 1 : 0] avl_addr_0;
Avec
input [AVL_ADDR_WIDTH_PORT_0 - 1 : 0] avl_addr_0;
- En
altera_mem_if_hard_memory_controller_top(arriav/cyclonev).sv, commentez les lignes deassign i_avst_cmd_data_0 = i_avst_cmd_data_g[0];
Jusqu'à
assign avl_size_g[5] = avl_size_5;
- En
altera_mem_if_hard_memory_controller_top(arriav/cyclonev).sv, ajoutez les lignes suivantes immédiatement après la section ci-dessus :
assign i_avst_cmd_data_0 = {{42-AVL_SIZE_WIDTH-34{1\'b0}},avl_size_0,{34-AVL_ADDR_WIDTH_PORT_0-2{1\'b0}},avl_addr_0,avl_write_req_0,avl_read_req_0};
assign i_avst_cmd_data_1 = {{42-AVL_SIZE_WIDTH-34{1\'b0}},avl_size_1,{34-AVL_ADDR_WIDTH_PORT_1-2{1\'b0}},avl_addr_1,avl_write_req_1,avl_read_req_1};
assign i_avst_cmd_data_2 = {{42-AVL_SIZE_WIDTH-34{1\'b0}},avl_size_2,{34-AVL_ADDR_WIDTH_PORT_2-2{1\'b0}},avl_addr_2,avl_write_req_2,avl_read_req_2};
assign i_avst_cmd_data_3 = {{42-AVL_SIZE_WIDTH-34{1\'b0}},avl_size_3,{34-AVL_ADDR_WIDTH_PORT_3-2{1\'b0}},avl_addr_3,avl_write_req_3,avl_read_req_3};
assign i_avst_cmd_data_4 = {{42-AVL_SIZE_WIDTH-34{1\'b0}},avl_size_4,{34-AVL_ADDR_WIDTH_PORT_4-2{1\'b0}},avl_addr_4,avl_write_req_4,avl_read_req_4};
assign i_avst_cmd_data_5 = {{42-AVL_SIZE_WIDTH-34{1\'b0}},avl_size_5,{34-AVL_ADDR_WIDTH_PORT_5-2{1\'b0}},avl_addr_5,avl_write_req_5,avl_read_req_5};
- En
altera_mem_if_hard_memory_controller_top(arriav/cyclonev).sv, commentez la ligne suivante :
i_avst_cmd_data_g[port_i] = {avl_size_g[port_i],{34-AVL_ADDR_WIDTH-2{1\'b0}},avl_addr_g[port_i],avl_write_req_g[port_i],avl_read_req_g[port_i]};
- Dans tous les emballages qui accélèrent
altera_mem_if_hard_memory_controller_top(arriav/cyclonev).svl’emballage, mettre à jour la largeur du bus pour chaqueavl_addr_bus, comme Suit:
Replace input wire [21:0] avl_addr_0, // .address
Avec
input wire [21:0] avl_addr_0,
// .address