163def configure(obj, clock_source, ts_source, epoch):
164
165 lTopDesign = obj.mTopDesign
166 lDesignType = obj.mDesignType
167 lDesignName=kDesignNameMap[lDesignType]
168
169
170 if clock_source is None:
171 if lDesignType in [kDesignMaster, kDesignBoreas, kDesignOuroboros, kDesignOuroborosSim]:
172 lClockSource=kFreeRun
173 lTimestampSource=kSoftware
174 elif lDesignType in [kDesignEndpoint, kDesignChronos, kDesignFanout]:
175 lClockSource=kInput1
176 elif lDesignType in [kDesignGaia, kDesignKerberos]:
177 lClockSource=kInput0
178 lTimestampSource=kUpstream
179 else:
180 secho("Unable to match a default clock source for design {}.\nConfigure failed!".format(lDesignName), fg='red')
181 return
182 else:
183 lClockSource=ClockSource.__members__[clock_source]
184
185 if ts_source is None:
186 if lDesignType in [kDesignMaster, kDesignBoreas, kDesignOuroboros, kDesignOuroborosSim]:
187 lTimestampSource=kSoftware
188 elif lDesignType in [kDesignGaia, kDesignKerberos]:
189 lTimestampSource=kUpstream
190 elif lDesignType not in [kDesignEndpoint, kDesignChronos, kDesignFanout]:
191 secho("Unable to match a default timestamp source for design {}.\nConfigure failed!".format(lDesignName), fg='red')
192 return
193 else:
194 lTimestampSource=TimestampSource.__members__[ts_source]
195
196 if lDesignType in [kDesignMaster, kDesignBoreas, kDesignGaia, kDesignKerberos]:
197 if lDesignType == kDesignGaia:
198 if epoch is not None:
199 lEpoch=IRIGEpoch.__members__[epoch]
200 lTopDesign.configure(lClockSource, lTimestampSource, lEpoch)
201 else:
202 secho("Supply irig option for design Gaia!", fg='red')
203 else:
204 lTopDesign.configure(lClockSource, lTimestampSource)
205 elif lDesignType in [kDesignEndpoint, kDesignChronos, kDesignFanout]:
206 lTopDesign.configure(lClockSource)
207 else:
208 secho("Configure not supported for design {}.\nConfigure failed!".format(lDesignName), fg='red')
209