powertrain-build/docs/todo_list.md
Henrik Wahlqvist 65c1d746a7 Copy from Volvo Cars local project
We don't transfer git history since it may contain proprietary data that
we cannot have in an open sources version.

Change-Id: I9586124c1720db69a76b9390e208e9f0ba3b86d4
2024-05-29 08:03:54 +02:00

10 KiB
Raw Blame History

ToDo items

This is a temporary list of todo items for the PCC build system pilot. These should be moved to JIRA at some point in time.

  • How to handle State Flow function classes, to avoid static data to not be allocated to a defined memory area? Right now they are set to STATIC_FNC, but probably they shoud be set to default, and the Templates should be updated in the TL-data dictionary

    • Reset of subsystems and ports

    • State flow objects.

Matlab

  • Change the parsing for configurations, so that the workaround for enabled subsystems with reset (no TL-preprocessor only macro), is detected as a configuration

  • Create a separate class for the ts datastore block. Now it uses EXTERN_GLOBAL_ALIAS, which is used for all Core-blocks (low prio, as all models uses the ts-block, which means that the header file VcUnitTsDefines is included in all models anyway)

  • Remove the class EXTERN_CAL_ALIAS? Is this class used for anything?

  • Check that the new configuration with TL pre-processor block, works in MIL. Probably the header file MT_Compileswitches is needed for the simulation for it to work.

    • Add the matlab ts variable to the constant to the macro definition block.
  • Change the format of the configs key to python format (which saves time in the total build)

  • NVM-ram definition script - parse stateflow for NVM classes!

    • Make a separate Matlab function for parsing stateflow variables
  • generateTLUnit

    • Remove workaround for a TL-problem in replaceCodeSwitch.m, where a macro cannot be used as a constant and a TL preprocessor block remove if that is solved in TL.

Python

  • How will the interface check work with models with different names, but the same signal names? Test!

  • Where to remove VcDebug*? consider removing them from the Unitdefinition, and adding them in the buildsystem if debug is enabled

  • Document the format for the LocalDefines.h files

  • Consider refactoring Local defines. Make that file a json definition, and include the result in the global config header file.

  • Consider using either format or % for string formatting. This is now mixed in the code

  • The names for the debug switches are not according to the naming convention. Shall we correct his?

  • Consider if we shall separate Bool and the other one byte data types, as some CPUs have HW bit addressing (think infineon has that)?

  • Check the matlab scripts parseModelInfo.m and parseCodeSwitches.m and find the bug, which generates empty configs. Should be ['all'].

    • In VcPpmPsm: yVcEc_B_AutoStartRcfSet, yVcEc_B_CEMNodeAlive, sVcScIn_v_VehSpdLgtMax, and sVcEc_Te_EngClnt have empty configs.
    • PROBABLE ERROR Input signals which are unused due to using goto-blocks without corresponding from-blocks. When opening a model, this is checked for, but only on the top level subsystem. Fix this check, so that it runs on all levels of subsystems.
  • Add a method for retreiving the core ids from the unit definitions file (see :doc:unit_config)

Done items

  • The UnitConfigs._parse_all_unit_configs method doesnt seem to parse all json-configs. If there is several versions of one unit. E.g. VcAesSupM and VcAesSupM__gen3, both of these unit-config files seems not to be parsed.

    • Only parses units in the units.json config list. This list was not updated.
    • Dependability functions (and even Vcc_Lib blocks) uses a class CVC_VAR_STAT. This class is currently not included in the powertrain_build TL-DD. Add this class. Furthermore, how to handle the ASIL classes for lib-block which set classes in the init-scripts.
  • Variables are both in "outputs" and "locals" (example VcAesSupM__gen3, yVcAesSupM_B_SupChrgrErr)

  • The parsing of variables for the json file does not remove the "__gen3" suffix for variable names.

  • Write email to dSpace regarding:

    • Optimization of pre-processor directives. Why are they considered as control flow? Give example of calibration constant cVcAesVnt_B_UseOldBrkSig, which is removed even though it is not "MOVEABLE".
  • A2L-file is currently generated by TL => All parameters are included in the A2L in the final version the unit definition file (.json). mergeA2l checks the configuration for all labels, variables, and function definition, and removes them if they are not included.

  • Remove the local defs from the FeatureCOnfigs.gen_unit_cfg_header_file() (VcCodeSwDefines.h).

  • Generation of the Ts macro for all the units. This is needed to reflect the schedulilng frequency of the function in the current project.

    • The models need to be updated with another name than the 'ts'. E.g. ts_[unit_name], and the class should be changed to an external macro. Add this change to the model conversion script.
    • DONE - A header file which defines the scheduling defines for all units.
    • The above file needs to be included in all files.
    • DONE - a matlab function updateTsDatastore.m is created.
  • OPortMvd.mdl does not seem to have the outports moved.

    • LookUnderMasks has to be 'on', as the top.
  • Handling of NVM. I.E.

    • NVM-Ram blocks includes references to CVC_EXT8/16/32 in the mask init code -> they need to be replaced by the new blocks.
    • Parse the simulink models, and generate the unit definition information for NVM (Matlab-script).
    • Generation of structs and defines? Check the Matlab implementation for a specification. There is no matlab-implementation!
  • generateTLUnit

    • When generating units in isolation, it is possible to get the same file name for definitions and tables. E.g. tl_defines_AF.h.
    • par.m files are not loaded properly in the init-script. Update to latest gen3 env will probably solve this problem.
    • Add the newScripts folder and subfolders to the matlab path (init script?).
    • Run the postprocess_source_files after code generation on all c&h-files.
  • Other Matlab issues:

    • The new NVM block gives algebraic loopbacks in some implementations, the block needs to be redesigned to be able to be a drop in replacement for the old block.
  • Add VcConst source code to output/SourceCode.

  • Generate did defines does not work, no Floats are defines! Fix this!

  • Add change models to generate the init function, and not the Restart function.

    • No, the code gets messier as the INIT function is reserved for the init of the DISP* classes. Keep the old way of generating the code.
  • Check the debug switches for input and output parametes. Are both allowed, if so check that the debug functions are called both at the beginning and the end of the time raster, in the matlab implementation.

    • Matlab has debug_in and debug_out, uppdate the gen debug script and the sched script.
  • Missing #include "CVC_DISP_END.h".

    • VcVmcEm.h is missing a #include “CVC_DISP_END.h” at line 4423ish. Is this a TL code generation bug? rerun codegen for VcVmcEm.
    • VcTrsmShfShkMon.h at line 1451.
    • VcSpMon.h at line 911.
    • VcSpEc.c line ? (after defines section).
    • VcDeTfr.c line 605 (after defines section).
  • Is The LocalConfig file is overwritten after a model update? No not any more.

  • StateFlow objects are not possible to remove with TL-preprocessor blocks.

    • Identify State flow models which are under TL preprocessor blocks, and refactor those models, by moving the stateflow model to a separate simulink model.
  • Model or DD-fault : The init function is not in the CVC_CODE section! (The same behaviour exists in the current build as well). Updated DD, set property Restart function name to "default".

  • replaceNVMBlocks

  • split unit json-config file into two files. One for the interface, and one for the rest of the info. The interface config needs to be loaded for all units to perform the interface check. The other file only needs to be loaded for the units within the project being built.

Moved to JIRA

  • Add a prefix to subsystem names which will avoid compilation errors when, subsystem names does start with numbers after the structure number. E.g. 1210_12VStartEnable should not be allowed.

  • Search for all constant blocks, and idetify which includes a codeswitch. Replace the identified blocks with macros (use the VccLib block).

  • Handling of NVM. I.E.

    • Vectors are not supported. Add vector support!
    • Memory from earlier codegenerations not implemented. Implement!
    • A2L file generation for NVM-ram needs to be IMPLEMENTED!
  • Local defines:

    • Add the model name as a prefix to all local defines, to ensure a separate namespace. This is needed in the scripts, as all names of the defines all units are aggregated to one dict.
  • Dependability models have the wrong classes, so they will use the normal memory areas. The models need to be updated with the new TL dependabililty variable classe, which are defined in the updated DD.

  • Update powertrain_build to handle classes with the format "ASIL/CVC_*ASIL[ABC]".

  • Build shall fail at the end, and all errors shall presented (avoids running the script many times, and gradually finding the latent errors) (This could be a requirement).

    • Refactor code so that each function stores errors, and returns them at the end.
  • Consider moving the reading of config files to the classes that abracts the configs.

  • VcCoreDummy.c does not include the supplier header file. This must be fixed, preferably via a supplier independent file.

    • Have included VcSupplierCoreAbstraction.h, it contains some defines, which might make it not compile. Needs to be tested.
  • All functions should return an error log, and continue the build. Stop the build at the end, and present all errors.

  • The debug functions are not scheduled. Add this!

    • Make it an option to generate debug functionality (this could be removed for production SW).
    • Currently all variables regardless of the time rasters they are used in, is set in the beginning of each time raser. This costs some extra cpu performance. Consider changing this.
  • If the legacy excel configuration files are going to be used for more than a few more months, write a project consistency check that checks that all config files have the same projects in them. In the test project, projects were missing in the SPM_Codeswitch_Setup.xls, that is defined in the SPMEMSInterfaceRequirements.xls.

  • Move the tmp source code generation folder to a separate location outside the models directory (as it is not possible to delete them until matlab is closed).