verilog中的计算逻辑生成块

时间:2018-03-23 09:17:52

标签: verilog system-verilog

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

  

错误 - [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

2 个答案:

答案 0 :(得分:0)

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

genvar j=i/4;

因此您的错误消息。

答案 1 :(得分:0)

如果您使用的是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