Merge branch 'master' of github.com:steveicarus/iverilog
This commit is contained in:
commit
c1566bc02b
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ bindir = @bindir@
|
|||
libdir = @libdir@
|
||||
|
||||
CC = @CC@
|
||||
CC = @CXX@
|
||||
CXX = @CXX@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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_; }
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -236,6 +236,7 @@ struct vthread_s {
|
|||
bits4 = vvp_vector4_t();
|
||||
assert(stack_real_.empty());
|
||||
assert(stack_str_.empty());
|
||||
assert(stack_obj_size_ == 0);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue