Forum: FPGA, VHDL & Co. Strategies und Warnungen bei Diamond


von Lamy (Gast)


Lesenswert?

Hallo Leute,

- nach der Synthese, Map, Palce&Route werden Reports erstellt, worauf 
muss ich da achetn? welche wichtige Infos stecken dort(die ich prüfen 
muss!)? alles durchlesen?

- Bei "Strategies" gibt es bei "Timing" das Feld "Frequency(MHZ)" muss 
man hier die Systemfrequenz eintragen? oder irgendeine höhere?
(Lattice => Diamond)

- Noch eine Frage:
ich benutze eine PLL um meine Systemclock zu verdoppeln (32.768Mhz => 
65.536Mhz)
PLL wird durch IPExpress erstellt, und als Componnent benutzt:
1
ENTITY xx is  
2
PORT(
3
    CLK_32768  : IN std_logic; 
4
                  .....
5
  
6
 );
7
END xx;
8
9
ARCHITECTURE xxBeh of xx is
10
11
-- Process Sync Clock
12
  signal SysClk      : std_logic;
13
  signal PllLock      : std_logic; 
14
-- Components
15
---------------------- PLL Communication Module ----------------
16
Component SysPLL is
17
    port ( 
18
        CLK: in std_logic;  
19
        CLKOP: out std_logic; 
20
        LOCK: out std_logic);
21
end component;
22
23
24
BEGIN
25
------------------------------- Instanzen ------------------------
26
-- PLL: CLOKOP: 65.536 MHz
27
PLL_CONTROLLER:  SysPLL 
28
  PORT MAP ( 
29
    CLK     => CLK_32768, 
30
    CLKOP    => SysClk,
31
    LOCK    => PllLock);
32
    
33
......
34
35
end xxBhv;
Nach der Synthese bekomme ich die Warnungen, was heißt es genau?

- Blackbox EPLLD1 is missing a user supplied timing model. This may have 
a negative effect on timing analysis and optimizations (Quality of 
Results)
- @W: MT420 |Found inferred clock SysPLL|CLKOP_inferred_clock with 
period 5.00ns. A user-defined clock should be declared on object 
"n:PLL_CONTROLLER.CLKOP"

Vielen Dank

von Christoph (Gast)


Lesenswert?

Dass sind ja gleich ganz viele Fragen auf ein mal :-)

Mal sehen ob ich alles beantworten kann:

> - nach der Synthese, Map, Palce&Route werden Reports erstellt, worauf
> muss ich da achetn? welche wichtige Infos stecken dort(die ich prüfen
> muss!)? alles durchlesen?

Die wichtigsten Sachen zum genau durchlesen sind aus meiner Sicht:
- Die Warnungen von der Synthese. Auf viele Design Probleme wirst du 
hier schon hingewiesen. Warnungen wirst du so gut wie immer haben, du 
musst dann herausfinden ob das so gewünscht ist oder ob das ein Problem 
darstellt.
- Unter "Analysis Report" den "Place&Route Trace", diesen musst du im 
"Process" Baum zusätzlich aktivieren. Dieser Report gibt dir Auskunft 
über die kritischen Pfade, also welche Logikteile verantwortlich sind 
für die erreichbare Taktfrequenz.

> - Bei "Strategies" gibt es bei "Timing" das Feld "Frequency(MHZ)" muss
> man hier die Systemfrequenz eintragen? oder irgendeine höhere?
> (Lattice => Diamond)

Die Frequenz die du hier einträgst wird vom Symplify für die optimierung 
der Synthese benutzt. Diese Einstellung ist also unabhängig von den 
Regeln die du im Constraints File definierst (Die werden vom Place&Route 
beachtet).
Diese Frequenz sollte also gleich oder grösser der Zielfrequenz sein. 
Ist sicher nicht verkehrt hier etwas aufzurunden damit der Place&Route 
etwas mehr Luft hat. Also bei dir mit der PLL z. B. 70 oder 80 MHz.

> - Noch eine Frage:
> ich benutze eine PLL um meine Systemclock zu verdoppeln (32.768Mhz =>
> 65.536Mhz)
> PLL wird durch IPExpress erstellt, und als Componnent benutzt:
>
> Nach der Synthese bekomme ich die Warnungen, was heißt es genau?
>
> - Blackbox EPLLD1 is missing a user supplied timing model. This may have
> a negative effect on timing analysis and optimizations (Quality of
> Results)

Dies stellt kein Problem dar. Wichtig ist, dass bei der PLL der 
Synthesizer alle Taktfrequenzen kennt um zu Prüfen ob das Design korrekt 
ist (siehe nächsten Punkt).
Der Simulator besitzt ein korrektes Timing Model der PLL, Probleme 
können also in der Post-Route Simulation entdeckt werden.

> - @W: MT420 |Found inferred clock SysPLL|CLKOP_inferred_clock with
> period 5.00ns. A user-defined clock should be declared on object
> "n:PLL_CONTROLLER.CLKOP"

CLKOP ist der Ausgang der PLL. Der Synthesizer erkennt dieses Signal 
richtigerweise als Taktsignal in deinem System.
Damit der Synthesizer weiss, wie hoch die Frequenz dieses Signals ist, 
muss du ein "Synthesis Constraints" File anlegen (In Diamond als Eintrag 
in der "Files List"), das wird dann vom Synplify benutzt.

Du kannst die Einträge da entweder von Hand selber Schreiben oder den 
Synplifie aus Diamond starten (In der Toolbar das Synplify Logo 
anklicken), dann kannst du in der Synplifie GUI ähnlich wie in Diamond 
die Regeln zuweisen zu den erkannten Taktsignalen.

Beispiel Eintrag aus einer *.sdc Datei:
1
define_clock   {n:RefBus.FrequencyDivider.PLL.CLKOP} -name {n:RefBus.FrequencyDivider.PLL.CLKOP}  -freq 150 -clockgroup default_clkgroup_3

Für den PLL Ausgang wird hier eine Frequenz von 150 MHz definiert.

Grüsse
Christoph

von Lamy (Gast)


Lesenswert?

Super erklärt.
Herzlichen Dank.

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.