winIDEA SDK
trace_coverage_profiler.py
1# This script is licensed under BSD License, see file LICENSE.txt.
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
13winidea_id = ''
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
27print('isystem.connect version: ' + ic.getModuleVersion())
28
29cmgr = ic.ConnectionMgr()
30cmgr.connect(ic.CConnectionConfig().instanceId(winidea_id))
31
32debugCtrl = initTarget(cmgr)
33
34docName = "test.trd"
35
36traceDoc = ic.CTraceController(cmgr, docName, "w")
37# The default trigger records trace so that it is suitable also for
38# coverage and profiler analysis
39triggerIdx = traceDoc.getActiveTriggerIndex()
40
41# decrease the default buffer size. 1 Mb is enough for demo.
42#trace_doc.setTriggerOption(triggerIdx, 'HW.Recorder.BufferSize', '1 MB')
43
44print('Target is running, trace_doc is recording data...')
45traceDoc.start()
46debugCtrl.run()
47time.sleep(3)
48debugCtrl.stop()
49
50print('Target stopped, loading trace data...')
51traceDoc.waitUntilLoaded()
52
53# perform coverage analysis
54coverageDoc = ic.CCoverageController2(cmgr, docName, 'u')
55cvrgTriggerName = 'cvrgTrigger'
56cvrgTriggerIdx = coverageDoc.getTriggerIndex(cvrgTriggerName, False)
57if cvrgTriggerIdx == -1:
58 cvrgTriggerIdx = coverageDoc.createTrigger(cvrgTriggerName)
59
60coverageDoc.select(cvrgTriggerIdx)
61coverageDoc.start1() # performs coverage analysis
62coverageDoc.waitUntilLoaded()
63
64# perform profiler analysis
65profilerDoc = ic.CProfilerController2(cmgr, docName, 'u')
66profTriggerName = 'profTrigger'
67profTriggerIdx = profilerDoc.getTriggerIndex(profTriggerName, False)
68if profTriggerIdx == -1:
69 profTriggerIdx = profilerDoc.createTrigger(profTriggerName)
70
71profilerDoc.select(profTriggerIdx)
72profilerDoc.start1() # performs profiler analysis
73profilerDoc.waitUntilLoaded()
74
75print('Done. Results are visible in winIDEA, file: ', docName)
76# Now results are visible in winIDEA, but could also be exported to
77# file. See examples trace2Example.py, coverage2Example.py, and
78# profiler2Example.py