winIDEA SDK
Loading...
Searching...
No Matches
trace_coverage_profiler.py
1# This script is licensed under BSD License, see file LICENSE.txt, or search for `License` in the SDK online help.
2#
3# (c) TASKING Germany GmbH, 2023
4
5"""
6This script demonstrates coverage and profiler analysis on the same
7analyzer recording.
8"""
9
10import time
11import isystem.connect as ic
12
13
14
15
16def initTarget(cmgr):
17
18 debugCtrl = ic.CDebugFacade(cmgr)
19
20 debugCtrl.download()
21 debugCtrl.runUntilFunction("main")
22 debugCtrl.waitUntilStopped()
23
24 return debugCtrl
25
26
27if __name__ == '__main__':
28 print('isystem.connect version: ' + ic.getModuleVersion())
29 winidea_id = ''
30
31 cmgr = ic.ConnectionMgr()
32 cmgr.connect(ic.CConnectionConfig().instanceId(winidea_id))
33
34 debugCtrl = initTarget(cmgr)
35
36 docName = "test.trd"
37
38 traceDoc = ic.CTraceController(cmgr, docName, "w")
39 # The default trigger records trace so that it is suitable also for
40 # coverage and profiler analysis
41 triggerIdx = traceDoc.getActiveTriggerIndex()
42
43 # decrease the default buffer size. 1 Mb is enough for demo.
44 #trace_doc.setTriggerOption(triggerIdx, 'HW.Recorder.BufferSize', '1 MB')
45
46 print('Target is running, trace_doc is recording data...')
47 traceDoc.start()
48 debugCtrl.run()
49 time.sleep(3)
50 debugCtrl.stop()
51
52 print('Target stopped, loading trace data...')
53 traceDoc.waitUntilLoaded()
54
55 # perform coverage analysis
56 coverageDoc = ic.CCoverageController2(cmgr, docName, 'u')
57 cvrgTriggerName = 'cvrgTrigger'
58 cvrgTriggerIdx = coverageDoc.getTriggerIndex(cvrgTriggerName, False)
59 if cvrgTriggerIdx == -1:
60 cvrgTriggerIdx = coverageDoc.createTrigger(cvrgTriggerName)
61
62 coverageDoc.select(cvrgTriggerIdx)
63 coverageDoc.start1() # performs coverage analysis
64 coverageDoc.waitUntilLoaded()
65
66 # perform profiler analysis
67 profilerDoc = ic.CProfilerController2(cmgr, docName, 'u')
68 profTriggerName = 'profTrigger'
69 profTriggerIdx = profilerDoc.getTriggerIndex(profTriggerName, False)
70 if profTriggerIdx == -1:
71 profTriggerIdx = profilerDoc.createTrigger(profTriggerName)
72
73 profilerDoc.select(profTriggerIdx)
74 profilerDoc.start1() # performs profiler analysis
75 profilerDoc.waitUntilLoaded()
76
77 print('Done. Results are visible in winIDEA, file: ', docName)
78 # Now results are visible in winIDEA, but could also be exported to
79 # file. See examples trace2Example.py, coverage2Example.py, and
80 # profiler2Example.py