Altifigence Academy

17 / 20 · Conceito

Scoreboards e invariantes

Verifique termos, etiquetas, bordas e transferências de saída além da matriz final.

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.

CamadaExemplo de falhaFalha provável
Aritmética23 em vez de 19Índice, sinal ou largura
Termos[0,1,1]Token duplicado
TemporizaçãoPE final concluído em E2Conclusão antecipada
PausaCount muda durante pausaRetenção parcial do estado
SaídaUma chave recebida duas vezesControle 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.

Sua escolha vale neste navegador. Altere-a a qualquer momento no rodapé.