Merge branch 'master' of github.com:steveicarus/iverilog

This commit is contained in:
Stephen Williams 2013-12-04 16:22:11 -08:00
commit c1566bc02b
12 changed files with 20 additions and 10 deletions

View File

@ -2538,7 +2538,7 @@ unsigned PEFNumber::test_width(Design*, NetScope*, width_mode_t&)
return expr_width_;
}
NetExpr* PEFNumber::elaborate_expr(Design*, NetScope*, ivl_type_t type, unsigned) const
NetExpr* PEFNumber::elaborate_expr(Design*, NetScope*, ivl_type_t, unsigned) const
{
NetECReal*tmp = new NetECReal(*value_);
tmp->set_line(*this);
@ -4932,7 +4932,7 @@ unsigned PEString::test_width(Design*, NetScope*, width_mode_t&)
return expr_width_;
}
NetEConst* PEString::elaborate_expr(Design*, NetScope*, ivl_type_t type, unsigned)const
NetEConst* PEString::elaborate_expr(Design*, NetScope*, ivl_type_t, unsigned)const
{
verinum val(value());
NetEConst*tmp = new NetEConst(val);

View File

@ -1575,7 +1575,7 @@ extern "C" ivl_event_t ivl_lpm_trigger(ivl_lpm_t net)
/*
* Deprecated
*/
extern "C" ivl_expr_t ivl_lval_mux(ivl_lval_t net)
extern "C" ivl_expr_t ivl_lval_mux(ivl_lval_t)
{
return 0;
}

View File

@ -29,7 +29,7 @@ bindir = @bindir@
libdir = @libdir@
CC = @CC@
CC = @CXX@
CXX = @CXX@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@

View File

@ -2121,6 +2121,7 @@ static struct vector_info draw_property_expr(ivl_expr_t expr, unsigned wid)
fprintf(vvp_out, " %%load/obj v%p_0;\n", sig);
fprintf(vvp_out, " %%prop/v %u, %u, %u;\n", pidx, res.base, wid);
fprintf(vvp_out, " %%pop/obj 1, 0;\n");
return res;
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2012 Stephen Williams (steve@icarus.com)
* Copyright (c) 2012-2013 Stephen Williams (steve@icarus.com)
*
* This source code is free software; you can redistribute it
* and/or modify it in source code form under the terms of the GNU
@ -173,6 +173,7 @@ static int eval_object_property(ivl_expr_t expr)
fprintf(vvp_out, " %%load/obj v%p_0;\n", sig);
fprintf(vvp_out, " %%prop/obj %u;\n", pidx);
fprintf(vvp_out, " %%pop/obj 1, 1;\n");
return 0;
}

View File

@ -172,6 +172,7 @@ static void draw_property_real(ivl_expr_t expr)
fprintf(vvp_out, " %%load/obj v%p_0;\n", sig);
fprintf(vvp_out, " %%prop/r %u;\n", pidx);
fprintf(vvp_out, " %%pop/obj 1, 0;\n");
}
static void draw_realnum_real(ivl_expr_t expr)

View File

@ -67,6 +67,7 @@ static void string_ex_property(ivl_expr_t expr)
fprintf(vvp_out, " %%load/obj v%p_0;\n", sig);
fprintf(vvp_out, " %%prop/str %u;\n", pidx);
fprintf(vvp_out, " %%pop/obj 1, 0;\n");
}
static void string_ex_signal(ivl_expr_t expr)

View File

@ -387,6 +387,12 @@ class_type::class_type(const string&nam, size_t nprop)
instance_size_ = 0;
}
class_type::~class_type()
{
for (size_t idx = 0 ; idx < properties_.size() ; idx += 1)
delete properties_[idx].type;
}
void class_type::set_property(size_t idx, const string&name, const string&type)
{
assert(idx < properties_.size());

View File

@ -39,6 +39,7 @@ class class_type : public __vpiHandle {
public:
explicit class_type(const std::string&nam, size_t nprop);
~class_type();
// This is the name of the class type.
inline const std::string&class_name(void) const { return class_name_; }

View File

@ -897,11 +897,9 @@ the result.
* %prop/str <pid>
Read a vector (/v) or real value (/r) or string (/str) or object from
the property number <pid> of the class object on the stop of the
the property number <pid> of the class object on the top of the
object stack. Push the resulting value to the appropriate stack. The
object that is the source is NOT popped from from object stack.
The class object stack is NOT popped.
class object that is the source is NOT popped from the object stack.
* %pushi/real <mant>, <exp>

View File

@ -132,8 +132,8 @@ void root_table_delete(void)
for (unsigned idx = 0; idx < vpip_root_table_cnt; idx += 1) {
struct __vpiScope *scope = static_cast<__vpiScope *>
(vpip_root_table_ptr[idx]);
delete_sub_scopes(scope);
vthreads_delete(scope);
delete_sub_scopes(scope);
delete scope;
}
free(vpip_root_table_ptr);

View File

@ -236,6 +236,7 @@ struct vthread_s {
bits4 = vvp_vector4_t();
assert(stack_real_.empty());
assert(stack_str_.empty());
assert(stack_obj_size_ == 0);
}
};