Forum: FPGA, VHDL & Co. Verilog inout "NET "IIC_SDA_SFP" not found"


von Micha von Bonn (Gast)


Lesenswert?

Hallo,

ich versuche einen inout Port in Verilog zu nutzen.
Im Constraints File habe ich ihn folgendermaßen angegeben:
1
NET "IIC_SDA_SFP" LOC = "E6"; ## 4 on P2
In meinem Top Modul rufe ich ihn wie folgt auf:
1
inout         IIC_SDA_SFP,
Wenn ich es so synthetisiere, ohne den Port zu nutzen, treten keine 
Fehler auf. Wenn ich den Port jedoch mit einem Modul nutze, kommt 
folgende Fehlermeldung:

ERROR:ConstraintSystem:59 - Constraint <NET "IIC_SDA_SFP" LOC = "E6";>
   [constraints.ucf(31)]: NET "IIC_SDA_SFP" not found.  Please verify 
that:
   1. The specified design element actually exists in the original 
design.
   2. The specified object is spelled correctly in the constraint source 
file.

Um das Modul zu instanziieren gehe ich so vor:
1
I2C_Wrapper I2C (
2
    .reset(reset),         //in
3
    .ref_clk(i2c_ref_clk),   //in
4
    .SDA(IIC_SDA_SFP),       //inout
5
    .SCL(IIC_SCL_SFP),       //out
6
    .data(data)          //out
7
    );

So wie ich das sehe habe ich überall den gleichen Namen für den Port 
benutzt, weswegen ich mir die Fehlermeldung nicht erklären kann. Kann es 
vielleicht daran liegen das es ein inout Port ist und ich damit 
irgendetwas falsch mache?

Danke!

von Lattice User (Gast)


Lesenswert?

IIC_SDA_SFP ist in der Port Liste des top level modules definiert?

von Micha von Bonn (Gast)


Lesenswert?

Lattice User schrieb:
> IIC_SDA_SFP ist in der Port Liste des top level modules definiert?

module top(
.
.
.
inout         IIC_SDA_SFP,
input         IIC_SCL_SFP
);

Jop =)

von Lattice User (Gast)


Lesenswert?

Micha von Bonn schrieb:
> Lattice User schrieb:
>> IIC_SDA_SFP ist in der Port Liste des top level modules definiert?
>
> module top(
> .
> .
> .
> inout         IIC_SDA_SFP,
> input         IIC_SCL_SFP
> );
>
> Jop =)
1
input         IIC_SCL_SFP

versus
1
    .SCL(IIC_SCL_SFP),       //out

input oder output?
Könnte sein, dass wegen diesem Mismatch etwas wegoptimiert wurde, alle 
Warnungen mal lesen!

von Micha V. (micha_von_bonn)


Lesenswert?

Lattice User schrieb:
> input oder output?
> Könnte sein, dass wegen diesem Mismatch etwas wegoptimiert wurde, alle
> Warnungen mal lesen!

Hast recht, war ein Flüchtigkeitsfehler hier im Forum. Im Code ist SCL 
ein Output. Sprich:
1
module top(
2
.
3
.
4
.
5
inout         IIC_SDA_SFP,
6
output         IIC_SCL_SFP
7
8
);

Sorry

von Lattice User (Gast)


Lesenswert?

Micha K. schrieb:
> Lattice User schrieb:
>> input oder output?
>> Könnte sein, dass wegen diesem Mismatch etwas wegoptimiert wurde, alle
>> Warnungen mal lesen!
>
> Hast recht, war ein Flüchtigkeitsfehler hier im Forum. Im Code ist SCL
> ein Output. Sprich:
>
Ok

Wenn es ein Xilinx spezifisches Problem ist, kann ich leider nicht 
weiterhelfen.

Allerdings trotzdem ein paar Tipps:

1. Verilog ist case sensitiv!

2. Wenn mir (bei Lattice) so etwas passiert ist, d.h. eine Fehlermeldung 
bezüglich eines fehlendes Signals was aber offensichtlich existiert, war 
es ein Fehler in einer anderen Ecke, der den Optimizer dazu veranlasst 
hat die grosse Schere auszupacken.
Synplify Pro hat neben dem RTL View (vor der Optimierung) noch einen 
Technology View. Dessen hervorstechendes Merkmal war gähnende Leere.

von Micha V. (micha_von_bonn)


Lesenswert?

ok, danke dir.
Ich werde versuchen I2C mal vom restlichen Design zu entkoppeln und 
schauen ob ich dann was erkennen kann.

von Lattice User (Gast)


Lesenswert?

Pack mal ein
1
`default_nettype none

an den Anfang deiner Module. Das verhindert, dass der Synthesizer bei 
einem Tippfehler einfach ein neues Signal anlegt.


Wenn du Fremdmodule hast, die du nicht fixen kannst oder willst, pack 
ein
1
`default_nettype wire
ans Ende der zu prüfenden module.

von Micha V. (micha_von_bonn)


Lesenswert?

Hi,
habe das Problem gefunden.
1
reg     sda_enable = 0;
2
assign  IIC_SDA = sda_enable ? 0:1'bz;

gefällt ISE anscheinend nicht. Mit
1
reg     sda_enable = 1;

taucht kein Fehler auf.

Gruß

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
Noch kein Account? Hier anmelden.