Fiquei surpreso e, de certa forma, chocado ao descobrir que não existe uma ferramenta estabelecida adequada para projetar e criar protótipos de circuitos assíncronos.
Continuo pesquisando usando o google e outros meios para encontrar um bom método para projetar circuitos assíncronos VLSI, mas até agora as pesquisas falharam em produzir uma resposta.
Existem algumas ferramentas abandonadas, como o Balsa, etc. para automatizar projetos VLSI, mas elas são totalmente não documentadas e difíceis de usar. O que estou procurando é algo como FPGAs que temos no mundo síncrono.
De qualquer forma, agradeço se você compartilhar o nome de uma ferramenta confiável e de um hardware de prototipagem que alivie o fardo do projeto de circuitos assíncronos.
Respostas:
A NCL da lógica Theseus foi mencionada, também havia sistemas Handshake (spin-off da Philips), bem como Fulcrum Microsystems e Caltech. Também havia um processador ARM assíncrono chamado Amulet. E a SUN Microsystems também tinha uma equipe de design de processador para um SPARC sem relógio.
Eu chamaria esses projetos sem relógio para evitar a confusão entre o design lógico, como contadores de ondulação e esses tipos de circuitos. Mas, em geral, qualquer um dos termos é usado.
O DC (Design Compiler) da Synopsys e o Merlin dos sistemas FTL também estavam disponíveis.
No entanto, se você tiver uma biblioteca de células principais projetada adequadamente, essa abstração / descrição de nível superior pode se tornar trivial. A questão principal é que, se você projetou um sistema que permite que cada célula propague para frente um sinal que diz "resultado bom", além de propagar o sistema "disponível para trás", o sistema se auto-regula e, como tal, pode ser simplesmente projetado de maneira muito parecida com software sem se preocupar com condições de corrida ou tempo para esse assunto.
Portanto, as ferramentas usadas seriam tão simples quanto o SPICE para o design de nível de célula (nível de transistor) e C para compilar em um conjunto de primitivos a serem colocados. Durante toda a minha vida, não consigo encontrar a ferramenta baseada em C (código aberto) usada.
Olhe para pessoas como Wesley Clark (ele faleceu recentemente), bem como Ivan Sutherland e Karl Fant (mencionados em outros lugares também).
fonte
Se um registro tiver um relógio com um relógio do sistema, seria considerado síncrono. Se o mesmo registro fosse cronometrado diretamente de um portão, circuito lógico ou geralmente qualquer coisa além de um relógio do sistema, seria assíncrono. Os registros da Altera podem ter clock de vários relógios do sistema ou por lógica. Você pode construir qualquer tipo de circuito de portão que desejar. . . Tem sido minha experiência com a maioria dos tipos de ASICs ou FPGAs que, cada vez que é compilado, algo é roteado diferente. Assim, os atrasos na propagação estão sempre mudando.
fonte
Um FPGA é o hardware certo. Mas você não poderá usar o software de síntese com foco síncrono, porque ele faz as transformações erradas.
Por exemplo, um FPGA é perfeitamente capaz de formar um oscilador construído com uma corrente inversora. Mas se você definir essa cadeia de inversores em, por exemplo, VHDL e usar um dos compiladores padrão, o "NOT-gate pushback" eliminará os inversores em pares e o deixará com apenas um, e o dispositivo não irá oscilar.
Você pode precisar escrever um pouco do seu próprio software de síntese, o que será possível se você obter informações suficientes no fluxo de bits. Eu examinaria outros esforços de pesquisa que operam no fluxo de bits e não na descrição comportamental - coisas como detecção de falhas e análises de confiabilidade são altamente dependentes do mapeamento escolhido pelo sintetizador. Provavelmente, algum trabalho na área da lógica tolerante a falhas redundante já elaborou algumas técnicas de mapeamento personalizadas, uma vez que a eliminação do termo comum do produto é uma das transformações padrão executadas por um sintetizador tradicional e destrói absolutamente um design redundante.
Ao controlar o uso das primitivas do elemento lógico do FPGA, como tabelas de pesquisa e interconexão local e global, você poderá usar os atrasos inerentes para realizar seu design assíncrono. Seu problema de otimização é muito mais difícil do que se ajustar ao objetivo de atender aos tempos de configuração e espera, mas é isso que faz a pesquisa.
fonte
Dependendo da complexidade do seu circuito. Se o seu design é principalmente digital, você pode usar o sistema Quartus da Altera. Insira seu design com ferramentas gráficas e / ou VHDL usando registros com sincronização assíncrona ou use apenas portas lógicas. Adicione buffers fictícios, portas, pinos de sinal etc., conforme necessário, para atrasar os caminhos de sinal para corresponder ao que você precisar. (supondo que seu design seja mais lento que os atrasos mais rápidos em seus portais de CPLD <5 ns)
Muitos anos desenhando com seus chips, nunca encontrei um resultado de simulador incorreto. Projetos menores podem ser feitos com suas ferramentas gratuitas.
fonte