Xilinx中的Verilog模块;“从未使用过信号”;错误

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] &

我有一个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] & 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
。因此,它已经通知你警告