Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Awb model can support static, build-time, parameters that are specified in a module’s .awb file as follows:
%param [--global] <PARAMETER-NAME> <NUMERIC-PARAMETER-VALUE> "<PARAMETER-DESCRIPTION>" or %param [--global] <PARAMETER-NAME> "<STRING-PARAMETER-VALUE>" "<PARAMETER-DESCRIPTION>"
For example, in the module with awb-type foo, one would define a trace parameter as follows:
. . %provides foo %param ENABLE_TRACE 0 "Enable an output debug trace" %param TRACE_FILE "trace.out" "Trace file name" . .
Using the parameter
The example parameter can be used by including a file that is synthesized as part of the configuration process in a directory tree awb/provides/. The details are language specific:
The parameter is made available with the following #include directive:
Then you will get a line that looks like:
#define ENABLE_TRACE 0 #define TRACE_FILE "trace.out"
The parameter is made available with the following `include directive:
Then you will get a some lines that look like:
`define ENABLE_TRACE 0 `define ENABLE_TRACE_Z 0 `define TRACE_FILE "trace.out"
(I don’t know what the _Z convention is for).
Note: there are lots of `ifdef guards in foo.bsh so that you don’t try to recursively import the module being defined, so
you can even use the `include of foo.bsh in Foo.bsv.
Changing the value of the parameter
Parameters are specified in a model’s .apm file and can be set using the apm-edit program. Example needed…
The —global switch to the %param directive cause the parameter to be visible in the parent model when the module is part of a submodel in that model.