Ich war überrascht und bis zu einem gewissen Grad schockiert, als ich feststellte, dass es kein etabliertes Werkzeug zum Entwerfen und Prototypen von asynchronen Schaltungen gibt.
Ich suche weiterhin mit Google und anderen Mitteln, um eine gute Methode zum Entwerfen von asynchronen VLSI-Schaltkreisen zu finden, aber bisher haben die Suchanfragen keine Antwort geliefert.
Es gibt einige verlassene Tools wie Balsa usw. zur Automatisierung von VLSI-Designs, aber sie sind völlig undokumentiert und schwer zu verwenden. Was ich suche, ist so etwas wie FPGAs, die wir in der synchronen Welt haben.
Ich weiß es jedenfalls zu schätzen, wenn Sie den Namen eines zuverlässigen Tools und Prototyping-Hardware teilen, die das asynchrone Schaltungsdesign entlasten.
Antworten:
Die Theseus-Logik NCL wurde erwähnt, es gab auch Handshake-Systeme (Philips Spin-off) sowie Fulcrum Microsystems und Caltech. Es gab auch einen asynchronen ARM-Prozessor namens Amulet. Und SUN Microsystems hatte auch dafür ein Prozessordesign-Team für einen taktlosen SPARC.
Ich würde diese taktlosen Designs nennen, um die Verwechslung zwischen logischem Design wie Welligkeitszählern und diesen Arten von Schaltungen zu vermeiden. Im Allgemeinen wird jedoch jeder Begriff verwendet.
Früher war auch DC (Design Compiler) von Synopsys sowie Merlin von FTL-Systemen verfügbar.
Wenn Sie jedoch über eine ordnungsgemäß gestaltete Bibliothek von Kernzellen verfügen, kann diese Abstraktion / Beschreibung der obersten Ebene trivial werden. Das Kernproblem besteht darin, dass, wenn Sie ein System entworfen haben, das es jeder Zelle ermöglicht, ein Signal mit der Aufschrift "Ergebnis gut" vorwärts zu verbreiten und das "verfügbare System" rückwärts zu verbreiten, das System selbsttaktet und als solches einfach sehr ähnlich entworfen werden kann Software ohne Rücksicht auf die Rennbedingungen oder das Timing.
Die verwendeten Werkzeuge wären also so einfach wie SPICE für das Design auf Zellebene (Transistorebene) und C für das Kompilieren in eine Reihe von zu platzierenden Grundelementen. Für mein Leben kann ich das verwendete C-basierte Tool (Open Source) nicht finden.
Schauen Sie sich Leute wie Wesley Clark (er ist kürzlich verstorben) sowie Ivan Sutherland und Karl Fant (auch an anderer Stelle erwähnt) an.
quelle
Wenn ein Register mit einer Systemuhr getaktet wird, wird es als synchron betrachtet. Wenn dasselbe Register direkt von einem Gate, einer Logikschaltung oder allgemein etwas anderem als einem Systemtakt getaktet würde, wäre es asynchron. Alteras Register können von mehreren Systemtakten oder durch Logik getaktet werden. Sie können jede Art von Gate-Schaltung bauen, die Sie wünschen. . . Ich habe mit den meisten Arten von ASICs oder FPGAs die Erfahrung gemacht, dass jedes Mal, wenn sie kompiliert werden, etwas anders geroutet wird. Somit ändern sich die Ausbreitungsverzögerungen immer.
quelle
Ein FPGA ist die richtige Hardware. Sie können die synchron fokussierte Synthesesoftware jedoch nicht verwenden, da sie die falschen Transformationen ausführt.
Beispielsweise kann ein FPGA perfekt einen Oszillator bilden, der aus einer Wechselrichterkette besteht. Wenn Sie diese Wechselrichterkette jedoch in z. B. VHDL definieren und einen der Standard-Compiler verwenden, werden durch "NOT-Gate-Pushback" Wechselrichter paarweise eliminiert und Sie erhalten nur einen, und das Gerät schwingt nicht.
Möglicherweise müssen Sie eine eigene Synthesesoftware schreiben. Dies ist möglich, wenn Sie genügend Informationen zum Bitstream erhalten. Ich würde mich mit anderen Forschungsanstrengungen befassen, die sich eher auf den Bitstrom als auf die Verhaltensbeschreibung beziehen - Dinge wie die Erkennung von Störungen und Zuverlässigkeitsanalysen hängen stark von der vom Synthesizer gewählten Zuordnung ab. Wahrscheinlich haben einige Arbeiten im Bereich der redundanten fehlertoleranten Logik bereits einige benutzerdefinierte Mapping-Techniken ausgearbeitet, da die Eliminierung gängiger Produktterme eine der Standardtransformationen ist, die von einem herkömmlichen Synthesizer durchgeführt werden, und ein redundantes Design absolut zerstört.
Wenn Sie die Verwendung der FPGA-Logikelement-Grundelemente wie Nachschlagetabellen und lokaler und globaler Verbindungen steuern, können Sie die inhärenten Verzögerungen verwenden, um Ihr asynchrones Design zu realisieren. Ihr Optimierungsproblem ist viel schwieriger als das Ziel, die Rüst- und Haltezeiten einzuhalten, aber genau deshalb recherchiert es.
quelle
Abhängig von der Komplexität Ihrer Schaltung. Wenn Ihr Design größtenteils digital ist, können Sie das Quartus-System von Altera verwenden. Geben Sie Ihr Design mit grafischen und / oder VHDL-Tools ein, indem Sie asynchron getaktete Register verwenden, oder verwenden Sie nur Logikgatter. Fügen Sie nach Bedarf Dummy-Puffer, Gates, Signal-Pins usw. hinzu, um die Signalpfade so zu verzögern, dass sie Ihren Anforderungen entsprechen. (Vorausgesetzt, Ihr Design ist langsamer als die schnellsten CPLD-Gate-Verzögerungen <5 ns)
Viele Jahre des Entwerfens mit ihren Chips habe ich nie ein fehlerhaftes Simulatorergebnis gefunden. Kleinere Designs können mit ihren kostenlosen Werkzeugen erstellt werden.
quelle