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(&quot;srss[0].clock[0].hfclk[3]&quot;)) }`" 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(&quot;evtgen&quot;)}`" 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 ? &quot;srss[0].clock[0].hfclk[3]&quot; : &quot;srss[0].clock[0].hfclk[1]&quot;}`" 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, &quot;error&quot;)}`" visible="`${debug}`" editable="false" desc="" />
50
51    <ParamRange id="sourceFreq" name="sourceFrequency" group="Internal" default="`${!error ? getExposedMember(sourceClockRsc, &quot;frequency&quot;) : 0}`" min="0" max="350000000" resolution="1" visible="`${debug}`" editable="false" desc="" />
52    <ParamString id="accuracy"  name="Accuracy"  group="Internal" default="`${!error ? getExposedMember(sourceClockRsc, &quot;accuracy&quot;) : 0}`" visible="`${debug}`" editable="false" desc="" />
53    <ParamString id="sourceFrequencyInfo" name="Reference Clock" group="Counter" default="`${has_clk_hf3 ? &quot;CLK_HF3&quot; : &quot;CLK_HF1&quot;}`" 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, &quot;error&quot;)}`" visible="`${debug}`" editable="false" desc="" />
57
58    <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="" />
59    <ParamString id="accuracyLF"  name="Accuracy LF"  group="Internal" default="`${!errorLf ? getExposedMember(sourceLfClk, &quot;accuracy&quot;) : 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) &lt; 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(&quot;tr_out&quot;, $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 &amp;&amp; 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 &amp;&amp; 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