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_;
|
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_);
|
NetECReal*tmp = new NetECReal(*value_);
|
||||||
tmp->set_line(*this);
|
tmp->set_line(*this);
|
||||||
|
|
@ -4932,7 +4932,7 @@ unsigned PEString::test_width(Design*, NetScope*, width_mode_t&)
|
||||||
return expr_width_;
|
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());
|
verinum val(value());
|
||||||
NetEConst*tmp = new NetEConst(val);
|
NetEConst*tmp = new NetEConst(val);
|
||||||
|
|
|
||||||
|
|
@ -1575,7 +1575,7 @@ extern "C" ivl_event_t ivl_lpm_trigger(ivl_lpm_t net)
|
||||||
/*
|
/*
|
||||||
* Deprecated
|
* 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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ bindir = @bindir@
|
||||||
libdir = @libdir@
|
libdir = @libdir@
|
||||||
|
|
||||||
CC = @CC@
|
CC = @CC@
|
||||||
CC = @CXX@
|
CXX = @CXX@
|
||||||
INSTALL = @INSTALL@
|
INSTALL = @INSTALL@
|
||||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
INSTALL_DATA = @INSTALL_DATA@
|
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, " %%load/obj v%p_0;\n", sig);
|
||||||
fprintf(vvp_out, " %%prop/v %u, %u, %u;\n", pidx, res.base, wid);
|
fprintf(vvp_out, " %%prop/v %u, %u, %u;\n", pidx, res.base, wid);
|
||||||
|
fprintf(vvp_out, " %%pop/obj 1, 0;\n");
|
||||||
|
|
||||||
return res;
|
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
|
* This source code is free software; you can redistribute it
|
||||||
* and/or modify it in source code form under the terms of the GNU
|
* 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, " %%load/obj v%p_0;\n", sig);
|
||||||
fprintf(vvp_out, " %%prop/obj %u;\n", pidx);
|
fprintf(vvp_out, " %%prop/obj %u;\n", pidx);
|
||||||
|
fprintf(vvp_out, " %%pop/obj 1, 1;\n");
|
||||||
return 0;
|
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, " %%load/obj v%p_0;\n", sig);
|
||||||
fprintf(vvp_out, " %%prop/r %u;\n", pidx);
|
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)
|
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, " %%load/obj v%p_0;\n", sig);
|
||||||
fprintf(vvp_out, " %%prop/str %u;\n", pidx);
|
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)
|
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;
|
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)
|
void class_type::set_property(size_t idx, const string&name, const string&type)
|
||||||
{
|
{
|
||||||
assert(idx < properties_.size());
|
assert(idx < properties_.size());
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,7 @@ class class_type : public __vpiHandle {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit class_type(const std::string&nam, size_t nprop);
|
explicit class_type(const std::string&nam, size_t nprop);
|
||||||
|
~class_type();
|
||||||
|
|
||||||
// This is the name of the class type.
|
// This is the name of the class type.
|
||||||
inline const std::string&class_name(void) const { return class_name_; }
|
inline const std::string&class_name(void) const { return class_name_; }
|
||||||
|
|
|
||||||
|
|
@ -897,11 +897,9 @@ the result.
|
||||||
* %prop/str <pid>
|
* %prop/str <pid>
|
||||||
|
|
||||||
Read a vector (/v) or real value (/r) or string (/str) or object from
|
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 stack. Push the resulting value to the appropriate stack. The
|
||||||
object that is the source is NOT popped from from object stack.
|
class object that is the source is NOT popped from the object stack.
|
||||||
|
|
||||||
The class object stack is NOT popped.
|
|
||||||
|
|
||||||
* %pushi/real <mant>, <exp>
|
* %pushi/real <mant>, <exp>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -132,8 +132,8 @@ void root_table_delete(void)
|
||||||
for (unsigned idx = 0; idx < vpip_root_table_cnt; idx += 1) {
|
for (unsigned idx = 0; idx < vpip_root_table_cnt; idx += 1) {
|
||||||
struct __vpiScope *scope = static_cast<__vpiScope *>
|
struct __vpiScope *scope = static_cast<__vpiScope *>
|
||||||
(vpip_root_table_ptr[idx]);
|
(vpip_root_table_ptr[idx]);
|
||||||
delete_sub_scopes(scope);
|
|
||||||
vthreads_delete(scope);
|
vthreads_delete(scope);
|
||||||
|
delete_sub_scopes(scope);
|
||||||
delete scope;
|
delete scope;
|
||||||
}
|
}
|
||||||
free(vpip_root_table_ptr);
|
free(vpip_root_table_ptr);
|
||||||
|
|
|
||||||
|
|
@ -236,6 +236,7 @@ struct vthread_s {
|
||||||
bits4 = vvp_vector4_t();
|
bits4 = vvp_vector4_t();
|
||||||
assert(stack_real_.empty());
|
assert(stack_real_.empty());
|
||||||
assert(stack_str_.empty());
|
assert(stack_str_.empty());
|
||||||
|
assert(stack_obj_size_ == 0);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue