在 verilog 中定义一个常量(用于综合)

define a constant in verilog (for synthesis)

我正在编写一些用于综合的 Verilog 代码。 我的块有一个 reg 类型 A,必须始终具有相同的值。 为了不出现语法错误,我这样写:

module dig_block ( OUT, OUTN, in , OUTlevelL, mode_1, mode_0 , rst);
    output [11:0] OUT, OUTN;
    input [11:0] in, OUTlevelL;
    input  mode_1, mode_0, rst;  
    reg [11:0] OUT, OUTN;

    reg [11:0] A;   
    integer B; 


    always @(ck or rst) 
    if(~rst)
        begin
            A =512;   
            B =in[10:0];

            case  ({mode_1, mode_0})  
            2'b00:  begin     
                    OUT=A-B;   
                    OUTN=~OUT;
                end

            default:   begin  
                OUT=OUTlevelL;
                OUTN=~OUT;
                end
            endcase
        end
    else
        begin  
            A =512;
            B =0;     
            OUT =0;
            OUTN=1;
        end 
endmodule

是否可以在"always"之前定义A?我不知道对于必须固定且既不是输入也不是输出的数量的常见做法是什么。我不想在合成过程中放置​​不必要的端口。 非常感谢您的帮助!

您可以将其定义为本地参数。这将仅将其范围限制在该模块内。

module dig_block ( OUT, OUTN, in , OUTlevelL, mode_1, mode_0 , rst);
        output [11:0] OUT, OUTN;
        input [11:0] in, OUTlevelL;
        input  mode_1, mode_0, rst;  
        reg [11:0] OUT, OUTN;

        localparam [11:0] A=512;