Wie erkennt man, ob VHDL code automatisch generiert wurde?

Gast #2759971
Lesenswert?
• ▲
▼
Hallo zusammen,
hat jemand von Euch schon mal VHDL Code automatisch z.B. mit HDL Coder 
erzeugen lassen? Welche Merkmale weist ein generierter VHDL Code auf?

Denn wir haben VHDL-Sourcecode von einer anderen Firma bekommen und 
vermuten, dass diese nicht "selbst geschrieben" wurden. Uns fällt es auf 
z.B.:

Sehr saubere Kommentarblöcke, besonders diese "--" nach dem Text 
"KOMMENTAR" und die angepasste Strichlänge
---------------
-- KOMMENTAR --
---------------

----------------------------
-- EIN LÄNGERER KOMMENTAR --
----------------------------

und
in einem getakteten Prozess befinden sich alle Signale auf der rechten 
Seite (nach dem Zuweisungsoperator <=) in der Sensitivity-Liste. Ein 
normaler VHDL-Entwickler würde das nie tun (oder ???), denn der Takt und 
max. noch ein asynchrones Reset-Signal sollen sich in dieser Liste 
befinden.

und
fast alles wurde groß geschrieben, außer Port-Deklarationen z.B. PORTi, 
PORTo

Ich danke Euch im Voraus für Eure Tipps.
Hanel
Gast #2759999
Lesenswert?
• ▲
▼
Hanel schrieb:
> wir haben VHDL-Sourcecode von einer anderen Firma bekommen und
> vermuten, dass diese nicht "selbst geschrieben" wurden.

Okay. Was genau wäre das Problem, wenn der Code nicht zu 100% durch 
einen Menschen geschrieben wurde, sondern zumindest teilweise 
automatisiert?

Hanel schrieb:
> Sehr saubere Kommentarblöcke, besonders diese "--" nach dem Text
> "KOMMENTAR" und die angepasste Strichlänge

Hanel schrieb:
> und
> fast alles wurde groß geschrieben, außer Port-Deklarationen z.B. PORTi,
> PORTo

Saubere Kommentare sowie eine durchgehend einheitliche Formatierung 
zeugen von einem guten Stil. Sie machen den Code übersichtlicher und 
"lesbarer" und sind daher ein Anhaltspunkt dafür, dass Eurer Lieferant 
Euch als Kunden "respektiert" und Euch nicht einfach einen Haufen 
Spaghetticode vor die Füße schmeißt.

Hanel schrieb:
> in einem getakteten Prozess befinden sich alle Signale auf der rechten
> Seite (nach dem Zuweisungsoperator <=) in der Sensitivity-Liste. Ein
> normaler VHDL-Entwickler würde das nie tun (oder ???), denn der Takt und
> max. noch ein asynchrones Reset-Signal sollen sich in dieser Liste
> befinden.

Das kommt darauf an, was erreicht werden soll. Ich persönlich bevorzuge 
es, die Sensitivity-List komplett wegzulassen, aber ohne nähere Kenntnis 
des Hintergrunds (was sich der Lieferant dabei "gedacht" hat) lässt sich 
das nicht eindeutig sagen.
Was spricht dagegen, den Lieferanten einfach direkt zu fragen, warum er 
alle Signale in die Sensitivity List gepackt hat?
Gast #2760076
Lesenswert?
• ▲
▼
Patrick schrieb:
> Okay. Was genau wäre das Problem, wenn der Code nicht zu 100% durch
> einen Menschen geschrieben wurde, sondern zumindest teilweise
> automatisiert?
Der Lieferant hat uns versichert, dass der Code nicht automatisch 
generiert wurde und alles wurde durch Menschen geschrieben. Deshalb 
möchten wir es überprüfen.

Patrick schrieb:
> Saubere Kommentare sowie eine durchgehend einheitliche Formatierung
> zeugen von einem guten Stil. Sie machen den Code übersichtlicher und
> "lesbarer" und sind daher ein Anhaltspunkt dafür, dass Eurer Lieferant
> Euch als Kunden "respektiert" und Euch nicht einfach einen Haufen
> Spaghetticode vor die Füße schmeißt.

Da hast Du vollkommen Recht. Aber nur ein bisschen seltsam wie die 
Kommentare aufgebaut sind. :-)

Patrick schrieb:
> Das kommt darauf an, was erreicht werden soll. Ich persönlich bevorzuge
> es, die Sensitivity-List komplett wegzulassen, aber ohne nähere Kenntnis
> des Hintergrunds (was sich der Lieferant dabei "gedacht" hat) lässt sich
> das nicht eindeutig sagen.
> Was spricht dagegen, den Lieferanten einfach direkt zu fragen, warum er
> alle Signale in die Sensitivity List gepackt hat?

Super Tipp!
Gast #2760109
Lesenswert?
• ▲
▼
Hanel schrieb:
> in einem getakteten Prozess befinden sich alle Signale auf der rechten
> Seite (nach dem Zuweisungsoperator <=) in der Sensitivity-Liste. Ein
> normaler VHDL-Entwickler würde das nie tun (oder ???), denn der Takt und
> max. noch ein asynchrones Reset-Signal sollen sich in dieser Liste
> befinden.

Ich würde annehmen, daß so etwas eher ein Indiz für einen menschlichen 
Entwickler ist. Ein Tool sollte wissen, daß das unnötig ist.
Gast #2760111
Lesenswert?
• ▲
▼
Klaus schrieb:
> Ein starkes Indiz ist immer, wenn interne Signale Namen wie Signal1,
> Signal2, Signal3, etc. tragen.

Danke für Deine Antwort, aber zum Glück sind die Signalnamen nicht wie 
beschrieben aufgebaut.
Gast #2760145
Lesenswert?
• ▲
▼
Chi schrieb:
> Ich verstehe aber noch immer nicht (würde es aber gerne verstehen),
> warum nicht handgeschriebener Code hier ein Problem ist.

Das wäre kein Problem, wenn der Lieferant uns nicht versichert hatte, 
den Code nicht generieren zu lassen. Und das ist das erste Projekt mit 
diesem Lieferanten. Und natürlich freuen wir uns, wenn der Code 
tatsächlich selbst geschrieben wurde. Das beweist die Glaubwürdigkeit 
des Lieferanten.
Gast #2760169
Lesenswert?
• ▲
▼
Einige editoren z.B. Emacs im VHDL-Mode verschönern den Code automatisch 
(Ausgewählte schlüsselwörter groß). Ebenso bieten diese template für 
entityt. processe etc an. Beispiel f. Emacs:

entity clevererEditor is

  generic (
    generic_oans : boolean := true);    -- comment from template

  port (
    clk      : in  std_logic;
    reste    : in  std_logic;           -- reset
    data_in  : in  std_logic_vector(7 downto 0);
    data_out : out std_logic_vector(5 downto 0));

end clevererEditor;
-- purpose: per template generiert
-- type   : sequential
-- inputs : clk, reste, data_out
-- outputs: data_in
t_h: process (clk, reste)
begin
  if reste = '0' then

  elsif clk'event and clk = '1' then

  end if;
end process t_h;

Die 4 kommentare vor dem process, wurden vom editor so eingefügt, 
während der template ausführung hat der anwender nur signalnamen und 
typen anzugeben.

Das muss also kein Indiz für generierten code sein. ferner, was spricht 
dagegen einen selbstgeschriebenen Code-generator für langweilige 
tipparbeiten einzusetzen, ein bißchen perl und fertig is! Oder Copy und 
paste templates?

MfG
Gast #2760174
Lesenswert?
• ▲
▼
<Das wäre kein Problem, wenn der Lieferant uns nicht versichert hatte,
<den Code nicht generieren zu lassen. Und das ist das erste Projekt mit
<diesem Lieferanten. Und natürlich freuen wir uns, wenn der Code
<tatsächlich selbst geschrieben wurde. Das beweist die Glaubwürdigkeit
<des Lieferanten.

Cleverer wäre es, sich von Lieferanten versichern zu lassen, das der 
Code entsprechend Euren Vorgaben verifiziert wird und die Logs der 
Verfifikation zum Lieferbestandteil zu machen.

Verifizierter/funktionsfähiger Code ist ein Qualitätsmerkmal, 
handgeschrieben oder generiert dagegen nicht!

MfG
Moderator (Firma: Titel) Persönliche Seite #2760175
Lesenswert?
• ▲
▼
Hanel schrieb:
> in einem getakteten Prozess befinden sich alle Signale auf der rechten
> Seite (nach dem Zuweisungsoperator <=) in der Sensitivity-Liste.
> Ein normaler VHDL-Entwickler würde das nie tun (oder ???),
> denn der Takt und max. noch ein asynchrones Reset-Signal sollen sich
> in dieser Liste befinden.
Es soll sich da gar nichts befinden, sondern es muss sich das dort 
befinden, was für die Simulation einen Neuberechnung des Prozesses nötig 
macht.

Hanel schrieb:
> hat jemand von Euch schon mal VHDL Code automatisch z.B. mit HDL Coder
> erzeugen lassen?
Wenn du z.B. einen Top-Level-Schaltplan in VHDL übersetzen lässt, dann 
findest du in der Portliste z.B. sowas:
1
   ...
2
   busint(0) <= busext(0),
3
   busint(1) <= busext(2),
4
   busint(2) <= busext(2), 
5
   ...
6
   busint(30) <= busext(30),
7
   busint(31) <= busext(31));
Handgeschriebener Code würde so aussehen:
1
   ...
2
   busint <= busext);

Bei FSM-Tools, die eine FSM in VHDL übersetzen, kannst du solche 
"Verallgemeinerungen" evtl. auch sehen.

Hanel schrieb:
> Denn wir haben VHDL-Sourcecode von einer anderen Firma bekommen und
> vermuten, dass diese nicht "selbst geschrieben" wurden.
Aber: trotzdem muss ja jemand den Schaltplan und die FSM erst mal 
kapieren und zeichnen können. Und wie der von dort aus zum VHDL-Code 
kommt, ist erst mal egal.

Das mit den überbestimmten Sensitivlisten wäre für mich aber definitiv 
ein Fehler!
(Firma: Projektleiter Medizinsoftware) #2760288
Lesenswert?
• ▲
▼
Hanel schrieb:
> ----------------------------
>
> -- EIN LÄNGERER KOMMENTAR --
>
> ----------------------------

Ich kopiere schon seit Jahren VHDL von einem Projekt zum anderen und 
habe an die 50 Standardkommentarblöcke drin. Das wäre jetzt kein 
Kriterium finde ich.

Was augenscheinlich FÜR Automatismen spräche, währen druchnummerierte 
Signale und Deklarationen, sowie viele unnötige Signale mit 
Zwischenzuweisungen, die ein Modul mit dem nächsten verbinden.
(Firma: Projektleiter Medizinsoftware) #2760420
Lesenswert?
• ▲
▼
Stachele schrieb:
> Das ist auch kein Qualitätsmerkmal.
>
>
>
> Hast Du schon mal darüber nachgedacht, Komponenten zu verwenden, die
>
> lediglich instanziiert werden müssen?

Es ging um die Kommentare! Diese geben eine formelle Struktur vor, die 
in allen VHDLs dieselbe ist.

* Definitionen
* Komponenen
* Proceduren
* Funktionserklärungen

* Fallunterscheidungen
* Flicks / temporäre Dinge
-- Beginn --
* Eingänge Synchen

* Komponenten Mappen
(signalflow aehliche Anordnung der Komponenten)

* Komonentenverbidungssignale

* Operationen
   - statische skalieren
   - bedingte skalierung
   - verarbeitungen

* Überwachungsfunktionen
* Monitorfunktionen
* Debug Interface

* Ausgänge Synchen
-- Ende --

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