Soviel wie ich bis jetzt verstanden habe, eher ein Regelwerk (gaaanz grob vergleichbar mit Makefiles?) als mit einer prozeduralen Beschreibung (C, Assembler, BASIC), wobei es da anscheinend auch Ausnahmen gibt.
Mal vielleicht nicht ganz astrein formuliert: VHDL hat Bitte melde dich an, um diesen Link zu sehen. Wurzeln (wie auch SQL oder fast alle Arten von Regeln [Mailfilter-Konfiguration, Makefiles, Transformiersprachen wie XSLT etc. sowie einige besondere Programmiersprachen wie Prolog oder Erlang, also eigentlich nichts Ungewöhnliches]) während "normale" Programmiersprachen imperativ arbeiten.
Ein VHDL-"Programm" (wäre da nicht eher "Konfiguration" das bessere Wort?) ist keine Magie und besteht meist nur aus der "Variablendeklaration" (d.h. welche Leitung am FPGA wird auf welche Variable im VHDL gemappt) und den Prozessdefinitionen (d.h. was soll an den "Ausgängen" bei welchen Eingangswerten angelegt werden). Letzteres ist einfach nur eine lange Regelliste ("Wenn Leitung A low und Leitung B high dann Leitung C high"). Weil das blöd zu lesen ist, gibt's einige Vereinfachungen (z.B. können mehrere Leitungen zu einem Bus zusammengefasst und die Daten drauf als Integer interpretiert und manipuliert werden, damit man z.B. eine Multiplikation ausführen kann, ohne völlig blöd zu werden) und syntaktischen Zucker. Die Regeln laufen natürlich alle parallel ab, eine zeitliche Reihenfolge ist anders als bei imperativer Programmierung nicht vorgegeben. Ist ja auch klar: In Hardware umgesetzt kann man schlecht sagen, dass Flipflop B bitte immer erst nach Flipflop A schalten soll. For-"Schleifen" und andere Konstrukte haben eine ganz andere Bedeutung als in C und müssen eher als eine Art Precompileranweisung aufgefasst werden, die Tipparbeit sparen, aber sonst nichts Spannendes machen (eben anders als in C).
Sollte was von oben nicht stimmen, bitte korrigieren.
Es gibt übrigens auch einen Bitte melde dich an, um diesen Link zu sehen.; der ist aber leider verbesserungsfähig.