Eingangsstifte im oberen Modul nicht angeschlossen

Ich habe ein Problem beim Verbinden verschiedener Module in einem oberen Modul. Ich möchte eine sehr einfache PWM mit einem Zähler und einem Komparator machen.

Schalter:

module          counter
                #(parameter N = 6)
                (
                input wire clk,
                input wire enable,
                output wire [N-1:0] q
                );
reg             [N-1:0] r_reg=0, r_next=0;


always @(posedge clk) begin
    r_reg <= r_next;
end

always @(*) begin
    if (enable)
        r_next = r_reg +1;
    else
        r_next = r_reg;
end 

assign q = r_reg;

endmodule

Komparator:

module          pwm
                #(parameter N = 6)
                (
                input wire [N-1:0] cin,
                output wire pwmsig
                );

reg             [N-1:0] threshold;
reg             d = 0;

initial         threshold = 6'b011111;

always @(*) begin
    if (threshold > cin)
        d = 1'b1;
    else
        d = 1'b0;
end

assign pwmsig = ~d;

endmodule

Die Module funktionieren gut und wenn ich alles in ein Modul stecke, funktioniert es wie vorgesehen. Aber wenn ich versuche, sie in einem Top-Modul zu verbinden:

    module          top
                    #(parameter N=6)
                    (
                    input wire clk, enable,
                    output wire pwmled
                    );

    wire            [N-1:0] connection;

    counter         cnt1(
                    .clk(clk),
                    .enable(enable),
                    .q(connection)
                    );

    pwm             pwm1(
                    .cin(connection),
                    .pwmsig(pwmled)
                    );      
endmodule

Ich bekomme eine Fehlermeldung:

FEHLER - Port 'clk' ist nicht verbunden. FEHLER - Port 'enable' ist nicht verbunden.

Die RTL-Simulation funktioniert einwandfrei (ich nehme nur das Top-Modul in meine Testbench auf). Es lässt mich einfach nicht 'clk' und 'enable' mit tatsächlichen Pins verbinden.

Ich verwende Lattice Diamond 3.1.

Bearbeiten: Ich erhalte die folgenden Warnungen im Kartenbericht:

WARNUNG - Zuordnung: Fehlender E/A-Puffer für Top-Level-Port-Ena...Logik wird verworfen. WARNUNG - map: IO-Puffer fehlt für Top-Level-Port clk...Logik wird verworfen.

Ich habe das Design durch Quartus II laufen lassen und Arbeitsergebnisse erhalten ... irgendwelche Ideen, wo ich mit Diamond falsch liege?

Ich habe Ihr Modul ohne Probleme durch Xilinx XST, Map und Place and Route laufen lassen. Die Ports 'clk' und 'enable' sind beide verbunden und haben eine Last. Schema der synthetisierten Schaltung ist hier .
Ihre pwm hat keine Uhr?

Antworten (2)

Ich bin auf ein ähnliches Problem gestoßen. Mein Problem war, dass ich während des Debuggens die Submodulausgänge vom Hauptmodul getrennt hatte. Wenn der Optimierer sieht, dass die Ausgänge nicht verbunden sind, geht er davon aus, dass das Modul nicht benötigt wird, und entfernt es, um Platz zu sparen. Als Ergebnis bleiben die Eingänge erdfrei; Dies wird die Fehler verursachen, die Sie sehen.

Wenn Sie das Modul irgendwann trennen möchten, weisen Sie einen der Modulausgänge einer Dummy-Last (wie einer Debugging-LED) zu, und Sie werden in Ordnung sein.

Ich hatte dieses Problem auch mit dem Synthesetool Synplify Pro. Es stellte sich heraus, dass ich versehentlich ein Leerzeichen in den Namen des Entity-Ports vor dem Tab eingefügt hatte.