#if constant = a #error ".." #endif

Gast #2794860
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;
#2794869
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...
Gast #2795064
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren