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.

C6000 CG tool issue on McSPI performance calculation on DM8148 - DSP

Hi,

I have a question on C6000 CG tool.

The problem is,

 

I am using an application, which basically calculates the McSPI performance in interrupt mode of operation. The tools being used are,

 

1.      DSP CGT  - 7.2.0

2.      SYS/BIOS – 6.31.04.27

3.      IPC – 1.22.03.23

4.      XDC – 3.20.07.86

 

The BIOS PSP being used is, Centaurus 2.20.01 GA release.

 

Application executes properly in both release and debug mode, but when I look at the performance number, I have two observations,

 

1.      The time taken for the data transmission/reception is more in release mode than the debug mode. It should have been other way around.

2.      In debug mode, the time taken for transmission/reception are as expected (compared to previous Centaurus GA release), but in the release mode, it is almost four times more than the expected value.

 

If I use the DSP CG tool 7.2.0A10249, keeping all the other component as is (mentioned in the above list), the performance values are proper and as expected. In this case the time taken for the data transmission/reception is less in release mode than the debug mode (which is correct). So it looks like the problem is in the CG tool.

 

Is there any issue with the CG tool 7.2.0? Or

 

is there anything that I need to take care while using the CG tool 7.2.0?

 

Can anyone, please help me in resolving this issue?

 

 

Thanks and Regards,

 

Sandeep K

  • Version 7.2.0A10249 is an alpha release.  There was probably some performance bug in that release that is now fixed in version 7.2.0, a general release.  It is likely one or two key loops failed to software pipeline with the alpha release.  So, the first step in understanding the problem is finding the loop(s) which have the biggest performance difference between releases.

    Thanks and regards,

    -George

  • George,

    Georgem said:
    So, the first step in understanding the problem is finding the loop(s) which have the biggest performance difference between releases.

    There is no change in the source code of the driver or the application which measures the performnace.

    Is there anything specific which has changed with respect to the optimization, since the problem is in the release mode of operation.

    Thanks and Regards,

    Sandeep K

  • I apologize.  I misread your first post.  I thought you were saying the alpha release had a problem, and the v7.2.0 release performs well.  Of course, you are saying the opposite.  And you want to know how to get good performance out of v7.2.0.  

    Well, I suspect this will take a few posts back and forth to work this out.  Let's start here.

    Please show me the exact build options you use for the Release and Debug configurations.  Despite those names, something could be odd there.  And it is easy to check.

    Thanks and regards,

    -George

  • George,

    One more thing is, we are not observing this issue on ARM (The CG tool being used is 4.6.4).

    Please find the build option which I am using in my application,

    =========================================================================================================

    var Build = xdc.useModule('xdc.bld.BuildEnvironment');
    var Pkg = xdc.useModule('xdc.bld.PackageContents');


    var objList = [
        "./src/st_mcspi_test_app.c"
    ];

    /* Platforms supported */
    var plat_supported = [
                            'ti.platforms.evmDM8148',
                         ];

    for each (var targ in Build.targets)
    {
        if (targ.name == "C674")
        {
        for each (var plat in targ.platforms)
            {
                if (java.lang.String(plat).equals(plat_supported[0]))
                {
                    Pkg.addExecutable("Debug/st_mcspi_dm8148_bios_exe", targ, plat,
                       {copts:"-DCHIP_DM8148",lopts:"-x",profile: "debug",cfgScript:"st_mcspi_dm8148_bios_exe.cfg"}).addObjects(objList);

                    Pkg.addExecutable("Release/st_mcspi_dm8148_bios_exe", targ, plat,
                       {copts:"-DCHIP_DM8148",lopts:"-x",profile: "whole_program",cfgScript:"st_mcspi_dm8148_bios_exe.cfg"}).addObjects(objList);
                }
                else
                {
                    print("Unsupported platform" + java.lang.String(plat));
                }
            }
        }
        else
        {
            print("Error : Unsupported target : " + targ.name + " !");
        }
    }

    ===============================================================================================================

     

    Thanks and Regards,

    Sandeep K