1<?xml version="1.0" encoding="utf-8"?> 2 3 4<!--**************************************************************************** 5* \file evtgen.cypersonality 6* \version 1.0 7* 8* \brief 9* Event Generator personality description file. 10* 11******************************************************************************** 12* \copyright 13* Copyright 2022 Cypress Semiconductor Corporation 14* SPDX-License-Identifier: Apache-2.0 15* 16* Licensed under the Apache License, Version 2.0 (the "License"); 17* you may not use this file except in compliance with the License. 18* You may obtain a copy of the License at 19* 20* http://www.apache.org/licenses/LICENSE-2.0 21* 22* Unless required by applicable law or agreed to in writing, software 23* distributed under the License is distributed on an "AS IS" BASIS, 24* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 25* See the License for the specific language governing permissions and 26* limitations under the License. 27*****************************************************************************--> 28 29<Personality id="evtgen" name="EVTGEN" version="1.0" xmlns="http://cypress.com/xsd/cyhwpersonality_v7"> 30 <Dependencies> 31 <IpBlock name="mxevtgen"/> 32 <Resource name="evtgen"/> 33 </Dependencies> 34 <ExposedMembers /> 35 <Parameters> 36 <!-- PDL documentation --> 37 <ParamDoc id="pdlDoc" name="Configuration Help" group="Overview" default="file:///`${cy_libs_path()}`/docs/pdl_api_reference_manual/html/group__group__evtgen.html" linkText="Open EVTGEN Documentation" visible="true" desc="Opens the Peripheral Driver Library Documentation" /> 38 39 <ParamBool id="has_clk_hf3" name="has_clk_hf3" group="" default="`${(hasBlock("srss[0].clock[0].hfclk[3]")) }`" visible="false" editable="false" desc="" /> 40 41 <ParamBool id="debug" name="debug" group="Internal" default="false" visible="false" editable="false" desc="" /> 42 <ParamString id="InstNumber" name="InstNumber" group="Internal" default="`${getInstNumber("evtgen")}`" visible="`${debug}`" editable="false" desc="EVTGEN Instance name number." /> 43 44 <!-- Counter --> 45 <ParamString id="sourceClockRsc" name="Source Clock" group="Internal" default="`${has_clk_hf3 ? "srss[0].clock[0].hfclk[3]" : "srss[0].clock[0].hfclk[1]"}`" visible="`${debug}`" editable="false" desc="" /> 46 <ParamString id="sourceLfClk" name="Low Frequency Clock" group="Internal" default="srss[0].clock[0].lfclk[0]" visible="`${debug}`" editable="false" desc="" /> 47 48 <ParamBool id="srcNotUsed" name="Clock Source Enabled" group="Internal" default="`${isBlockUsed(sourceClockRsc)}`" visible="`${debug}`" editable="false" desc="" /> 49 <ParamBool id="error" name="Clock Error" group="Internal" default="`${!srcNotUsed || getExposedMember(sourceClockRsc, "error")}`" visible="`${debug}`" editable="false" desc="" /> 50 51 <ParamRange id="sourceFreq" name="sourceFrequency" group="Internal" default="`${!error ? getExposedMember(sourceClockRsc, "frequency") : 0}`" min="0" max="350000000" resolution="1" visible="`${debug}`" editable="false" desc="" /> 52 <ParamString id="accuracy" name="Accuracy" group="Internal" default="`${!error ? getExposedMember(sourceClockRsc, "accuracy") : 0}`" visible="`${debug}`" editable="false" desc="" /> 53 <ParamString id="sourceFrequencyInfo" name="Reference Clock" group="Counter" default="`${has_clk_hf3 ? "CLK_HF3" : "CLK_HF1"}`" visible="true" editable="false" desc="Source clock frequency in Active power mode" /> 54 55 <ParamBool id="srcLfNotUsed" name="Clock Source Enabled" group="Internal" default="`${isBlockUsed(sourceLfClk)}`" visible="`${debug}`" editable="false" desc="" /> 56 <ParamBool id="errorLf" name="Low Frequency Error" group="Internal" default="`${!srcLfNotUsed || getExposedMember(sourceLfClk, "error")}`" visible="`${debug}`" editable="false" desc="" /> 57 58 <ParamRange id="sourceLowFreq" name="Source Low Frequency" group="Internal" default="`${!errorLf ? getExposedMember(sourceLfClk, "frequency") : 0}`" min="0" max="350000000" resolution="1" visible="`${debug}`" editable="false" desc="" /> 59 <ParamString id="accuracyLF" name="Accuracy LF" group="Internal" default="`${!errorLf ? getExposedMember(sourceLfClk, "accuracy") : 0}`" visible="`${debug}`" editable="false" desc="" /> 60 <ParamString id="sourceLowFrequencyInfo" name="Low Frequency Clock" group="Counter" default="CLK_LF (`${formatFrequency(sourceLowFreq,accuracyLF)}`)" visible="true" editable="false" desc="Source clock frequency in Deep Sleep power mode" /> 61 62 <ParamRange id="Tick" name="Counter Tick" group="Counter" default="1" min="1" max="100000000" resolution="1" visible="true" editable="true" desc="Set the EVTGEN customized period (in Hz)." /> 63 64 <ParamBool id="tickIsValid" name="Counter Tick is valid" group="Counter" default="`${(sourceFreq % Tick) == 0 ? 0 : 1}`" visible="`${debug}`" editable="false" desc="" /> 65 <ParamBool id="dividerIsValid" name="Check Divider" group="Counter" default="`${(sourceFreq / Tick) < 255.0 ? 0 : 1}`" visible="`${debug}`" editable="false" desc="" /> 66 67 <ParamChoice id="ratioCtrlMode" name="Ratio Control Mode" group="Counter" default="CY_EVTGEN_RATIO_CONTROL_SW" visible="true" editable="true" desc="Set the Ratio control mode." > 68 <Entry name="Software Control" value="CY_EVTGEN_RATIO_CONTROL_SW" visible="true" /> 69 <Entry name="Hardware Control" value="CY_EVTGEN_RATIO_CONTROL_HW" visible="true" /> 70 </ParamChoice> 71 72 <ParamRange id="ratioValue" name="Ratio Value" group="Counter" default="`${(cast(float,Tick) / cast(float,sourceLowFreq))}`" min="0" max="65535" resolution="0.00000001" visible="true" editable="false" desc="Theoretical (ideal) ratio of Tick Counter and Low Frequency Clock frequencies." /> 73 74 <ParamChoice id="ratioDynMode" name="Ratio Dynamic Mode" group="Counter" default="CY_EVTGEN_RATIO_DYNAMIC_MODE1" visible="true" editable="true" desc="Set the Ratio value dynamic mode. Ratio calculation is based on a weighted average operation. Small weights coefficients respond more quickly to changes in the number of Counter Tick cycles per Low Frequency Clock cycle than larger weights coefficients. " > 75 <Entry name="RatioDynamicMode_0" value="CY_EVTGEN_RATIO_DYNAMIC_MODE0" visible="true" /> 76 <Entry name="RatioDynamicMode_1" value="CY_EVTGEN_RATIO_DYNAMIC_MODE1" visible="true" /> 77 <Entry name="RatioDynamicMode_2" value="CY_EVTGEN_RATIO_DYNAMIC_MODE2" visible="true" /> 78 <Entry name="RatioDynamicMode_3" value="CY_EVTGEN_RATIO_DYNAMIC_MODE3" visible="true" /> 79 <Entry name="RatioDynamicMode_4" value="CY_EVTGEN_RATIO_DYNAMIC_MODE4" visible="true" /> 80 <Entry name="RatioDynamicMode_5" value="CY_EVTGEN_RATIO_DYNAMIC_MODE5" visible="true" /> 81 <Entry name="RatioDynamicMode_6" value="CY_EVTGEN_RATIO_DYNAMIC_MODE6" visible="true" /> 82 <Entry name="RatioDynamicMode_7" value="CY_EVTGEN_RATIO_DYNAMIC_MODE7" visible="true" /> 83 </ParamChoice> 84 85 <!-- Comparator --> 86 <Repeat count="16"> 87 <ParamBool id="comp$idx_is_en" name="Enable" group="Comparator$idx" default="false" visible="true" editable="true" desc="Include Comparator structure $idx in scan"/> 88 <ParamSignal name="Trigger Output" port="tr_out[$idx]" group="Comparator$idx" visible="true" desc="Trigger Output" canBeEmpty="true"> 89 </ParamSignal> 90 <ParamBool id="triggerIsConnct$idx" name="Check Connection Trigger" group="Comparator$idx" default="`${hasConnection("tr_out", $idx)}`" visible="`${debug}`" editable="false" desc="Checks whether there is a Trigger connected and enabled." /> 91 <ParamBool id="comp$idx_cond_en" name="Conditions Enable" group="Comparator$idx" default="`${comp$idx_is_en || triggerIsConnct$idx}`" visible="`${debug}`" editable="false" desc="Check conditions enable comparator."/> 92 93 <ParamChoice id="comp$idx_wm" name="Work Mode" group="Comparator$idx" default="CY_EVTGEN_ACTIVE_FUNCTIONALITY" visible="`${comp$idx_cond_en}`" editable="true" desc="Set comparator work mode." > 94 <Entry name="Active" value="CY_EVTGEN_ACTIVE_FUNCTIONALITY" visible="true" /> 95 <Entry name="Deep Sleep" value="CY_EVTGEN_DEEPSLEEP_FUNCTIONALITY" visible="true" /> 96 </ParamChoice> 97 <ParamChoice id="comp$idx_trgMode" name="Trigger Mode" group="Comparator$idx" default="CY_EVTGEN_LEVEL_SENSITIVE" visible="`${comp$idx_cond_en}`" editable="true" desc="Set trigger mode." > 98 <Entry name="Level Sensitive" value="CY_EVTGEN_LEVEL_SENSITIVE" visible="true" /> 99 <Entry name="Edge Sensitive" value="CY_EVTGEN_EDGE_SENSITIVE" visible="true" /> 100 </ParamChoice> 101 <ParamBool id="deepSleepIsEN$idx" name="Deep Sleep is EN" group="Counter" default="`${comp$idx_wm eq CY_EVTGEN_DEEPSLEEP_FUNCTIONALITY ? 1 : 0}`" visible="`${debug}`" editable="false" desc="" /> 102 <ParamRange id="comp$idx_actV" name="Active Comparator Value" group="Comparator$idx" default="1" min="1" max="4294967296" resolution="1" visible="`${comp$idx_cond_en}`" editable="true" desc="Set comparator threshold in Active power mode" /> 103 <ParamRange id="comp$idx_dsV" name="Deep Sleep Comparator Value" group="Comparator$idx" default="1" min="1" max="4294967296" resolution="1" visible="`${comp$idx_cond_en && deepSleepIsEN$idx}`" editable="true" desc="Set comparator threshold in DeepSleep power mode" /> 104 <ParamRange id="eventActivePeriod$idx" name="Period Active Event" group="Comparator$idx" default="`${(1/cast(float,Tick)) * comp$idx_actV}`" min="0" max="1000000" resolution="0.00000001" visible="`${comp$idx_cond_en}`" editable="false" desc="Period of the active event in seconds" /> 105 <ParamRange id="eventDeepsleepPeriod$idx" name="Period Deep Sleep Event" group="Comparator$idx" default="`${(cast(float, comp$idx_dsV)/(cast(float,sourceLowFreq) * cast(float, ratioValue)))}`" min="0" max="1000000" resolution="0.00000001" visible="`${comp$idx_cond_en && deepSleepIsEN$idx}`" editable="false" desc="Period of the deep sleep event in seconds" /> 106 </Repeat> 107 108 <!-- Advanced --> 109 <ParamBool id="inFlash" name="Store Config in Flash" group="Advanced" default="false" visible="true" editable="true" desc="Controls whether the configuration structure is stored in flash (const, true) or SRAM (not const, false)." /> 110 </Parameters> 111 112 <DRCs> 113 <!--EVTGEN DRCs--> 114 <DRC type="ERROR" text="Source clock for EVTGEN is not enabled" condition="`${!srcNotUsed}`" > 115 <FixIt action="ENABLE_BLOCK" target="`${sourceClockRsc}`" value="" valid="true" /> 116 </DRC> 117 <DRC type="ERROR" text="Source low frequency clock for EVTGEN is not enabled" condition="`${!srcLfNotUsed}`" > 118 <FixIt action="ENABLE_BLOCK" target="`${sourceLfClk}`" value="" valid="true" /> 119 </DRC> 120 <DRC type="ERROR" paramId="Tick" text="The ratio of Reference Clock and the Counter Tick frequencies must be an integer." condition="`${tickIsValid}`" /> 121 <DRC type="ERROR" paramId="Tick" text="The ratio of the Reference Clock and the Counter Tick frequencies must be less than 255." condition="`${dividerIsValid}`" /> 122 </DRCs> 123 124 <ConfigFirmware> 125 <ConfigInclude value="cy_evtgen.h" include="true" /> 126 <ConfigInclude value="cy_syslib.h" include="true" /> 127 128 <ConfigDefine name="`${INST_NAME}`_HW" value="EVTGEN`${InstNumber}`" public="true" include="true" /> 129 <ConfigDefine name="`${INST_NAME}`_IRQ" value="evtgen_`${InstNumber}`_interrupt_IRQn" public="true" include="true" /> 130 <ConfigDefine name="`${INST_NAME}`_DPSLP_IRQ" value="evtgen_`${InstNumber}`_interrupt_dpslp_IRQn" public="true" include="true" /> 131 132 <ConfigStruct name="`${INST_NAME}`_config" type="cy_stc_evtgen_config_t" const="`${inFlash}`" public="true" include="true" > 133 <Member name="frequencyRef" value="`${sourceFreq}`" /> 134 <Member name="frequencyLf" value="`${sourceLowFreq}`" /> 135 <Member name="frequencyTick" value="`${Tick}`" /> 136 <Member name="ratioControlMode" value="`${ratioCtrlMode}`" /> 137 <Member name="ratioValueDynamicMode" value="`${ratioDynMode}`" /> 138 </ConfigStruct> 139 140 <ConfigStruct name="`${INST_NAME}`_comp$idx_config" type="cy_stc_evtgen_struct_config_t" const="`${inFlash}`" public="true" include="`${comp$idx_cond_en}`" repeatCount="16" > 141 <Member name="functionalitySelection" value="`${comp$idx_wm}`" /> 142 <Member name="triggerOutEdge" value="`${comp$idx_trgMode}`" /> 143 <Member name="valueActiveComparator" value="`${comp$idx_actV}`" /> 144 <Member name="valueDeepSleepComparator" value="`${comp$idx_dsV}`" /> 145 </ConfigStruct> 146 </ConfigFirmware> 147</Personality> 148