Meu FPGA está sem recursos de roteamento?

9

Eu tenho um design de controlador Serial-ATA trabalhando em quase todos os tipos de dispositivos Xilinx da série 7, exceto no dispositivo Artix-7, que me causa dores de cabeça ...

O design puro (relógio de design SATA 6.0Gb / s, 150 MHz) pode ser implementado no meu Artix-7 200T. Se eu adicionar núcleos ILA (anteriormente conhecido como ChipScope), o tempo não será atingido.

O que fiz para relaxar a situação: - adicionamos 2 estágios de pipeline em cada núcleo do ILA - adicionamos 1 estágio de pipeline entre o transceptor GTP e a lógica - usaram retiming, remap e ampla colocação como estratégia de implementação alternativa

Estas imagens mostram o fluxo normal do projeto. Os núcleos ILA estão distantes do SATAController (SATAC) e da CPU de 8 bits ( SoFPGA ), mas o controlador ainda possui caminhos com falha (essa é a única região com caminhos com falha).

insira a descrição da imagem aqui

Parece que o Artix-7 está sem recursos de roteamento em algumas áreas. Como posso obter um relatório indicando essa suspeita?

Também tentei reformular, remapear e estratégias de posicionamento mais amplas. O resultado é este:

insira a descrição da imagem aqui

A falha de tempo é quase a mesma ...

PS O design usa apenas 178 de> 300 BlockRAMs. Usei o Xilinx ISE para usar quase todos os BlockRAM em outros designs, mas nunca encontrei esse comportamento.

Editar:

Aqui está um mapa de calor de todos os valores negativos de folga por fatia (colorido em vermelho) insira a descrição da imagem aqui

Paebbels
fonte
3
No Altera Quartus, há algo chamado regiões LogicLock que permitem restringir uma partição ou parte da lógica a uma região específica. Presumo que haverá algo semelhante para o Xilinx (embora não tenha certeza do que seria chamado). Se você puder fazer isso, deve restringir o ILA a uma região longe de sua lógica (para impedir que ela desloque coisas importantes) e adicionar pipelining extra (sem restrições à região) para ajudar no tempo.
31816 Tom Carpenter
2
Também pode ser um caso de caminhos falsos entre o domínio do relógio do ILA e qualquer outro domínio do relógio, causando caminhos falsos que resultam em um esforço extra do instalador (fazendo com que caminhos reais sejam tratados com menos prioridade e, portanto, com falha no tempo)
Tom Carpenter
2
Eu tive problemas semelhantes com o SignalTap (novamente equivalente ao ILA da Altera), com caminhos com falha sendo causados ​​porque caminhos sensíveis estavam sendo separados pela lógica de toque, querendo estar mais perto dos sinais que estavam sendo tocados. Isso acontecia principalmente onde havia alta densidade de BRAM porque os SignalTap BRAM estavam forçando outros BRAM a se separarem. Depois que o SignalTap foi restrito a uma região menos crítica, os problemas desapareceram.
Tom Carpenter
@TomCarpenter As restrições de posicionamento são chamadas de PBlock :). Tanto quanto posso dizer, não existem células ILA na região SoFPGA ou SATAC, elas são separadas por 3 estágios FF em cada um dos 151 sinais de rastreamento. O design investigado é executado no mesmo domínio do relógio que o ILA (150 MHz). Todos os caminhos são restritos (sem caminhos sem restrições, sem falha entre os relógios). Os caminhos com falha mencionados estão todos no mesmo domínio do relógio, no SATAC ou no próprio ILA. Encontrei um relatório de congestionamento de roteamento, que indica cerca de 54% de uso (hor. E vert.). Por favor, veja meu neg. mapa de calor frouxo adicionado à minha pergunta.
Paebbels 31/08/16
11
Encontrei 2 problemas: No começo, o Artix-7 é 15 a 50% mais lento que o Kintex-7. Se eu alterar o grau de velocidade padrão de -2 para -3, tudo estará bem (há uma margem de segurança de 200 ps em comparação com 670 ps de folga negativa. Portanto, o grau de velocidade -3 melhora o caminho de 6.600 ns em quase 0,970 ns! parece que a conexão pura de sinais de rastreamento causa uma maior fan-out, o que causa problemas de temporização.Além disso, as rotas de rastreamento passam pelo domínio do clock de 100 MHz para a CPU de 8 bits, que por sua vez causa (uma em cada cinco execuções) As linhas longas / rotas causam problemas em outras linhas
Paebbels

Respostas:

1

Você pode obter um relatório detalhado fazendo uma análise de design no Xilinx Vivado. Execute o seguinte comando no console tcl: "report_design_analysis" Fornece o relatório de tempo, complexidade e congestionamento do design implementado. Você também pode executar este relatório em Ferramentas-> Relatório-> Análise de projeto de relatório.

Neste relatório, você pode ver quais áreas estão causando congestionamento devido à colocação. Quais fatias são totalmente usadas ou qual é o aluguel dessas fatias e / ou rotas.

Espero que isso tenha sido útil.

Atenciosamente, KWQ

KashifWajid
fonte
Obrigado por este relatório (para mim desconhecido). Qual é a diferença da minha última imagem (o mapa de temperatura do tempo)?
Paebbels 26/10/16