Xilinx中的Verilog模块;“从未使用过信号”;错误
我有一个Verilog程序,我必须模拟一个ALU,它可以加、减、检查等式和除以2。我的代码:Xilinx中的Verilog模块;“从未使用过信号”;错误,verilog,xilinx,hdl,Verilog,Xilinx,Hdl,我有一个Verilog程序,我必须模拟一个ALU,它可以加、减、检查等式和除以2。我的代码: module alu( input wire [7:0] sw, output reg [2:0] s, output reg cout ); reg co1, co2; always @(*) begin if(~sw[6] & ~sw[7]) begin s[0] = sw[0] ^ sw[3] ^ 1'b0; co1 = (sw[3] &
module alu(
input wire [7:0] sw,
output reg [2:0] s,
output reg cout
);
reg co1, co2;
always @(*) begin
if(~sw[6] & ~sw[7]) begin
s[0] = sw[0] ^ sw[3] ^ 1'b0;
co1 = (sw[3] & 1'b0) | (sw[0] & 1'b0) | (sw[0] & sw[3]);
s[1] = sw[1] ^ sw[4] ^ co1;
co2 = (sw[4] & co1) | (sw[1] & co1) | (sw[1] & sw[4]);
s[2] = sw[2] ^ sw[5] ^ co2;
cout = (sw[5] & co2) | (sw[2] & co2) | (sw[2] & sw[5]);
end
else if(sw[6] & ~sw[7]) begin
s[0] = sw[0] ^ ~sw[3] ^ 1'b1;
co1 = (~sw[3] & 1'b1) | (sw[0] & 1'b1) | (sw[0] & ~sw[3]);
s[1] = sw[1] ^ ~sw[4] ^ co1;
co2 = (~sw[4] & co1) | (sw[1] & co1) | (sw[1] & ~sw[4]);
s[2] = sw[2] ^ ~sw[5] ^ co2;
cout = (~sw[5] & co2) | (sw[2] & co2) | (sw[2] & ~sw[5]);
end
\\more code
end
endmodule
我收到关于“co1”和“co2”的警告
信号已分配但从未使用。此未连接的信号将在优化过程中被修剪
我对这个警告感到困惑,因为根据我的理解,“co1”和“co2”被用来分配一些东西。总的来说,当我在我的板上运行它时,我根本没有得到任何输出 所以这最终不是问题。它们在合成后被去除 所以这最终不是问题。它们在合成后被去除 这两个都不是输入或输出,您可以使用它们来更好地了解正在发生的事情。但是,对于verilog,不需要它。该程序将根据构成co1和co2的输入(sw)上的内容编译输出。这意味着你可以忽略这些警告,或者重写你的逻辑,只包含你的输入。我的程序没有输出任何东西,这是我的程序中的其他错误吗?它与警告无关?可能,您可以通过模拟它来测试您的逻辑。希望这能告诉我们什么时候会出错是的,这是一个顶级模块。我想这可能是时钟的问题。模拟工作正常。可能是由于优化,合成后去除了
co1
和co2
。因此,它会提醒你注意,这2条既不是输入也不是输出,你可以用它们来更好地了解正在发生的事情。但是,对于verilog,不需要它。该程序将根据构成co1和co2的输入(sw)上的内容编译输出。这意味着你可以忽略这些警告,或者重写你的逻辑,只包含你的输入。我的程序没有输出任何东西,这是我的程序中的其他错误吗?它与警告无关?可能,您可以通过模拟它来测试您的逻辑。希望这能告诉我们什么时候会出错是的,这是一个顶级模块。我想这可能是时钟的问题。模拟工作正常。可能是由于优化,合成后去除了co1
和co2
。因此,它已经通知你警告