Add basic support for parameters using typedefs
This commit is contained in:
parent
61c82d2cb0
commit
45fbf55806
5
parse.y
5
parse.y
|
|
@ -5183,6 +5183,11 @@ param_type
|
|||
param_active_signed = true;
|
||||
param_active_type = IVL_VT_BOOL;
|
||||
}
|
||||
| TYPE_IDENTIFIER
|
||||
{ pform_set_param_from_type(@1, $1.type, $1.text, param_active_range,
|
||||
param_active_signed, param_active_type);
|
||||
delete[]$1.text;
|
||||
}
|
||||
;
|
||||
|
||||
/* parameter and localparam assignment lists are broken into
|
||||
|
|
|
|||
22
pform.cc
22
pform.cc
|
|
@ -3173,6 +3173,28 @@ void pform_set_defparam(const pform_name_t&name, PExpr*expr)
|
|||
pform_cur_module.front()->defparms.push_back(make_pair(name,expr));
|
||||
}
|
||||
|
||||
void pform_set_param_from_type(const struct vlltype&loc,
|
||||
const data_type_t *data_type,
|
||||
const char *name,
|
||||
list<pform_range_t> *¶m_range,
|
||||
bool ¶m_signed,
|
||||
ivl_variable_type_t ¶m_type)
|
||||
{
|
||||
if (const vector_type_t *vec = dynamic_cast<const vector_type_t*> (data_type)) {
|
||||
param_range = vec->pdims.get();
|
||||
param_signed = vec->signed_flag;
|
||||
param_type = vec->base_type;
|
||||
return;
|
||||
}
|
||||
|
||||
param_range = 0;
|
||||
param_signed = false;
|
||||
param_type = IVL_VT_NO_TYPE;
|
||||
cerr << loc.get_fileline() << ": sorry: cannot currently create a "
|
||||
"parameter of type '" << name << "' which was defined at: "
|
||||
<< data_type->get_fileline() << "." << endl;
|
||||
error_count += 1;
|
||||
}
|
||||
/*
|
||||
* Specify paths.
|
||||
*/
|
||||
|
|
|
|||
7
pform.h
7
pform.h
|
|
@ -424,6 +424,13 @@ extern void pform_set_specparam(const struct vlltype&loc,
|
|||
PExpr*expr);
|
||||
extern void pform_set_defparam(const pform_name_t&name, PExpr*expr);
|
||||
|
||||
extern void pform_set_param_from_type(const struct vlltype&loc,
|
||||
const data_type_t *data_type,
|
||||
const char *name,
|
||||
list<pform_range_t> *¶m_range,
|
||||
bool ¶m_signed,
|
||||
ivl_variable_type_t ¶m_type);
|
||||
|
||||
/*
|
||||
* Functions related to specify blocks.
|
||||
*/
|
||||
|
|
|
|||
Loading…
Reference in New Issue