2016-04-15 3 views
-1

Wer weiß, wie dieses Problem zu beheben: Ich bin immer diese Fehlermeldung bekommen:Ein Netz ist keine juristische lvalue in diesem Zusammenhang [9.3.1 (IEEE)]

Ein Netz ist kein legaler Wert in diesem Zusammenhang [9.3.1 (IEEE)]. und dies ist meinen Code

:

`timescale 1ns/1ps 
module dsm_egnfet_l150_w2_n16_dgc_t3 (b, d, s, g); 

inout b, d, s; 
input g; 

always 
begin 
    if (g === 1) 
    s = d ; 
end 
    endmodule 
+1

Gibt es Gründe, warum Sie mit 's' als' inout' anstelle eines 'output' gegeben, dass es eine feste Zuordnung hat? – wilcroft

+0

Ein Immer-Block ohne Zeitsteuerung erstellt eine Endlosschleife. – toolic

+2

Verilog verfügt über integrierte Gate-Level-Modelle wie 'nmos'. Siehe IEEE Std 1800-2012, Abschnitt 28. Gate-Level und Switch-Level-Modellierung – toolic

Antwort

0
always @* 
begin 
    if (g==1)begin 
    s=d; 
    end 
end 
endmodule 

versuchen, diese

+0

Dieser Code wird nicht für mich auf EDAplayground kompilieren, da 's' ist ein Netto-Typ, kein reg. – wilcroft

+0

Obwohl der SO fehlt '@ *', wird Ihr Code nicht funktionieren, da ein Netz nur fortlaufend zugewiesen werden kann ('assign' Anweisung), nicht prozedural (' immer' Block). Technisch gibt es eine prozedurale Zuweisung ('assign' innerhalb einer' always'), aber diese ** sollte nicht ** verwendet werden, wie es für die Veraltetheit geplant ist, wird möglicherweise nicht immer korrekt synthetisiert, wenn überhaupt, und fügt Verwirrung hinzu. – Greg

+0

Vielen Dank für Ihre Antwort, eigentlich ist es ein Transistor und die Modelle kommen so, dass ich den Eingang oder den Ausgang nicht entworfen habe, ich muss nur debuggen ... Ich habe diese Aussage mit einer bereits für verilog nmos definierten Funktion geändert(), pmos() ... aber jetzt habe ich ein anderes Problem hier ist der Code: Modul dac (gnd, nw, pw, vdd, ip, sel, selb); inout: gnd, nw, op, pw, vdd; Eingabe ip, sel, selb; initial beginne if ((sel === 1) && (selb === 1)) || ((sel === 0) && (selb === 0)) nicht (op, ip); Ende Endmodul und der Fehler ist: erwartet eine linke Klammer [12.1.2 [7.1 (IEEE)] –

1

Betrachten Sie die folgende anstelle eines Verfahrens Zuordnung mit:

assign s = (g===1)?d:1'dz;

0

war die Lösung: „` Zeitplan 1ns/1ps

module dsm_egnfet_l150_w2_n16_dgc_t3 (b, d, s, g); 

inout b, d, s; 
input g; 
reg s1; 

    assign s=s1; 
    always @ * 
    begin 

    if (g === 1) 
    s1 = d ; 
    end 

    endmodule 
Verwandte Themen