1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
|
/*
* Copyright (c) 2003-2010 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
# include <acc_user.h>
# include <vpi_user.h>
# include <assert.h>
PLI_INT32 acc_fetch_size(handle obj)
{
return vpi_get(vpiSize, obj);
}
PLI_INT32 acc_fetch_type(handle obj)
{
switch (vpi_get(vpiType, obj)) {
case vpiConstant:
/*XXXX SWIFT PLI tasks seem to assume that string
constants show up an accParameter, instead of
accConstant. */
if (vpi_get(vpiConstType, obj) == vpiStringConst)
return accParameter;
else
return accConstant;
case vpiNamedEvent:
return accNamedEvent;
case vpiNet:
return accNet;
case vpiParameter:
return accParameter;
case vpiReg:
return accReg;
case vpiIntegerVar:
return accIntegerVar;
case vpiModule:
return accModule;
}
vpi_printf("acc_fetch_type: vpiType %d is what accType?\n",
(int)vpi_get(vpiType, obj));
return accUnknown;
}
PLI_INT32 acc_fetch_fulltype(handle obj)
{
int type = vpi_get(vpiType, obj);
switch (type) {
case vpiNet: {
type = vpi_get(vpiNetType, obj);
switch(type) {
case vpiWire: return accWire;
default:
vpi_printf("acc_fetch_fulltype: vpiNetType %d unknown?\n",
type);
return accUnknown;
}
}
case vpiConstant:
/* see acc_fetch_type */
if (vpi_get(vpiConstType, obj) == vpiStringConst)
return accStringParam;
else
return accConstant;
case vpiIntegerVar: return accIntegerVar;
case vpiModule:
if (!vpi_handle(vpiScope, obj))
return accTopModule;
else
return accModuleInstance;
/* FIXME accCellInstance */
case vpiNamedEvent: return accNamedEvent;
case vpiParameter:
switch(vpi_get(vpiConstType, obj)) {
case vpiRealConst: return accRealParam;
case vpiStringConst: return accStringParam;
default: return accIntegerParam;
}
case vpiReg: return accReg;
default:
vpi_printf("acc_fetch_fulltype: vpiType %d unknown?\n",
type);
return accUnknown;
}
}
|