CODECOMPOSER: 20.3.0 Graphs Changed/Broken

Part Number: CODECOMPOSER

Tool/software:

I recently updated to CCS 20.3.0 (for Mac, if it makes a difference), and the graph visualization feature is no longer working the way it used to. Now, instead of plotting a section of memory, the x-axis makes no sense whatsoever. It keeps increasing (to infinity?) and does not match the memory it is plotting. What I'd like to do is plot a section of memory, the way the graph used to do. This was incredibly useful when debugging algorithms storing signals, especially in circular buffers. Now, the 'Time' graph is virtually useless. This was one of my most valuable analysis tools, particularly the way it could plot several signal buffers simultaneously on the same axes. I'm devastated it's gone. Can we bring it back please? Or is there somewhere else I can access this tool now?

Also, if it makes a difference I'm using both 28P650 and 28F0037 DSPs, but the problem is the same for both, and I suspect will be the same for all processors.

  • Hi Doug,

    Thank you for reaching out. I'm sorry to hear that you are experiencing issues with graphs in the latest CCS version.

    There were some changes made to graphs in CCS 20.3, one being that the graph expression inputs now represent memory locations. For example, if you have a variable 'x' and want to graph values of 'x', you need to provide the address of x in the input. In other words, you would have to add an ampersand in the beginning. Input would have to be '&x' instead of 'x' like before. If this does not solve your problem, please provide me with screenshots of the graphs and graph properties, so I can provide further assistance. Thank you.

  • No, this is not the problem. I wish to view a section of memory in graphical form, which is how the graph function has always worked, even in the old Eclipse days, until literally last night when 20.3.0.14 was released.

    Let's say I declare a variable:

    float buffer[64]

    Before yesterday, I would open a graph view, type in 'buffer' as my variable (which is exactly the address of the buffer as you suggested), and the graph would plot 64 floating point numbers. This was a big improvement over Eclipse in that CCS would immediately know the variable type (float) and the size of the buffer (64) since it looked at my variable declaration. The x-axis would span 0-64, and the y-axis would auto-scale, unless I specified a scale. Great!

    Now, the data is nonsense. The x-axis keeps increasing indefinitely, and the numbers are completely arbitrary. Heres an example of a 64-point float buffer containing a single sin-wave period. It's fixed in memory, and unchanging:

    Then, after a few seconds, it looks like this!

    I don't know what this type of graph is supposed to do, but can you please bring back the previous graph tool. It was an excellent visualization and analysis tool. I struggle to see what this new graph would be useful for.

  • I've also had problems with this new version, I think what you are seeing is when "capacity" does not match the size of your buffer it will concatenate.  However even if you set them to the same size the x-axis values will shift by the buffer size on every update, this means unless you have it on autoscale the data moves out view.  The old behaviour needs to be reverted so that x always starts at 0 when viewing a buffer or at least some kind of check box to "reset X axis on update" ssine with this update using any of the pan or zoom functions with real time data is uesless.

  • Kemal, yes I've observed exactly what you're saying after playing around with the settings - settings which I'll add, have no purpose that I can see. Why would anyone want 'capacity' to be different from the size of the buffer variable, especially larger? What does that even mean? And the x-axis continually increasing makes no sense. What does that represent? Not real time.

    As you say, when measuring real-time signals, which is what we're all doing with these DSPs, this new 'time' graph is useless. I'd love for someone to explain the reasoning behind it. But most importantly, can TI please bring back the old graph, even as a separate setting.

  • It's most likely a bug not a feature, as for a single variable the behaviour makes sense and the fix should be relatively simple. However I'm not a fan of how type data is no longer passed on, it makes changing buffer sizes a pain as I have to go and change two fields in the graph settings.  I think I may go back to the pervious version if I can.

  • which is how the graph function has always worked, even in the old Eclipse days

    We did make an intentional change to the graph behavior in CCS 20.3.0. However, this behavior should be more similar to how the graphs behaved in CCS Eclipse. The x-axis increasing indefinitely (assuming continuous refresh is enabled) also occurred in CCS Eclipse. Same with the capacity vs buffer size difference.

  • But most importantly, can TI please bring back the old graph, even as a separate setting.

    "old" graph meaning CCS 20.2.0 behavior I assume?

  • There was a "hack" before you made the change that if I have a buffer that is auto refreshing, if I zoom out and then back in it would disable autoscale and keep my scales from the last update. When looking at real time data where the is large variation in the Y values per update, the autoscaling makes it impossible to get a feel of what is going on and as mentioned if you turn it off, the graph just moves out of view.

    If I can make a suggestion that you add a X and Y autoscale button in addition to XY one you have now, would be super easy to implement.

    The non incrementing x was also useful for example if I have a sample buffer and I wanted to zoom in to a certain part of the buffer whilst it updated, so being able to toggle that be helpful in those scenarios.

    I guess this kind of makes the graph tool work like a scope.

  • ok I can see now that if configured correctly, the graph can work like a scope. Maybe. It seems to me, though, that CCS is not inherently suited to this kind of thing, ie logging real-time data. Let's say I'm sampling the ADC at 1MHz into a single memory location. For CCS to correctly graph this as a scope, it would need to reliably poll the data over JTAG at >1MHz, which I'm not sure it can do. I could be mistaken about that, maybe I'm underestimating the JTAG port's capabilities.

    I would suggest that most engineers will sample the ADC into a buffer of some sort in DSP memory, which can then be analyzed by FFT or other signal processing methods. Being able to visualize that buffer is important for debugging both the acquisition and signal processing algorithms.

    Ki, I remember the Eclipse graphs did also have capacity and buffer size settings, but I also remember I would get a reliable x-axis value when plotting a buffer, corresponding to the buffer index. Still, I found the change to the Theia graphing (yes <=20.2.0) to be a huge improvement. In my opinion, the single best change between the two environments. Such a time saver! I suggest a separate graph type, so in addition to 'Graph - Time', maybe 'Graph - memory' or something to that effect. Is that possible?

  • Thank you both for providing your feedback on the graphs, it is very valuable and helps us improve our product to better meet your needs. We will be exploring ways to address the issue with the x axis for our next release.

    - Sophia