next up previous contents
Next: Makrozellen Up: Erzeugung eines Schaltplanes Previous: Schaltplan des Adreßmultiplexers

Synthese

Bevor Sie selbständig eine Synthese durchführen, sollten Sie unbedingt den `Synergy HDL Synthesizer and Optimizer Modeling Style Guide' gelesen und verstanden haben.

Als Beispiel soll hier der Flag-Generator gezeigt werden, der die Signale oflow und empty erzeugt. Legen Sie eine neue Zelle mit einem Functional View an.

// Verilog HDL for "mylib", "flaggen" "functional"

module flaggen( empty, oflow, write_adr, read_adr, ce, we, clk, reset );

output          empty, oflow;
reg             oflow;
input [7:0]     write_adr, read_adr;
input           ce, we, clk, reset;
wire [7:0]      delta_adr;

always @(reset)
  if( reset == 1 ) assign oflow = 0;
  else             deassign oflow;

assign delta_adr = write_adr - read_adr;

always @(posedge clk)
   if( ce == 1 ) begin
      if( delta_adr == 8'hFF && we == 1 ) oflow <= 1;
      if( delta_adr == 0 && we == 0 ) oflow <= 0;
   end

assign empty = (delta_adr == 0 & ~oflow);


endmodule
Öffnen Sie dann den Functional View im Read-Modus, und starten Sie Synergy.
Menu>     Tools -> Design Synthesis -> Synergy
Es erscheint ein Fenster, in dem nach einem Run Directory und Bibliotheken gefragt wird. Ändern Sie den Namen des Arbeitsverzeichnisses so, daß es die Tatsache widerspiegelt, daß eine Synthese durchgeführt wird.
Form>     Run Directory -> <Arbeitsverzeichnis>
Form>     Symbol Libraries -> StdLib basic
Form>     Source Libraries -> (leer)
Button>   OK
Das anschließende Fenster mit Netzlistenoptionen können Sie ohne Änderungen bestätigen (falls Sie allerdings schon ein schematic der Schaltung haben, müssen Sie die Reihenfolge der views nach Bedarf ändern.) Nach einer gewissen Anlaufzeit erscheint das Synergy-Fenster, eine Netzliste wird erzeugt und eine interne Repräsentation der Schaltung erzeugt.

Auf die Constraints soll an dieser Stelle aus Platzgründen nicht detailliert eingegangen werden, obwohl diese in der Praxis sehr wichtig sind. Es sei dazu auf das Dokument `Synergy HDL Command Reference Help System' im openbook verwiesen. Für diese kleine Schaltung können Constraints zunächst ignoriert werden. Die am häufigsten benötigten Constraints sind

$\bullet$
Complex Operators: gibt an, wie Addierer, Subtrahierer usw. synthetisiert werden.
$\bullet$
Hierarchy Control: hiermit kann man einstellen, ob Subblöcke aufgelöst oder beibehalten werden sollen.
$\bullet$
Wire Model: Abschätzung der Netzkapazitäten. Die Modelle sind von der Form `modelxxx', wobei `xxx' die Anzahl der Transistoren der Schaltung ist.
$\bullet$
Ports/Wires: hier können u.a. maximale Eingangslasten (Input/Max Load) bzw. zu erwartende Ausgangslasten (Output/Load) vorgegeben werden.

Starten Sie nun die Synthese.

Menu>     Synthesis -> Synthesize
Button>   Generate Schematic -> on
Menu>     Delay Options
Button>   Delay Type -> typical
Button>   Synthesize
Obwohl eine spezielle Option zum nachträglichen Generieren eines schematics zur Verfügung steht, muß der Schaltplan bereits in diesem Durchlauf erzeugt werden (Bug). Nach dem Start der Synthese zeigt Synergy Fenster, die mitteilen, daß Synergy noch arbeitet.

Sämtliche Funktionen zu schematics im Synergy sind fehlerhaft, u.a. die Anzeigefunktionen. Wenn Sie das Resultat sehen wollen, gehen Sie mit dem Library Manager in die neuentstandene Bibliothek `Opt', wo ein schematic des Flag-Generators angelegt wurde. Betrachten Sie auch die verschiedenen Reports unter

Menu>     Results -> Report
bzw. die grafischen Displays. Der Synthesizer ist auch eine hervorragende Alternative, wenn Core-Flächen (ohne Verdrahtung) und Timing existierender Schaltungen analysiert werden sollen. Die Source-Bibliothek ist dann SClib, und als Run Alternative der Synthese kann man Timing Report wählen.

Beenden Sie den Synthesizer mit File/Exit, schließen Sie das functional mit Design/Exit und kopieren Sie die Schaltung mit Hilfe des Library Managers aus der Bibliothek Opt in Ihre Bibliothek. Kopieren Sie das Symbol oder erzeugen Sie vom schematic ausgehend ein neues Symbol.


next up previous contents
Next: Makrozellen Up: Erzeugung eines Schaltplanes Previous: Schaltplan des Adreßmultiplexers
Thilo Thiessenhusen
16. 4. 1999