[SOLVED] IDCODE for RISCV core

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

  • [SOLVED] 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.
  • Hi,

    Sorry for the delay in response on this.
    What you are running into is what is described as "case 9" here:
    wiki.segger.com/J-Link_RISC-V#JTAG_chain_auto-detection

    Why is that the case?
    Because J-Link does not know your RISC-V TAP Id, so it does not consider it as a potential RISC-V TAP.
    This is why the auto-selection of the TAP does not work, even though TAP_0 would be the correct one.

    Solution:
    1) Use a J-Link script file as mentioned in the other thread
    2)
    We add your TAP Id to the list of known ones. For this, I would need the MANU and PARTNO field values of your TAP, that you are using for RISC-V TAPs.
    Ideally, you also let us know the company name that matches the MANU value, so J-Link could show something like this: "xxx RISC-V TAP" where xxx is the name of the company.


    BR
    Alex
    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.