Gibt es eine Möglichkeit VHDL Code (oder die Netzliste) für den Nutzer "unsichtbar" zu machen? Es soll simulierbar und synthetisierbar sein, aber eben, dass der Nutzer die Sourcen nicht ändern kann? (Also Blackbox) Hat das jemand schon mal gemacht? Am besten mit Altera Tools. Dass man die Netzliste im Nachhinein ändern kann ist mir schon klar :-) Grüße, Kest
So ähnlich wie ein käuflicher IP-Core? Prinzipiell geht das, aber da muss der Hersteller mitspielen. Kurzum brauchst du, wenn du das richtig machen willst, vom Hersteller (Altera) eine Art Schlüssel, mit dem du das Design verschlüsseln und der Anwender nach Eingabe des Schlüssels in Quartus dann bestimmte Dinge mit deinem Design machen oder auch nicht machen kann. Das ist jetzt seehr bildlich formuliert. Aber was ich damit sagen will: Technisch möglich, aber organisatorisch quasi unmöglich, da Altera sicher nicht mit jedem irgendsone Übereinkunft trifft.
Das ist dann für mich zu viel. Eigentlich möchte ich eine Netzliste (Entity) haben, die ich überall einbinden kann (so wie CoreGen oder MegaWizard). Das blöde ist, dass ich VHDL mit Generics erstellen möchte, damit der Nutzer frei alles einstellen kann aber eben nicht VHDL Code ändern darf. Kest
Ich suche ebenso nach einer Möglichkeit, Code zu vertrieben, ohne ihn zu publizieren. Ginge das gfs auf einer neidirgeren Ebene eines geparsten files, so wie beim C++ eine DLL?
Also nen EDIF-Netzlsite kannst als "Black Box" hinzufügen. Dazu einfach ne bestehende EDIF Netzliste als File hinzufügen, ein Symbol draus generieren und das dann in Schematic hinzufügen. Wie man über Quartus ne EDIF erzeugt, weiss ich allerdings nicht. Ich hab zum Testen mal ein Undgatter mit Leonardo Spectrum synthetisiert und das dann als EDIF "Black-Box" in ein Quartus design eingebunden. Ging problemlos Das EDIF (Undgatter)im Anhnang ist für einen EP1C3T100-7 synthetisiert. Kannst ja mal probieren, ob das so wäre, wie du dir das vorstellst.
Inwiefern muss man das EDIF für eine konkrte Hardware definieren? Ich möchte das gerne auf einem allgemeinen RTL-Level halten. (Dass ich dabei nicht alles machen kann, wie z.B. Altera RAMS definieren, ist klar). Was ich gerne hätte: Eine Instanz in VHDL mit allgemeinem HDL-Code, den der User verändern muss, um anzupassen, ein ebenfalls offenes SUbmodul, als INterface, dann die Altera-Komponenten ausdrücklich instanziiert und dann eben jene blackbox, die die eigentliche Logig und Mathematik enthält. Die muss im Dunkeln liegen, da genau das nicht veröffentlicht werden soll.
Die EDIF-Netzlisten, die über ein Syntheseprogramm erzeugt werden, beschreiben eigentlich schon die in der Zieltechnologie vorhandenen Elemente und deren Verknüpfungen. Somit ist sie meines wissens, zumindest abhängig von der gewählten BausteinFAMILIE. Sicher gibt es auch EDIF-Netzlisten, die unabhängig von der Technologie eine Funktion beschreiben können, aber wie man die aus VHDL erzeugt, das weiss ich nicht. Aber diese Netzlisten sind dann sicher ähnlich zu bewerten, wie VHDL Netzlisten. Ob Generics in so eine Liste einfach übergeben werden können, das weiss ich leider nicht. Wäre aber ein interessantes Thema.
Eine Möglichkeit ist es den VHDL-Code zu verschleiern (obfuscate). Dabei werden alle Kommentare und Formattierungen entfernt, sowie alle Bezeichner durch sinnlose Namen ersetzt. Wirkt sicher nur bei größeren Programmen, wo der Aufwand alles wieder zu formatieren und in eine lesbare Form zu bringen beträchtlich ist. Ob es freie Verschleierungsprogramme für VHDL gibt, weis ich nicht.
nur zur info: aus edif-netzlisten kann man auch wieder äquivalenten vhdl-code generieren, das wird schon standardmäßig im ise von xilinx (edif2ngd dann ngd2vhdl) und in den fpga-advantage tools (precision) von mentor graphics für boards von xilinx, altera, lattice usw. unterstützt. für altera geht das sicherlich auch noch irgendwie direkt im quartus. bye mss
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.