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 -> SynergyEs 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> OKDas 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
Starten Sie nun die Synthese.
Menu> Synthesis -> Synthesize Button> Generate Schematic -> on Menu> Delay Options Button> Delay Type -> typical Button> SynthesizeObwohl 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 -> Reportbzw. 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.