dll uses StringHeap for named items.
This commit is contained in:
parent
89314d4772
commit
4e753a2c15
|
|
@ -16,7 +16,7 @@
|
|||
# 59 Temple Place - Suite 330
|
||||
# Boston, MA 02111-1307, USA
|
||||
#
|
||||
#ident "$Id: Makefile.in,v 1.130 2002/07/03 23:20:12 steve Exp $"
|
||||
#ident "$Id: Makefile.in,v 1.131 2002/08/04 19:13:16 steve Exp $"
|
||||
#
|
||||
#
|
||||
SHELL = /bin/sh
|
||||
|
|
@ -139,7 +139,7 @@ set_width.o \
|
|||
verinum.o verireal.o target.o targets.o \
|
||||
Attrib.o HName.o LineInfo.o Module.o PDelays.o PEvent.o \
|
||||
PExpr.o PGate.o \
|
||||
PTask.o PFunction.o PWire.o Statement.o \
|
||||
PTask.o PFunction.o PWire.o Statement.o StringHeap.o \
|
||||
$(FF) $(TT)
|
||||
|
||||
Makefile: Makefile.in config.h.in config.status
|
||||
|
|
|
|||
|
|
@ -0,0 +1,74 @@
|
|||
/*
|
||||
* Copyright (c) 2002 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
|
||||
* General Public License as published by the Free Software
|
||||
* Foundation; either version 2 of the License, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
* ---
|
||||
* You should also have recieved a copy of the Picture Elements
|
||||
* Binary Software License offer along with the source. This offer
|
||||
* allows you to obtain the right to redistribute the software in
|
||||
* binary (compiled) form. If you have not received it, contact
|
||||
* Picture Elements, Inc., 777 Panoramic Way, Berkeley, CA 94704.
|
||||
*/
|
||||
#if !defined(WINNT)
|
||||
#ident "$Id: StringHeap.cc,v 1.1 2002/08/04 19:13:16 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "StringHeap.h"
|
||||
#ifdef HAVE_MALLOC_H
|
||||
# include <malloc.h>
|
||||
#endif
|
||||
# include <stdlib.h>
|
||||
# include <string.h>
|
||||
# include <assert.h>
|
||||
|
||||
StringHeap::StringHeap()
|
||||
{
|
||||
cell_base_ = 0;
|
||||
cell_ptr_ = HEAPCELL;
|
||||
}
|
||||
|
||||
StringHeap::~StringHeap()
|
||||
{
|
||||
// This is a planned memory leak. The string heap is indended
|
||||
// to hold permanently-allocated strings.
|
||||
}
|
||||
|
||||
const char* StringHeap::add(const char*text)
|
||||
{
|
||||
unsigned len = strlen(text);
|
||||
assert((len+1) <= HEAPCELL);
|
||||
|
||||
unsigned rem = HEAPCELL - cell_ptr_;
|
||||
if (rem < (len+1)) {
|
||||
cell_base_ = (char*)malloc(HEAPCELL);
|
||||
cell_ptr_ = 0;
|
||||
}
|
||||
|
||||
char*res = cell_base_ + cell_ptr_;
|
||||
memcpy(res, text, len);
|
||||
cell_ptr_ += len;
|
||||
cell_base_[cell_ptr_++] = 0;
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
/*
|
||||
* $Log: StringHeap.cc,v $
|
||||
* Revision 1.1 2002/08/04 19:13:16 steve
|
||||
* dll uses StringHeap for named items.
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
#ifndef __StringHeap_H
|
||||
#define __StringHeap_H
|
||||
/*
|
||||
* Copyright (c) 2002 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
|
||||
* General Public License as published by the Free Software
|
||||
* Foundation; either version 2 of the License, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#if !defined(WINNT)
|
||||
#ident "$Id: StringHeap.h,v 1.1 2002/08/04 19:13:16 steve Exp $"
|
||||
#endif
|
||||
|
||||
class StringHeap {
|
||||
|
||||
public:
|
||||
StringHeap();
|
||||
~StringHeap();
|
||||
|
||||
const char*add(const char*);
|
||||
|
||||
private:
|
||||
enum { HEAPCELL = 0x10000 };
|
||||
|
||||
char*cell_base_;
|
||||
unsigned cell_ptr_;
|
||||
|
||||
private: // not implemented
|
||||
StringHeap(const StringHeap&);
|
||||
StringHeap& operator= (const StringHeap&);
|
||||
};
|
||||
|
||||
/*
|
||||
* $Log: StringHeap.h,v $
|
||||
* Revision 1.1 2002/08/04 19:13:16 steve
|
||||
* dll uses StringHeap for named items.
|
||||
*
|
||||
*/
|
||||
#endif
|
||||
67
t-dll.cc
67
t-dll.cc
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#if !defined(WINNT) && !defined(macintosh)
|
||||
#ident "$Id: t-dll.cc,v 1.92 2002/08/04 18:28:15 steve Exp $"
|
||||
#ident "$Id: t-dll.cc,v 1.93 2002/08/04 19:13:16 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -147,10 +147,10 @@ ivl_attribute_s* dll_target::fill_in_attributes(const Attrib*net)
|
|||
|
||||
for (unsigned idx = 0 ; idx < nattr ; idx += 1) {
|
||||
verinum tmp = net->attr_value(idx);
|
||||
attr[idx].key = strdup(net->attr_key(idx));
|
||||
attr[idx].key = strings_.add(net->attr_key(idx));
|
||||
if (tmp.is_string()) {
|
||||
attr[idx].type = IVL_ATT_STR;
|
||||
attr[idx].val.str = strdup(tmp.as_string().c_str());
|
||||
attr[idx].val.str = strings_.add(tmp.as_string().c_str());
|
||||
|
||||
} else if (tmp == verinum()) {
|
||||
attr[idx].type = IVL_ATT_VOID;
|
||||
|
|
@ -411,7 +411,7 @@ void dll_target::add_root(ivl_design_s &des_, const NetScope *s)
|
|||
{
|
||||
ivl_scope_t root_ = new struct ivl_scope_s;
|
||||
const char *name = s->name().c_str();
|
||||
root_->name_ = strdup(name);
|
||||
root_->name_ = strings_.add(name);
|
||||
root_->child_ = 0;
|
||||
root_->sibling_ = 0;
|
||||
root_->parent = 0;
|
||||
|
|
@ -487,11 +487,11 @@ int dll_target::end_design(const Design*)
|
|||
return rc;
|
||||
}
|
||||
|
||||
static void logic_attributes(struct ivl_net_logic_s *obj,
|
||||
const NetNode*net)
|
||||
void dll_target::logic_attributes(struct ivl_net_logic_s *obj,
|
||||
const NetNode*net)
|
||||
{
|
||||
obj->nattr = net->attr_cnt();
|
||||
obj->attr = dll_target::fill_in_attributes(net);
|
||||
obj->attr = fill_in_attributes(net);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -571,7 +571,7 @@ bool dll_target::bufz(const NetBUFZ*net)
|
|||
|
||||
obj->scope_ = scope;
|
||||
|
||||
obj->name_ = strdup(net->name());
|
||||
obj->name_ = strings_.add(net->name());
|
||||
logic_attributes(obj, net);
|
||||
|
||||
obj->delay[0] = net->rise_time();
|
||||
|
|
@ -588,7 +588,7 @@ void dll_target::event(const NetEvent*net)
|
|||
struct ivl_event_s *obj = new struct ivl_event_s;
|
||||
|
||||
ivl_scope_t scope = find_scope(des_, net->scope());
|
||||
obj->name = strdup(net->full_name().c_str());
|
||||
obj->name = strings_.add(net->full_name().c_str());
|
||||
obj->scope = scope;
|
||||
scope_add_event(scope, obj);
|
||||
|
||||
|
|
@ -745,7 +745,7 @@ void dll_target::logic(const NetLogic*net)
|
|||
assert(scope);
|
||||
|
||||
obj->scope_= scope;
|
||||
obj->name_ = strdup(net->name());
|
||||
obj->name_ = strings_.add(net->name());
|
||||
|
||||
logic_attributes(obj, net);
|
||||
|
||||
|
|
@ -780,7 +780,7 @@ void dll_target::net_case_cmp(const NetCaseCmp*net)
|
|||
ivl_scope_t scope = des_.roots_[0];
|
||||
|
||||
obj->scope_= scope;
|
||||
obj->name_ = strdup(net->name());
|
||||
obj->name_ = strings_.add(net->name());
|
||||
|
||||
obj->delay[0] = net->rise_time();
|
||||
obj->delay[1] = net->fall_time();
|
||||
|
|
@ -809,7 +809,7 @@ bool dll_target::net_function(const NetUserFunc*net)
|
|||
{
|
||||
struct ivl_lpm_s*obj = new struct ivl_lpm_s;
|
||||
obj->type = IVL_LPM_UFUNC;
|
||||
obj->name = strdup(net->name());
|
||||
obj->name = strings_.add(net->name());
|
||||
obj->scope = find_scope(des_, net->scope());
|
||||
assert(obj->scope);
|
||||
|
||||
|
|
@ -869,14 +869,14 @@ void dll_target::udp(const NetUDP*net)
|
|||
{
|
||||
u = new struct ivl_udp_s;
|
||||
u->nrows = net->rows();
|
||||
u->table = (char**)malloc((u->nrows+1)*sizeof(char*));
|
||||
u->table = (ivl_udp_s::ccharp_t*)malloc((u->nrows+1)*sizeof(char*));
|
||||
assert(u->table);
|
||||
u->table[u->nrows] = 0x0;
|
||||
u->nin = net->nin();
|
||||
u->sequ = net->is_sequential();
|
||||
if (u->sequ)
|
||||
u->init = net->get_initial();
|
||||
u->name = strdup(net->udp_name().c_str());
|
||||
u->name = strings_.add(net->udp_name().c_str());
|
||||
string inp;
|
||||
char out;
|
||||
int i = 0;
|
||||
|
|
@ -884,7 +884,7 @@ void dll_target::udp(const NetUDP*net)
|
|||
do
|
||||
{
|
||||
string tt = inp+out;
|
||||
u->table[i++] = strdup(tt.c_str());
|
||||
u->table[i++] = strings_.add(tt.c_str());
|
||||
} while (net->next(inp, out));
|
||||
assert(i==u->nrows);
|
||||
|
||||
|
|
@ -912,7 +912,7 @@ void dll_target::udp(const NetUDP*net)
|
|||
assert(scope);
|
||||
|
||||
obj->scope_= scope;
|
||||
obj->name_ = strdup(net->name());
|
||||
obj->name_ = strings_.add(net->name());
|
||||
|
||||
obj->delay[0] = net->rise_time();
|
||||
obj->delay[1] = net->fall_time();
|
||||
|
|
@ -924,7 +924,7 @@ void dll_target::udp(const NetUDP*net)
|
|||
void dll_target::memory(const NetMemory*net)
|
||||
{
|
||||
ivl_memory_t obj = new struct ivl_memory_s;
|
||||
obj->name_ = strdup(net->name());
|
||||
obj->name_ = strings_.add(net->name());
|
||||
obj->scope_ = find_scope(des_, net->scope());
|
||||
obj->width_ = net->width();
|
||||
obj->signed_ = 0;
|
||||
|
|
@ -941,7 +941,7 @@ void dll_target::lpm_add_sub(const NetAddSub*net)
|
|||
obj->type = IVL_LPM_SUB;
|
||||
else
|
||||
obj->type = IVL_LPM_ADD;
|
||||
obj->name = strdup(net->name());
|
||||
obj->name = strings_.add(net->name());
|
||||
assert(net->scope());
|
||||
obj->scope = find_scope(des_, net->scope());
|
||||
assert(obj->scope);
|
||||
|
|
@ -1010,7 +1010,7 @@ void dll_target::lpm_clshift(const NetCLShift*net)
|
|||
{
|
||||
ivl_lpm_t obj = new struct ivl_lpm_s;
|
||||
obj->type = IVL_LPM_SHIFTL;
|
||||
obj->name = strdup(net->name());
|
||||
obj->name = strings_.add(net->name());
|
||||
assert(net->scope());
|
||||
obj->scope = find_scope(des_, net->scope());
|
||||
assert(obj->scope);
|
||||
|
|
@ -1086,7 +1086,7 @@ void dll_target::lpm_clshift(const NetCLShift*net)
|
|||
void dll_target::lpm_compare(const NetCompare*net)
|
||||
{
|
||||
ivl_lpm_t obj = new struct ivl_lpm_s;
|
||||
obj->name = strdup(net->name());
|
||||
obj->name = strings_.add(net->name());
|
||||
assert(net->scope());
|
||||
obj->scope = find_scope(des_, net->scope());
|
||||
assert(obj->scope);
|
||||
|
|
@ -1198,7 +1198,7 @@ void dll_target::lpm_divide(const NetDivide*net)
|
|||
{
|
||||
ivl_lpm_t obj = new struct ivl_lpm_s;
|
||||
obj->type = IVL_LPM_DIVIDE;
|
||||
obj->name = strdup(net->name());
|
||||
obj->name = strings_.add(net->name());
|
||||
assert(net->scope());
|
||||
obj->scope = find_scope(des_, net->scope());
|
||||
assert(obj->scope);
|
||||
|
|
@ -1256,7 +1256,7 @@ void dll_target::lpm_modulo(const NetModulo*net)
|
|||
{
|
||||
ivl_lpm_t obj = new struct ivl_lpm_s;
|
||||
obj->type = IVL_LPM_MOD;
|
||||
obj->name = strdup(net->name());
|
||||
obj->name = strings_.add(net->name());
|
||||
assert(net->scope());
|
||||
obj->scope = find_scope(des_, net->scope());
|
||||
assert(obj->scope);
|
||||
|
|
@ -1323,7 +1323,7 @@ void dll_target::lpm_ff(const NetFF*net)
|
|||
{
|
||||
ivl_lpm_t obj = new struct ivl_lpm_s;
|
||||
obj->type = IVL_LPM_FF;
|
||||
obj->name = strdup(net->name());
|
||||
obj->name = strings_.add(net->name());
|
||||
obj->scope = find_scope(des_, net->scope());
|
||||
assert(obj->scope);
|
||||
|
||||
|
|
@ -1389,7 +1389,7 @@ void dll_target::lpm_ram_dq(const NetRamDq*net)
|
|||
{
|
||||
ivl_lpm_t obj = new struct ivl_lpm_s;
|
||||
obj->type = IVL_LPM_RAM;
|
||||
obj->name = strdup(net->name());
|
||||
obj->name = strings_.add(net->name());
|
||||
obj->u_.ff.mem = find_memory(des_, net->mem());
|
||||
assert(obj->u_.ff.mem);
|
||||
obj->scope = find_scope(des_, net->mem()->scope());
|
||||
|
|
@ -1503,7 +1503,7 @@ void dll_target::lpm_mult(const NetMult*net)
|
|||
{
|
||||
ivl_lpm_t obj = new struct ivl_lpm_s;
|
||||
obj->type = IVL_LPM_MULT;
|
||||
obj->name = strdup(net->name());
|
||||
obj->name = strings_.add(net->name());
|
||||
assert(net->scope());
|
||||
obj->scope = find_scope(des_, net->scope());
|
||||
assert(obj->scope);
|
||||
|
|
@ -1565,7 +1565,7 @@ void dll_target::lpm_mux(const NetMux*net)
|
|||
{
|
||||
ivl_lpm_t obj = new struct ivl_lpm_s;
|
||||
obj->type = IVL_LPM_MUX;
|
||||
obj->name = strdup(net->name());
|
||||
obj->name = strings_.add(net->name());
|
||||
obj->scope = find_scope(des_, net->scope());
|
||||
assert(obj->scope);
|
||||
|
||||
|
|
@ -1727,7 +1727,7 @@ void dll_target::scope(const NetScope*net)
|
|||
|
||||
} else {
|
||||
scope = new struct ivl_scope_s;
|
||||
scope->name_ = strdup(net->name().c_str());
|
||||
scope->name_ = strings_.add(net->name().c_str());
|
||||
scope->child_ = 0;
|
||||
scope->sibling_ = 0;
|
||||
scope->parent = find_scope(des_, net->parent());
|
||||
|
|
@ -1749,11 +1749,11 @@ void dll_target::scope(const NetScope*net)
|
|||
break;
|
||||
case NetScope::TASK:
|
||||
scope->type_ = IVL_SCT_TASK;
|
||||
scope->tname_ = strdup(net->task_def()->name().c_str());
|
||||
scope->tname_ = strings_.add(net->task_def()->name().c_str());
|
||||
break;
|
||||
case NetScope::FUNC:
|
||||
scope->type_ = IVL_SCT_FUNCTION;
|
||||
scope->tname_ = strdup(net->func_def()->name().c_str());
|
||||
scope->tname_ = strings_.add(net->func_def()->name().c_str());
|
||||
break;
|
||||
case NetScope::BEGIN_END:
|
||||
scope->type_ = IVL_SCT_BEGIN;
|
||||
|
|
@ -1776,7 +1776,7 @@ void dll_target::signal(const NetNet*net)
|
|||
{
|
||||
ivl_signal_t obj = new struct ivl_signal_s;
|
||||
|
||||
obj->name_ = strdup(net->name());
|
||||
obj->name_ = strings_.add(net->name());
|
||||
|
||||
/* Attach the signal to the ivl_scope_t object that contains
|
||||
it. This involves growing the sigs_ array in the scope
|
||||
|
|
@ -1909,7 +1909,7 @@ void dll_target::signal(const NetNet*net)
|
|||
|
||||
} else {
|
||||
ivl_nexus_t tmp = nexus_sig_make(obj, 0);
|
||||
tmp->name_ = strdup(nex->name());
|
||||
tmp->name_ = strings_.add(nex->name());
|
||||
nex->t_cookie(tmp);
|
||||
obj->n.pin_ = tmp;
|
||||
}
|
||||
|
|
@ -1928,7 +1928,7 @@ void dll_target::signal(const NetNet*net)
|
|||
|
||||
} else {
|
||||
ivl_nexus_t tmp = nexus_sig_make(obj, idx);
|
||||
tmp->name_ = strdup(nex->name());
|
||||
tmp->name_ = strings_.add(nex->name());
|
||||
nex->t_cookie(tmp);
|
||||
obj->n.pins_[idx] = tmp;
|
||||
}
|
||||
|
|
@ -1941,6 +1941,9 @@ extern const struct target tgt_dll = { "dll", &dll_target_obj };
|
|||
|
||||
/*
|
||||
* $Log: t-dll.cc,v $
|
||||
* Revision 1.93 2002/08/04 19:13:16 steve
|
||||
* dll uses StringHeap for named items.
|
||||
*
|
||||
* Revision 1.92 2002/08/04 18:28:15 steve
|
||||
* Do not use hierarchical names of memories to
|
||||
* generate vvp labels. -tdll target does not
|
||||
|
|
|
|||
72
t-dll.h
72
t-dll.h
|
|
@ -1,7 +1,7 @@
|
|||
#ifndef __t_dll_H
|
||||
#define __t_dll_H
|
||||
/*
|
||||
* Copyright (c) 2000 Stephen Williams (steve@icarus.com)
|
||||
* Copyright (c) 2000-2002 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
|
||||
|
|
@ -19,11 +19,12 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#if !defined(WINNT) && !defined(macintosh)
|
||||
#ident "$Id: t-dll.h,v 1.88 2002/08/04 18:28:15 steve Exp $"
|
||||
#ident "$Id: t-dll.h,v 1.89 2002/08/04 19:13:16 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "target.h"
|
||||
# include "ivl_target.h"
|
||||
# include <StringHeap.h>
|
||||
|
||||
#if defined(__MINGW32__)
|
||||
#include <windows.h>
|
||||
|
|
@ -140,9 +141,12 @@ struct dll_target : public target_t, public expr_scan_t {
|
|||
|
||||
ivl_scope_t lookup_scope_(const NetScope*scope);
|
||||
|
||||
static ivl_attribute_s* fill_in_attributes(const Attrib*net);
|
||||
ivl_attribute_s* fill_in_attributes(const Attrib*net);
|
||||
void logic_attributes(struct ivl_net_logic_s *obj, const NetNode*net);
|
||||
|
||||
private:
|
||||
StringHeap strings_;
|
||||
|
||||
static ivl_scope_t find_scope(ivl_design_s &des, const NetScope*cur);
|
||||
static ivl_signal_t find_signal(ivl_design_s &des, const NetNet*net);
|
||||
static ivl_memory_t find_memory(ivl_design_s &des, const NetMemory*net);
|
||||
|
|
@ -157,7 +161,7 @@ struct dll_target : public target_t, public expr_scan_t {
|
|||
*/
|
||||
|
||||
struct ivl_event_s {
|
||||
char*name;
|
||||
const char*name;
|
||||
ivl_scope_t scope;
|
||||
unsigned short nany, nneg, npos;
|
||||
ivl_nexus_t*pins;
|
||||
|
|
@ -255,7 +259,7 @@ struct ivl_expr_s {
|
|||
struct ivl_lpm_s {
|
||||
ivl_lpm_type_t type;
|
||||
ivl_scope_t scope;
|
||||
char* name;
|
||||
const char* name;
|
||||
|
||||
union {
|
||||
struct ivl_lpm_ff_s {
|
||||
|
|
@ -365,7 +369,7 @@ struct ivl_net_logic_s {
|
|||
ivl_logic_t type_;
|
||||
ivl_udp_t udp;
|
||||
|
||||
char* name_;
|
||||
const char* name_;
|
||||
ivl_scope_t scope_;
|
||||
|
||||
unsigned npins_;
|
||||
|
|
@ -382,12 +386,13 @@ struct ivl_net_logic_s {
|
|||
* UDP definition.
|
||||
*/
|
||||
struct ivl_udp_s {
|
||||
char* name;
|
||||
const char* name;
|
||||
unsigned nin;
|
||||
unsigned short sequ;
|
||||
char init;
|
||||
unsigned nrows;
|
||||
char **table; // zero terminated array of pointers
|
||||
typedef const char*ccharp_t;
|
||||
ccharp_t*table; // zero terminated array of pointers
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
@ -422,7 +427,7 @@ struct ivl_nexus_ptr_s {
|
|||
struct ivl_nexus_s {
|
||||
unsigned nptr_;
|
||||
struct ivl_nexus_ptr_s*ptrs_;
|
||||
char*name_;
|
||||
const char*name_;
|
||||
void*private_data;
|
||||
};
|
||||
|
||||
|
|
@ -431,7 +436,7 @@ struct ivl_nexus_s {
|
|||
* Memory.
|
||||
*/
|
||||
struct ivl_memory_s {
|
||||
char*name_;
|
||||
const char*name_;
|
||||
ivl_scope_t scope_;
|
||||
unsigned width_ :24;
|
||||
unsigned signed_ : 1;
|
||||
|
|
@ -465,7 +470,7 @@ struct ivl_process_s {
|
|||
struct ivl_scope_s {
|
||||
ivl_scope_t child_, sibling_, parent;
|
||||
|
||||
char* name_;
|
||||
const char* name_;
|
||||
const char* tname_;
|
||||
ivl_scope_type_t type_;
|
||||
|
||||
|
|
@ -511,7 +516,7 @@ struct ivl_signal_s {
|
|||
signed lsb_index :24;
|
||||
signed lsb_dist : 8;
|
||||
|
||||
char*name_;
|
||||
const char*name_;
|
||||
ivl_scope_t scope_;
|
||||
|
||||
union {
|
||||
|
|
@ -611,6 +616,9 @@ struct ivl_statement_s {
|
|||
|
||||
/*
|
||||
* $Log: t-dll.h,v $
|
||||
* Revision 1.89 2002/08/04 19:13:16 steve
|
||||
* dll uses StringHeap for named items.
|
||||
*
|
||||
* Revision 1.88 2002/08/04 18:28:15 steve
|
||||
* Do not use hierarchical names of memories to
|
||||
* generate vvp labels. -tdll target does not
|
||||
|
|
@ -653,45 +661,5 @@ struct ivl_statement_s {
|
|||
*
|
||||
* Divide signal reference counts between rval
|
||||
* and lval references.
|
||||
*
|
||||
* Revision 1.78 2002/05/24 04:36:23 steve
|
||||
* Verilog 2001 attriubtes on nets/wires.
|
||||
*
|
||||
* Revision 1.77 2002/05/23 03:08:51 steve
|
||||
* Add language support for Verilog-2001 attribute
|
||||
* syntax. Hook this support into existing $attribute
|
||||
* handling, and add number and void value types.
|
||||
*
|
||||
* Add to the ivl_target API new functions for access
|
||||
* of complex attributes attached to gates.
|
||||
*
|
||||
* Revision 1.76 2002/03/09 02:10:22 steve
|
||||
* Add the NetUserFunc netlist node.
|
||||
*
|
||||
* Revision 1.75 2002/01/28 00:52:41 steve
|
||||
* Add support for bit select of parameters.
|
||||
* This leads to a NetESelect node and the
|
||||
* vvp code generator to support that.
|
||||
*
|
||||
* Revision 1.74 2002/01/19 19:02:08 steve
|
||||
* Pass back target errors processing conditionals.
|
||||
*
|
||||
* Revision 1.73 2002/01/03 04:19:01 steve
|
||||
* Add structural modulus support down to vvp.
|
||||
*
|
||||
* Revision 1.72 2001/12/06 03:11:01 steve
|
||||
* Add ivl_logic_delay function to ivl_target.
|
||||
*
|
||||
* Revision 1.71 2001/11/14 03:28:49 steve
|
||||
* DLL target support for force and release.
|
||||
*
|
||||
* Revision 1.70 2001/11/04 05:03:21 steve
|
||||
* MacOSX 10.1 updates.
|
||||
*
|
||||
* Revision 1.69 2001/11/01 04:25:31 steve
|
||||
* ivl_target support for cassign.
|
||||
*
|
||||
* Revision 1.68 2001/10/31 05:24:52 steve
|
||||
* ivl_target support for assign/deassign.
|
||||
*/
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in New Issue