c2000ware-core-sdk/driverlib/.meta/clocktree/clockTreeComponents.js
2023-06-24 11:35:38 +05:30

188 lines
4.7 KiB
JavaScript

let Common = system.getScript("/driverlib/Common.js");
if (("system" === system.context || "CPU1" === system.context) && system.deviceData.clockTree)
{
let Support = system.getScript("./support.js");
const typeMap = {
Oscillator: "/driverlib/clocktree/oscillators.js",
PinFunction: "/driverlib/clocktree/pinFunction.js",
Mux: "/driverlib/clocktree/mux.js",
Divider: "/driverlib/clocktree/divider.js",
Multiplier: "/driverlib/clocktree/multiplier.js",
Adder: "/driverlib/clocktree/adder.js",
Gate: "/driverlib/clocktree/unknown.js",
NamedConnection: "/driverlib/clocktree/namedConnection.js",
unknown: "/driverlib/clocktree/unknown.js",
};
let FreqLabels = _.chain(system.deviceData.clockTree.connectivity).filter((c)=>!_.isEmpty(c.displayName)).map((c)=>c.name).value()
let namedConnection = _.chain(system.deviceData.clockTree.ipInstances).filter((c) => (c.shape === "NamedConnection")).map((c)=>c.name).value()
let InputClock = _.chain(system.deviceData.clockTree.ipInstances).filter((c) => (c.displayName === "OSCCLK")).map((c)=>c.name).value()
FreqLabels = FreqLabels.concat(namedConnection)
function defaultView(ipInstance) {
return {
displayName: (ipInstance.description ?? ipInstance.name).replace(/domain/ig,''),
ipInstances: [ipInstance.name],
algorithm: "fanIn",//"fanInAndOut",
frequencyLabels: FreqLabels,
}
}
let All_Instances = _.map(system.deviceData.clockTree.ipInstances, (i) => i.name)
let SYSCLK_Entries = [
"SYSCLK"
]
let CPUCLK_Entries = ["PLLSYSCLK", "CPU", "CPUCLK", "SYSCLK", "CPUCLK_domain"]
var device = system.deviceData.device
var brokenConnection1
switch(device)
{
case 'F2837xD':
brokenConnection1 = Support.F2837xD_bc
break
case 'F2837xS':
case 'F2807x':
brokenConnection1 = Support.F2837xS_F2807x_bc
break
case 'F2838x':
brokenConnection1 = Support.F2838x_bc
break
case 'F28004x':
case 'F28002x':
case 'F280013x':
brokenConnection1 = Support.F28004x_F280013x_bc
break
case 'F28003x':
brokenConnection1 = Support.F28003x_bc
break
case 'F280015x':
brokenConnection1 = Support.F280015x_bc
break
}
if(device == "F2837xD" || device == "F2838x")
{
var myipInstance1 = ["CPU1CLK_domain", "CPU2CLK_domain", "CPU1_SYSCLK_domain", "CPU2_SYSCLK_domain"]
var myipInstance2 = ["CPU1_SYSCLK", "CPU2_SYSCLK"]
}
else
{
var myipInstance1 = ["CPUCLK", "SYSCLK"]
var myipInstance2 = ["SYSCLK"]
}
All_Instances = All_Instances.concat(FreqLabels)
//Beta version: reasonableLayout is not used in beta version of clocktree tool
//Purpose: Used for customized Layout.
const reasonableLayout = {
"INTOSC1" : { layer: 0, position: 1 },
"INTOSC2" : { layer: 0, position: 2 },
"XTAL" : { layer: 0, position: 3 },
"OSCCLKSRCSEL" : { layer: 1, position: 0 },
"PLL_IMULT" : { layer: 4, position: 1 },
"PLL_FMULT" : { layer: 4, position: 2 },
"PLL_ADD" : { layer: 5, position: 2 },
"PLL_ODIV" : { layer: 6, position: 2 },
"PLL_Group" : { layer: 3, position: 3 },
};
const tree = [
{
displayName: "Complete ClockTree",
entries: [
{
displayName: "ClockTree",
ipInstances: All_Instances,
frequencyLabels: FreqLabels,
brokenConnections: brokenConnection1,
},
// {
// displayName: "ClockTree1",
// ipInstances: ["SYSCLK", "CANA_CLOCK_domain","External_Clock", "CANA_CLOCK_domain"],
// frequencyLabels: FreqLabels,
// algorithm: "everythingBetween",
// brokenConnections:
// [
// { instName: "CANABCLKSEL", pinName: "XTAL", name: "XTAL" },
// ]
// },
],
},
// {
// displayName: "Broken Connections",
// entries: [
// {
// displayName: "1_InputClock, CPUCLK, SYSCLK",
// ipInstances: myipInstance1,
// frequencyLabels: FreqLabels,
// algorithm: "fanIn"
// },
// {
// displayName: "2_Other_PeripheralClocks",
// ipInstances: myipInstance2,
// frequencyLabels: FreqLabels,
// brokenConnections: brokenConnection2,
// algorithm: "fanOut"
// },
// ]
// },
{
displayName: "Clock domain view",
entries: _.chain(system.deviceData.clockTree.ipInstances)
.filter((ipInstance) => _.endsWith(ipInstance.name, "domain"))
.map(defaultView)
.value(),
}
];
const views = [
{
name: "/driverlib/clocktree/summaryView.xdt",
displayName: "Clock Tree Summary",
viewType: "markdown"
}
];
exports = {
// topModules: [{
// displayName: "Modules",
// modules: ["/modules/basic.js"],
// }],
displayName: "ClockTree Tool",
clockTree: {
typeMap,
tree,
},
views,
templates: [
{
name: "/driverlib/clocktree/clocktree.h.xdt",
outputPath: "clocktree.h",
alwaysRun: true,
ignoreErrors: false
},
]
};
}
else
{
}