Forum: FPGA, VHDL & Co. Lattice Diamond: A user-defined clock should be defined


von Steffen (Gast)


Lesenswert?

Moin,

für alle die diese folgende Warning schon einmal von Ihrem Synthese-Tool 
(Synplify Pro in meinem Fall) bekommen haben.
1
@W: MT420 |Found inferred clock top|Clock with period 5.00ns. A user-defined clock should be declared on object "p:Clock"

Nach vielem googlen habe ich folgende Quelle gefunden - der 
Google-Translater macht den Rest.

http://www36.atwiki.jp/aroe/pages/30.html

Das Problem tritt immer dann auf, wenn man ein das Synthesewerkzeug die 
Geschwindigkeit des Taktes nicht kennt. Um das Problem zu lösen bietet 
Lattice Diamond direkten Zugriff auf Symplify Pro in Symplify kann man 
das die User-Defined Clock contrainen und diese Konfiguration 
abspeichern. Das Constrain-File (.sdc) kann man dann in Lattice Diamond 
einbinden.

Das geht wie folgt:
- Synplify starten (toolbar oben rechts)
- Synplify einmal compilieren lassen (run)
- New Scope File (.sdc)
- Scope File constrainen und abspeichern
- In Lattice-Diamond den Strategy-File öffnen und bei "Input SDC 
Constraint File (.sdc) die erstellte Datei hinzufügen

Das wars schon :)

Ich hoffe das hilft dem einen oder anderen.
Gruß Steffen

von Lattice User (Gast)


Lesenswert?

Das auf diese Art erzeugte Constraintfile gilt meines Wissens nur für 
Synplify und nicht für den Rest der Tools (Map,Place&Route,statische 
Timing Analyze).

Der korrekte Platz für Timingcontstraints in Diamond ist das .lpf File, 
entweder von Hand mit Editor eintragen oder mit Spreadsheet View unter 
Timingparameters wenn man eine GUI bevorzugt.
Ein contraint File für Symplify wird dann automatisch erstellt.

von Steffen (Gast)


Lesenswert?

Moin,

das stimmt. Im *.lpf file muss man das für die Input Pins nochmal 
einstellen, aber soweit ich das verstanden habe geht das nicht für 
interne Signale, sondern nur für Pins.
1
 
2
FREQUENCY PORT "CLK_80MHZ" 80 MHz ;

Gruß Steffen

von Lattice User (Gast)


Lesenswert?

Steffen schrieb:
> das stimmt. Im *.lpf file muss man das für die Input Pins nochmal
> einstellen, aber soweit ich das verstanden habe geht das nicht für
> interne Signale, sondern nur für Pins.
>

Für interner Signale geht es mit NET:
1
FREQUENCY NET "CLK_80MHZ" 80 MHz ;

von Steffen (Gast)


Lesenswert?

Aaaah - vielen Dank! Woher weißt du das? Ich habe noch keine richtige 
Dokumentation gefunden.

von Lattice User (Gast)


Lesenswert?

Steffen schrieb:
> Aaaah - vielen Dank! Woher weißt du das? Ich habe noch keine richtige
> Dokumentation gefunden.

Einfach mal die Diamond Help aufrufen (aus Diamond selbst oder im 
Startmenu unter Diamond->Accessories)
Dort auf Constraint Reference und Preferences clicken.

Mit Firefox funktioniert die Hilfe einwandfrei, ob das auch mit allen 
Variantes des IE der Fall ist weiss ich nicht.

von Lattice User (Gast)


Lesenswert?

Ab Diamond 1.3 (gibt es seit ein paar Tagen) kann man die .sdc für 
Synplify Datei in der Fileliste statt versteckt als Strategy Option 
verwalten.

von Steffen (Gast)


Lesenswert?

Ja hab ich auch schon gesehen - aber was bedeutet das genau :)? Ändert 
das was?

von Lattice User (Gast)


Lesenswert?

Eigentlich nicht, wird nur übersichtlicher. Ist wohl ihn erster Linie 
für den LSE (neuer allternativer Synthesiser für MachXO,MachXO2)

ich habe gerade mal mit den Clocksettings in Synplify herumgespielt, auf 
das Ergebniss von Place&Route haben sie keine Auswirkungen zumindestens 
bei mir. Ich denke das Warning kann man einfach ignorieren.

Nützlich sind sie wohl dann wenn man in einem komplexen Design eine 
Analyse der kritischen Pfade mit Synplify machen möchte.

von Steffen (Gast)


Lesenswert?

Das kann natülich sein. Danke fürs ausprobieren.

von Steffen (Gast)


Lesenswert?

Ich habe das nun auch mal ausprobiert. In dem Moment wo man an dem SDC 
file rumschraubt läuft Translate und Synthesize Design nochmal (bei den 
Constrains im .LPF file nur Map und Place und Route) und je nachdem wie 
man das Constraint werden dann meine Ergebnisse insgesamt besser.

Also mein Verständnis:
- Beide Constrainfiles sind wichtig
- Für ein optimales Ergebnis müssen beide angefasst werden
- Durch Register Balancing, Statemachine-Optimierung, etc. passieren vor 
dem Map und Place & Route d.h. das bekommt man durch die .LPF-Constrains 
nicht mehr optimiert

Gruß Steffen

von Lattice User (Gast)


Lesenswert?

Steffen schrieb:
> Also mein Verständnis:
> - Beide Constrainfiles sind wichtig
> - Für ein optimales Ergebnis müssen beide angefasst werden

Auf die Settings im lpf File kann man nicht verzichten, während die 
Defaulteinstellungen für Synplify für die meisten Fälle ausreichend 
sind.

> - Durch Register Balancing, Statemachine-Optimierung, etc. passieren vor
> dem Map und Place & Route d.h. das bekommt man durch die .LPF-Constrains
> nicht mehr optimiert

Sicherlich nicht, allerdings ist vieles davon auch als Option in der 
Strategy und als Synthese Attribute im Design zugänglich.

von Steffen (Gast)


Lesenswert?

>> - Durch Register Balancing, Statemachine-Optimierung, etc. passieren vor
>> dem Map und Place & Route d.h. das bekommt man durch die .LPF-Constrains
>> nicht mehr optimiert
>
> Sicherlich nicht, allerdings ist vieles davon auch als Option in der
> Strategy und als Synthese Attribute im Design zugänglich.

Das stimmt, wobei man immer nur einen globalen Clock vorgeben kann. Das 
heißt um Platz zu sparen oder die Performance zu optimieren muss man da 
wieder ran.

von Duke Scarring (Gast)


Lesenswert?

Ich muß mich hier mal ranhängen.

Lattice User schrieb:
> Der korrekte Platz für Timingcontstraints in Diamond ist das .lpf File,
> entweder von Hand mit Editor eintragen oder mit Spreadsheet View unter
> Timingparameters wenn man eine GUI bevorzugt.

> Ein contraint File für Symplify wird dann automatisch erstellt.
Kann man das (.lpf zu .sdc) auch irgendwie per Kommandozeile erledigen?

In der Doku habe ich nur den umgekehrten Weg gefunden (Synplify 
generiert ein .lpf-File):
1
Use LPF Created from SDC in Project (for Synplify Pro)
2
3
When this is set to True (default), Synplify Pro creates a preference
4
 (.lpf) file based on the Synopsys Design Constraint (.sdc) file. With
5
 this .lpf file, the synthesis constraints will also be applied to the
6
 Map Design stage of implementation.
7
8
This option is equivalent to the “set_option -write_apr_constraint 1 | 0”
9
 command in Synplify Pro.

Duke

von Jonny (Gast)


Lesenswert?

Es gibt in der Strategy, Reiter 'Synplify Pro' die "Command Line 
Options"

von Lattice User (Gast)


Lesenswert?

Duke Scarring schrieb:
> Ich muß mich hier mal ranhängen.
>
> Lattice User schrieb:
>> Der korrekte Platz für Timingcontstraints in Diamond ist das .lpf File,
>> entweder von Hand mit Editor eintragen oder mit Spreadsheet View unter
>> Timingparameters wenn man eine GUI bevorzugt.
>
>> Ein contraint File für Symplify wird dann automatisch erstellt.

Da wurde leider nur das auto constraint feature von Synplify Pro 
benutzt. Gibt brauchbare Werte für die Synthese, aber nicht für P&R.

> Kann man das (.lpf zu .sdc) auch irgendwie per Kommandozeile erledigen?
>
> In der Doku habe ich nur den umgekehrten Weg gefunden (Synplify
> generiert ein .lpf-File):

Das gab es bei Diamond 1.x noch nicht. Der Thread ist von 2011

von Duke Scarring (Gast)


Lesenswert?

Lattice User schrieb:
> Da wurde leider nur das auto constraint feature von Synplify Pro
> benutzt.
Ja, ok. Aber wann wird denn das auto constraint feature aktiv?
Wenn ich Synplify über die GUI starte? Wenn eine Datei zum Projekt 
hinzugefügt wird?

Momentan habe ich ein .sdc (für die Synthese) und ein .lpf (für den 
Rest). Und in beiden stehten die Timing-Constraints. (Ok, im .lpf stehen 
auch noch die Pins mit drin.)

> Der Thread ist von 2011
Jaaaa, aber ich beschäftige mich doch erst seit kurzem mit Lattice ;-)

Duke

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.