Forum: FPGA, VHDL & Co. #if constant = a #error ".." #endif


von altera_user (Gast)


Lesenswert?

hallo zusammen,

hätte gern eine Frage: in VHDL gibts so was wie in C für synthesezeit:

#if constant == 10
#error "error!"
#endif


vielen dank:)

Tomy

von Stachele (Gast)


Lesenswert?

Stichwort: Assertions

von Tomy (Gast)


Lesenswert?

Stachele schrieb:
> Stichwort: Assertions

vielen Dank für deine Antwort!

"Assert" Anweisung ist nur in Simulation zu verwenden, oder?

Gibts sowas wie "Assert" jedoch für Synthese(Compilieren)-Zeit?

lg Tomy

von Stachele (Gast)


Lesenswert?

Es gibt Assertions, die zu Beginn der Synthese anschlagen können, z.B.

1
entity xy is
2
generic( gModus : positive := 1);
3
end entity;
4
5
architecture rtl of xy is
6
begin
7
8
b_CheckModus: block
9
begin
10
    assert (gModus <= 4) report "Modus error" severity failure;
11
end block;
12
13
end rtl;


Diese Art von Assertions ist immer dann hilfreich, wenn man über 
Generics einstellbare Konfigurationen eines Modules absichern will. Das 
Synthese-Tool bricht im obigen Beispiel ab.


Wenn Du jedoch synthetisierbare Assertions haben willst, die zur 
Laufzeit bspw. Aktivitäten überwachen sollen, dann kommst Du nicht daran 
vorbei, VHDL-Signale hierfür zu verwenden, die du dann in einem 
Embedded-Logic-Analyzer als Trigger verwenden kannst.

z.B.:
1
process(...)
2
begin
3
   if IrgendEtwas = '1' then
4
       report "Da ist was passiert" severity note;   -- Simulation
5
       debug_irgendetwas <= '1';                      -- Synthese   
6
   end if;
7
end process;

von P. K. (pek)


Lesenswert?

Da Du das zur Synthesezeit machen willst, nehme ich nicht an, dass Du 
(Error)-Messages ausgeben willst (?!) sondern vielmehr Code-Sequenzen 
reinsynthetisieren oder eben nicht.

Da wäre dann das Stichwort "generate-Statement". Funktioniert aber nur 
ausserhalb von Prozessen (sprich für concurrent Statements oder 
Instantierungen).

Falls es eine Lösung für innerhalb von Prozessen gäbe, wäre ich daran 
auch sehr interessiert...

von SuperWilly (Gast)


Lesenswert?

>Falls es eine Lösung für innerhalb von Prozessen gäbe, wäre ich daran
>auch sehr interessiert...

Ja gibt es als Extra-Wurst: "DiaLite Platform" von Temento

1
This IP allows designers to embed their system assertion conditions along with their system specifications before synthesis and then check them at speed. 
2
3
The Assertion Checker is built on the PSL and SVA standard, which makes all your format verification tests and system properties reusable.


VG, SuperWilly

von altera_user (Gast)


Lesenswert?

super! vielen Dank an alle!

lg Tomy

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.