175def configure(obj, clock_source, ts_source, timebase):
176
177 lTopDesign = obj.mTopDesign
178 lDesignType = obj.mDesignType
179 lDesignName=kDesignNameMap[lDesignType]
180
181
182 if clock_source is None:
183 if lDesignType in [kDesignMaster, kDesignBoreas, kDesignOuroboros, kDesignOuroborosSim]:
184 lClockSource=kFreeRun
185 lTimestampSource=kSoftware
186 elif lDesignType in [kDesignEndpoint, kDesignChronos, kDesignFanout]:
187 lClockSource=kInput1
188 elif lDesignType in [kDesignGaia, kDesignKerberos]:
189 lClockSource=kInput0
190 lTimestampSource=kUpstream
191 else:
192 secho("Unable to match a default clock source for design {}.\nConfigure failed!".format(lDesignName), fg='red')
193 return
194 else:
195 lClockSource=ClockSource.__members__[clock_source]
196
197 if ts_source is None:
198 if lDesignType in [kDesignMaster, kDesignBoreas, kDesignOuroboros, kDesignOuroborosSim]:
199 lTimestampSource=kSoftware
200 elif lDesignType in [kDesignGaia, kDesignKerberos]:
201 lTimestampSource=kUpstream
202 elif lDesignType not in [kDesignEndpoint, kDesignChronos, kDesignFanout]:
203 secho("Unable to match a default timestamp source for design {}.\nConfigure failed!".format(lDesignName), fg='red')
204 return
205 else:
206 lTimestampSource=TimestampSource.__members__[ts_source]
207
208 if lDesignType in [kDesignMaster, kDesignBoreas, kDesignGaia, kDesignKerberos]:
209 if lDesignType == kDesignGaia:
210 if timebase is not None:
211 lTimebase=TimestampTimebase.__members__[timebase]
212 lTopDesign.configure(lClockSource, lTimestampSource, lTimebase)
213 else:
214 secho("Supply ts timebase option for design Gaia!", fg='red')
215 else:
216 lTopDesign.configure(lClockSource, lTimestampSource)
217 elif lDesignType in [kDesignEndpoint, kDesignChronos, kDesignFanout]:
218 lTopDesign.configure(lClockSource)
219 else:
220 secho("Configure not supported for design {}.\nConfigure failed!".format(lDesignName), fg='red')
221