Unable to implement i2cmst in NOEL-V

Hello. After adding some code by hand and following the example code for i2cmst in the GRLIB IP core manual, I haven’t been unable to get the i2cmst peripheral to show in GRMON for the vcu118 FPGA.

i2c_ex : if (CFG_I2C_ENABLE /= 0) generate
    i2c0 : i2cmst
      generic map ( pindex => APBI2C_PINDEX,
                    paddr => APBI2C_PADDR,
                    pmask => APBI2C_PMASK,
                    pirq => APBI2C_PIRQ)
--                  filter => FIXME)                                                                                                                   
      port map (    rstn => rstn,
                    clk => clkm,
                    apbi => apbi(APBI2C_PINDEX),
                    apbo => apbo(APBI2C_PINDEX),
                    i2ci => i2ci,
                    i2co => i2co);
  end generate;

I have removed the appropriate modules in the DIRSKIP section in the Makefile, instantiated the pads

i2cpads_en : if (CFG_I2C_ENABLE /= 0) generate
  i2c_scl_pad : iopad generic map (tech => padtech, level => cmos, voltage => x18v)
    port map (iic_scl, i2co.scl, i2co.scloen, i2ci.scl);

  i2c_sda_pad : iopad generic map (tech => padtech, level => cmos, voltage => x18v)
    port map (iic_sda, i2co.sda, i2co.sdaoen, i2ci.sda);
end generate;

And added the pins in the XDC. The module is visible in the RTL implementation, but not under GRMON.

# -- I2C PMOD0 ---
set_property PACKAGE_PIN AT15      [get_ports {iic_sda}] ;# Bank 67 VCCO - VCC1V8_FPGA - PMOD0_0
set_property PACKAGE_PIN AT16      [get_ports {iic_scl}] ;# Bank 67 VCCO - VCC1V8_FPGA - PMOD0_1

set_property IOSTANDARD  LVCMOS18 [get_ports iic_*] ;

Is there anything I am missing?

Thank you.

Hi,

Sorry for the delay, most of our staff is currently on holidays.

The fact that GRMON does not report that the controller is there may indicate that the IP is not implemented at all, or that the AMBA parts have not been connected properly. Therefore, you can discard things like pinout in the XDC file and pads, GRMON won’t be able to detect those kind of hardware issues.

First thing I would check is the Vivado utilization report, to make sure there is an instance of i2cmst there with utilization figures. If not, double check that your CFG_I2C_ENABLE constant is not set to 0.

After that, check the connection of APBI and APBO, plus the generics pindex, paddr and pmask. Chances are that those are not set correctly. Could it be that the APBCTRL does not expect to see the additional APB slave? You could check that as well.

Regards,
Joaquin