IDCODE for RISCV core

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • IDCODE for RISCV core

      Hi
      In reference to my previous thread Support for Ibex RV32 core we are kind of confused about the solution. We had IDCODE configured in RTL/bitstream with our specific ManufId and this was not working. As a hit-and-try method, we just made the ManufId as 0 which changed the IDCODE as 0x1 (LSB is hard-coded to 1 in IDCODE register) and it worked. We still want to use our specific ManufID and therefore want to have clarification on below queries:


      1. What the J-Link commander will do with IDCODE? Are they looking for a specific IDCODE?
      2. Is there any configuration that we can change in our setup script to fix IDCODE issue?
      3. If it can’t be fixed from setup script, what’s the valid value for IDCODE of RISC-V core?


      Thank you!
    • Hi,

      It is a weakness in the JTAG standard…
      There is NO generic way to determine the IRLen of a single TAP in a chain.
      In this case, if one of the TAPs is known and the other one not, the IRLen of the unkown one can be calculated.

      However, there is still 1 culprit:
      J-Link needs to guess which of the TAPs is the RISC-V one. As there is a 5-bit one and a 4-bit one, both are candidates (5-bit => RISC-V behind DM + DMI, 4-bit RISC-V behind DAP).
      As the 5-bit one is an unknown TAPId but the 4-bit one is a known CoreSight DAP TAPId, the known one is preferred.

      Actually, you are reaching the limits of auto-detection here. You need to tell J-Link which TAP to use.
      After executing „connect“ in J-Link Commander, you are asked which JTAG config to use. You have chosen -1,-1 which is default (== auto-detect).
      Instead, as the chain looks like this:
      TDI —> TAP-IR4 —> TAP-IR5 —> TDO
      you should select 0,0 instead of -1,-1.

      More info, see here:
      wiki.segger.com/J-Link_Commander#JTAGConf
      Please read the forum rules before posting.

      Keep in mind, this is *not* a support forum.
      Our engineers will try to answer your questions between their projects if possible but this can be delayed by longer periods of time.
      Should you be entitled to support you can contact us via our support system: segger.com/ticket/

      Or you can contact us via e-mail.
    • Hi Alex
      Thank you for responding back. As per your suggestion, we did try changing JTAGConfig to 0,0 instead of -1,-1 but it didn't work for specific ManufId in IDCODE. If we remove the ManufId from IDCODE, it works without any issue. We are trying to understand why it works without ManufId but not with ManufId.

      Thank you!
    • I explained the detection logic in my previous post…

      Due to lack of hardware, we will setup something that “emulates” the setup,
      but this will take at least 2-3 weeks.
      Please read the forum rules before posting.

      Keep in mind, this is *not* a support forum.
      Our engineers will try to answer your questions between their projects if possible but this can be delayed by longer periods of time.
      Should you be entitled to support you can contact us via our support system: segger.com/ticket/

      Or you can contact us via e-mail.