Moin! Gibt es einen Weg über attribute oder ähnliches den IO-Standard und Pin Location von Top-Level-Ports im vhdl-Quelltext festzulegen? Ich benutze zur Zeit Quartusversion 11.0 Ich habs mit attribute altera_attribute: string; attribute altera_attribute of DATA_IN:signal is "-name IO_STANDARD LVDS"; versucht. Aber das scheint keine Auswirkungen zu haben. Und damit es nicht zu einfach wird: Das ganze auch noch für einzelne Signale eine Vectors. Rein Syntaktisch geht das, indem man jedem Vektorelement einen alias gibt. Aber verstehen das die Quartus Synthese?
Hier eine Suchanwiesung für die Altera Webseite: http://www.altera.com/search?output=xml_no_dtd&sort=date%3AD%3AL%3Ad1&client=www_frontend&proxystylesheet=www_frontend&ie=UTF-8&oe=UTF-8&site=www&q=vhdl%20attribute%20pin%20location S. auch Kap. 5 in http://www.altera.com/literature/hb/qts/qts_qii51008.pdf?GSA_pos=4&WT.oss_r=1&WT.oss=vhdl%20attribute%20pin%20location Oder als Beispiel: entity my_entity is port( my_pin1: in std_logic ); end my_entity; architecture rtl of my_entity is attribute useioff : boolean; attribute useioff of my_pin1 : signal is true; attribute chip_pin : string; attribute chip_pin of my_pin1 : signal is "C1"; begin -- The architecture body end rtl; Viel Erfolg, Charles
Constraints im VHDL sind aber ganz ganz eklig. VHDL sollte so weit wie möglich plattformunabhängig sein, damit der Code portabel bleibt. Gruß Marius
Ok, also wenn ich das Attribut auf den ganzen Vektor anwende, geht es. Das Problem ist, ich müsste das für einzelne Vektorelemente machen. Das geht:
1 | entity Test is |
2 | Port( |
3 | DATA_IN : in std_logic_vector(4 downto 0) |
4 | );
|
5 | end Test; |
6 | |
7 | architecture bla of Test is |
8 | attribute altera_attribute: string; |
9 | attribute altera_attribute of DATA_IN:signal is "-name IO_STANDARD LVDS"; |
10 | begin
|
11 | ...
|
12 | end bla; |
Das geht nicht:
1 | entity Test is |
2 | Port( |
3 | DATA_IN : in std_logic_vector(4 downto 0) |
4 | );
|
5 | end Test; |
6 | |
7 | architecture bla of Test is |
8 | alias Data0:std_logic is DATA_IN(0); |
9 | |
10 | attribute altera_attribute: string; |
11 | attribute altera_attribute of Data0:signal is "-name IO_STANDARD LVDS"; |
12 | begin
|
13 | ...
|
14 | end bla; |
Ist das so richtig? Warum erkennt Quartus das attribut nicht?
Warum hast Du so 'ne Abneigung gegen das *.qsf? Dort kannst Du doch alles ganz einzeln machen...
Peter K. schrieb: > Warum hast Du so 'ne Abneigung gegen das *.qsf? > Dort kannst Du doch alles ganz einzeln machen... Weil ich ganz verrückte Sachen mache ;-) Das Topleveldesign wird automatisch aus xml-Datein ,die die verwendeten Features beschreiben, generiert. Glaub mir einfach, dass ich gründe habe, bestimmte assignments in den Code schreiben zu wollen :-)
Klaus schrieb: > Peter K. schrieb: >> Warum hast Du so 'ne Abneigung gegen das *.qsf? >> Dort kannst Du doch alles ganz einzeln machen... > > Weil ich ganz verrückte Sachen mache ;-) Das Topleveldesign wird > automatisch aus xml-Datein ,die die verwendeten Features beschreiben, > generiert. Glaub mir einfach, dass ich gründe habe, bestimmte > assignments in den Code schreiben zu wollen :-) ah ja. Und du bist nicht in der Lage, aus deinem xml eine sinnvolle design-constraints file zu erzeugen? Hint: Da koennte man dann auch noch weitere Infos wie timing-constraints, driver-level, ... eintragen. Und das waere dann schoen Chip-spezifisch. Und beim constraints-file reicht i.A. 1 Zeile. In VHDL musst du immer mehr als eine Zeile fuer den gleichen Zweck erzeugen... Aber du magst ja deine Gruende dafuer haben...
berndl schrieb: > ah ja. Und du bist nicht in der Lage, aus deinem xml eine sinnvolle > design-constraints file zu erzeugen? Hint: Da koennte man dann auch noch > weitere Infos wie timing-constraints, driver-level, ... eintragen. Und > das waere dann schoen Chip-spezifisch. > Und beim constraints-file reicht i.A. 1 Zeile. In VHDL musst du immer > mehr als eine Zeile fuer den gleichen Zweck erzeugen... > > Aber du magst ja deine Gruende dafuer haben... Es ist einfach so, dass wenn das mit den attributes funktioniert, es eine Menge Zeit spart, hier die Buildskripte anzupassen. So, und hat nun evtl. noch jemand einen Hinweis zum eigentlichen Thema? :-)
Klaus schrieb: > So, und hat nun evtl. noch jemand einen Hinweis zum eigentlichen Thema? Ist einfach so, dass es auf gut neudeutsch "best practice" ist, das mit Cosntraints-Files zu lösen. Und darum wirst Du nicht sehr viele Leute finden, die wissen, wie man Attributes auf das Letzte ausreizt. Wenn Du aber mit einem Workaround zufrieden bist (und das wirst Du sein, wenn Du den Aufwand scheust, die Build-Skripte anzupassen), dann nimm doch die fraglichen Busse auf dem Toplevel auseinander und mach Teilbusse oder Einzelsignale daraus, dann gibst Du jedem sein Attribut. Intern kannst Du sie ja dann wieder zusammenführen. Nicht überaus schön, aber funktional.
Klaus schrieb: > Das Problem ist, ich müsste das für einzelne Vektorelemente machen. Und was ist, wenn du das nicht über einen Alias machst, sondern direkter:
1 | attribute altera_attribute of DATA_IN(0):signal is "-name IO_STANDARD LVDS"; |
Lothar Miller schrieb: > attribute altera_attribute of DATA_IN(0):signal is "-name IO_STANDARD LVDS"; Das war natürlich mein erster Versuch :-) Quartus bringt dann die Meldung, dass die VHDL Syntax es nicht erlaubt, einzelnen Array-Elementen ein Attribut zuzuordnen Quartus meckerte: > @Peter K. (pek): Es ist immer schön, wenn man die ultimative Wahrheit kennt, nicht wahr? ;-) Ich hab hier ein XML, dass alle hardwareabhängigen Dinge beschreibt und eins, dass die internen Features beschreibt. Ob in den daraus generierten Files dann irgendwo Attribute auftauchen, oder nicht, interessiert den lieben Gott überhaupt nicht ;-) Und da ich in der realen Welt lebe und Projektzeit kostbar ist, hab ich nach nem schnellen Weg gesucht das Problem zu lösen. Wenns nicht geht, ok, dann müssen die Softwerker ebend doch die Buildtools anpassen. Btw.: Warum schreibt du nicht mal an Altera, wie die es nur wagen können Attribute in ihre Toolchain einzubauen. Sowas macht man schließlich nicht! (Nicht zu ernst nehmen bitte ;-) )
Sorry, Fehlermeldung vergessen: Quartus meckerte: > Error (10612): VHDL attribute error at acA2000_u.vhd(875): Attribute > specification contains illegal name Und aus der Altera Quartus Hilfe: > To set attributes on an array slice, use an alias to define a name for the > slice and use this (now legal) name in the Attribute Specification.
Klaus schrieb: > @Peter K. (pek): Es ist immer schön, wenn man die ultimative Wahrheit > kennt, nicht wahr? ;-) Ich hab hier ein XML, dass alle > hardwareabhängigen Dinge beschreibt und eins, dass die internen Features > beschreibt. Ob in den daraus generierten Files dann irgendwo Attribute > auftauchen, oder nicht, interessiert den lieben Gott überhaupt nicht ;-) > Und da ich in der realen Welt lebe und Projektzeit kostbar ist, hab ich > nach nem schnellen Weg gesucht das Problem zu lösen. Wenns nicht geht, > ok, dann müssen die Softwerker ebend doch die Buildtools anpassen. Nicht so giftig, Colega ;-). Habe Dir ja einen Lösungsvorschlag pfannenfertig serviert. Dann drösel halt den Buss auf dem Toplevel auf, und setz' die Attribute.
Sorry, sollte nicht giftig rüber kommen ;-) Fazit des Threads: Es gibt nur die Möglichkeiten Buss ausdröseln, oder den Tools beibringen, ins .qsf zu schreiben.
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.