如何防止逻辑修整

时间:2013-04-22 10:35:22

标签: verilog fpga

我正在为verilog创建一个rsa cryptosystem代码,模块的基本结构就像下面显示的代码一样。

Althogh代码在模拟中工作正常,它会发出警告:

Xst:1710 - FF/Latch <out_en> (without init value) has a constant value of 1 in block <o1>. This FF/Latch will be trimmed during the optimization process.
and Xst:1895 - Due to other FF/Latch trimming, FF/Latch <aa_1> (without init value) has a constant value of 0 in block <test1>. This FF/Latch will be trimmed during the optimization process.

我正在使用xilinx ise 13.1。

请帮帮我

 module okletssee(
input en,

input clk,

input[2:0] a,b,

output reg[2:0] c,

output reg out_en
    );

always @(posedge clk)

begin

if(en==1'b1)
 begin

c=a+b;

out_en=1'b1;

end

else out_en=1'b0;

end

endmodule

module test1(

input[2:0] a,b,

input clk,

output reg[2:0] out_reg
    );


wire[2:0] cc;

     wire out1_en;

     reg[2:0] aa,bb;

     reg en;

okletssee o1(en,clk,aa,bb,cc,out1_en);

reg cse;

always @(posedge clk)

begin

case(cse)

default: begin

        aa=a;

        bb=b;

        en=1'b1;

        cse=1'b1;

        end

1'b1: begin

        if(out1_en==1'b1)

        out_reg=cc;

        else cse=1'b1;

        end

endcase 

end


endmodule

2 个答案:

答案 0 :(得分:1)

好的......你的代码非常糟糕。逻辑完全搞砸了;它无法模拟“罚款”。你的第一个明显问题是test1.en实际 保持高位,因此是多余的。这正是你的合成器告诉你的。

答案 1 :(得分:0)

如果你不想修剪输出,你应该以某种方式使用它。例如,在另一个模块中或作为输出引脚。