1 2 3 4 5 6 7 8 9 10 11 12
13 14 15 16
17
18 package xdc.runtime;
19
20 /*!
21 * ======== Defaults ========
22 * Default attributes inherited by all target modules
23 *
24 * This module defines default values for `common$` structure. If other
25 * modules do not set `common$` properties explicitly, these values will be
26 * used.
27 */
28 module Defaults {
29
30 /*!
31 * ======== common$ ========
32 * Defaults inherited by all target modules
33 *
34 * This structure defines the default values for the configuration
35 * parameters shared by all modules in a system. Unless otherwise
36 * noted, setting one of the fields defined below will set the
37 * corresponding value for all modules in the system which have not
38 * been explicitly set; i.e., it will establish a default value for
39 * the parameter.
40 *
41 * @a(diags_ASSERT)
42 * Enables asserts at runtime. Default is `ALWAYS_ON`
43 *
44 * @a(diags_ENTRY)
45 * Enables entry trace for all functions. Default is `ALWAYS_OFF`
46 *
47 * @a(diags_EXIT)
48 * Enables exit trace for all functions. Default is `ALWAYS_OFF`
49 *
50 * @a(diags_INTERNAL)
51 * Enables internal asserts. Default is `ALWAYS_OFF`. When set to
52 * `ALWAYS_ON`, requires `diags_ASSERT` to be `ALWAYS_ON`.
53 *
54 * @a(diags_LIFECYCLE)
55 * Enables lifecycle logs. These logs are written during creates
56 * and deletes. Default is `ALWAYS_OFF`.
57 *
58 * @a(diags_USER)
59 * Each `diags_USER` field controls a separate user-defined
60 * logging level. Default is `ALWAYS_OFF` for all `diags_USER` fileds.
61 *
62 * @a(gate)
63 * Default gate used by all modules which are declared as being `@Gated`.
64 * By default, this parameter points to an instance of `{@link GateNull}`,
65 * which means there is no protection.
66 *
67 * @a(gateParams)
68 * The default parameters used to create gates at runtime. See
69 * `{@link Types#Common$.gateParams}`. Default is `null`.
70 *
71 * @a(instanceHeap)
72 * Specify heap to be used for module instances. Default is `null`.
73 * If `instanceHeap` is `null`, instances will be allocated from
74 * the heap specified by `{@link Memory#defaultHeapInstance}`.
75 *
76 * @a(instanceSection)
77 * Specify section to be used to place module instances. Default is
78 * `null`.
79 *
80 * @a(logger)
81 * Default logger used by modules to write logs. By default there is
82 * no logger.
83 *
84 * @a(memoryPolicy)
85 * Used to specify type of application. `Types.STATIC_POLICY` is used when
86 * all objects are created statically. `Types.CREATE_POLICY` is used when
87 * the application creates objects at runtime. `Types.DELETE_POLICY` is
88 * used when the application creates and deletes objects at runtime. This
89 * helps eliminate unwanted create and delete code.
90 *
91 * @a(namedInstance)
92 * This parameter should be set to true if space needs to be allocated in
93 * instance objects for instance names. Allocating space for a name
94 * allows object view tools to display the names. The runtime functions
95 * `Mod_Handle_name()` and `Mod_Handle_label()` defined for each module
96 * `Mod` can be used to retrieve the name at runtime.
97 *
98 * @a(namedModule)
99 * This field allows the name of the module to be retained on the target.
100 * Setting this to `false` will save space but will also prevent
101 * the target from being able to display the module names appearing
102 * in `Log` events and `Error`s.
103 *
104 * Setting `namedModule` to `false` causes all modules, except for
105 * `{@link Memory}` and `{@link Main}` to be unnamed by default. To
106 * eliminate the string names for these modules you must explicitly
107 * set their `common$.namedModule` parameters to `false`; without these
108 * two names, target-side display of error messages is somewhat cryptic.
109 *
110 * @a(romPatchTable)
111 * Specify whether modules that are allocated to ROM are patchable.
112 */
113 override metaonly config Types.Common$ common$ = {
114 diags_ASSERT: Diags.ALWAYS_ON,
115 diags_ENTRY: Diags.ALWAYS_OFF,
116 diags_EXIT: Diags.ALWAYS_OFF,
117 diags_INTERNAL: Diags.ALWAYS_OFF,
118 diags_LIFECYCLE: Diags.ALWAYS_OFF,
119 diags_USER1: Diags.ALWAYS_OFF,
120 diags_USER2: Diags.ALWAYS_OFF,
121 diags_USER3: Diags.ALWAYS_OFF,
122 diags_USER4: Diags.ALWAYS_OFF,
123 diags_USER5: Diags.ALWAYS_OFF,
124 diags_USER6: Diags.ALWAYS_OFF,
125 diags_USER7: Diags.ALWAYS_OFF,
126 diags_USER8: Diags.ALWAYS_OFF,
127 fxntab: true,
128 gate: null,
129 gateParams: null,
130 instanceHeap: null,
131 instanceSection: null,
132 logger: null,
133 memoryPolicy: Types.DELETE_POLICY,
134 namedInstance: false,
135 namedModule: true,
136 romPatchTable: false,
137 };
138
139 /*!
140 * ======== getCommon ========
141 * Get a specified common parameter from a module
142 *
143 * Get the value of a member of the structure `common$` based on
144 * defaults and the current value of the parameter.
145 *
146 * @param(eb) module whose parameter is queried
147 *
148 * @param(param) string naming the queried parameter
149 *
150 * @a(returns)
151 * Returns the value of the parameter named `param` from the module
152 * `mod`.
153 */
154 metaonly Any getCommon(IModule.Module mod, String param);
155 };
156 157 158
159