1<?xml version="1.0" encoding="utf-8"?>
2
3
4<!--****************************************************************************
5* \file quaddec_v2.cypersonality
6* \version 1.0
7*
8* \brief
9* Quadrature Decoder personality description file.
10*
11********************************************************************************
12* \copyright
13* Copyright 2018-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="mxs40quaddac_ver2" name="Quadrature Decoder" version="1.0" xmlns="http://cypress.com/xsd/cyhwpersonality_v8">
30  <Dependencies>
31    <IpBlock name="mxtcpwm_ver2" />
32    <Resource name="tcpwm\.group\.cnt" />
33    <OperatingMode value="MCU"/>
34  </Dependencies>
35  <ExposedMembers />
36  <Parameters>
37    <!-- PDL documentation -->
38    <ParamDoc id="pdlDoc" name="Configuration Help" group="Overview" default="file:///`${cy_libs_path()}`/docs/pdl_api_reference_manual/html/group__group__tcpwm__quaddec.html" linkText="Open Quadrature Decoder (TCPWM) Documentation" visible="true" desc="Opens the Peripheral Driver Library Documentation" />
39
40    <!--General-->
41    <ParamRange id="pCntGroup" name="pCntGroup" desc="pCntGroup" group="Internal"  default="`${getInstNumber(&quot;group&quot;)}`" min="0" max="3" resolution="1" visible="false" editable="false" />
42    <ParamRange id="pMaxGroupCount" name="pMaxGroupCount" desc="pMaxGroupCount" group="Internal"  default="4" min="0" max="4" resolution="1" visible="false" editable="false" />
43    <ParamString id="pCntWidthEx" name="pCntWidthEx" desc="pCntWidthEx" group="Internal"  default="GRP_NR[`${pCntGroup}`].CNT.GRP_CNT_WIDTH" visible="false" editable="false" />
44    <ParamRange id="pCntWidth" name="pCntWidth" desc="pCntWidth" group="Internal"  default="`${lookupExpression(pCntWidthEx)}`" min="0" max="32" resolution="1" visible="false" editable="false" />
45    <ParamRange id="pCntWidthMax" name="pCntWidthMax" desc="pCntWidthMax" group="Internal"  default="`${pow(2, pCntWidth)-1}`" min="0" max="4294967296" resolution="1" visible="false" editable="false" />
46    <ParamRange id="tcpwmInst" name="TCPWM Number" group="Internal" default="`${getInstNumber(&quot;tcpwm&quot;)}`" min="0" max="3" resolution="1" visible="false" editable="false" desc="" />
47    <ParamRange id="cntInst" name="CNT Number" group="Internal" default="`${getInstNumber(&quot;cnt&quot;) + pCntGroup * 256}`" min="0" max="1023" resolution="1" visible="false" editable="false" desc="" />
48    <ParamString id="pCntCC1Ex" name="pCntCC1Ex" desc="pCntCC1Ex" group="Internal" default="GRP_NR[`${pCntGroup}`].CNT.GRP_CC1_PRESENT" visible="false" editable="false" />
49    <ParamBool id="pCntCC1" name="pCntCC1" desc="pCntCC1" group="Internal" default="`${lookupExpression(pCntCC1Ex) eq 1}`" visible="false" editable="false" />
50
51    <ParamString id="TCPWM_version" name="TCPWM Version" group="General" default="TCPWM_ver2" visible="true" editable="false" desc="Version of the TCPWM hardware block"/>
52    <ParamChoice id="QuadMode" name="Quad Mode" group="General" default="CY_TCPWM_QUADDEC_MODE_RANGE0" visible="true" editable="true" desc="Selects the Quad mode of operation.">
53      <Entry name="Range 0" value="CY_TCPWM_QUADDEC_MODE_RANGE0" visible="true" />
54      <Entry name="Range 0 Compare" value="CY_TCPWM_QUADDEC_MODE_RANGE0_CMP" visible="true" />
55      <Entry name="Range 1 Capture" value="CY_TCPWM_QUADDEC_MODE_RANGE1_CAPT" visible="true" />
56      <Entry name="Range 1 Compare" value="CY_TCPWM_QUADDEC_MODE_RANGE1_CMP" visible="true" />
57    </ParamChoice>
58    <ParamChoice id="CounterSize" name="Quadrature Decoder Resolution" group="General" default="`${(pCntWidth eq 16) ? &quot;16&quot; : &quot;32&quot;}`" visible="true" editable="false" desc="Sets the resolution of the counter">
59      <Entry name="16-bits" value="16" visible="true" />
60      <Entry name="32-bits" value="32" visible="true" />
61    </ParamChoice>
62    <ParamChoice id="Resolution" name="Quadrature Mode" group="General" default="CY_TCPWM_QUADDEC_X1" visible="true" editable="true" desc="Selects the quadrature encoding mode">
63      <Entry name="x1" value="CY_TCPWM_QUADDEC_X1" visible="true" />
64      <Entry name="x2" value="CY_TCPWM_QUADDEC_X2" visible="true" />
65      <Entry name="x4" value="CY_TCPWM_QUADDEC_X4" visible="true" />
66      <Entry name="Up/Down Rotary" value="CY_TCPWM_QUADDEC_UP_DOWN_ROTARY_COUNT" visible="true" />
67    </ParamChoice>
68
69    <!--Capture-->
70    <ParamChoice id="CaptureOnIndex" name="Capture" group="Capture" default="true" visible="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0_CMP}`" editable="true" desc="Selects the capture source.">
71      <Entry name="Capture on Index" value="true" visible="true" />
72      <Entry name="Capture on Wrap Around" value="false" visible="true" />
73    </ParamChoice>
74
75    <ParamChoice id="Capture1Input" name="Capture 1 Input" group="Inputs" default="CY_TCPWM_INPUT_DISABLED" visible="`${pCntCC1 &amp;&amp; QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CAPT}`" editable="true" desc="Selects which input the capture1 uses. The inputs are device-specific." >
76      <Entry name="Rising Edge" value="CY_TCPWM_INPUT_RISINGEDGE" visible="true" />
77      <Entry name="Falling Edge" value="CY_TCPWM_INPUT_FALLINGEDGE" visible="true" />
78      <Entry name="Either Edge" value="CY_TCPWM_INPUT_EITHEREDGE" visible="true" />
79      <Entry name="Disabled" value="CY_TCPWM_INPUT_DISABLED" visible="true" />
80    </ParamChoice>
81    <ParamSignal port="capture1[0]" name="Capture 1 Signal" group="Inputs" visible="`${pCntCC1 &amp;&amp; QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CAPT &amp;&amp; Capture1Input ne CY_TCPWM_INPUT_DISABLED}`" desc="This input triggers a capture of the current count value." canBeEmpty="`${Capture1Input eq CY_TCPWM_INPUT_DISABLED}`" >
82      <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" >
83        <Parameter id="DriveModes" severity="DEFAULT" reason="">
84          <Fixed value="CY_GPIO_DM_HIGHZ" />
85        </Parameter>
86      </Constraint>
87      <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" >
88        <Parameter id="DriveModes" severity="INFO" reason="The pin Drive Mode parameter does not match expected.">
89          <Fixed value="CY_GPIO_DM_HIGHZ" />
90        </Parameter>
91      </Constraint>
92      <Constraint type="ACCEPT" targetLocation=".*" valid="true" />
93    </ParamSignal>
94
95    <!--Compare0-->
96    <ParamBool id="EnableCompare0Swap" name="Enable Compare 0 Swap" group="Compare" default="false" visible="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0_CMP || QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP}`" editable="true" desc="If enabled, allows a compare function using a CC0/CC0_BUFF." />
97    <ParamRange id="Compare0" name="Compare 0" group="Compare" default="16384" min="0" max="`${pCntWidthMax}`" resolution="1" visible="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0_CMP || QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP}`" editable="true" desc="Sets the value for Compare0. Range: 0-65535 (for 16 bit resolution) or 0–4294967295 (for 32 bit resolution)." />
98    <ParamRange id="CompareBuf0" name="Compare 0 Buff" group="Compare" default="16384" min="0" max="`${pCntWidthMax}`" resolution="1" visible="`${(EnableCompare0Swap &amp;&amp; QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0_CMP) || (EnableCompare0Swap &amp;&amp; QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP)}`" editable="true" desc="Sets the value for the buffered Compare0. Range: 0-65535 (for 16 bit resolution) or 0–4294967295 (for 32 bit resolution)." />
99
100    <!--Compare1-->
101    <ParamBool id="EnableCompare1Swap" name="Enable Compare 1 Swap" group="Compare" default="false" visible="`${pCntCC1 &amp;&amp; (QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0_CMP ||QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP)}`" editable="true" desc="If enabled, allows a compare function using a CC1/CC1_BUFF." />
102    <ParamRange id="Compare1" name="Compare 1" group="Compare" default="16384" min="0" max="`${pCntWidthMax}`" resolution="1" visible="`${pCntCC1 &amp;&amp; (QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0_CMP || QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP)}`" editable="true" desc="Sets the compare value. When the count value equals the compare the compare output pulses high. Range: 0-65535 (for 16 bit resolution) or 0–4294967295 (for 32 bit resolution)." />
103    <ParamRange id="CompareBuf1" name="Compare 1 Buff" group="Compare" default="16384" min="0" max="`${pCntWidthMax}`" resolution="1" visible="`${EnableCompare1Swap &amp;&amp; pCntCC1 &amp;&amp; (QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0_CMP ||QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP)}`" editable="true" desc="Sets the buffered compare value. Range: 0-65535 (for 16 bit resolution) or 0–4294967295 (for 32 bit resolution)." />
104
105    <!--Interrupts-->
106    <ParamBool id="InterruptCC0" name="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0 ? &quot;Reload/Index&quot; : (((QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0_CMP) || (QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP)) ? &quot;Compare 0 &quot; : &quot;Capture 0 Event&quot;)}`" group="Interrupts" default="false" visible="true" editable="true" desc="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0 ? &quot;Generate interrupt on Index.&quot; : ( QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0_CMP ? &quot;Generate interrupt on Compare 0 &amp; Capture 0.&quot; : &quot;Generate interrupt on Capture 0 Event.&quot;)}`" />
107    <ParamBool id="InterruptCC1" name="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CAPT ? &quot;Capture 1 Event&quot; : &quot;Compare 1&quot;}`" group="Interrupts" default="false" visible="`${pCntCC1 &amp;&amp; QuadMode ne CY_TCPWM_QUADDEC_MODE_RANGE0}`" editable="true" desc="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CAPT ? &quot;Generate interrupt on Capture 1 Event.&quot; : &quot;Generate interrupt on Compare 1 &amp; Capture 1.&quot;}`" />
108    <ParamBool id="InterruptTC" name="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0 ? &quot;Overflow &amp; Underflow &quot; : ((QuadMode eq  CY_TCPWM_QUADDEC_MODE_RANGE1_CAPT) || (QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP) ? &quot;Overflow, Underflow and Index&quot; : (!CaptureOnIndex ? &quot;Overflow &amp; Underflow&quot; : &quot;Index &amp; Capture 0&quot;))}`" group="Interrupts" default="false" visible="true" editable="true" desc="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0 ? &quot;Generate interrupt on TC.&quot; : ((QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CAPT) || (QuadMode eq  CY_TCPWM_QUADDEC_MODE_RANGE1_CMP) ? &quot;Generate interrupt on Overflow, Underflow and Index.&quot; : (!CaptureOnIndex ? &quot;Generate interrupt on Overflow &amp; Underflow.&quot; : &quot;Generate interrupt on Index &amp; Capture 0.&quot;))}`" />
109    <ParamString id="InterruptSource" name="InterruptSource" desc="InterruptSource" group="Interrupt Source" default="(CY_TCPWM_INT_ON_TC `${(InterruptTC)? &quot;&quot; : &quot;&amp; 0U&quot;}`) | (CY_TCPWM_INT_ON_CC0 `${(InterruptCC0)? &quot;&quot; : &quot;&amp; 0U&quot;}`) | (CY_TCPWM_INT_ON_CC1 `${(InterruptCC1)? &quot;&quot; : &quot;&amp; 0U&quot;}`)" visible="false" editable="false" />
110
111    <!--Period-->
112    <ParamRange id="Period" name="Period" group="Period" default="32768" min="0" max="`${pCntWidthMax}`" resolution="1" visible="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CAPT || QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP}`" editable="true" desc="Sets the period of the Timer/Counter. Range: 0-65535 (for 16 bit resolution) or 0–4294967295 (for 32 bit resolution)." />
113
114    <!--Inputs-->
115    <ParamSignal port="clock[0]" name="Clock Signal" group="Inputs" visible="`${hasVisibleOption(&quot;clock[0]&quot;)}`" desc="The clock input defines the operating frequency." canBeEmpty="`${!hasVisibleOption(&quot;clock[0]&quot;)}`" />
116    <ParamSignal port="clock_counter_en[0]" name="Clock Signal" group="Inputs" visible="`${hasVisibleOption(&quot;clock_counter_en[0]&quot;)}`" desc="The clock input defines the operating frequency." canBeEmpty="`${!hasVisibleOption(&quot;clock_counter_en[0]&quot;)}`" />
117
118    <ParamChoice id="IndexInput" name="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0_CMP ? &quot;Index 0 Input&quot; : &quot;Index Input&quot;}`" group="Inputs" default="CY_TCPWM_INPUT_DISABLED" visible="true" editable="true" desc="Determines if an index is needed and what edge causes an index to occur">
119      <Entry name="Rising Edge" value="CY_TCPWM_INPUT_RISINGEDGE" visible="true" />
120      <Entry name="Falling Edge" value="CY_TCPWM_INPUT_FALLINGEDGE" visible="true" />
121      <Entry name="Either Edge" value="CY_TCPWM_INPUT_EITHEREDGE" visible="true" />
122      <Entry name="Disabled" value="CY_TCPWM_INPUT_DISABLED" visible="true" />
123    </ParamChoice>
124    <ParamSignal port="reload[0]" name="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0 ? &quot;Index Signal&quot; : &quot;Index 0 Signal&quot;}`" group="Inputs" visible="`${IndexInput ne CY_TCPWM_INPUT_DISABLED}`" desc="This input causes an index (reload) event to occur (indicates a completed rotation to determine absolute position). This input is only visible if the IndexInput parameter is set to anything other than disabled." canBeEmpty="`${IndexInput eq CY_TCPWM_INPUT_DISABLED}`" >
125      <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" >
126        <Parameter id="DriveModes" severity="DEFAULT" reason="">
127          <Fixed value="CY_GPIO_DM_HIGHZ" />
128        </Parameter>
129      </Constraint>
130      <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" >
131        <Parameter id="DriveModes" severity="INFO" reason="The pin Drive Mode parameter does not match expected.">
132          <Fixed value="CY_GPIO_DM_HIGHZ" />
133        </Parameter>
134      </Constraint>
135      <Constraint type="ACCEPT" targetLocation=".*" valid="true" />
136    </ParamSignal>
137
138	<ParamChoice id="phiAInputMode" name="PhiA Input" group="Inputs" default="CY_TCPWM_INPUT_LEVEL" visible="`${Resolution eq CY_TCPWM_QUADDEC_UP_DOWN_ROTARY_COUNT}`" editable="true" desc="Determines if phiA should use pass through or edge detection.">
139      <Entry name="Rising Edge" value="CY_TCPWM_INPUT_RISINGEDGE" visible="true" />
140      <Entry name="Falling Edge" value="CY_TCPWM_INPUT_FALLINGEDGE" visible="true" />
141      <Entry name="Either Edge" value="CY_TCPWM_INPUT_EITHEREDGE" visible="true" />
142      <Entry name="Pass Through" value="CY_TCPWM_INPUT_LEVEL" visible="true" />
143    </ParamChoice>
144    <ParamSignal port="count[0]" name="PhiA Signal" group="Inputs" visible="true" desc="This is the phase A input it is always required." canBeEmpty="false" >
145      <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" >
146        <Parameter id="DriveModes" severity="DEFAULT" reason="">
147          <Fixed value="CY_GPIO_DM_HIGHZ" />
148        </Parameter>
149      </Constraint>
150      <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" >
151        <Parameter id="DriveModes" severity="INFO" reason="The pin Drive Mode parameter does not match expected.">
152          <Fixed value="CY_GPIO_DM_HIGHZ" />
153        </Parameter>
154      </Constraint>
155      <Constraint type="ACCEPT" targetLocation=".*" valid="true" />
156    </ParamSignal>
157
158	<ParamChoice id="phiBInputMode" name="PhiB Input" group="Inputs" default="CY_TCPWM_INPUT_LEVEL" visible="`${Resolution eq CY_TCPWM_QUADDEC_UP_DOWN_ROTARY_COUNT}`" editable="true" desc="Determines if phiB should use pass through or edge detection.">
159      <Entry name="Rising Edge" value="CY_TCPWM_INPUT_RISINGEDGE" visible="true" />
160      <Entry name="Falling Edge" value="CY_TCPWM_INPUT_FALLINGEDGE" visible="true" />
161      <Entry name="Either Edge" value="CY_TCPWM_INPUT_EITHEREDGE" visible="true" />
162      <Entry name="Pass Through" value="CY_TCPWM_INPUT_LEVEL" visible="true" />
163    </ParamChoice>
164    <ParamSignal port="start[0]" name="PhiB Signal" group="Inputs" visible="true" desc="This is the phase B input it is always required." canBeEmpty="false" >
165      <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" >
166        <Parameter id="DriveModes" severity="DEFAULT" reason="">
167          <Fixed value="CY_GPIO_DM_HIGHZ" />
168        </Parameter>
169      </Constraint>
170      <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" >
171        <Parameter id="DriveModes" severity="INFO" reason="The pin Drive Mode parameter does not match expected.">
172          <Fixed value="CY_GPIO_DM_HIGHZ" />
173        </Parameter>
174      </Constraint>
175      <Constraint type="ACCEPT" targetLocation=".*" valid="true" />
176    </ParamSignal>
177
178    <ParamChoice id="StopInput" name="Stop Input" group="Inputs" default="CY_TCPWM_INPUT_DISABLED" visible="true" editable="true" desc="Determines if a stop input is needed and what edges causes a stop to occur">
179      <Entry name="Rising Edge" value="CY_TCPWM_INPUT_RISINGEDGE" visible="true" />
180      <Entry name="Falling Edge" value="CY_TCPWM_INPUT_FALLINGEDGE" visible="true" />
181      <Entry name="Either Edge" value="CY_TCPWM_INPUT_EITHEREDGE" visible="true" />
182      <Entry name="Disabled" value="CY_TCPWM_INPUT_DISABLED" visible="true" />
183    </ParamChoice>
184    <ParamSignal port="stop[0]" name="Stop Signal" group="Inputs" visible="`${StopInput ne CY_TCPWM_INPUT_DISABLED}`" desc="This input causes the Quad Dec to stop Counting. This input is only visible if the StopInput parameter is set to anything other than disabled." canBeEmpty="`${StopInput eq CY_TCPWM_INPUT_DISABLED}`" >
185      <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" >
186        <Parameter id="DriveModes" severity="DEFAULT" reason="">
187          <Fixed value="CY_GPIO_DM_HIGHZ" />
188        </Parameter>
189      </Constraint>
190      <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" >
191        <Parameter id="DriveModes" severity="INFO" reason="The pin Drive Mode parameter does not match expected.">
192          <Fixed value="CY_GPIO_DM_HIGHZ" />
193        </Parameter>
194      </Constraint>
195      <Constraint type="ACCEPT" targetLocation=".*" valid="true" />
196    </ParamSignal>
197
198    <ParamChoice id="Capture0OrIndex1Input" name="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0_CMP ? &quot;Index 1 Input&quot; : &quot;Capture 0 Input&quot;}`" group="Inputs" default="CY_TCPWM_INPUT_DISABLED" visible="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0_CMP || QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CAPT}`" editable="true" desc="Determines if an index1(capture0) is needed and what edge causes an index to occur.">
199      <Entry name="Rising Edge" value="CY_TCPWM_INPUT_RISINGEDGE" visible="true" />
200      <Entry name="Falling Edge" value="CY_TCPWM_INPUT_FALLINGEDGE" visible="true" />
201      <Entry name="Either Edge" value="CY_TCPWM_INPUT_EITHEREDGE" visible="true" />
202      <Entry name="Disabled" value="CY_TCPWM_INPUT_DISABLED" visible="true" />
203    </ParamChoice>
204    <ParamSignal port="capture0[0]" name="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0_CMP ? &quot;Index 1 Signal&quot; : &quot;Capture 0 Signal&quot;}`" group="Inputs" visible="`${(Capture0OrIndex1Input ne CY_TCPWM_INPUT_DISABLED) &amp;&amp; (QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0_CMP || QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CAPT)}`" desc="This input causes an index1 (capture0) event to occur (indicates a completed rotation to determine absolute position). This input is only visible if the Input parameter is set to anything other than disabled." canBeEmpty="`${Capture0OrIndex1Input eq CY_TCPWM_INPUT_DISABLED}`" >
205      <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" >
206        <Parameter id="DriveModes" severity="DEFAULT" reason="">
207          <Fixed value="CY_GPIO_DM_HIGHZ" />
208        </Parameter>
209      </Constraint>
210      <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" >
211        <Parameter id="DriveModes" severity="INFO" reason="The pin Drive Mode parameter does not match expected.">
212          <Fixed value="CY_GPIO_DM_HIGHZ" />
213        </Parameter>
214      </Constraint>
215      <Constraint type="ACCEPT" targetLocation=".*" valid="true" />
216    </ParamSignal>
217
218    <!--Trigger Outputs-->
219    <ParamChoice id="trigger0Event" name="Trigger 0 Event" group="Trigger Outputs" default="CY_TCPWM_CNT_TRIGGER_ON_DISABLED" visible="true" editable="true" desc="This output used to connect TCPWM event signals to other peripherals." >
220      <Entry name="Overflow" value="CY_TCPWM_CNT_TRIGGER_ON_OVERFLOW" visible="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CAPT || QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP}`" />
221      <Entry name="Underflow" value="CY_TCPWM_CNT_TRIGGER_ON_UNDEFLOW" visible="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CAPT || QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP}`" />
222      <Entry name="Terminal Count" value="CY_TCPWM_CNT_TRIGGER_ON_TC" visible="true" />
223      <Entry name="Compare 0 Match" value="CY_TCPWM_CNT_TRIGGER_ON_CC0_MATCH" visible="true" />
224      <Entry name="Compare 1 Match" value="CY_TCPWM_CNT_TRIGGER_ON_CC1_MATCH" visible="`${pCntCC1 &amp;&amp; !(QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0)}`" />
225      <Entry name="Disabled" value="CY_TCPWM_CNT_TRIGGER_ON_DISABLED" visible="true" />
226    </ParamChoice>
227    <ParamSignal port="tr_out0[0]" name="Trigger 0 Signal" group="Trigger Outputs" visible="`${trigger0Event ne CY_TCPWM_CNT_TRIGGER_ON_DISABLED}`" desc="Signals to connect on Trigger 0 Event" canBeEmpty="`${trigger0Event eq CY_TCPWM_CNT_TRIGGER_ON_DISABLED}`" >
228      <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" >
229        <Parameter id="DriveModes" severity="DEFAULT" reason="">
230          <Fixed value="CY_GPIO_DM_STRONG_IN_OFF" />
231        </Parameter>
232      </Constraint>
233      <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" >
234        <Parameter id="DriveModes" severity="INFO" reason="The pin Drive Mode parameter does not match expected.">
235          <Fixed value="CY_GPIO_DM_STRONG_IN_OFF" />
236        </Parameter>
237      </Constraint>
238      <Constraint type="ACCEPT" targetLocation=".*" valid="true" />
239    </ParamSignal>
240    <ParamChoice id="trigger1Event" name="Trigger 1 Event" group="Trigger Outputs" default="CY_TCPWM_CNT_TRIGGER_ON_DISABLED" visible="true" editable="true" desc="This output used to connect TCPWM event signals to other peripherals." >
241      <Entry name="Overflow" value="CY_TCPWM_CNT_TRIGGER_ON_OVERFLOW" visible="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CAPT || QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP}`" />
242      <Entry name="Underflow" value="CY_TCPWM_CNT_TRIGGER_ON_UNDEFLOW" visible="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CAPT || QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP}`" />
243      <Entry name="Terminal Count" value="CY_TCPWM_CNT_TRIGGER_ON_TC" visible="true" />
244      <Entry name="Compare 0 Match" value="CY_TCPWM_CNT_TRIGGER_ON_CC0_MATCH" visible="true" />
245      <Entry name="Compare 1 Match" value="CY_TCPWM_CNT_TRIGGER_ON_CC1_MATCH" visible="`${pCntCC1 &amp;&amp; !(QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0)}`" />
246      <Entry name="Disabled" value="CY_TCPWM_CNT_TRIGGER_ON_DISABLED" visible="true" />
247    </ParamChoice>
248    <ParamSignal port="tr_out1[0]" name="Trigger 1 Signal" group="Trigger Outputs" visible="`${trigger1Event ne CY_TCPWM_CNT_TRIGGER_ON_DISABLED}`" desc="Signals to connect on Trigger 1 Event" canBeEmpty="`${trigger1Event eq CY_TCPWM_CNT_TRIGGER_ON_DISABLED}`" >
249      <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" >
250        <Parameter id="DriveModes" severity="DEFAULT" reason="">
251          <Fixed value="CY_GPIO_DM_STRONG_IN_OFF" />
252        </Parameter>
253      </Constraint>
254      <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" >
255        <Parameter id="DriveModes" severity="INFO" reason="The pin Drive Mode parameter does not match expected.">
256          <Fixed value="CY_GPIO_DM_STRONG_IN_OFF" />
257        </Parameter>
258      </Constraint>
259      <Constraint type="ACCEPT" targetLocation=".*" valid="true" />
260    </ParamSignal>
261
262    <!--Config-->
263    <ParamBool id="inFlash" name="Store Config in Flash" group="Advanced" default="true" visible="true" editable="true" desc="Controls whether the configuration structure is stored in flash (const, true) or SRAM (not const, false)." />
264
265    <!-- Peripheral clock divider connection -->
266    <ParamRange id="tcpwmInst" name="TCPWM Number" group="Internal" default="`${getInstNumber(&quot;tcpwm&quot;)}`" min="0" max="127" resolution="1" visible="false" editable="false" desc="" />
267    <ParamRange id="cntInst" name="CNT Number" group="Internal" default="`${getInstNumber(&quot;cnt&quot;)}`" min="0" max="31" resolution="1" visible="false" editable="false" desc="" />
268    <ParamString id="definePrefix" name="Define prefix" group="Internal" default="`${&quot;TCPWM&quot; . tcpwmInst . &quot;_GRP&quot; . pCntGroup . &quot;_CNT&quot; . getInstNumber(&quot;cnt&quot;)}`" visible="false" editable="false" desc="" />
269    <ParamString id="defineInputDisabled" name="Define input disabled" group="Internal" default="`${INST_NAME . &quot;_INPUT_DISABLED &amp; 0x3U&quot;}`" visible="false" editable="false" desc="" />
270    <ParamString id="pclk" name="PCLK" group="Internal" default="`${hasVisibleOption(&quot;clock_counter_en[0]&quot;) ? getBlockFromSignal(&quot;clock_counter_en[0]&quot;):getBlockFromSignal(&quot;clock[0]&quot;)}`" visible="false" editable="false" desc="Connected peripheral clock divider (PCLK)" />
271    <ParamBool id="pclkOk" name="PCLK Valid" group="Internal" default="`${hasVisibleOption(&quot;clock_counter_en[0]&quot;) ? hasConnection(&quot;clock_counter_en&quot;, 0) &amp;&amp; isBlockUsed(pclk) : hasConnection(&quot;clock&quot;, 0) &amp;&amp; isBlockUsed(pclk)}`" visible="false" editable="false" desc="Checks whether there is a PCLK connected and enabled" />
272    <ParamString id="pclkDst" name="PCLK Destination" group="Internal" default="`${hasVisibleOption(&quot;clock_counter_en[0]&quot;) ? &quot;PCLK_TCPWM&quot; . tcpwmInst . &quot;_CLOCK_COUNTER_EN&quot; . cntInst : &quot;PCLK_TCPWM&quot; . tcpwmInst . &quot;_CLOCKS&quot; . cntInst}`" visible="false" editable="false" desc="" />
273
274    <!-- Clock Frequency -->
275    <ParamString id="sourceClock" name="sourceClock" group="General" default="`${(hasVisibleOption(&quot;clock[0]&quot;)) ? (getBlockFromSignal(&quot;clock[0]&quot;)) : (getBlockFromSignal(&quot;clock_counter_en[0]&quot;))}`" visible="false" editable="false" desc="Source Clock Resource" />
276    <ParamRange  id="tcpwmClkHz" name="tcpwmClkHz" group="General" default="`${getExposedMember(sourceClock, &quot;frequency&quot;)}`" min="0" max="400000000" resolution="1" visible="false" editable="false" desc="TCPWM clock frequency in Hz" />
277
278  </Parameters>
279
280  <DRCs>
281    <DRC type="ERROR" paramId="clock_en[0]" text="Maximum input clock signal frequency supported is 100 Mhz. Please fix input clock setting." condition="`${(hasVisibleOption(&quot;clock[0]&quot;)) &amp;&amp; (tcpwmClkHz &gt; 100000000)}`" />
282    <DRC type="ERROR" paramId="clock_counter_en[0]" text="Maximum input clock signal frequency supported is 100 Mhz. Please fix input clock setting." condition="`${(hasVisibleOption(&quot;clock_counter_en[0]&quot;)) &amp;&amp; (tcpwmClkHz &gt; 100000000)}`" />
283
284    <!--Compare0 DRC-->
285    <DRC type="INFO" text="Compare 0 value have to be less or equal to Period" condition="`${(QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP) &amp;&amp; (Compare0 > Period)}`" paramId="Compare0" />
286	<!--CompareBuff0 DRC-->
287	<DRC type="INFO" text="Compare 0 Buffer value have to be less or equal to Period" condition="`${(EnableCompare0Swap) &amp;&amp; (QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP) &amp;&amp; (CompareBuf0 > Period)}`" paramId="CompareBuf0" />
288
289    <!--Compare1 DRC-->
290    <DRC type="INFO" text="Compare 1 value have to be less or equal to Period" condition="`${pCntCC1 &amp;&amp; (QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP) &amp;&amp; (Compare1 > Period)}`" paramId="Compare1"/>
291    <!--CompareBuf1 DRC-->
292	<DRC type="INFO" text="Compare 1 Buffer value have to be less or equal to Period" condition="`${pCntCC1 &amp;&amp;(EnableCompare1Swap) &amp;&amp; (QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP) &amp;&amp; (CompareBuf1 > Period)}`" paramId="CompareBuf1" />
293
294    <!--IndexInput DRCs-->
295    <DRC type="ERROR" text="Index Input Event has to be enabled to use Index Signal." condition="`${hasConnection(&quot;reload&quot;, 0) &amp;&amp; (IndexInput eq CY_TCPWM_INPUT_DISABLED)}`" paramId="IndexInput">
296        <FixIt action="SET_PARAM" target="IndexInput" value="CY_TCPWM_INPUT_RISINGEDGE" valid="true" />
297        <FixIt action="SET_PARAM" target="IndexInput" value="CY_TCPWM_INPUT_FALLINGEDGE" valid="true" />
298        <FixIt action="SET_PARAM" target="IndexInput" value="CY_TCPWM_INPUT_EITHEREDGE" valid="true" />
299    </DRC>
300
301    <!--IndexInput1/Capture0 DRCs-->
302	<DRC type="ERROR" text="Capture 0 or Index 1 Input cannot be used in Range 0 Quad Mode." condition="`${(QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0) &amp;&amp; hasConnection(&quot;capture0&quot;, 0)}`" paramId="Capture0OrIndex1Input">
303        <FixIt action="SET_PARAM" target="QuadMode" value="CY_TCPWM_QUADDEC_MODE_RANGE0_CMP" valid="true" />
304        <FixIt action="SET_PARAM" target="QuadMode" value="CY_TCPWM_QUADDEC_MODE_RANGE1_CAPT" valid="true" />
305    </DRC>
306    <DRC type="ERROR" text="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0_CMP ? &quot;Index 1 Input Event has to be enabled to use Index Signal.&quot; : &quot;Capture 0 Input Event has to be enabled to use Index Signal.&quot;}`" condition="`${!(QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0) &amp;&amp; hasConnection(&quot;capture0&quot;, 0) &amp;&amp; (Capture0OrIndex1Input eq CY_TCPWM_INPUT_DISABLED)}`" paramId="Capture0OrIndex1Input">
307        <FixIt action="SET_PARAM" target="Capture0OrIndex1Input" value="CY_TCPWM_INPUT_RISINGEDGE" valid="true" />
308        <FixIt action="SET_PARAM" target="Capture0OrIndex1Input" value="CY_TCPWM_INPUT_FALLINGEDGE" valid="true" />
309        <FixIt action="SET_PARAM" target="Capture0OrIndex1Input" value="CY_TCPWM_INPUT_EITHEREDGE" valid="true" />
310    </DRC>
311
312    <!--Capture1 DRCs-->
313    <DRC type="ERROR" text="Capture 1 Input Event has to be enabled to use Index Signal." condition="`${hasConnection(&quot;capture1&quot;, 0) &amp;&amp; (Capture1Input eq CY_TCPWM_INPUT_DISABLED)}`" paramId="Capture1Input">
314        <FixIt action="SET_PARAM" target="Capture1Input" value="CY_TCPWM_INPUT_RISINGEDGE" valid="true" />
315        <FixIt action="SET_PARAM" target="Capture1Input" value="CY_TCPWM_INPUT_FALLINGEDGE" valid="true" />
316        <FixIt action="SET_PARAM" target="Capture1Input" value="CY_TCPWM_INPUT_EITHEREDGE" valid="true" />
317    </DRC>
318
319    <!--StopInput DRCs-->
320    <DRC type="ERROR" text="Stop Event has to be enabled to use Stop Signal." condition="`${hasConnection(&quot;stop&quot;, 0) &amp;&amp; (StopInput eq CY_TCPWM_INPUT_DISABLED)}`" paramId="StopInput">
321        <FixIt action="SET_PARAM" target="StopInput" value="CY_TCPWM_INPUT_RISINGEDGE" valid="true" />
322        <FixIt action="SET_PARAM" target="StopInput" value="CY_TCPWM_INPUT_FALLINGEDGE" valid="true" />
323        <FixIt action="SET_PARAM" target="StopInput" value="CY_TCPWM_INPUT_EITHEREDGE" valid="true" />
324    </DRC>
325
326    <!--Trigger Output DRCs-->
327    <DRC type="ERROR" text="Trigger 0 Event has to be enabled to use Trigger 0 Signal." condition="`${hasConnection(&quot;tr_out0&quot;, 0) &amp;&amp; (trigger0Event eq CY_TCPWM_CNT_TRIGGER_ON_DISABLED)}`" paramId="trigger0Event">
328        <FixIt action="SET_PARAM" target="trigger0Event" value="CY_TCPWM_CNT_TRIGGER_ON_OVERFLOW" valid="true" />
329        <FixIt action="SET_PARAM" target="trigger0Event" value="CY_TCPWM_CNT_TRIGGER_ON_UNDEFLOW" valid="true" />
330        <FixIt action="SET_PARAM" target="trigger0Event" value="CY_TCPWM_CNT_TRIGGER_ON_TC" valid="true" />
331        <FixIt action="SET_PARAM" target="trigger0Event" value="CY_TCPWM_CNT_TRIGGER_ON_CC0_MATCH" valid="true" />
332        <FixIt action="SET_PARAM" target="trigger0Event" value="CY_TCPWM_CNT_TRIGGER_ON_CC1_MATCH" valid="false" />
333    </DRC>
334    <DRC type="ERROR" text="Trigger 1 Event has to be enabled to use Trigger 1 Signal." condition="`${hasConnection(&quot;tr_out1&quot;, 0) &amp;&amp; (trigger1Event eq CY_TCPWM_CNT_TRIGGER_ON_DISABLED)}`" paramId="trigger1Event">
335          <FixIt action="SET_PARAM" target="trigger1Event" value="CY_TCPWM_CNT_TRIGGER_ON_OVERFLOW" valid="true" />
336        <FixIt action="SET_PARAM" target="trigger1Event" value="CY_TCPWM_CNT_TRIGGER_ON_UNDEFLOW" valid="true" />
337        <FixIt action="SET_PARAM" target="trigger1Event" value="CY_TCPWM_CNT_TRIGGER_ON_TC" valid="true" />
338        <FixIt action="SET_PARAM" target="trigger1Event" value="CY_TCPWM_CNT_TRIGGER_ON_CC0_MATCH" valid="true" />
339        <FixIt action="SET_PARAM" target="trigger1Event" value="CY_TCPWM_CNT_TRIGGER_ON_CC1_MATCH" valid="false" />
340    </DRC>
341  </DRCs>
342
343  <ConfigFirmware>
344    <ConfigInclude value="cy_tcpwm_quaddec.h" include="true" />
345    <ConfigInclude value="cy_sysclk.h" include="`${pclkOk}`" />
346    <ConfigInclude value="cycfg_routing.h" include="true" />
347    <ConfigInclude value="cyhal_hwmgr.h" include="true" guard="defined (CY_USING_HAL)" />
348    <ConfigInclude value="cyhal.h" include="true" guard="defined (CY_USING_HAL)" />
349
350    <ConfigDefine name="`${INST_NAME}`_HW" value="TCPWM`${tcpwmInst}`" public="true" include="true" />
351    <ConfigDefine name="`${INST_NAME}`_NUM" value="`${cntInst}`UL" public="true" include="true" />
352    <ConfigDefine name="`${INST_NAME}`_IRQ" value="tcpwm_`${tcpwmInst}`_interrupts_`${cntInst}`_IRQn" public="true" include="`${InterruptTC || InterruptCC0 || InterruptCC1}`" />
353    <ConfigDefine name="`${INST_NAME}`_INPUT_DISABLED" value="0x7U" public="false" include="true" />
354    <ConfigStruct name="`${INST_NAME . &quot;_config&quot;}`" type="cy_stc_tcpwm_quaddec_config_t" const="`${inFlash}`" public="true" include="true" >
355      <Member name="quadMode" value="`${QuadMode}`" />
356      <Member name="resolution" value="`${Resolution}`" />
357      <Member name="interruptSources" value="`${InterruptSource}`" />
358      <Member name="indexInputMode" value="`${IndexInput eq CY_TCPWM_INPUT_DISABLED ? defineInputDisabled : IndexInput}`" />
359      <Member name="indexInput" value="`${IndexInput eq CY_TCPWM_INPUT_DISABLED ? &quot;CY_TCPWM_INPUT_0&quot; : (definePrefix . &quot;_RELOAD_VALUE&quot;)}`" />
360      <Member name="stopInputMode" value="`${StopInput eq CY_TCPWM_INPUT_DISABLED ? defineInputDisabled : StopInput}`" />
361      <Member name="stopInput" value="`${StopInput eq CY_TCPWM_INPUT_DISABLED ? &quot;CY_TCPWM_INPUT_0&quot; : (definePrefix . &quot;_STOP_VALUE&quot;)}`" />
362      <Member name="phiAInput" value="`${(definePrefix . &quot;_COUNT_VALUE&quot;)}`" />
363      <Member name="phiBInput" value="`${(definePrefix . &quot;_START_VALUE&quot;)}`" />
364      <Member name="phiAInputMode" value="`${Resolution eq CY_TCPWM_QUADDEC_UP_DOWN_ROTARY_COUNT ? phiAInputMode : CY_TCPWM_INPUT_LEVEL }`" />
365      <Member name="phiBInputMode" value="`${Resolution eq CY_TCPWM_QUADDEC_UP_DOWN_ROTARY_COUNT ? phiBInputMode : CY_TCPWM_INPUT_LEVEL }`" />
366      <Member name="trigger0Event" value="`${trigger0Event}`" />
367      <Member name="trigger1Event" value="`${trigger1Event}`" />
368      <Member name="captureOnIndex" value="`${QuadMode ne CY_TCPWM_QUADDEC_MODE_RANGE0_CMP ? defineInputDisabled : CaptureOnIndex}`"/>
369      <Member name="compare0" value="`${Compare0}`" />
370      <Member name="compareBuf0" value="`${CompareBuf0}`" />
371      <Member name="enableCompare0Swap" value="`${EnableCompare0Swap}`" />
372      <Member name="compare1" value="`${pCntCC1 ? Compare1 : &quot;CY_TCPWM_GRP_CNT_CC0_DEFAULT&quot;}`" />
373      <Member name="compareBuf1" value="`${pCntCC1 ? CompareBuf1 : &quot;CY_TCPWM_GRP_CNT_CC0_BUFF_DEFAULT&quot;}`" />
374      <Member name="enableCompare1Swap" value="`${EnableCompare1Swap}`" />
375      <Member name="capture0OrIndex1InputMode" value="`${Capture0OrIndex1Input eq CY_TCPWM_INPUT_DISABLED ? defineInputDisabled : Capture0OrIndex1Input}`" />
376      <Member name="capture0OrIndex1Input" value="`${Capture0OrIndex1Input eq CY_TCPWM_INPUT_DISABLED ? &quot;CY_TCPWM_INPUT_0&quot; : (definePrefix . &quot;_CAPTURE0_VALUE&quot;)}`" />
377      <Member name="period0" value="`${Period}`" />
378      <Member name="capture1InputMode" value="`${Capture1Input eq CY_TCPWM_INPUT_DISABLED ? defineInputDisabled : Capture1Input}`" />
379      <Member name="capture1Input" value="`${Capture1Input eq CY_TCPWM_INPUT_DISABLED ? &quot;CY_TCPWM_INPUT_0&quot; : (definePrefix . &quot;_CAPTURE1_VALUE&quot;)}`" />
380    </ConfigStruct>
381
382    <ConfigStruct name="`${INST_NAME}`_obj" type="cyhal_resource_inst_t" const="true" public="true" include="true" guard="defined (CY_USING_HAL)">
383      <Member name="type" value="CYHAL_RSC_TCPWM" />
384      <Member name="block_num" value="`${(getInstNumber(&quot;tcpwm&quot;) * pMaxGroupCount) + pCntGroup}`U" />
385      <Member name="channel_num" value="`${getInstNumber(&quot;cnt&quot;)}`U" />
386    </ConfigStruct>
387
388    <ConfigStruct name="`${INST_NAME}`_clock" type="cyhal_clock_t" const="`${inFlash}`" public="true" include="true" guard="defined (CY_USING_HAL)">
389      <Member name="block" value="`${getExposedMember(pclk, &quot;hal_block&quot;)}`" />
390      <Member name="channel" value="`${getExposedMember(pclk, &quot;number&quot;)}`" />
391      <Member name="reserved" value="false" />
392      <Member name="funcs" value="NULL" />
393    </ConfigStruct>
394
395    <ConfigStruct name="`${INST_NAME}`_hal_config" type="cyhal_quaddec_configurator_t" const="`${inFlash}`" public="true" include="true" guard="defined (CY_USING_HAL)">
396      <Member name="resource" value="&amp;`${INST_NAME}`_obj" />
397      <Member name="config" value="&amp;`${INST_NAME}`_config" />
398      <Member name="clock" value="&amp;`${INST_NAME}`_clock" />
399    </ConfigStruct>
400
401    <ConfigInstruction purpose="INITIALIZE" value="Cy_SysClk_PeriGroupSlaveInit(CY_MMIO_TCPWM`${tcpwmInst}`_PERI_NR, CY_MMIO_TCPWM`${tcpwmInst}`_GROUP_NR, CY_MMIO_TCPWM`${tcpwmInst}`_SLAVE_NR, CY_MMIO_TCPWM`${tcpwmInst}`_CLK_HF_NR);" include="true" guard="defined (CY_DEVICE_CONFIGURATOR_IP_ENABLE_FEATURE)" />
402    <ConfigInstruction purpose="INITIALIZE" value="Cy_SysClk_PeriphAssignDivider(`${pclkDst}`, `${getExposedMember(pclk, &quot;clockSel&quot;)}`);" include="`${pclkOk}`"  />
403    <ConfigInstruction purpose="RESERVE" value="cyhal_hwmgr_reserve(&amp;`${INST_NAME}`_obj);" include="true" guard="defined (CY_USING_HAL)" />
404  </ConfigFirmware>
405</Personality>
406