Add ivl_parameter_width() function to ivl interface
This commit is contained in:
parent
3e76f6d656
commit
e30334e527
1
ivl.def
1
ivl.def
|
|
@ -174,6 +174,7 @@ ivl_parameter_lsb
|
|||
ivl_parameter_msb
|
||||
ivl_parameter_scope
|
||||
ivl_parameter_signed
|
||||
ivl_parameter_width
|
||||
|
||||
ivl_path_condit
|
||||
ivl_path_delay
|
||||
|
|
|
|||
|
|
@ -1612,6 +1612,9 @@ extern ivl_signal_t ivl_nexus_ptr_sig(ivl_nexus_ptr_t net);
|
|||
* a range the value is zero based and the width of the expression is
|
||||
* used to determine the MSB.
|
||||
*
|
||||
* ivl_parameter_width
|
||||
* return |MSB - LSB| + 1
|
||||
*
|
||||
* ivl_parameter_signed
|
||||
* Returns if the parameter was declared to be signed.
|
||||
*
|
||||
|
|
@ -1628,6 +1631,7 @@ extern ivl_scope_t ivl_parameter_scope(ivl_parameter_t net);
|
|||
extern ivl_expr_t ivl_parameter_expr(ivl_parameter_t net);
|
||||
extern int ivl_parameter_msb(ivl_parameter_t net);
|
||||
extern int ivl_parameter_lsb(ivl_parameter_t net);
|
||||
extern unsigned ivl_parameter_width(ivl_parameter_t net);
|
||||
extern int ivl_parameter_signed(ivl_parameter_t net);
|
||||
extern int ivl_parameter_local(ivl_parameter_t net);
|
||||
extern const char* ivl_parameter_file(ivl_parameter_t net);
|
||||
|
|
|
|||
13
t-dll-api.cc
13
t-dll-api.cc
|
|
@ -1764,6 +1764,19 @@ extern "C" int ivl_parameter_lsb(ivl_parameter_t net)
|
|||
return net->lsb;
|
||||
}
|
||||
|
||||
/*
|
||||
* No need to waste space with storing the width of the parameter since
|
||||
* it can easily be computed when needed.
|
||||
*/
|
||||
extern "C" unsigned ivl_parameter_width(ivl_parameter_t net)
|
||||
{
|
||||
unsigned result = 1;
|
||||
assert(net);
|
||||
if (net->msb >= net->lsb) result += net->msb - net->lsb;
|
||||
else result += net->lsb - net->msb;
|
||||
return result;
|
||||
}
|
||||
|
||||
extern "C" ivl_expr_t ivl_parameter_expr(ivl_parameter_t net)
|
||||
{
|
||||
assert(net);
|
||||
|
|
|
|||
|
|
@ -314,7 +314,7 @@ void emit_scope_variables(ivl_scope_t scope)
|
|||
fprintf(vlog_out, " = ");
|
||||
/* Need to emit the parameters value not its name. */
|
||||
emitting_param = par;
|
||||
emit_expr(scope, pex, ivl_expr_width(pex), 1, 0, 0);
|
||||
emit_expr(scope, pex, ivl_parameter_width(par), 1, 0, 0);
|
||||
emitting_param = 0;
|
||||
fprintf(vlog_out, ";");
|
||||
if (emit_file_line) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue