Exemplo n.º 1
0
int defiFill::xl(int index) const {
  if (index < 0 || index >= numRectangles_) {
    defiError(1, 0, "bad index for Fill xl");
    return 0;
  }
  return xl_[index];
}
Exemplo n.º 2
0
double defiComponent::propNumber(int index) const {
  if (index < 0 || index >= this->numProps_) {
    defiError ("bad index for component property");
    return 0;
  }
  return this->dvalues_[index];
}
Exemplo n.º 3
0
int defiComponent::propIsString(int index) const {
  if (index < 0 || index >= this->numProps_) {
    defiError ("bad index for component property");
    return 0;
  }
  return this->dvalues_[index] ? 0 : 1;
}
Exemplo n.º 4
0
char defiComponent::propType(int index) const {
  if (index < 0 || index >= this->numProps_) {
    defiError ("bad index for component property");
    return 0;
  }
  return this->types_[index];
}
Exemplo n.º 5
0
int defiFill::yh(int index) const {
  if (index < 0 || index >= numRectangles_) {
    defiError(1, 0, "bad index for Fill yh");
    return 0;
  }
  return yh_[index];
}
Exemplo n.º 6
0
int defiGroup::propIsString(int index) const {
  char msg[160];
  if (index < 0 || index >= numProps_) {
     sprintf (msg, "ERROR (LEFPARS-6050): The index number %d given for the GROUP PROPERTY is invalid.\nValid index is from 0 to %d", index, numProps_);
     defiError (0, 6050, msg);
     return 0;
  }
  return propDValues_[index] ? 0 : 1;
}
Exemplo n.º 7
0
int defiRegion::propIsString(int index) const {
  char msg[160];
  if (index < 0 || index >= numProps_) {
     sprintf (msg, "ERROR (DEFPARS-6130): The index number %d specified for the REGION PROPERTY is invalide.\nValid index number is from 0 to %d. Specify a valid index number and then try again.",
              index, numProps_);
     defiError (0, 6130, msg);
     return 0;
  }
  return propDValues_[index] ? 0 : 1;
}
Exemplo n.º 8
0
int defiRow::propIsString(int index) const {
  char msg[160];
  if (index < 0 || index >= this->numProps_) {
     sprintf (msg, "ERROR (DEFPARS-6140): The index number %d given for the VIA LAYER RECTANGLE is invalid.\nValid index is from 0 to %d",
              index, this->numProps_);
     defiError (msg);
     return 0;
  } 
  return this->propDValues_[index] ? 0 : 1;
}
Exemplo n.º 9
0
int defiRegion::yh(int index) const {
  char msg[160];
  if (index < 0 || index >= this->numRectangles_) {
     sprintf (msg, "ERROR (DEFPARS-6131): The index number %d given for the REGION RECTANGLE is invalid.\nValid index is from 0 to %d",
              index, this->numRectangles_);
     defiError (msg);
     return 0;
  }
  return this->yh_[index];
}
Exemplo n.º 10
0
int defiRegion::propIsString(int index) const {
  char msg[160];
  if (index < 0 || index >= this->numProps_) {
     sprintf (msg, "ERROR (DEFPARS-6130): The index number %d given for the REGION PROPERTY is invalid.\nValid index is from 0 to %d",
              index, this->numProps_);
     defiError (msg);
     return 0;
  }
  return this->propDValues_[index] ? 0 : 1;
}
Exemplo n.º 11
0
int defiNonDefault::propIsString(int index) const {
  char msg[160];
  if (index < 0 || index >= numProps_) {
     sprintf (msg, "ERROR (DEFPARS-6091): The index number %d specified for the NONDEFAULT PROPERTY is invalid.\nValid index is from 0 to %d. Specify a valid index number and then try again.",
             index, numProps_);
     defiError (0, 6091, msg);
     return 0;
  }
  return dvalues_[index] ? 0 : 1;
}
Exemplo n.º 12
0
int defiNonDefault::numCuts(int index) const {
  char msg[160];
  if (index < 0 || index >= numMinCuts_) {
     sprintf (msg, "ERROR (DEFPARS-6090): The index number %d specified for the NONDEFAULT LAYER is invalid.\nValid index is from 0 to %d. Specify a valid index number and then try again.",
             index, numLayers_);
     defiError (0, 6090, msg);
     return 0;
  }
  return numCuts_[index];
}
Exemplo n.º 13
0
int defiRegion::yh(int index) const {
  char msg[160];
  if (index < 0 || index >= numRectangles_) {
     sprintf (msg, "ERROR (DEFPARS-6131): The index number %d specified for the REGION RECTANGLE is invalide.\nValid index number is from 0 to %d. Specify a valid index number and then try again.",
              index, numRectangles_);
     defiError (0, 6131, msg);
     return 0;
  }
  return yh_[index];
}
Exemplo n.º 14
0
void defiComponent::setForeignName(const char* name) {
  int len;

  if (this->defiComponent::hasForeignName())
      defiError(
      "Multiple define of '+ FOREIGN' in COMPONENT is not supported.\n");
  if ((len = strlen(name)+1) > this->foreignNameSize_)
    this->defiComponent::bumpForeignName(len);
  strcpy(this->foreignName_, DEFCASE(name));
  this->hasForeignName_ = 1;
}
Exemplo n.º 15
0
void defiPartition::addTurnOff(const char* setup, const char* hold) {
  if (*setup == ' ') {
    this->setup_ = *setup;
  } else if (*setup == 'R') {
    this->setup_ = *setup;
  } else if (*setup == 'F') {
    this->setup_ = *setup;
  } else {
    defiError("ERROR (DEFPARS-6100): Invalide PARTITION SETUP value given.\nValid value for SETUP is 'R' or 'F'.");
  }

  if (*hold == ' ') {
    this->hold_ = *hold;
  } else if (*hold == 'R') {
    this->hold_ = *hold;
  } else if (*hold == 'F') {
    this->hold_ = *hold;
  } else {
    defiError("ERROR (DEFPARS-6101): Invalide PARTITION HOLD value given.\nValid value for SETUP is 'R' or 'F'.");
  }

}
Exemplo n.º 16
0
void defiIOTiming::setSlewRate(const char* riseFall, double min, double max) {
  if (*riseFall == 'R') {
    hasSlewRise_ = 1;
    slewRiseMin_ = min;
    slewRiseMax_ = max;

  } else if (*riseFall == 'F') {
    hasSlewFall_ = 1;
    slewFallMin_ = min;
    slewFallMax_ = max;

  } else {
    defiError(0, 6060, "ERROR (DEFPARS-6060): Invalid value specified for IOTIMING rise/fall. The valid value for rise is 'R' and for fall is 'F'. Specify a valid value and then try again.");
  }
}
Exemplo n.º 17
0
void defiFPC::setName(const char* name, const char* direction) {
  int len = strlen(name) + 1;

  this->defiFPC::clear();

  if (len > this->nameLength_) {
    if (this->name_) defFree(this->name_);
    this->nameLength_ = len;
    this->name_ = (char*)defMalloc(len);
  }
  strcpy(this->name_, DEFCASE(name));

  if (*direction == 'H')
    this->direction_ = 'H';
  else if (*direction == 'V')
    this->direction_ = 'V';
  else
    defiError("ERROR (DEFPARS-6030): The direction given with FPC name is invalid.\nValid direction is either H or V");

}
Exemplo n.º 18
0
void defiFPC::setName(const char* name, const char* direction) {
  int len = strlen(name) + 1;

  clear();

  if (len > nameLength_) {
    if (name_) defFree(name_);
    nameLength_ = len;
    name_ = (char*)defMalloc(len);
  }
  strcpy(name_, DEFCASE(name));

  if (*direction == 'H')
    direction_ = 'H';
  else if (*direction == 'V')
    direction_ = 'V';
  else
    defiError(0, 6030, "ERROR (DEFPARS-6030): Invalid direction specified with FPC name. The valid direction is either 'H' or 'V'. Specify a valid value and then try again.");

}
Exemplo n.º 19
0
void defiTimingDisable::print(FILE* f) const {

  if (this->defiTimingDisable::hasMacroFromTo()) {
    fprintf(f, "TimingDisable macro '%s' thru '%s'\n",
	this->fromInst_, this->fromPin_);

  } else if (this->defiTimingDisable::hasMacroThru()) {
    fprintf(f, "TimingDisable macro '%s' from '%s' to '%s'\n",
	this->fromInst_, this->fromPin_, this->toPin_);

  } else if (this->defiTimingDisable::hasFromTo()) {
    fprintf(f, "TimingDisable from '%s' '%s'  to '%s' '%s'\n",
      this->fromInst_, this->fromPin_, this->toInst_, this->toPin_);

  } else if (this->defiTimingDisable::hasThru()) {
    fprintf(f, "TimingDisable thru '%s' '%s'\n",
      this->fromInst_, this->fromPin_);

  } else {
    defiError("ERROR (DEFPARS-6170): Invalid TimingDisable Type");
  }
}