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="debug" name="debug" group="Internal" default="false" visible="false" editable="false" desc="" />
40    <ParamString id="InstNumber" name="InstNumber" group="Internal" default="`${getInstNumber(&quot;evtgen&quot;)}`" visible="`${debug}`" editable="false" desc="EVTGEN Instance name number." />
41
42    <!-- Counter -->
43    <ParamString id="sourceClockRsc" name="Source Clock" group="Internal" default="srss[0].clock[0].hfclk[3]" visible="`${debug}`" editable="false" desc="" />
44    <ParamString id="sourceLfClk" name="Low Frequency Clock" group="Internal" default="srss[0].clock[0].lfclk[0]" visible="`${debug}`" editable="false" desc="" />
45
46    <ParamBool id="srcNotUsed" name="Clock Source Enabled" group="Internal" default="`${isBlockUsed(sourceClockRsc)}`" visible="`${debug}`" editable="false" desc="" />
47    <ParamBool id="error" name="Clock  Error" group="Internal" default="`${!srcNotUsed || getExposedMember(sourceClockRsc, &quot;error&quot;)}`" visible="`${debug}`" editable="false" desc="" />
48
49    <ParamRange id="sourceFreq" name="sourceFrequency" group="Internal" default="`${!error ? getExposedMember(sourceClockRsc, &quot;frequency&quot;) : 0}`" min="0" max="50000000" resolution="1" visible="`${debug}`" editable="false" desc="" />
50    <ParamString id="accuracy"  name="Accuracy"  group="Internal" default="`${!error ? getExposedMember(sourceClockRsc, &quot;accuracy&quot;) : 0}`" visible="`${debug}`" editable="false" desc="" />
51    <ParamString id="sourceFrequencyInfo" name="Reference Clock" group="Counter" default="CLK_HF3 (`${formatFrequency(sourceFreq,accuracy)}`)" visible="true" editable="false" desc="Source clock frequency in Active power mode" />
52
53    <ParamBool id="srcLfNotUsed" name="Clock Source Enabled" group="Internal" default="`${isBlockUsed(sourceLfClk)}`" visible="`${debug}`" editable="false" desc="" />
54    <ParamBool id="errorLf" name="Low Frequency Error" group="Internal" default="`${!srcLfNotUsed || getExposedMember(sourceLfClk, &quot;error&quot;)}`" visible="`${debug}`" editable="false" desc="" />
55
56    <ParamRange id="sourceLowFreq" name="Source Low Frequency" group="Internal" default="`${!errorLf ? getExposedMember(sourceLfClk, &quot;frequency&quot;) : 0}`" min="0" max="350000000" resolution="1" visible="`${debug}`" editable="false" desc="" />
57    <ParamString id="accuracyLF"  name="Accuracy LF"  group="Internal" default="`${!errorLf ? getExposedMember(sourceLfClk, &quot;accuracy&quot;) : 0}`" visible="`${debug}`" editable="false" desc="" />
58    <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" />
59
60    <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)." />
61
62    <ParamBool id="tickIsValid" name="Counter Tick is valid" group="Counter" default="`${(sourceFreq % Tick) == 0 ? 0 : 1}`" visible="`${debug}`" editable="false" desc="" />
63    <ParamBool id="dividerIsValid" name="Check Divider" group="Counter" default="`${(sourceFreq / Tick) &lt; 255.0 ? 0 : 1}`" visible="`${debug}`" editable="false" desc="" />
64
65    <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." >
66      <Entry name="Software Control" value="CY_EVTGEN_RATIO_CONTROL_SW" visible="true" />
67      <Entry name="Hardware Control" value="CY_EVTGEN_RATIO_CONTROL_HW" visible="true" />
68    </ParamChoice>
69
70    <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." />
71
72    <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. " >
73      <Entry name="RatioDynamicMode_0" value="CY_EVTGEN_RATIO_DYNAMIC_MODE0" visible="true" />
74      <Entry name="RatioDynamicMode_1" value="CY_EVTGEN_RATIO_DYNAMIC_MODE1" visible="true" />
75      <Entry name="RatioDynamicMode_2" value="CY_EVTGEN_RATIO_DYNAMIC_MODE2" visible="true" />
76      <Entry name="RatioDynamicMode_3" value="CY_EVTGEN_RATIO_DYNAMIC_MODE3" visible="true" />
77      <Entry name="RatioDynamicMode_4" value="CY_EVTGEN_RATIO_DYNAMIC_MODE4" visible="true" />
78      <Entry name="RatioDynamicMode_5" value="CY_EVTGEN_RATIO_DYNAMIC_MODE5" visible="true" />
79      <Entry name="RatioDynamicMode_6" value="CY_EVTGEN_RATIO_DYNAMIC_MODE6" visible="true" />
80      <Entry name="RatioDynamicMode_7" value="CY_EVTGEN_RATIO_DYNAMIC_MODE7" visible="true" />
81    </ParamChoice>
82
83    <!-- Comparator -->
84    <Repeat count="16">
85      <ParamBool id="comp$idx_is_en" name="Enable" group="Comparator$idx" default="false" visible="true" editable="true" desc="Include Comparator structure $idx in scan"/>
86      <ParamSignal name="Trigger Output" port="tr_out[$idx]" group="Comparator$idx" visible="true" desc="Trigger Output" canBeEmpty="true">
87      </ParamSignal>
88      <ParamBool id="triggerIsConnct$idx" name="Check Connection Trigger" group="Comparator$idx" default="`${hasConnection(&quot;tr_out&quot;, $idx)}`" visible="`${debug}`" editable="false" desc="Checks whether there is a Trigger connected and enabled." />
89      <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."/>
90
91      <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." >
92        <Entry name="Active" value="CY_EVTGEN_ACTIVE_FUNCTIONALITY" visible="true" />
93        <Entry name="Deep Sleep" value="CY_EVTGEN_DEEPSLEEP_FUNCTIONALITY" visible="true" />
94      </ParamChoice>
95      <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." >
96        <Entry name="Level Sensitive" value="CY_EVTGEN_LEVEL_SENSITIVE" visible="true" />
97        <Entry name="Edge Sensitive" value="CY_EVTGEN_EDGE_SENSITIVE" visible="true" />
98      </ParamChoice>
99      <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="" />
100      <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" />
101      <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 &amp;&amp; deepSleepIsEN$idx}`" editable="true" desc="Set comparator threshold in DeepSleep power mode" />
102      <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" />
103      <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 &amp;&amp; deepSleepIsEN$idx}`" editable="false" desc="Period of the deep sleep event in seconds" />
104    </Repeat>
105
106    <!-- Advanced -->
107    <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)." />
108  </Parameters>
109
110  <DRCs>
111    <!--EVTGEN DRCs-->
112    <DRC type="ERROR" text="Source clock for EVTGEN is not enabled" condition="`${!srcNotUsed}`" >
113      <FixIt action="ENABLE_BLOCK" target="`${sourceClockRsc}`" value="" valid="true" />
114    </DRC>
115    <DRC type="ERROR" text="Source low frequency clock for EVTGEN is not enabled" condition="`${!srcLfNotUsed}`" >
116      <FixIt action="ENABLE_BLOCK" target="`${sourceLfClk}`" value="" valid="true" />
117    </DRC>
118    <DRC type="ERROR" paramId="Tick" text="The ratio of Reference Clock and the Counter Tick frequencies must be an integer." condition="`${tickIsValid}`" />
119    <DRC type="ERROR" paramId="Tick" text="The ratio of the Reference Clock and the Counter Tick frequencies must be less than 255." condition="`${dividerIsValid}`" />
120  </DRCs>
121
122  <ConfigFirmware>
123    <ConfigInclude value="cy_evtgen.h" include="true" />
124    <ConfigInclude value="cy_syslib.h" include="true" />
125
126    <ConfigDefine name="`${INST_NAME}`_HW" value="EVTGEN`${InstNumber}`" public="true" include="true" />
127    <ConfigDefine name="`${INST_NAME}`_IRQ" value="evtgen_`${InstNumber}`_interrupt_IRQn" public="true" include="true" />
128    <ConfigDefine name="`${INST_NAME}`_DPSLP_IRQ" value="evtgen_`${InstNumber}`_interrupt_dpslp_IRQn" public="true" include="true" />
129
130    <ConfigStruct name="`${INST_NAME}`_config" type="cy_stc_evtgen_config_t" const="`${inFlash}`" public="true" include="true" >
131      <Member name="frequencyRef" value="`${sourceFreq}`" />
132      <Member name="frequencyLf" value="`${sourceLowFreq}`" />
133      <Member name="frequencyTick" value="`${Tick}`" />
134      <Member name="ratioControlMode" value="`${ratioCtrlMode}`" />
135      <Member name="ratioValueDynamicMode" value="`${ratioDynMode}`" />
136    </ConfigStruct>
137
138    <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" >
139      <Member name="functionalitySelection" value="`${comp$idx_wm}`" />
140      <Member name="triggerOutEdge" value="`${comp$idx_trgMode}`" />
141      <Member name="valueActiveComparator" value="`${comp$idx_actV}`" />
142      <Member name="valueDeepSleepComparator" value="`${comp$idx_dsV}`" />
143    </ConfigStruct>
144  </ConfigFirmware>
145</Personality>
146