This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

LMK04832: Wrong hex register values in the exported file with TICSPro v1.7.7.10

Part Number: LMK04832
Other Parts Discussed in Thread: LMK04368-EP, LMK04714-Q1, ,

Tool/software:

I am exporting an hex dump file with TICS Por v1.7.7.10.

File->Export hex register values

An extract from the output file (attached) is copied here:

R388 0x016600
R389 0x016700
R392 0x016804
R360 0x016801

As you can see, The first column decimal register index is different from the hex value in the second column.

For instance, R388 should have been R358, since 0x166 = 358. and this register section related to the PLL2_N registers.

Also, the last line is a replica of the previous one, with right decimal value but different register content.

 I have tested also v17.7.6, but the same file is generated.

R0 (INIT)	0x000090
R0	0x000000
R2	0x000200
R3	0x000306
R4	0x0004D1
R5	0x000563
R6	0x000650
R12	0x000C51
R13	0x000D04
R256	0x010014
R257	0x010108
R258	0x010200
R259	0x010340
R260	0x010410
R261	0x010500
R262	0x010600
R263	0x010722
R264	0x010814
R265	0x010908
R266	0x010A00
R267	0x010B70
R268	0x010C20
R269	0x010D00
R270	0x010E01
R271	0x010F11
R272	0x01100A
R273	0x01110E
R274	0x011200
R275	0x011360
R276	0x011400
R277	0x011500
R278	0x011601
R279	0x011711
R280	0x01180A
R281	0x01190E
R282	0x011A00
R283	0x011B60
R284	0x011C00
R285	0x011D00
R286	0x011E01
R287	0x011F11
R288	0x012014
R289	0x012108
R290	0x012200
R291	0x012300
R292	0x012410
R293	0x012500
R294	0x012601
R295	0x012722
R296	0x012814
R297	0x012908
R298	0x012A00
R299	0x012B40
R300	0x012C10
R301	0x012D00
R302	0x012E01
R303	0x012F22
R304	0x013014
R305	0x013108
R306	0x013200
R307	0x013340
R308	0x013410
R309	0x013500
R310	0x013601
R311	0x013722
R312	0x013800
R313	0x01390A
R314	0x013A00
R315	0x013BA0
R316	0x013C00
R317	0x013D00
R318	0x013E00
R319	0x013F23
R320	0x014088
R321	0x014100
R322	0x014200
R323	0x014303
R324	0x014400
R325	0x014500
R326	0x014600
R327	0x01471B
R328	0x014805
R329	0x014905
R330	0x014A35
R331	0x014B06
R332	0x014C00
R333	0x014D00
R334	0x014EC0
R335	0x014F7F
R336	0x015000
R337	0x015102
R338	0x015200
R339	0x015300
R340	0x01543C
R341	0x015500
R342	0x015601
R343	0x015700
R344	0x015896
R345	0x015900
R346	0x015A01
R347	0x015BD4
R348	0x015C20
R349	0x015D00
R350	0x015E1E
R351	0x015F0D
R352	0x016000
R353	0x016101
R354	0x01622D
R355	0x016300
R356	0x016400
R357	0x01650A
R358	0x016600
R359	0x016700
R361	0x016959
R362	0x016A20
R363	0x016B00
R366	0x016E13
R371	0x017310
R375	0x017700
R386	0x018200
R387	0x018301
R388	0x016600
R389	0x016700
R392	0x016804
R360	0x016801
R1365	0x055500

  • Hi Luca,

    I can see your issue but I was unable to replicate it in my own version of TICS Pro. Can you try redownloading TICS Pro?

    https://www.ti.com/tool/PLLATINUMSIM-SW#downloads

    Thanks,

    Michael

  • Hi Michael,

       I have tested again with a brand new v1.7.7.10 installation.

       Same results.

       I attach my project so that you can experiment with it.

    lmk04832-a40.tcs

  • This is an irritating and subtle bug that shows up when newer versions of a profile change the ordering of the registers in the raw registers page, combined with another irritating decision made years ago to mix the protocol into the exported data as one concatenated number.

    Older versions of the LMK04832 profile used to have a different register order, which placed the whole N-divider (R358, R359, R360) at the back of the register map. This was done for several reasons:

    • The order in the register map also dictates the order used by write all and read all register operations.
    • The PLL2_N divider LSBs trigger a VCO calibration when written.
    • The bits controlling the power to the PLL2 elements like the charge pump, VCO, and post-divider are all in a later register (R371).
    • Several of the default POR states for these bits prevent the calibration from ever completing successfully

    This creates a race condition when the registers are written between the calibration event and the subsequent fields that can interfere with the calibration. Interference with the VCO calibration degrades the phase noise and temperature stability. The quick workaround was to place all the registers containing PLL2_N at the back of the register map.

    However, only the LSBs of PLL2_N (R360) trigger calibration when written. So there is no need to out-of-order R358 or R359, and these were moved back at some point when the other devices in the LMK04832 family (LMK04832-SP, LMK04832-SEP, LMK04368-EP, LMK04714-Q1) were being released.

    In a better universe, we would have stored the address and data components separately. Instead, TICS Pro exports both .tcs files and hex register exports with the address and data components packed together, as though the components were being serialized for protocol writes. Because no one ever considered what would happen if the order of registers in old configurations and register exports did NOT match the order of registers in new configurations, for several iterations TICS Pro would naively assume that the name of the register (e.g. R388) was always correct. Consequently, when loading configurations or hex register imports, if the register name did NOT match the value (e.g. 0x16600), we loaded the whole value to the raw registers page, including the incorrect address component. This could subsequently be exported with mismatched register names and propagated to other TICS Pro instances, and generally caused chaos until the cause of this mess was discovered and patched.

    In modern versions of TICS Pro, the following behaviors are expected:

    • Mismatched name/value in TCS file: name is ignored, address component is deserialized from the value, register is loaded to a matching address if one exists or is skipped at the end with a notice in the activity log.
      • I confirmed this behavior is working as expected by loading your TCS file into TICS Pro 1.7.7.10. I observe in your TCS file that the data includes several incorrectly-labeled registers (R358, R359, R360); however, the activity log correctly documents the correct values for these registers when writing them during the loading process. It also skips now-missing registers R364 and R365, which were presumably removed during the profile updates described above.
      • ...
        [MODES]
        NAME00=R0 (INIT)
        VALUE00=144
        NAME01=R0
        VALUE01=0
        ...
        NAME119=R386
        VALUE119=98816
        NAME120=R387
        VALUE120=99073
        NAME121=R358
        VALUE121=91648
        NAME122=R359
        VALUE122=91904
        NAME123=R360
        VALUE123=92161
        NAME124=R1365
        VALUE124=349440
    • Mismatched name/value in hex file: Similar behavior, but documents the mislabeled registers.
      • Again, I confirmed this behavior is working as expected by loading your mismatched hex export file into TICS Pro 1.7.7.10.

    The behavior of TICS Pro 1.7.7.10 is as expected, and I do not see any erroneous mismatches between names and values being propagated out of 1.7.7.10 by save or export.

    So, how could it be the case that modern versions of TICS Pro are producing the incorrect behavior?

    • Are you certain you are using the version of TICS Pro you think you are using? You can check the version in the Help -> About TICS Pro menu.
    • Are you using a custom "user device" profile, instead of the normal profile? User device profiles show up under the Select Device -> User Devices submenu; if this submenu is grayed out, you are using the built-in device profile, eliminating this possibility.
    • TICS Pro saves a state file between sessions. This saved state should be treated identically to TCS files, but I do wonder if somehow that file is related. You can try deleting this file - it's located at "C:\ProgramData\Texas Instruments\TICS Pro\Configurations\Devices\Clock Generator-Jitter Cleaner (Dual Loop)\LMK04832\LMK04832.tcb"
  • Hi Derek,

        thanks for your explanation.

        - I am using TICS Pro v1.7.7.10: checked About TICS Pro menu and also window pane at startup.

       - The "user device" is grayed out, so the built-in device is used.

       - I have deleted the .tcb file, restarted TICS pro and load project tcs, export to hex => same output file.

         I have noticed that the .tcb has been created again, and it is identical to the deleted one.

       

  • Very interesting. Can you scroll to the bottom of the Raw Registers page and take a screenshot?