Hallo, ich würde gerne Module von mir, die in VHDL geschrieben sind, als IP-Core weitergeben. Jedoch nicht im Quellcode VHDL, sondern in einer Netzliste oder was hierfür geeignet ist, damit ein anderer den IP-Core bei sich (z.B. Lattice Diamond für Lattice Bausteine) einbinden jedoch nicht "lesen" oder "verändern" kann. Hatte diesbezüglich schon etwas von EDIF NCD NGO / NCD Files und wie sie alle heißen gehört, weiß jedoch nicht ob es noch weitere oder geeignetere gibt. Welche Dateiformate eignen sich hierfür und wo liegen die jeweiligen Vor-Nachteile dieser? Würde mich über eine Rückmeldung aus eurem reichhaltigen Wissen und zu euren Erfahrungen freuen :-) Gruß Michi
Ich glaube, VHDL 2008 unterstützt soetwas, zumindest habe ich mal was dazu gelesen, habe aber keine Ahnung, inwieweit VHDL 2008 von den Tools unterstützt wird. Ich habe mich mit dem Thema mal kurz beschäftigt und habe dann komplett alles verworfen. Zunächst mal ist Support-Aufwand nicht zu vernachlässigen und lässt sich schwer abschätzen. Und zum zweiten, die Zielgruppe, die ich ansprechen wollen würde, ist klein und "ehrlich". Wenn man ein Lizensmodel richtig aufbaut, dann würde diese Zielgruppe dafür auch bezahlen, statt zu "klauen". Die, die illegal soetwas einsetzen würden, gehören halt nicht zu meiner Zielgruppe und die würden auch den "Markt" nicht kaputt machen. Ich denke wirklich, dass es besser ist, den IP-Core mit Sourcen weiterzugeben, und dafür einen fairen Preis zu verlangen. Wenn alles stimmt (Vertrag, NDA und Co), dann sollte es kein Problem darstellen. Mag sein, dass ich zu idealistisch bin ;-) Aber das ist wirklich ein Fazit nach mehreren Jahren FPGA-Entwicklung und Zusammenarbeit mit mehreren Firmen. Musst halt sehen, um wieviel es geht (Anzahl und Stück/Kosten). Ich weiß, dass ist jetzt nicht ganz Deine Frage gewesen :-) Grüße Kest
Eine Netzliste ist auch durchaus üblich, kann man mit Xilinx ISE recht leicht erzeugen. Dazu muss man aber ggf. bei der Synthese einstellen, dass er keine I/O Buffer an Ein- und Ausgängen hinzufügt. Das was die Synthese raus wirft, ist ja auch eine Netzliste. Mit dem Tool NGC2EDIF erhältst du dann eine ordentliche herstellerunabhängige edif Netzliste.
Wie bindet man die dann ein? Wie übergibt man ie entity? Der User muss ja irgendwie seine Signale andocken.
Im Prinzip brauchst du nur eine Component-Declaration und dann musst du ISE und NGDBUILD noch den Suchpfad zu deinem IP-Core mitgeben. Gruß Marius
E. M. schrieb: > Wie bindet man die dann ein? Wie übergibt man ie entity? Es wird als component in VHDL engebunden. Man muss schon die entity in VHDL weitergeben. Oder als Schaltplansymbol geht glaube ich auch. Christian R. (supachris) >Mit dem Tool NGC2EDIF erhältst du dann eine ordentliche >herstellerunabhängige edif Netzliste. Herstellerunabhängig wäre mir neu. Da hier schon eine Abbildung auf die Struktur der verfügbaren Gatter im FPGA erfolgt, auch wenn es noch eine global formale Hardwarenetzliste ist.
Gibt es irgendwo eine Anleitung dafür oder kann jemand den Aufwand abschätzen? Mir ist der Pfad immer noch nicht klar. Ich nehme eine Komponente, gebe deren entity und eine Netzliste dieser Komponente weiter. Wie gewinne ich die Netzliste? Reicht es, dieses VHDL Modul (und Untermodule) als FPGA zu deklarieren und bauen zu lassen? Welchen Aufwand hätte ein Designer damit?
Die Netzliste kriegst du mit NGC2EDIF, also bei Xilinx. Die gibst du mit der Entity weiter. Ganz bauen musst du das Design nicht, nur die Synthese durchführen. Ich hab nochma geschaut, die Netzliste ist natürlich nicht herstellerunabhängig, sorry für die falsche Info.
:
Bearbeitet durch User
> Reicht es, dieses VHDL Modul (und Untermodule) als FPGA zu deklarieren > und bauen zu lassen? Welchen Aufwand hätte ein Designer damit? Da die Netzlisten unterscheidlich sind. Müssen die Exportfiles gepflegt werden und das kann auch anstrengend werden. Man kann auch diese Listen wieder in VHDL rückwandeln. So hatte ich mal ein Verilogcode durch einen VHDL Simulator simuliert. War letztendlich sehr auf wendig. Die Register haben eben exotische Namen. Nur als Beispiel
1 | reset_a_1 : FD |
2 | port map ( |
3 | C => board_clk_BUFGP_0, |
4 | D => n0003_inv, |
5 | Q => reset_a_1_5541 |
6 | );
|
Eine Netzliste weiterzugeben, ist nicht wesentlich sicherer, als den HDL-Code, weil er genau so illegal geklaut und verwendet werden kann.
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.