Hallo,
ich versuche gerade, das Beispiel zum Generieren einer eigenen IP für
den Microblaze nachzuvollziehen.
http://www.xilinx.com/support/documentation/sw_manuals/xilinx11/edk_ctt.pdf
(Anleitung zum EDK 11, da ich ein Spartan3e Starter Board benutze und
dort ein Spartan3a Board verwendet wird, die neueren Anleitungen
verwenden den AXI-Bus.)
Kurzbeschreibung:
Es gibt eine PWM-HW-IP mit 8 Ausgängen für die LEDs, im ucf so
angegeben:
1 | Net pwm_lights_0_LEDs_pin<0> LOC=F9 | IOSTANDARD = LVCMOS33;
|
2 | Net pwm_lights_0_LEDs_pin<1> LOC=E9 | IOSTANDARD = LVCMOS33;
|
3 | Net pwm_lights_0_LEDs_pin<2> LOC=D11 | IOSTANDARD = LVCMOS33;
|
4 | Net pwm_lights_0_LEDs_pin<3> LOC=C11 | IOSTANDARD = LVCMOS33;
|
5 | Net pwm_lights_0_LEDs_pin<4> LOC=F11 | IOSTANDARD = LVCMOS33;
|
6 | Net pwm_lights_0_LEDs_pin<5> LOC=E11 | IOSTANDARD = LVCMOS33;
|
7 | Net pwm_lights_0_LEDs_pin<6> LOC=E12 | IOSTANDARD = LVCMOS33;
|
8 | Net pwm_lights_0_LEDs_pin<7> LOC=F12 | IOSTANDARD = LVCMOS33;
|
Die Synthese erstellt dann ein ncf-file, darin steht u.a.
1 | Net pwm_lights_0_LEDs_pin<0> LOC=F9 | IOSTANDARD = LVCMOS33;
|
2 | Net pwm_lights_0_LEDs_pin<1> LOC=E9 | IOSTANDARD = LVCMOS33;
|
3 | Net pwm_lights_0_LEDs_pin<2> LOC=D11 | IOSTANDARD = LVCMOS33;
|
4 | Net pwm_lights_0_LEDs_pin<3> LOC=C11 | IOSTANDARD = LVCMOS33;
|
5 | Net pwm_lights_0_LEDs_pin<4> LOC=F11 | IOSTANDARD = LVCMOS33;
|
6 | Net pwm_lights_0_LEDs_pin<5> LOC=E11 | IOSTANDARD = LVCMOS33;
|
7 | Net pwm_lights_0_LEDs_pin<6> LOC=E12 | IOSTANDARD = LVCMOS33;
|
8 | Net pwm_lights_0_LEDs_pin<7> LOC=F12 | IOSTANDARD = LVCMOS33;
|
Nach Translate+Map wird ein pcf-file erstellt, darin steht plötzlich nur
noch
1 | COMP "pwm_lights_0_LEDs_pin<0>" LOCATE = SITE "F12" LEVEL 1;
|
, d.h. die Pins 1 bis 7 sind weg.
Das PAR gibt dann schließlich die Fehlermeldung
1 | Phase 2.7 Design Feasibility Check
|
2 | WARNING:Place:837 - Partially locked IO Bus is found.
|
3 | Following components of the bus are not locked:
|
4 | Comp: pwm_lights_0_LEDs_pin<1>
|
5 | Comp: pwm_lights_0_LEDs_pin<2>
|
6 | Comp: pwm_lights_0_LEDs_pin<3>
|
7 | Comp: pwm_lights_0_LEDs_pin<4>
|
8 | Comp: pwm_lights_0_LEDs_pin<5>
|
9 | Comp: pwm_lights_0_LEDs_pin<6>
|
10 | Comp: pwm_lights_0_LEDs_pin<7>
|
11 |
|
12 | WARNING:Place:838 - An IO Bus with more than one IO standard is found.
|
13 | Components associated with this bus are as follows:
|
14 | Comp: pwm_lights_0_LEDs_pin<7> IOSTANDARD = LVCMOS25
|
15 | Comp: pwm_lights_0_LEDs_pin<6> IOSTANDARD = LVCMOS25
|
16 | Comp: pwm_lights_0_LEDs_pin<5> IOSTANDARD = LVCMOS25
|
17 | Comp: pwm_lights_0_LEDs_pin<4> IOSTANDARD = LVCMOS25
|
18 | Comp: pwm_lights_0_LEDs_pin<3> IOSTANDARD = LVCMOS25
|
19 | Comp: pwm_lights_0_LEDs_pin<2> IOSTANDARD = LVCMOS25
|
20 | Comp: pwm_lights_0_LEDs_pin<1> IOSTANDARD = LVCMOS25
|
21 | Comp: pwm_lights_0_LEDs_pin<0> IOSTANDARD = LVCMOS33
|
22 |
|
23 |
|
24 | INFO:Place:834 - Only a subset of IOs are locked. Out of 51 IOs, 44 are locked and 7 are not locked. The following is
|
25 | the list of components that are not locked.
|
26 | pwm_lights_0_LEDs_pin<1> NOT LOCKED
|
27 | pwm_lights_0_LEDs_pin<2> NOT LOCKED
|
28 | pwm_lights_0_LEDs_pin<3> NOT LOCKED
|
29 | pwm_lights_0_LEDs_pin<4> NOT LOCKED
|
30 | pwm_lights_0_LEDs_pin<5> NOT LOCKED
|
31 | pwm_lights_0_LEDs_pin<6> NOT LOCKED
|
32 | pwm_lights_0_LEDs_pin<7> NOT LOCKED
|
33 | Rest of the IOs are LOCKED
|
34 | ERROR:Place:207 - Due to SelectIO banking constraints, the IOBs in your design cannot be automatically placed.
|
Also ein Fehler, weil es die Pins 1 bis 7 der PWM nicht kennt und dort
einen anderen IO-Standard nimmt.
Waum bleiben die auf der Strecke bzw. was muss ich tun, damit die aus
der ucf korrekt weiterverarbeitet werden? Die Synthese erkennt es ja
offenbar korrekt, erst danach läuft irgendwas schief.
Markus