DaVinci Configurator Pro's variant feature allows a single project to contain parameter overrides for multiple hardware targets. Each hardware variant is defined by a criterion value, and parameters are conditionally assigned based on the active criterion.
# Python script to generate DaVinci variant config for 3 ECU hardware targets
# Target A: 8MHz crystal, CAN only, 256KB Flash
# Target B: 40MHz crystal, CAN + ETH, 1MB Flash
# Target C: 40MHz crystal, CAN + LIN, 512KB Flash
VARIANT_MATRIX = {
"ECU_A_CAN_ONLY": {
"Can/CanGeneral/CanOscFrequency": 8000000,
"Eth/EthGeneral/EthEnabled": False,
"Lin/LinGeneral/LinEnabled": False,
"NvM/NvMCommon/NvMDatasetSelectionBits": 1, # small DATASET
},
"ECU_B_CAN_ETH": {
"Can/CanGeneral/CanOscFrequency": 40000000,
"Eth/EthGeneral/EthEnabled": True,
"Lin/LinGeneral/LinEnabled": False,
"NvM/NvMCommon/NvMDatasetSelectionBits": 2,
},
"ECU_C_CAN_LIN": {
"Can/CanGeneral/CanOscFrequency": 40000000,
"Eth/EthGeneral/EthEnabled": False,
"Lin/LinGeneral/LinEnabled": True,
"NvM/NvMCommon/NvMDatasetSelectionBits": 2,
},
}
for variant, params in VARIANT_MATRIX.items():
generate_davinci_variant_arxml(variant, params)