17 / 20 · Conceito
Scoreboards e invariantes
Verifique termos, etiquetas, bordas e transferências de saída além da matriz final.
As aulas podem ser lidas gratuitamente. Inscreva-se para salvar o progresso.
Separe duas referências
Use uma referência matemática direta para calcular somas amplas com laços i/j/k independentes. Use um modelo de temporização separado para mover A para a direita e B para baixo. Copiar a função auxiliar de indexação do RTL para o modelo de referência corre o risco de reproduzir o mesmo erro. Comece com exemplos fixos calculados manualmente e depois amplie para entradas aleatórias reproduzíveis.
Use job e as coordenadas globais de saída como chave do scoreboard de resultados. Compare cada valor recebido e marque sua chave como recebida. Uma chave repetida é uma duplicação, uma chave inesperada é um erro de endereço e uma chave esperada não recebida está ausente. Resultados zero ainda exigem entrega. Coordenadas de preenchimento fora da faixa nunca devem ser armazenadas.
Verifique invariantes dentro da matriz
Cada PE deve consumir exatamente [0,1,...,K−1]. Operandos válidos correspondentes precisam de etiquetas job e k iguais. Count permanece entre zero e K. Uma borda em pausa mantém operandos, valid, etiquetas, acumulador e count. Clear deixa count e acumulador em zero sem tokens válidos. Um resultado bloqueado mantém data e job enquanto valid permanece ativo.
| Camada | Exemplo de falha | Falha provável |
|---|---|---|
| Aritmética | 23 em vez de 19 | Índice, sinal ou largura |
| Termos | [0,1,1] | Token duplicado |
| Temporização | PE final concluído em E2 | Conclusão antecipada |
| Pausa | Count muda durante pausa | Retenção parcial do estado |
| Saída | Uma chave recebida duas vezes | Controle de handshake |
No exemplo 2×2, o PE final contém dezoito após E2 e cinquenta após E3. Um erro de global-done em E2 deve falhar nas verificações numéricas e de temporização. Por outro lado, produtos de mesmo valor duplicados e omitidos podem preservar a soma final; acompanhar termos detecta essa coincidência.
Armazene sementes aleatórias, matrizes, dimensões, larguras e posições de pausa. Registre o primeiro PE, termo e borda física divergentes. Erros deliberados de etiquetas devem falhar visivelmente em vez de desaparecer silenciosamente.
Observe o estado após E_t de forma consistente. Execução da referência em Node, compilação RTL, simulação RTL, síntese, fechamento de temporização, execução de projeto DDS e teste em placa estabelecem fatos diferentes. Os programas Node fornecidos validam modelos aritméticos e de escalonamento. Testes RTL futuros podem reutilizar os dados de teste, mas devem manter suas próprias versões de ferramentas, comandos e logs.
Experimente
Construa entradas nas quais verificar apenas a soma final deixe passar um termo duplicado e um omitido.
Ler a explicação
Uma linha de A [1,1] e uma coluna de B [5,5] somam corretamente dez. Consumir [0,0] também soma dez, mas duplica k0 e omite k1. Exigir tanto o valor quanto a lista exata de termos [0,1] detecta o erro.