我在System Verilog中有一个简单的fifo代码。我收到了几条vlog-2110 illegal reference to net
错误消息。我查看了之前的stackoverflow指南,并没有看到我正在做什么有什么问题。请帮忙!!!
我在我的错误消息下面给出了我的代码。我将非常感激。谢谢你的时间。
错误讯息:
vlog -work work -sv -stats = none C:/Users/Single_FIFO.sv Model Technology ModelSim DE vlog 10.4 Compiler 2014.12 Dec 3 2014 - 编译模块fifo_core_and_cntl
错误:C:/Users/Single_FIFO.sv(24):( vlog-2110)非法引用网"出现"。
错误:C:/Users/Single_FIFO.sv(26):( vlog-2110)非法引用net"空"。
错误:C:/Users/Single_FIFO.sv(28):( vlog-2110)非法引用net"空"。
错误:C:/Users/Single_FIFO.sv(30):( vlog-2110)非法引用net" full"。
错误:C:/Users/Single_FIFO.sv(32):( vlog-2110)非法引用net" full"。 ...... ......
我的简单的fifo代码:它的小部分,如下所示。
module fifo_core_and_cntl (data_in, data_put, data_get, clk, reset_n, data_out, occucy, empty, full);
input [7:0]data_in;
input data_put, data_get, clk, reset_n;
output [7:0]data_out;
output empty, full;
output [4:0]occucy;
logic [4:0]current_readptr, current_writeptr, next_readptr, next_writeptr;
logic [15:0][7:0]data_fifo; // This is data Fifo: 2D packed array of vectors: sixteen 8 bit vectors.
always_ff @ (posedge clk, negedge reset_n) // For the Current counter updates.
if (!reset_n)
begin
current_writeptr <= 0;
current_readptr <= 0;
end
else
begin
current_writeptr <= next_writeptr;
current_readptr <= next_readptr;
end
end
always_comb begin // Combo logic for fifo status outputs and also for internal fifo rd/wr pointer updates.
occucy = current_writeptr - current_readptr; // fifo occupancy indication
if (current_writeptr == current_readptr)
empty = 1'b1;
else
empty = 1'b0;
end
endmodule
答案 0 :(得分:4)
empty
和full
被声明为output
,这意味着其默认类型为wire
。您只能使用连续assign
:
assign empty = some_value;
如果要从始终块中分配这些信号,则应明确声明它们为logic
(或reg
如果您使用的是Verilog):
`output logic empty, full;
答案 1 :(得分:0)
您无法对电线进行过程分配,这是默认情况下输出的信号种类。由于您已经在使用SystemVerilog,因此您应该更新端口声明列表以使其更简单
module fifo_core_and_cntl (
input wire [7:0] data_in,
input wire data_put, data_get, clk, reset_n,
output logic [7:0]data_out,
output logic empty, full,
output logic [4:0]occupy
);