84 lines
2.1 KiB
JavaScript
84 lines
2.1 KiB
JavaScript
const { getDefaultValue } = system.getScript("./defaultValue.js");
|
|
|
|
exports = {
|
|
displayName: "Pin Function",
|
|
config: [],
|
|
validate: (inst, { $ipInstance,logError, logWarning }) => {
|
|
let min = inst.$ipInstance.Min;
|
|
let max = inst.$ipInstance.Max;
|
|
const derivedClock = inst.XTAL_Freq;
|
|
|
|
let minMsg = "Configured " + inst.$ipInstance.name + " = " + derivedClock + " MHz. Minimum " + inst.$ipInstance.name + " frequency supported = " + inst.$ipInstance.Min + " MHz";
|
|
let maxMsg = "Configured " + inst.$ipInstance.name + " = " + derivedClock + " MHz. Maximum " + inst.$ipInstance.name + " frequency supported = " + inst.$ipInstance.Max + " MHz";
|
|
|
|
if (derivedClock < min)
|
|
{
|
|
if (inst.warning)
|
|
{
|
|
logWarning(minMsg, inst, inst.$ipInstance.outPins[0].name)
|
|
}
|
|
else
|
|
{
|
|
logError(minMsg, inst, inst.$ipInstance.outPins[0].name)
|
|
}
|
|
}
|
|
if (derivedClock > max)
|
|
{
|
|
if (inst.warning)
|
|
{
|
|
logWarning(maxMsg + inst.$ipInstance.Max + " MHz", inst, inst.$ipInstance.outPins[0].name)
|
|
}
|
|
else
|
|
{
|
|
logError(maxMsg , inst, inst.$ipInstance.outPins[0].name)
|
|
}
|
|
}
|
|
},
|
|
extendConfig: ({ $ipInstance }) => {
|
|
if (!_.isEmpty($ipInstance.outPins)) {
|
|
return [
|
|
{
|
|
name: "Description",
|
|
displayName: "Description",
|
|
default: $ipInstance.description,
|
|
readOnly: true
|
|
},
|
|
{
|
|
name: "XTAL_Freq",
|
|
displayName: "XTAL Frequency (in MHz)",
|
|
default: $ipInstance.outputValue,
|
|
readOnly: false
|
|
},
|
|
{
|
|
name: $ipInstance.outPins[0].name,
|
|
default: 0,
|
|
getValue: (inst) => inst.XTAL_Freq,
|
|
readOnly: false,
|
|
hidden: true
|
|
},
|
|
{
|
|
name: "minXTAL",
|
|
displayName: "Min XTAL Frequency supported (in MHz)",
|
|
default: $ipInstance.Min,
|
|
readOnly: true
|
|
},
|
|
{
|
|
name: "maxXTAL",
|
|
displayName: "Max XTAL Frequency supported (in MHz)",
|
|
default: $ipInstance.Max,
|
|
readOnly: true
|
|
}
|
|
];
|
|
} else {
|
|
// Override the input pin so it's visible with a tool tip
|
|
return [{
|
|
name: $ipInstance.description,
|
|
default: 0,
|
|
description: "Custom tool tip",
|
|
hidden: false,
|
|
getValue: () => { } // Tool will update
|
|
}]
|
|
}
|
|
},
|
|
};
|