23 / 37 · Conceito
Instantes de amostragem e causalidade nas formas de onda
Separe estabilização combinacional, captura de clock e ordem de eventos ao ler formas de onda.
As aulas podem ser lidas gratuitamente. Inscreva-se para salvar o progresso.
Dentro de uma marca temporal também há ordem
Vários sinais parecerem mudar no mesmo instante não elimina a causalidade. Na simulação RTL por eventos, os valores se estabilizam após o processamento dos eventos ativos e das atualizações não bloqueantesAtribuição não bloqueante Atribuição escrita com <= em RTL sequencial. Avalia o lado direito e agenda a atualização, permitindo que os registradores da mesma borda calculem a partir do estado anterior. Saiba mais. O hardware muda após clock-to-Q e propagação combinacionalAtraso de propagação Tempo entre uma mudança de entrada e a estabilização da saída no valor correto. Equivalência lógica e comportamento temporal são propriedades distintas. Saiba mais. Distinga os modelos.
Prepare a previsão como aplicação da entrada → avaliação combinacional → captura na borda de subidaBorda de subida Instante em que o clock passa de 0 para 1. É diferente do nível alto, que abrange todo o intervalo com CLK=1. Saiba mais → atualização do estado. Confirme quando a ferramenta aplica entradas e registra resultados.
É preciso verificar o escalonamento real do simulador. Os quatro estágios abaixo separam conceitos da tabela de previsão; não representam quatro ciclos de clock.
- Aplique entradas: Mude a, b e sel
- Avaliação combinacional: y = sel ? b : a
- Borda de subida: Capture y logo antes da borda
- Observe após a atualização: Compare sampled_y
Calcule primeiro uma referência independente
Calcule y para cada conjunto de entradas e separe a coluna da borda que o captura em q. A primeira linha em que referência e resultado diferem permite localizar o problema na aplicação de estímulos, seleção ou armazenamento.
Distinga transição e estado estável
Se os dados forem iguais ao mudar sel, a saída final deve coincidir, embora diferenças de atraso interno possam criar um pulso espúrio breve. Nem toda transição normal para um resultado diferente deve ser chamada de glitch. Comparação lógica de ondas e análise temporal física respondem a perguntas diferentes.
Um testbench que muda estímulos e lê imediatamente na mesma borda do DUT pode criar uma condição de corrida. Separe acionamento e observação ou use sincronização explícita, como clocking blocks. A prática DDS fornecida usa JSON e as regras de clock único da ferramenta; não acrescente um testbench arbitrário com #delay.
Experimente
Se os valores finais de y e sampled_y forem ambos 1, é possível concluir que os ciclos intermediários estavam corretos?
Ler a explicação
Não. Inverter a seleção ou capturar um ciclo depois pode dar o mesmo final se a=b=1 ao terminar. Compare cada borda com sua referência e inclua mudanças de sel com a e b diferentes.