Forum: FPGA, VHDL & Co. Xilinx TIG für einzelnen Pfad


von pks (Gast)


Lesenswert?

Hallo,

ich verzweifle regelmäßig an der Xilinx Constraint-Syntax und die Jungs, 
die die User-Guides schreiben sprechen irgendwie ne andere Sprache als 
ich :-)

Ich habe z.B. folgendes Konstrukt:
1
signal s    : std_logic;
2
signal s_d0 : std_logic;
3
signal s_d1 : std_logic;
4
5
...
6
7
P_CLK1 : process (CLK1)
8
  begin  
9
    if (CLK1'event and CLK1 = '1') then
10
      if (RST1_N = '0') then
11
        s <= '0';
12
      else
13
        s <= <irgendwas>;       
14
      end if;
15
    end if;
16
  end process P_CLK1;
17
18
P_CLK2 : process (CLK2)
19
  begin  
20
    if (CLK2'event and CLK2 = '1') then
21
      if (RST2_N = '0') then
22
        s_d0 <= '0';
23
        s_d1 <= '0';
24
      else
25
        s_d0 <= s;
26
        s_d1 <= s_d0;     
27
      end if;
28
    end if;
29
  end process P_CLK2;

Und möchte ein dediziertes TIG für den Pfad s --> s_d0 setzen.
Wie wird das gemacht?

von pks (Gast)


Lesenswert?

Ich habs jetzt mal in der Form gemacht:
1
NET "../s" TNM_NET = "TG_s";
2
NET "../s_d0" TNM_NET = "TG_s_d0";
3
TIMESPEC TS_TIG_s_sd0 = FROM "TG_s" TO "TG_s_d0" TIG;

Selstamerweise finde ich im Timing-Report unter diesem Constraint den 
Pfad von s_d0 nach s_d1.

von Daniel M. (daniel__m)


Lesenswert?

Versuch mal
1
INST "../s" TNM = "TG_s";
2
INST "../s_d0" TNM = "TG_s_d0";
3
TIMESPEC TS_TIG_s_sd0 = FROM "TG_s" TO "TG_s_d0" TIG;

Wie hat den die Synthese s_d0 und s_d1 umgesetzt? Evtl. hat sie ein 
Shift-Register gebildet.

PS: versuche high-aktive Steuersignale für CE und RST zu nehmen. Im 
allg. sind diese im FPGA high-aktiv und bei low-aktiver Beschreibung 
muss immer erst ein Inverter vorgeschaltet werden.

von pks (Gast)


Lesenswert?

Daniel M. schrieb:
> Wie hat den die Synthese s_d0 und s_d1 umgesetzt? Evtl. hat sie ein
> Shift-Register gebildet.

Würde das denn das Phänomen mit dem falschen Pfad erklären?

> PS: versuche high-aktive Steuersignale für CE und RST zu nehmen. Im
> allg. sind diese im FPGA high-aktiv und bei low-aktiver Beschreibung
> muss immer erst ein Inverter vorgeschaltet werden.

Warum ist denn der low-akrive Reset so verbreitet? Ein Relikt der 
ASIC-Entwicklung?

von pks (Gast)


Lesenswert?

Daniel M. schrieb:
> Versuch mal
> INST "../s" TNM = "TG_s";
> INST "../s_d0" TNM = "TG_s_d0";
> TIMESPEC TS_TIG_s_sd0 = FROM "TG_s" TO "TG_s_d0" TIG;

Hab ich auch schon - gleiches Ergebnis.

von daniel__m (Gast)


Lesenswert?

pks schrieb:
> Warum ist denn der low-akrive Reset so verbreitet? Ein Relikt der
> ASIC-Entwicklung?

Vermutlich lässt sich so ein Power-On-Reset besser realisieren.

pks schrieb:
> Hab ich auch schon - gleiches Ergebnis

Bei dem Timing-Report gibt es eine Option (welche weiss ich jetzt nicht 
aus dem Kopf), welche bewirkt, dass zu jedem Timespec, Timingname etc. 
die zugehörigen Instanzen aufgelistet werden. Evtl. sieht man dort 
mehr...

gruß

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.