Qual é a diferença entre síntese e simulação no verilog?

Síntese e simulação é bem diferente. Veja Síntese fornece o resultado do design que você criou até agora. Em um significado simples, ele fará apenas um design ideal (com base na estratégia de trabalho que você está usando). Paralelamente, ele fornecerá o consumo dos recursos disponíveis no seu dispositivo de destino. lembre-se de que não é o consumo real, é apenas uma mera previsão do seu design. Seu consumo real pode ser obtido após a execução da implementação em seu projeto, fornecendo o consumo real dos recursos do dispositivo de destino.

Agora, a simulação é apenas a maneira de observar o comportamento do dispositivo de acordo com o código verilog ou vhdl. por outro lado, você pode verificar seu código (em pequenos blocos) sendo executado conforme o esperado com a ajuda da simulação.

Espero que você tenha entendido a diferença entre os dois.

Diverta-se…

Vou explicar isso com a ajuda de um exemplo:

Considere a seguinte declaração:

Atribuir Y = s? X1: X2;

O significado da simulação é testar qual seria o valor de Y quando s, x1 e x2 são variados com as melhores combinações possíveis. É feito com a ajuda de um simulador como VCS, ISE, modelsim.

Enquanto síntese é entender a lógica acima em termos de portas lógicas. A síntese interpretaria isso como um MUX de 2 entradas, com 's' como linha de seleção e 'x1' e 'x2' como as duas entradas do MUX.

Portanto, Y = (s 'AND x2) OR (s AND x1).

Espero que isto ajude.

Simulação é o processo de usar um software de simulação (simulador) para verificar a correção funcional de um design digital modelado usando um HDL (linguagem de descrição de hardware) como o Verilog.

Síntese é um processo no qual um comportamento de design modelado usando um HDL é convertido em uma implementação que consiste em portas lógicas. Isso é feito por uma ferramenta de síntese que é outro programa de software.

Uma diferença principal em termos de modelagem usando uma linguagem como Verilog é que, para síntese, o comportamento do design deve ser modelado em uma abstração RTL (Register Transfer Level). Isso significa modelagem em termos do fluxo de sinais digitais entre registros de hardware (flip-flops) e as operações lógicas (lógica combinacional) executadas nesses sinais.

Portanto, se um modelo de design da Verilog se destina à síntese, somente construções sintetizáveis ​​devem ser usadas, enquanto que para a simulação não existem restrições.

Algumas das construções não sintetizáveis ​​do Verilog são tarefas, atrasos, eventos, fork..join, inicial..begin blocks, force e release releases. Isso deve ser evitado se um código se destina a síntese.

Outra diferença principal é a lista de sensibilidade usada nos blocos sempre. Isso é importante para um simulador decidir como avaliar a lógica, mas, para síntese, não é importante.

Simulação é o processo de usar um software de simulação (simulador) para verificar a correção funcional de um design digital modelado usando um HDL (linguagem de descrição de hardware) como o Verilog.

Síntese é um processo no qual um comportamento de design modelado usando um HDL é convertido em uma implementação que consiste em portas lógicas. Isso é feito por uma ferramenta de síntese que é outro programa de software.

Uma diferença principal em termos de modelagem usando uma linguagem como Verilog é que, para síntese, o comportamento do design deve ser modelado em uma abstração RTL (Register Transfer Level). Isso significa modelagem em termos do fluxo de sinais digitais entre registros de hardware (flip-flops) e as operações lógicas (lógica combinacional) executadas nesses sinais.

Portanto, se um modelo de design da Verilog se destina à síntese, somente construções sintetizáveis ​​devem ser usadas, enquanto que para a simulação não existem restrições.

Algumas das construções não sintetizáveis ​​do Verilog são tarefas, atrasos, eventos, fork..join, inicial..begin blocks, force e release releases. Isso deve ser evitado se um código se destina a síntese.

Outra diferença principal é a lista de sensibilidade usada nos blocos sempre. Isso é importante para um simulador decidir como avaliar a lógica, mas, para síntese, não é importante.

O que você quer dizer com síntese: O código RTL sintetizável que pode ser implementado em hardware, quando você escreve qualquer projeto lógico, deve ser sintetizável, deve implementar em termos de portas lógicas

Existem muitas ferramentas que fazem síntese, que dão a idéia de hardware pré-fabricado em termos de portas lógicas que implementam o comportamento de desejo

Vamos dar um exemplo

junção de bifurcação não são código sintetizável

=== não é um código sintetizável

if / else são códigos sintetizáveis

para mais informações: Construções Verilog sintetizáveis ​​e não sintetizáveis

Agora, o que você perguntou depois

Simulação: A execução do modelo, pode ser o seu testbench, onde o modelo de referência, TB não precisa ser sintetizado, você tenta descobrir bugs, resultado esperado e ver o comportamento da tarefa, pois também existem muitos fornecedores de EDA que fornecem a ferramenta por isso

Síntese é o processo de conversão de código RTL comportamental em código RTL estrutural mapeado para uma biblioteca de gateways abstrata ou para uma biblioteca de gateways de tecnologia específica.

Simulação é o processo de aplicar estímulo aos pinos de entrada (ou redes internas) de um projeto e registrar a resposta nos pinos de saída.