【问题标题】:Compute logic in verilog generate blockverilog生成块中的计算逻辑
【发布时间】:2018-03-24 03:02:26
【问题描述】:

我正在尝试在具有不同分层时钟的生成块中实例化一个简单模块。但是面对这个问题:

Error-[SE] 语法错误 以下 verilog 源代码有语法错误: “testbench/tb/uflex_ilk_comp_ext_s10_top_cr3.sv”,242:令牌是 '='
genvar j=i/4; ^

`define CLK uflex_ilk_comp_ext_s10_top.dut.soft_pcs_pam4.pam4_phy_inst[j].pam4_phy.nphy.g_xcvr_native_insts[k].ct3_xcvr_native_inst.inst_ct3_xcvr_channel.inst_ct3_hssi_xcvr.ct3_hssi_xcvr_encrypted_inst.ct1_hssirtl_c3xcvr_inst.u_serdes.corif_serial_clk_tx


genvar i;
generate
  for (i=0; i<NUM_LANES; i++) begin:delay_bmod_inst
genvar j=i/4;  --> Using j and k in CLK define
genvar k=i%4;
    txrx_delay_bmod #(.LANE_NUM(i), .MAX_LANE_DELAY(107), .GROUP_DELAY_RANGE(17)) txrx_delay_bmod_1 (
        .clk(`CLK),
        .i_tx_data(tx_serial_data[i]),
        .o_tx_data(tx_serial_data_dly[i])
    );
  end
endgenerate

【问题讨论】:

    标签: verilog system-verilog


    【解决方案1】:

    如果你使用的是SystemVerilog,你可以写成

    for (genvar i=0; i<NUM_LANES; i++) begin:delay_bmod_inst
      localparam j=i/4;  //--> Using j and k in CLK define
      localparam k=i%4;
      txrx_delay_bmod #(.LANE_NUM(i), .MAX_LANE_DELAY(107), .GROUP_DELAY_RANGE(17)) 
             txrx_delay_bmod_1 (
            .clk(`CLK),
            .i_tx_data(tx_serial_data[i]),
            .o_tx_data(tx_serial_data_dly[i])
        );
      end
    

    【讨论】:

      【解决方案2】:

      您不能分配给 genvar。这是非法的:

      genvar j=i/4;
      

      因此您的错误消息。

      【讨论】:

      • jk 使用'localparam' 或'parameter'。
      猜你喜欢
      • 1970-01-01
      • 2019-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多