type = Boolean;
endianess = LittleEndian;
associatedIface = NULL;
- clkIface = "";
- clkIfaceType = 0;
+ clkIfaceName = "";
+ clkIfaceType = NoName;
}
type = typeFromString(_type);
endianess = _endianess;
associatedIface = NULL;
- clkIface = "";
- clkIfaceType = 0;
+ clkIfaceName = "";
+ clkIfaceType = NoName;
}
AbstractInterface::AbstractInterface(AbstractInterface* other) {
purpose = other->purpose;
endianess = LittleEndian;
associatedIface = NULL;
- clkIface = other->clkIface;
+ clkIfaceName = other->clkIfaceName;
clkIfaceType = other->clkIfaceType;
}
AbstractInterface* AbstractInterface::getClockIface() {
if (clkIfaceType == ClockName) {
- return owner->getIfaceFromName(clkIface);
+ return owner->getIfaceFromName(clkIfaceName);
}
return NULL;
}
int idClock = -1;
if (clkIfaceType == ParameterName) {
- BlockParameter* param = owner->getParameterFromName(clkIface);
+ BlockParameter* param = owner->getParameterFromName(clkIfaceName);
if (!param->isUserParameter()) throw(Exception(IFACE_INVALID_CLKFREQ,this));
bool ok;
double freq = param->getDoubleValue(&ok);
}
-bool AbstractInterface::setClockIface(QString name) {
- /* 2 cases :
- * - this is a Data interface
- * - this is a Clock output (from a clkrstgen)
- *
- * iface must correspond to an existing clock interface name
- * or a user parameter prepend with a $.
- */
- if ((purpose == Data) || ((purpose == Clock) && (direction == Output))) {
- if (name.at(0) == '$') {
- name.remove(0,1);
- QList<BlockParameter* > params = owner->getUserParameters();
- foreach(BlockParameter* p, params) {
- if (p->getName() == name) {
- clkIface = name;
- clkIfaceType = ParameterName;
- return true;
- }
- }
- // error case: cannot found the input clock
- return false;
- }
- else {
- QList<AbstractInterface*> clocks = owner->getInterfaces(Input, Clock);
- foreach(AbstractInterface* iface, clocks) {
- if (iface->getName() == name) {
- clkIface = name;
- clkIfaceType = ClockName;
- return true;
- }
- }
- // error case: cannot found the user paramter
- return false;
- }
- }
- clkIface = "";
- clkIfaceType = NoName;
- return true;
-}
-
int AbstractInterface::getIntDirection(QString str) {
if(str == "input") return Input;
//cout << "iface " << qPrintable(name) << " must be evaluated to vhdl :" << qPrintable(width) << " with type = " << qPrintable(getTypeString()) << endl;
if (context == Instance) {
- if (direction == Output) {
+ if (direction == Input) {
+ ret = owner->getName()+"_"+name;
+ }
+ else if (direction == Output) {
ret = "from_"+owner->getName()+"_"+name;
}
else if (direction == InOut) {