从 Verilog 合成器获取 FFGEN

getting FFGEN from Verilog Synthesizer

每当我通过 Design Vision 合成器传递以下行为代码时,我都会得到 FFGEN 实例,这意味着合成器将我的逻辑视为具有锁存器,即使它应该是完全组合的。

代码:

module decoder(input  [1:0] Op,
input  [5:0] Funct,

output reg[9:0] controls);

    // Main Decoder
 always @(*)  begin
    case(Op)
    // Data-processing immediate
    2'b00: if (Funct[5]) controls = 10'b0000101001;
    // Data-processing register
    else controls = 10'b0000001001;
    // LDR
    2'b01: if (Funct[0]) controls = 10'b0001111000;
    // STR
    else controls = 10'b1001110100;
    // B
    2'b10: controls = 10'b0110100010;
    endcase
 end
endmodule

任何人都可以建议如何修改代码,以便我可以使用自己的设计库来输出结构 verilog

这是一个很常见的错误。您的案例项无法满足案例语句表达式 Op.

的所有可能值

您可以通过在最后一个案例项目之后添加一个 default 语句来修复它。

为了进一步阅读,这里有 Greg 的出色回答 - What is inferred latch and how it is created when it is missing else statement in if condition.can anybody explain briefly?

只需记住所有依赖项并将它们列入敏感列表即可。另外,正如 所提到的,不要忘记在您的 case 语句中添加 default 案例作为它的最后一个案例。