t-dll iterates signals, and passes them to the
target module. Some of NetObj should return char*, not string.
This commit is contained in:
parent
eb781a7441
commit
ff32325d07
22
ivl_target.h
22
ivl_target.h
|
|
@ -19,7 +19,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT) && !defined(macintosh)
|
#if !defined(WINNT) && !defined(macintosh)
|
||||||
#ident "$Id: ivl_target.h,v 1.5 2000/08/26 00:54:03 steve Exp $"
|
#ident "$Id: ivl_target.h,v 1.6 2000/08/27 15:51:50 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
@ -64,6 +64,7 @@ typedef struct ivl_net_const_s*ivl_net_const_t;
|
||||||
typedef struct ivl_net_event_s*ivl_net_event_t;
|
typedef struct ivl_net_event_s*ivl_net_event_t;
|
||||||
typedef struct ivl_net_logic_s*ivl_net_logic_t;
|
typedef struct ivl_net_logic_s*ivl_net_logic_t;
|
||||||
typedef struct ivl_net_probe_s*ivl_net_probe_t;
|
typedef struct ivl_net_probe_s*ivl_net_probe_t;
|
||||||
|
typedef struct ivl_net_signal_s*ivl_net_signal_t;
|
||||||
typedef struct ivl_nexus_s *ivl_nexus_t;
|
typedef struct ivl_nexus_s *ivl_nexus_t;
|
||||||
typedef struct ivl_process_s *ivl_process_t;
|
typedef struct ivl_process_s *ivl_process_t;
|
||||||
typedef struct ivl_scope_s *ivl_scope_t;
|
typedef struct ivl_scope_s *ivl_scope_t;
|
||||||
|
|
@ -81,6 +82,7 @@ typedef struct ivl_scope_s *ivl_scope_t;
|
||||||
of the output file. */
|
of the output file. */
|
||||||
extern const char* ivl_get_flag(ivl_design_t, const char*key);
|
extern const char* ivl_get_flag(ivl_design_t, const char*key);
|
||||||
|
|
||||||
|
/* Get the name of the root module. This can be used as the design name. */
|
||||||
extern const char* ivl_get_root_name(ivl_design_t net);
|
extern const char* ivl_get_root_name(ivl_design_t net);
|
||||||
|
|
||||||
/* LOGIC
|
/* LOGIC
|
||||||
|
|
@ -104,7 +106,10 @@ extern unsigned ivl_get_logic_pins(ivl_net_logic_t net);
|
||||||
* nexus. These functions manage the ivl_nexus_t object.
|
* nexus. These functions manage the ivl_nexus_t object.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const char* ivl_get_nexus_name(ivl_nexus_t net);
|
extern const char* ivl_get_nexus_name(ivl_nexus_t net);
|
||||||
|
|
||||||
|
|
||||||
|
extern unsigned ivl_get_signal_pins(ivl_net_signal_t net);
|
||||||
|
|
||||||
|
|
||||||
/* TARGET MODULE ENTRY POINTS
|
/* TARGET MODULE ENTRY POINTS
|
||||||
|
|
@ -172,6 +177,13 @@ typedef int (*net_logic_f)(const char*name, ivl_net_logic_t net);
|
||||||
before this probe is called. */
|
before this probe is called. */
|
||||||
typedef int (*net_probe_f)(const char*name, ivl_net_probe_t net);
|
typedef int (*net_probe_f)(const char*name, ivl_net_probe_t net);
|
||||||
|
|
||||||
|
/* target_net_signal
|
||||||
|
|
||||||
|
Signals are things like "wire foo" or "reg bar;" that is, declared
|
||||||
|
signals in the verilog source. These are not memories, which are
|
||||||
|
handled elsewhere. */
|
||||||
|
typedef int (*net_signal_f)(const char*name, ivl_net_signal_t net);
|
||||||
|
|
||||||
|
|
||||||
/* target_process
|
/* target_process
|
||||||
|
|
||||||
|
|
@ -198,6 +210,12 @@ _END_DECL
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: ivl_target.h,v $
|
* $Log: ivl_target.h,v $
|
||||||
|
* Revision 1.6 2000/08/27 15:51:50 steve
|
||||||
|
* t-dll iterates signals, and passes them to the
|
||||||
|
* target module.
|
||||||
|
*
|
||||||
|
* Some of NetObj should return char*, not string.
|
||||||
|
*
|
||||||
* Revision 1.5 2000/08/26 00:54:03 steve
|
* Revision 1.5 2000/08/26 00:54:03 steve
|
||||||
* Get at gate information for ivl_target interface.
|
* Get at gate information for ivl_target interface.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
19
net_scope.cc
19
net_scope.cc
|
|
@ -17,7 +17,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT) && !defined(macintosh)
|
#if !defined(WINNT) && !defined(macintosh)
|
||||||
#ident "$Id: net_scope.cc,v 1.8 2000/07/30 18:25:44 steve Exp $"
|
#ident "$Id: net_scope.cc,v 1.9 2000/08/27 15:51:50 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "netlist.h"
|
# include "netlist.h"
|
||||||
|
|
@ -32,16 +32,18 @@
|
||||||
* in question.
|
* in question.
|
||||||
*/
|
*/
|
||||||
NetScope::NetScope(const string&n)
|
NetScope::NetScope(const string&n)
|
||||||
: type_(NetScope::MODULE), name_(n), up_(0), sib_(0), sub_(0)
|
: type_(NetScope::MODULE), up_(0), sib_(0), sub_(0)
|
||||||
{
|
{
|
||||||
memories_ = 0;
|
memories_ = 0;
|
||||||
signals_ = 0;
|
signals_ = 0;
|
||||||
events_ = 0;
|
events_ = 0;
|
||||||
lcounter_ = 0;
|
lcounter_ = 0;
|
||||||
|
name_ = new char[n.length()+1];
|
||||||
|
strcpy(name_, n.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
NetScope::NetScope(NetScope*up, const string&n, NetScope::TYPE t)
|
NetScope::NetScope(NetScope*up, const string&n, NetScope::TYPE t)
|
||||||
: type_(t), name_(n), up_(up), sib_(0), sub_(0)
|
: type_(t), up_(up), sib_(0), sub_(0)
|
||||||
{
|
{
|
||||||
memories_ = 0;
|
memories_ = 0;
|
||||||
signals_ = 0;
|
signals_ = 0;
|
||||||
|
|
@ -59,6 +61,8 @@ NetScope::NetScope(NetScope*up, const string&n, NetScope::TYPE t)
|
||||||
func_ = 0;
|
func_ = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
name_ = new char[n.length()+1];
|
||||||
|
strcpy(name_, n.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
NetScope::~NetScope()
|
NetScope::~NetScope()
|
||||||
|
|
@ -66,6 +70,7 @@ NetScope::~NetScope()
|
||||||
assert(sib_ == 0);
|
assert(sib_ == 0);
|
||||||
assert(sub_ == 0);
|
assert(sub_ == 0);
|
||||||
lcounter_ = 0;
|
lcounter_ = 0;
|
||||||
|
delete[]name_;
|
||||||
}
|
}
|
||||||
|
|
||||||
NetExpr* NetScope::set_parameter(const string&key, NetExpr*expr)
|
NetExpr* NetScope::set_parameter(const string&key, NetExpr*expr)
|
||||||
|
|
@ -162,7 +167,7 @@ int NetScope::time_precision() const
|
||||||
return time_prec_;
|
return time_prec_;
|
||||||
}
|
}
|
||||||
|
|
||||||
string NetScope::basename() const
|
const char* NetScope::basename() const
|
||||||
{
|
{
|
||||||
return name_;
|
return name_;
|
||||||
}
|
}
|
||||||
|
|
@ -350,6 +355,12 @@ string NetScope::local_symbol()
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: net_scope.cc,v $
|
* $Log: net_scope.cc,v $
|
||||||
|
* Revision 1.9 2000/08/27 15:51:50 steve
|
||||||
|
* t-dll iterates signals, and passes them to the
|
||||||
|
* target module.
|
||||||
|
*
|
||||||
|
* Some of NetObj should return char*, not string.
|
||||||
|
*
|
||||||
* Revision 1.8 2000/07/30 18:25:44 steve
|
* Revision 1.8 2000/07/30 18:25:44 steve
|
||||||
* Rearrange task and function elaboration so that the
|
* Rearrange task and function elaboration so that the
|
||||||
* NetTaskDef and NetFuncDef functions are created during
|
* NetTaskDef and NetFuncDef functions are created during
|
||||||
|
|
|
||||||
21
netlist.cc
21
netlist.cc
|
|
@ -17,7 +17,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT) && !defined(macintosh)
|
#if !defined(WINNT) && !defined(macintosh)
|
||||||
#ident "$Id: netlist.cc,v 1.133 2000/07/14 06:12:57 steve Exp $"
|
#ident "$Id: netlist.cc,v 1.134 2000/08/27 15:51:50 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include <cassert>
|
# include <cassert>
|
||||||
|
|
@ -163,8 +163,11 @@ Link* find_next_output(Link*lnk)
|
||||||
}
|
}
|
||||||
|
|
||||||
NetObj::NetObj(const string&n, unsigned np)
|
NetObj::NetObj(const string&n, unsigned np)
|
||||||
: name_(n), npins_(np), delay1_(0), delay2_(0), delay3_(0)
|
: npins_(np), delay1_(0), delay2_(0), delay3_(0)
|
||||||
{
|
{
|
||||||
|
name_ = new char[n.length()+1];
|
||||||
|
strcpy(name_, n.c_str());
|
||||||
|
|
||||||
pins_ = new Link[npins_];
|
pins_ = new Link[npins_];
|
||||||
for (unsigned idx = 0 ; idx < npins_ ; idx += 1) {
|
for (unsigned idx = 0 ; idx < npins_ ; idx += 1) {
|
||||||
pins_[idx].node_ = this;
|
pins_[idx].node_ = this;
|
||||||
|
|
@ -174,6 +177,7 @@ NetObj::NetObj(const string&n, unsigned np)
|
||||||
|
|
||||||
NetObj::~NetObj()
|
NetObj::~NetObj()
|
||||||
{
|
{
|
||||||
|
delete[]name_;
|
||||||
delete[]pins_;
|
delete[]pins_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2155,7 +2159,7 @@ NetESignal::~NetESignal()
|
||||||
net_->decr_eref();
|
net_->decr_eref();
|
||||||
}
|
}
|
||||||
|
|
||||||
const string& NetESignal::name() const
|
string NetESignal::name() const
|
||||||
{
|
{
|
||||||
return net_->name();
|
return net_->name();
|
||||||
}
|
}
|
||||||
|
|
@ -2188,6 +2192,11 @@ NetESubSignal::~NetESubSignal()
|
||||||
delete idx_;
|
delete idx_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
string NetESubSignal::name() const
|
||||||
|
{
|
||||||
|
return sig_->name();
|
||||||
|
}
|
||||||
|
|
||||||
NetESubSignal* NetESubSignal::dup_expr() const
|
NetESubSignal* NetESubSignal::dup_expr() const
|
||||||
{
|
{
|
||||||
assert(0);
|
assert(0);
|
||||||
|
|
@ -2458,6 +2467,12 @@ bool NetUDP::sequ_glob_(string input, char output)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: netlist.cc,v $
|
* $Log: netlist.cc,v $
|
||||||
|
* Revision 1.134 2000/08/27 15:51:50 steve
|
||||||
|
* t-dll iterates signals, and passes them to the
|
||||||
|
* target module.
|
||||||
|
*
|
||||||
|
* Some of NetObj should return char*, not string.
|
||||||
|
*
|
||||||
* Revision 1.133 2000/07/14 06:12:57 steve
|
* Revision 1.133 2000/07/14 06:12:57 steve
|
||||||
* Move inital value handling from NetNet to Nexus
|
* Move inital value handling from NetNet to Nexus
|
||||||
* objects. This allows better propogation of inital
|
* objects. This allows better propogation of inital
|
||||||
|
|
|
||||||
20
netlist.h
20
netlist.h
|
|
@ -19,7 +19,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT) && !defined(macintosh)
|
#if !defined(WINNT) && !defined(macintosh)
|
||||||
#ident "$Id: netlist.h,v 1.157 2000/08/26 00:54:03 steve Exp $"
|
#ident "$Id: netlist.h,v 1.158 2000/08/27 15:51:50 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -76,7 +76,7 @@ class NetObj {
|
||||||
explicit NetObj(const string&n, unsigned npins);
|
explicit NetObj(const string&n, unsigned npins);
|
||||||
virtual ~NetObj();
|
virtual ~NetObj();
|
||||||
|
|
||||||
const string& name() const { return name_; }
|
const char* name() const { return name_; }
|
||||||
|
|
||||||
unsigned pin_count() const { return npins_; }
|
unsigned pin_count() const { return npins_; }
|
||||||
|
|
||||||
|
|
@ -103,7 +103,7 @@ class NetObj {
|
||||||
void dump_obj_attr(ostream&, unsigned) const;
|
void dump_obj_attr(ostream&, unsigned) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
string name_;
|
char* name_;
|
||||||
Link*pins_;
|
Link*pins_;
|
||||||
const unsigned npins_;
|
const unsigned npins_;
|
||||||
unsigned delay1_;
|
unsigned delay1_;
|
||||||
|
|
@ -2378,7 +2378,7 @@ class NetESignal : public NetExpr {
|
||||||
NetESignal(NetNet*n);
|
NetESignal(NetNet*n);
|
||||||
~NetESignal();
|
~NetESignal();
|
||||||
|
|
||||||
const string& name() const;
|
string name() const;
|
||||||
virtual bool set_width(unsigned);
|
virtual bool set_width(unsigned);
|
||||||
|
|
||||||
virtual NetESignal* dup_expr() const;
|
virtual NetESignal* dup_expr() const;
|
||||||
|
|
@ -2410,7 +2410,7 @@ class NetESubSignal : public NetExpr {
|
||||||
NetESubSignal(NetESignal*sig, NetExpr*ex);
|
NetESubSignal(NetESignal*sig, NetExpr*ex);
|
||||||
~NetESubSignal();
|
~NetESubSignal();
|
||||||
|
|
||||||
const string&name() const { return sig_->name(); }
|
string name() const;
|
||||||
const NetExpr*index() const { return idx_; }
|
const NetExpr*index() const { return idx_; }
|
||||||
|
|
||||||
virtual bool set_width(unsigned);
|
virtual bool set_width(unsigned);
|
||||||
|
|
@ -2513,7 +2513,7 @@ class NetScope {
|
||||||
/* The name of the scope is the fully qualified hierarchical
|
/* The name of the scope is the fully qualified hierarchical
|
||||||
name, whereas the basename is just my name within my parent
|
name, whereas the basename is just my name within my parent
|
||||||
scope. */
|
scope. */
|
||||||
string basename() const;
|
const char* basename() const;
|
||||||
string name() const;
|
string name() const;
|
||||||
|
|
||||||
void run_defparams(class Design*);
|
void run_defparams(class Design*);
|
||||||
|
|
@ -2540,7 +2540,7 @@ class NetScope {
|
||||||
|
|
||||||
private:
|
private:
|
||||||
TYPE type_;
|
TYPE type_;
|
||||||
string name_;
|
char* name_;
|
||||||
|
|
||||||
signed char time_unit_, time_prec_;
|
signed char time_unit_, time_prec_;
|
||||||
|
|
||||||
|
|
@ -2726,6 +2726,12 @@ extern ostream& operator << (ostream&, NetNet::Type);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: netlist.h,v $
|
* $Log: netlist.h,v $
|
||||||
|
* Revision 1.158 2000/08/27 15:51:50 steve
|
||||||
|
* t-dll iterates signals, and passes them to the
|
||||||
|
* target module.
|
||||||
|
*
|
||||||
|
* Some of NetObj should return char*, not string.
|
||||||
|
*
|
||||||
* Revision 1.157 2000/08/26 00:54:03 steve
|
* Revision 1.157 2000/08/26 00:54:03 steve
|
||||||
* Get at gate information for ivl_target interface.
|
* Get at gate information for ivl_target interface.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
48
t-dll.cc
48
t-dll.cc
|
|
@ -17,7 +17,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT) && !defined(macintosh)
|
#if !defined(WINNT) && !defined(macintosh)
|
||||||
#ident "$Id: t-dll.cc,v 1.5 2000/08/26 00:54:03 steve Exp $"
|
#ident "$Id: t-dll.cc,v 1.6 2000/08/27 15:51:51 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "target.h"
|
# include "target.h"
|
||||||
|
|
@ -41,10 +41,6 @@ struct ivl_process_s {
|
||||||
const NetProcTop*top_;
|
const NetProcTop*top_;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ivl_scope_s {
|
|
||||||
const NetScope*scope_;
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The DLL target type loads a named object file to handle the process
|
* The DLL target type loads a named object file to handle the process
|
||||||
* of scanning the netlist. When it is time to start the design, I
|
* of scanning the netlist. When it is time to start the design, I
|
||||||
|
|
@ -65,6 +61,7 @@ struct dll_target : public target_t {
|
||||||
|
|
||||||
bool process(const NetProcTop*);
|
bool process(const NetProcTop*);
|
||||||
void scope(const NetScope*);
|
void scope(const NetScope*);
|
||||||
|
void signal(const NetNet*);
|
||||||
|
|
||||||
void*dll_;
|
void*dll_;
|
||||||
string dll_path_;
|
string dll_path_;
|
||||||
|
|
@ -79,6 +76,7 @@ struct dll_target : public target_t {
|
||||||
net_event_f net_event_;
|
net_event_f net_event_;
|
||||||
net_logic_f net_logic_;
|
net_logic_f net_logic_;
|
||||||
net_probe_f net_probe_;
|
net_probe_f net_probe_;
|
||||||
|
net_signal_f net_signal_;
|
||||||
|
|
||||||
process_f process_;
|
process_f process_;
|
||||||
scope_f scope_;
|
scope_f scope_;
|
||||||
|
|
@ -105,6 +103,7 @@ bool dll_target::start_design(const Design*des)
|
||||||
net_event_ = (net_event_f) dlsym(dll_, LU "target_net_event" TU);
|
net_event_ = (net_event_f) dlsym(dll_, LU "target_net_event" TU);
|
||||||
net_logic_ = (net_logic_f) dlsym(dll_, LU "target_net_logic" TU);
|
net_logic_ = (net_logic_f) dlsym(dll_, LU "target_net_logic" TU);
|
||||||
net_probe_ = (net_probe_f) dlsym(dll_, LU "target_net_probe" TU);
|
net_probe_ = (net_probe_f) dlsym(dll_, LU "target_net_probe" TU);
|
||||||
|
net_signal_ = (net_signal_f)dlsym(dll_, LU "target_net_signal" TU);
|
||||||
process_ = (process_f) dlsym(dll_, LU "target_process" TU);
|
process_ = (process_f) dlsym(dll_, LU "target_process" TU);
|
||||||
scope_ = (scope_f) dlsym(dll_, LU "target_scope" TU);
|
scope_ = (scope_f) dlsym(dll_, LU "target_scope" TU);
|
||||||
|
|
||||||
|
|
@ -121,7 +120,7 @@ void dll_target::end_design(const Design*)
|
||||||
bool dll_target::bufz(const NetBUFZ*net)
|
bool dll_target::bufz(const NetBUFZ*net)
|
||||||
{
|
{
|
||||||
if (net_bufz_) {
|
if (net_bufz_) {
|
||||||
int rc = (net_bufz_)(net->name().c_str(), 0);
|
int rc = (net_bufz_)(net->name(), 0);
|
||||||
return rc == 0;
|
return rc == 0;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -152,7 +151,7 @@ void dll_target::logic(const NetLogic*net)
|
||||||
obj.dev_ = net;
|
obj.dev_ = net;
|
||||||
|
|
||||||
if (net_logic_) {
|
if (net_logic_) {
|
||||||
(net_logic_)(net->name().c_str(), &obj);
|
(net_logic_)(net->name(), &obj);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
cerr << dll_path_ << ": internal error: target DLL lacks "
|
cerr << dll_path_ << ": internal error: target DLL lacks "
|
||||||
|
|
@ -169,7 +168,7 @@ bool dll_target::net_const(const NetConst*net)
|
||||||
obj.con_ = net;
|
obj.con_ = net;
|
||||||
|
|
||||||
if (net_const_) {
|
if (net_const_) {
|
||||||
int rc = (net_const_)(net->name().c_str(), &obj);
|
int rc = (net_const_)(net->name(), &obj);
|
||||||
return rc == 0;
|
return rc == 0;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -184,7 +183,7 @@ bool dll_target::net_const(const NetConst*net)
|
||||||
void dll_target::net_probe(const NetEvProbe*net)
|
void dll_target::net_probe(const NetEvProbe*net)
|
||||||
{
|
{
|
||||||
if (net_probe_) {
|
if (net_probe_) {
|
||||||
int rc = (net_probe_)(net->name().c_str(), 0);
|
int rc = (net_probe_)(net->name(), 0);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -217,12 +216,21 @@ bool dll_target::process(const NetProcTop*net)
|
||||||
|
|
||||||
void dll_target::scope(const NetScope*net)
|
void dll_target::scope(const NetScope*net)
|
||||||
{
|
{
|
||||||
struct ivl_scope_s obj;
|
|
||||||
|
|
||||||
obj.scope_ = net;
|
|
||||||
|
|
||||||
if (scope_)
|
if (scope_)
|
||||||
(scope_)(&obj);
|
(scope_)( (ivl_scope_t)net );
|
||||||
|
}
|
||||||
|
|
||||||
|
void dll_target::signal(const NetNet*net)
|
||||||
|
{
|
||||||
|
if (net_signal_) {
|
||||||
|
int rc = (net_signal_)(net->name(), (ivl_net_signal_t)net);
|
||||||
|
return;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
cerr << dll_path_ << ": internal error: target DLL lacks "
|
||||||
|
<< "target_net_signal function." << endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extern const struct target tgt_dll = { "dll", &dll_target_obj };
|
extern const struct target tgt_dll = { "dll", &dll_target_obj };
|
||||||
|
|
@ -268,8 +276,20 @@ extern "C" const char* ivl_get_nexus_name(ivl_nexus_t net)
|
||||||
return nex->name();
|
return nex->name();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern "C" unsigned ivl_get_signal_pins(ivl_net_signal_t net)
|
||||||
|
{
|
||||||
|
const NetNet*sig = (const NetNet*)net;
|
||||||
|
return sig->pin_count();
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: t-dll.cc,v $
|
* $Log: t-dll.cc,v $
|
||||||
|
* Revision 1.6 2000/08/27 15:51:51 steve
|
||||||
|
* t-dll iterates signals, and passes them to the
|
||||||
|
* target module.
|
||||||
|
*
|
||||||
|
* Some of NetObj should return char*, not string.
|
||||||
|
*
|
||||||
* Revision 1.5 2000/08/26 00:54:03 steve
|
* Revision 1.5 2000/08/26 00:54:03 steve
|
||||||
* Get at gate information for ivl_target interface.
|
* Get at gate information for ivl_target interface.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT) && !defined(macintosh)
|
#if !defined(WINNT) && !defined(macintosh)
|
||||||
#ident "$Id: t-null.cc,v 1.16 2000/08/14 04:39:57 steve Exp $"
|
#ident "$Id: t-null.cc,v 1.17 2000/08/27 15:51:51 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "netlist.h"
|
# include "netlist.h"
|
||||||
|
|
@ -35,6 +35,7 @@ static class target_null_t : public target_t {
|
||||||
void event(const NetEvent*) { }
|
void event(const NetEvent*) { }
|
||||||
void func_def(const NetFuncDef*) { }
|
void func_def(const NetFuncDef*) { }
|
||||||
void memory(const NetMemory*) { }
|
void memory(const NetMemory*) { }
|
||||||
|
void signal(const NetNet*) { }
|
||||||
void task_def(const NetTaskDef*) { }
|
void task_def(const NetTaskDef*) { }
|
||||||
void net_assign(const NetAssign*) { }
|
void net_assign(const NetAssign*) { }
|
||||||
void net_assign_nb(const NetAssignNB*) { }
|
void net_assign_nb(const NetAssignNB*) { }
|
||||||
|
|
@ -54,6 +55,12 @@ static class target_null_t : public target_t {
|
||||||
extern const struct target tgt_null = { "null", &target_null_obj };
|
extern const struct target tgt_null = { "null", &target_null_obj };
|
||||||
/*
|
/*
|
||||||
* $Log: t-null.cc,v $
|
* $Log: t-null.cc,v $
|
||||||
|
* Revision 1.17 2000/08/27 15:51:51 steve
|
||||||
|
* t-dll iterates signals, and passes them to the
|
||||||
|
* target module.
|
||||||
|
*
|
||||||
|
* Some of NetObj should return char*, not string.
|
||||||
|
*
|
||||||
* Revision 1.16 2000/08/14 04:39:57 steve
|
* Revision 1.16 2000/08/14 04:39:57 steve
|
||||||
* add th t-dll functions for net_const, net_bufz and processes.
|
* add th t-dll functions for net_const, net_bufz and processes.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
12
target.cc
12
target.cc
|
|
@ -17,7 +17,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT) && !defined(macintosh)
|
#if !defined(WINNT) && !defined(macintosh)
|
||||||
#ident "$Id: target.cc,v 1.44 2000/08/14 04:39:57 steve Exp $"
|
#ident "$Id: target.cc,v 1.45 2000/08/27 15:51:51 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "target.h"
|
# include "target.h"
|
||||||
|
|
@ -37,10 +37,6 @@ void target_t::event(const NetEvent*ev)
|
||||||
<< "): Unhandled event <" << ev->full_name() << ">." << endl;
|
<< "): Unhandled event <" << ev->full_name() << ">." << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void target_t::signal(const NetNet*)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void target_t::memory(const NetMemory*)
|
void target_t::memory(const NetMemory*)
|
||||||
{
|
{
|
||||||
cerr << "target (" << typeid(*this).name() << "): "
|
cerr << "target (" << typeid(*this).name() << "): "
|
||||||
|
|
@ -396,6 +392,12 @@ void expr_scan_t::expr_binary(const NetEBinary*ex)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: target.cc,v $
|
* $Log: target.cc,v $
|
||||||
|
* Revision 1.45 2000/08/27 15:51:51 steve
|
||||||
|
* t-dll iterates signals, and passes them to the
|
||||||
|
* target module.
|
||||||
|
*
|
||||||
|
* Some of NetObj should return char*, not string.
|
||||||
|
*
|
||||||
* Revision 1.44 2000/08/14 04:39:57 steve
|
* Revision 1.44 2000/08/14 04:39:57 steve
|
||||||
* add th t-dll functions for net_const, net_bufz and processes.
|
* add th t-dll functions for net_const, net_bufz and processes.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
10
target.h
10
target.h
|
|
@ -19,7 +19,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT) && !defined(macintosh)
|
#if !defined(WINNT) && !defined(macintosh)
|
||||||
#ident "$Id: target.h,v 1.43 2000/08/14 04:39:57 steve Exp $"
|
#ident "$Id: target.h,v 1.44 2000/08/27 15:51:51 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "netlist.h"
|
# include "netlist.h"
|
||||||
|
|
@ -63,7 +63,7 @@ struct target_t {
|
||||||
virtual void event(const NetEvent*);
|
virtual void event(const NetEvent*);
|
||||||
|
|
||||||
/* Output a signal (called for each signal) */
|
/* Output a signal (called for each signal) */
|
||||||
virtual void signal(const NetNet*);
|
virtual void signal(const NetNet*) =0;
|
||||||
|
|
||||||
/* Output a memory (called for each memory object) */
|
/* Output a memory (called for each memory object) */
|
||||||
virtual void memory(const NetMemory*);
|
virtual void memory(const NetMemory*);
|
||||||
|
|
@ -160,6 +160,12 @@ extern const struct target *target_table[];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: target.h,v $
|
* $Log: target.h,v $
|
||||||
|
* Revision 1.44 2000/08/27 15:51:51 steve
|
||||||
|
* t-dll iterates signals, and passes them to the
|
||||||
|
* target module.
|
||||||
|
*
|
||||||
|
* Some of NetObj should return char*, not string.
|
||||||
|
*
|
||||||
* Revision 1.43 2000/08/14 04:39:57 steve
|
* Revision 1.43 2000/08/14 04:39:57 steve
|
||||||
* add th t-dll functions for net_const, net_bufz and processes.
|
* add th t-dll functions for net_const, net_bufz and processes.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT) && !defined(macintosh)
|
#if !defined(WINNT) && !defined(macintosh)
|
||||||
#ident "$Id: stub.c,v 1.5 2000/08/26 00:54:03 steve Exp $"
|
#ident "$Id: stub.c,v 1.6 2000/08/27 15:51:51 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -106,6 +106,13 @@ int target_net_probe(const char*name, ivl_net_probe_t net)
|
||||||
fprintf(out, "STUB: %s: probe\n", name);
|
fprintf(out, "STUB: %s: probe\n", name);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int target_net_signal(const char*name, ivl_net_signal_t net)
|
||||||
|
{
|
||||||
|
fprintf(out, "STUB: %s: signal [%u]\n", name, ivl_get_signal_pins(net));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int target_process(ivl_process_t net)
|
int target_process(ivl_process_t net)
|
||||||
{
|
{
|
||||||
fprintf(out, "STUB: process\n");
|
fprintf(out, "STUB: process\n");
|
||||||
|
|
@ -114,6 +121,12 @@ int target_process(ivl_process_t net)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: stub.c,v $
|
* $Log: stub.c,v $
|
||||||
|
* Revision 1.6 2000/08/27 15:51:51 steve
|
||||||
|
* t-dll iterates signals, and passes them to the
|
||||||
|
* target module.
|
||||||
|
*
|
||||||
|
* Some of NetObj should return char*, not string.
|
||||||
|
*
|
||||||
* Revision 1.5 2000/08/26 00:54:03 steve
|
* Revision 1.5 2000/08/26 00:54:03 steve
|
||||||
* Get at gate information for ivl_target interface.
|
* Get at gate information for ivl_target interface.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue