Altifigence Academy

20 / 20 · Conceito

Revisão de integração RTL e extensões

Conecte o modelo didático às interfaces RTL e às evidências de verificação.

Divida as responsabilidades do núcleo e do módulo envolvente

O núcleo da matriz trata encaminhamento registrado de operandos, MACs com sinal, valid/etiquetas e advance global. O módulo envolvente trata start/clear, dimensões das matrizes, coordenadas dos blocos, fornecimento defasado na fronteira, coleta mascarada de resultados e handshakes de saída. Defina cada responsabilidade com nomes de sinais e um contrato de bordas.

Um módulo envolvente simples usa IDLE, CLEAR, RUN, COLLECT e SEND. CLEAR garante uma borda de inicialização antes dos dados. RUN avança os passos lógicos de zero a K+2N−3. Os resultados ficam completos imediatamente após a última borda RUN; COLLECT os copia na borda seguinte. Isso evita copiar o acumulador anterior na mesma borda de sua atualização não bloqueante final.

Resolva um exemplo de latência de integração

Para N=K=2, clear ocorre em E−1 e o cálculo em E0..E3. Suponha que E4 copie quatro resultados em paralelo para um buffer de resultados. Uma saída de um resultado por borda com ready sempre verdadeiro envia dezenove, vinte e dois, quarenta e três e cinquenta em E5..E8, na ordem por linhas. Medir de clear até a transferência final inclui dez bordas de subida E−1..E8, em comparação com quatro bordas de cálculo. O bloqueio da saída prolonga SEND sem alterar os valores concluídos.

O conteúdo dos resultados precisa de job e coordenadas globais, além de uma representação bruta ou quantizada definida. Não limpe um acumulador até que seu resultado tenha sido copiado ou consumido com segurança. Sobrepor o próximo cálculo a SEND exige definir a posse dos buffers e separar os trabalhos.

Revise os contratos ao estender o projeto

Um multiplicador em pipeline altera a temporização da acumulação, das etiquetas e da conclusão. Dividir a redução em blocos exige manter somas parciais e uma nova análise de largura. Sobrepor trabalhos exige estado de acumulação separado. Uma FIFO armazena value, valid e etiquetas como um único conteúdo e exige verificações de overflow/underflow.

A documentação de arquitetura do Gemmini oferece um exemplo de fonte primária em que armazenamento local e movimento de dados acompanham a matriz. Nossa máquina de estados e nosso exemplo de temporização são contratos didáticos especificados de forma independente.

Entregue dimensões, larguras, cronograma da fronteira, definição de conclusão, política de pausa/reset, ordem das saídas e logs do scoreboard. Verificações em Node estabelecem o comportamento do modelo de referência. Simulação RTL, síntese, fechamento de temporização e integração do produto precisam de seus próprios comandos executados e evidências antes de afirmar sucesso.

Experimente

No exemplo de integração, bloqueie ready por duas bordas após E6. Qual passa a ser a borda de transferência final e a quantidade total de bordas medidas?

Ler a explicação

Espere em E7 e E8 e depois envie os dois resultados restantes em E9 e E10. A última transferência é E10; medir E−1..E10 inclui doze bordas. O cálculo continua com quatro bordas E0..E3, e os dados bloqueados devem ser mantidos.

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