Ho un design del controller Serial-ATA che funziona su quasi tutti i tipi di dispositivi Xilinx serie 7, ad eccezione del dispositivo Artix-7, che mi dà mal di testa ...
Il design puro (SATA 6.0Gb / s, orologio design 150 MHz) può essere implementato sul mio Artix-7 200T. Se aggiungo core ILA (precedentemente noto come ChipScope), i tempi non vengono rispettati.
Cosa ho fatto per rilassare la situazione: - aggiunte 2 fasi della pipeline in ciascun nucleo ILA - Aggiunta 1 fase della pipeline tra il ricetrasmettitore GTP e la logica - usato come retiming, rimappatura e posizionamento ampio come strategia di implementazione alternativa
Queste immagini mostrano il normale flusso di progettazione. I core ILA sono lontani dal SATAController (SATAC) e dalla CPU a 8 bit ( SoFPGA ), ma il controller ha ancora percorsi errati (questa è l'unica regione con percorsi errati ).
Sembra che Artix-7 abbia esaurito le risorse di routing in alcune aree. Come posso ottenere un rapporto che indichi tale sospetto?
Ho anche provato a rimodellare, rimappare e strategie di posizionamento più ampie. Il risultato è questo:
Il fallimento del tempismo è quasi lo stesso ...
PS Il design utilizza solo 178 di> 300 BlockRAM. Ho usato Xilinx ISE per usare quasi tutti i BlockRAM in altri progetti, ma non ho mai riscontrato un simile comportamento.
Modificare:
Ecco una mappa di calore di tutti i valori di gioco negativi per Slice (colorati in rosso)