Altifigence Academy
Projeto digitalGratuito · Fundamentos

Fundamentos de projeto RTL

Expresse circuitos digitais em SystemVerilog. Estude tipos, larguras, sinal, lógica combinacional e sequencial, módulos, parâmetros e generate, verificando limites e falhas com bancos de teste independentes. Conclua conectando pulsos periódicos a um acumulador e registrando evidências reproduzíveis.

SystemVerilogProjeto de módulosBancos de teste
Meu aprendizado

O que você vai aprender

  • Especificar largura, sinal, fonte de acionamento, instante de validade e valor de reset de cada sinal.
  • Separar atribuições combinacionais completas de atualizações de estado por clock.
  • Criar estruturas estáticas com parâmetros e generate e verificar configurações de fronteira.
  • Compor módulos com conexões por nome e funções.
  • Escrever estímulos sem condições de corrida e referências independentes.
  • Distinguir evidências de compilação, simulação, síntese e execução no DDS.

Antes de começar

Os exercícios no navegador usam modelos educacionais; não compilam nem executam HDL. Para executar o código separadamente, siga o guia do Digital Design Studio para seu sistema operacional e entre na conta quando a operação exigir.

Instalação e primeiro uso ↗ · Downloads ↗

Programa

  1. RTL e contratos de módulos
    • RTL: descrever circuitos concorrentesConceito

      Separe a ordem do software da estrutura paralela e especifique estado atual, próximo estado e observação.

    • Sinais e portas: contratos de largura, direção e tempoConceito

      Leia interfaces e separe os critérios de verificação de saídas combinacionais e de estado.

    • Módulos, portas e instâncias: conexões como contratosConceito

      Componha módulos com conexões nomeadas, verificando acionamento único e limites da hierarquia.

    • Verificação: saída combinacional e armazenadaVerificação

      Diferencie mudança de entrada e observação do registrador.

  2. Tipos, larguras, sinal e expressões
    • logic, wire, X/Z e larguras explícitasConceito

      Separe tipo e armazenamento e verifique literais, comparações, extensões e valores desconhecidos.

    • Índices de vetor, ordem de bits e sinalConceito

      Distinga índices, ordem de transmissão serial e interpretação aritmética ao ler caminhos de dados.

    • Larguras de fatias, concatenação e repetição de bitsConceito

      Calcule largura total e preservação do valor ao construir caminhos de dados.

    • Complemento de dois, extensão de sinal e overflowConceito

      Distinga a interpretação signed e as condições de overflow com equações e contraexemplos.

    • Verificação: intervalo e extensão explícitaVerificação

      Confira entradas e saída do somador juntas.

  3. RTL combinacional completo e verificação
    • RTL combinacional e atribuições completasConceito

      Expresse a mesma função com o operador condicional e always_comb e encontre omissões que inferem latches.

    • Codificadores e prioridade: escolha uma entre várias solicitaçõesConceito

      Distinga a hipótese one-hot de um codificador simples das saídas valid e de seleção de um codificador de prioridade.

    • Verificação do MUX: teste exaustivo e propriedadesConceito

      Confira separadamente a cobertura combinacional e o armazenamento e reduza os contraexemplos.

    • Verificação de projeto: equivalência de seleção e instante de observaçãoVerificação

      Distinga verificações resolvidas por tabelas-verdade daquelas que exigem observar o clock.

  4. Estado, atribuições e prioridade de reset
    • Flip-flops, enable e prioridade de controleConceito

      Defina manutenção, carga e reset como próximo estado e evite criar gating de clock involuntário.

    • Atribuições não bloqueantes e atualização simultâneaConceito

      Separe valores anteriores e seguintes para interpretar corretamente contadores e pipelines RTL.

    • Contadores modulares, saturação e pulsos de términoConceito

      Projete a política do máximo e o ciclo exato do sinal de fim de contagem.

    • Prática: verifique reset, retorno modular e invariantes do contadorPrática

      Compare cada borda com uma referência e separe os efeitos de inicialização, reset e largura.

    • Verificação de projeto: limites de largura, prioridade e retornoVerificação

      Resolva fronteiras e controles simultâneos a partir de uma especificação de transição.

  5. Parâmetros e geração de estruturas estáticas
    • parameter, localparam, $clog2 e configurações limiteConceito

      Separe entradas de execução da configuração e projete largura e término para N=1 e não potências de dois.

    • generate: construir circuitos estáticos com laçosConceito

      Use genvar e generate-if para hierarquias nomeadas e confira a distribuição dos lanes.

    • function automatic e expressões reutilizáveisConceito

      Escreva funções sem tempo simulado e confira largura, sinal e independência da referência.

    • Verificação: N=1 e larguraVerificação

      Separe largura mínima e estados válidos.

  6. Bancos de teste e verificação independente
    • Instantes de amostragem e causalidade nas formas de ondaConceito

      Separe estabilização combinacional, captura de clock e ordem de eventos ao ler formas de onda.

    • Prática: banco de teste que relata suas falhasPrática

      Separe DUT, estímulos, referência e checagens para testar reset, enable e retorno sem corridas.

    • Plano de verificação, cobertura e referência independenteConceito

      Distinga testes aprovados do cumprimento dos requisitos e planeje fronteiras, cruzamentos de condições e contraexemplos mínimos.

    • Depuração do contador e contraexemplos mínimosConceito

      Projete testes curtos que distingam erros de reset, enable e retorno na fronteira.

    • Verificação: referências e corridasVerificação

      Escolha referência independente e observação após atualização.

  7. Composição de módulos e prática integrada
    • Máquinas de estados: separe estado, transição e saídaConceito

      Construa uma FSM a partir da tabela e compare Moore, Mealy, estados ilegais e política de solicitações.

    • Projeto integrado: detector do padrão 101 com sobreposiçãoConceito

      Aplique minimização de estados, entrada válida, saída registrada e referência independente em um projeto.

    • Ready/valid e um buffer elástico de uma posiçãoConceito

      Projete a condição de transferência e a entrada e saída simultâneas para que um caminho de dados que pode parar não perca nem duplique elementos.

    • Pipeline de multiplicação e soma e alinhamento de dadosConceito

      Divida o cálculo por registradores e mantenha alinhados os dados, valid e os operandos auxiliares de cada transação.

    • Prática integrada: pulsos periódicos e acumulador habilitadoPrática

      Especifique transferências com valores antigos e verifique pausas, pulsos consecutivos e reset simultâneo.

  8. Diagnósticos e alcance dos resultados
    • Setup, hold e orçamento temporalConceito

      Separe atrasos máximos e mínimos e calcule a condição de hold, independente da frequência.

    • Cruzamentos de domínios de clock e metaestabilidadeConceito

      Compreenda o alcance do sincronizador de dois estágios e distinga níveis de um bit, pulsos curtos e transferências multibit.

    • Compilação, lint e síntese: alcance dos diagnósticosConceito

      Fixe fontes, top e linguagem e diferencie sintaxe, largura, latches e verificação funcional.

    • Registros de execução e continuação no DDSConceito

      Entregue fontes, entradas, expectativas, falhas e versões para reproduzir a prática.

    • Verificação final: funcionamento e evidênciasVerificação

      Separe resultado local de aceitação da prática DDS gratuita.

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