【问题标题】:Generated begin-end blocks must be named生成的起始块必须命名
【发布时间】:2020-02-20 12:55:32
【问题描述】:

我正在 Xilinx 中编译一个名为“ODIN”的 SNN 模拟器。对于生成块,我收到此错误,但我认为此块没有任何问题。你能帮我解决这个问题吗?

'''
genvar i;
generate
    for (i=0; i<8; i=i+1) begin
    
        sdsp_update #(
            .WIDTH(3)
        ) sdsp_update_gen (
            // Inputs
                // General
            .SYN_PRE(CTRL_PRE_EN[i] & (SPI_UPDATE_UNMAPPED_SYN | SYNARRAY_RDATA[(i<<2)+3])),
            .SYN_BIST_REF(CTRL_BIST_REF),
                // From neuron
            .V_UP(NEUR_V_UP_int[i]),
            .V_DOWN(NEUR_V_DOWN_int[i]),    
                // From SRAM
            .WSYN_CURR(SYNARRAY_RDATA[(i<<2)+3:(i<<2)]),
            
            // Output
            .WSYN_NEW(SYNARRAY_WDATA_int[(i<<2)+3:(i<<2)])
        );
    end
endgenerate

我收到以下错误:

生成的开始-结束块必须命名

非法重新声明''

【问题讨论】:

标签: for-loop verilog hdl generate


【解决方案1】:

一些编译器希望在生成逻辑时有一个名字。此名称取自 begin-end 块的名称。 试试这个:

'''
genvar i;
generate
    for (i=0; i<8; i=i+1) 
    begin : sdsp_gen // <<< Name for begin/end block 

        sdsp_update #(
            .WIDTH(3)
        ) sdsp_update_gen (
            // Inputs
                // General
            .SYN_PRE(CTRL_PRE_EN[i] & (SPI_UPDATE_UNMAPPED_SYN | SYNARRAY_RDATA[(i<<2)+3])),
            .SYN_BIST_REF(CTRL_BIST_REF),
                // From neuron
            .V_UP(NEUR_V_UP_int[i]),
            .V_DOWN(NEUR_V_DOWN_int[i]),    
                // From SRAM
            .WSYN_CURR(SYNARRAY_RDATA[(i<<2)+3:(i<<2)]),

            // Output
            .WSYN_NEW(SYNARRAY_WDATA_int[(i<<2)+3:(i<<2)])
        );
    end
endgenerate

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    • 2023-03-18
    相关资源
    最近更新 更多