2011-10-28 4 views
1
module router (clock, ValidPacket0, ValidPacket1, ValidPacket2, ValidPacket3, PacketIn0, PacketIn1, PacketIn2, PacketIn3, PacketOut0, PacketOut1, PacketOut2, PacketOut3); 

    input clock; 
    input ValidPacket0, ValidPacket1, ValidPacket2, ValidPacket3; 
    input [7:0] PacketIn0, PacketIn1, PacketIn2, PacketIn3; 
    output [7:0] PacketOut0,PacketOut1, PacketOut2, PacketOut3; 

    reg [3:0] bvp, vp; 
    reg [1:0] counter0, counter1, counter2, counter3; 
    reg [2:0] sel0, sel1, sel2, sel3; 
    reg [3:0] zero=0; 
    reg [7:0] addr0, addr1, addr2, addr3, out0, out1, out2, out3l; 
    wire  np0, np1, np2, np3; 
    wire [7:0] PacketOut0, PacketOut1, Packetout2, Packetout3; 

    [email protected](posedge clock) 
    bvp[0]<=ValidPacket0; 
    if (ValidPacket0 && !bvp[0]) vp[0]=1'b1; 
    else vp[0]=0; 

위의 코드는 나에게 다음과 같은 오류를 준다?의 Verilog 컴파일러 오류

답변

1
[email protected](posedge clock) 
    bvp[0]<=ValidPacket0; 
    if (ValidPacket0 && !bvp[0]) vp[0]=1'b1; 
    else vp[0]=0; 

이 'if'블록은 모듈 수준에서 표시되기 때문에 생성 블록을 나타냅니다. 코드 vp[0]=1'b1;은 절차 적 블록 내에서만 허용되는 절차 적 명령문입니다. 컴파일러는 식별자가 될 모듈이나 udp 인스턴스가 '['로 이어질 것으로 기대하기 때문에 불평을합니다.