Skip to content

Commit

Permalink
Changes for version 0.17.8
Browse files Browse the repository at this point in the history
Short errors limited to threshold if set, regardless of current
Skip resistance checks for same voltage on bias errors if threshold set
Added mos diode threshold
Short errors limited to min/max not flagged for leaks < leak limit
  • Loading branch information
d-m-bailey committed Jan 7, 2019
1 parent 787624e commit 57d36db
Show file tree
Hide file tree
Showing 12 changed files with 94 additions and 25 deletions.
2 changes: 1 addition & 1 deletion configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# Process this file with autoconf to produce a configure script.

AC_PREREQ([2.69])
AC_INIT(CVC, [0.17.7], [cvc@shuharisystem.com])
AC_INIT(CVC, [0.17.8], [cvc@shuharisystem.com])
AC_CONFIG_SRCDIR(src)
AC_CONFIG_HEADERS([config.h])
AC_USE_SYSTEM_EXTENSIONS
Expand Down
4 changes: 4 additions & 0 deletions src/CConnection.cc
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,10 @@ float CConnection::EstimatedMosDiodeCurrent(voltage_t theSourceVoltage, CConnect
return float(abs(theSourceVoltage-gateVoltage)) / (resistance + masterSourceNet.finalResistance + masterDrainNet.finalResistance) / VOLTAGE_SCALE ;
}

float CConnection::EstimatedCurrent(voltage_t theSourceVoltage, voltage_t theDrainVoltage, resistance_t theSourceResistance, resistance_t theDrainResistance) {
return float(abs(theSourceVoltage - theDrainVoltage)) / (resistance + theSourceResistance + theDrainResistance) / VOLTAGE_SCALE ;
}

float CFullConnection::EstimatedCurrent(bool theVthFlag) {
voltage_t mySourceVoltage, myDrainVoltage;
// float myCurrent;
Expand Down
1 change: 1 addition & 0 deletions src/CConnection.hh
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ public:
inline bool IsUnknownGateVoltage() { return ( gateVoltage == UNKNOWN_VOLTAGE && ! (gatePower_p && gatePower_p->type[HIZ_BIT]) ); }
inline bool IsUnknownDrainVoltage() { return ( drainVoltage == UNKNOWN_VOLTAGE && ! (drainPower_p && drainPower_p->type[HIZ_BIT]) ); }
float EstimatedMosDiodeCurrent(voltage_t theSourceVoltage, CConnection & theConnections);
float EstimatedCurrent(voltage_t theSourceVoltage, voltage_t theDrainVoltage, resistance_t theSourceResistance, resistance_t theDrainResistance);
// inline bool IsUnknownBulkVoltage() { return ( bulkVoltage == UNKNOWN_VOLTAGE && ! (bulkPower_p && bulkPower_p->type[HIZ_BIT]) ); }

};
Expand Down
34 changes: 27 additions & 7 deletions src/CCvcDb.cc
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,8 @@ void CCvcDb::ReportShort(deviceId_t theDeviceId) {
myLeakCurrent = myConnections.EstimatedCurrent(myVthFlag);
}
bool myUnrelatedFlag = ! myConnections.simSourcePower_p->IsRelatedPower(myConnections.simDrainPower_p, netVoltagePtr_v, simNet_v, simNet_v, true);
if ( ExceedsLeakLimit_(myLeakCurrent) // flag all leaks with large current
bool myCheckLeakLimit = cvcParameters.cvcShortErrorThreshold == 0 || myMaxVoltage - myMinVoltage > cvcParameters.cvcShortErrorThreshold;
if ( ( myCheckLeakLimit && ExceedsLeakLimit_(myLeakCurrent) ) // flag leaks with large current
|| myUnrelatedFlag // flag leaks between unrelated power
|| ( myMaxVoltage != myMinVoltage && ! myVthFlag // ignore leaks between same voltages or at Vth
&& ( ( IsExternalPower_(myConnections.simSourcePower_p)
Expand Down Expand Up @@ -489,7 +490,9 @@ bool CCvcDb::VoltageConflict(CEventQueue& theEventQueue, deviceId_t theDeviceId,
&& ((myMaxConnections.gateVoltage > myExpectedVoltage && IsNmos_(deviceType_v[theConnections.deviceId]))
|| (myMaxConnections.gateVoltage < myExpectedVoltage && IsPmos_(deviceType_v[theConnections.deviceId])) ) ) {
float myLeakCurrent = myMaxConnections.EstimatedMosDiodeCurrent(mySourceVoltage, theConnections);
if ( ExceedsLeakLimit_(myLeakCurrent) ) {
bool myCheckLeakCurrent = cvcParameters.cvcMosDiodeErrorThreshold == 0
|| abs(myMaxConnections.gateVoltage - myExpectedVoltage) > cvcParameters.cvcMosDiodeErrorThreshold;
if ( myCheckLeakCurrent && ExceedsLeakLimit_(myLeakCurrent) ) {
PrintMaxVoltageConflict(myTargetNetId, myMaxConnections, myExpectedVoltage, myLeakCurrent);
// reportFile << "WARNING: Max voltage already set for " << NetName(myTargetNetId, PRINT_CIRCUIT_ON, PRINT_HIERARCHY_OFF);
// reportFile << " at mos diode " << DeviceName(theConnections.deviceId, PRINT_CIRCUIT_ON);
Expand Down Expand Up @@ -582,7 +585,9 @@ bool CCvcDb::VoltageConflict(CEventQueue& theEventQueue, deviceId_t theDeviceId,
&& ((myMinConnections.gateVoltage > myExpectedVoltage && IsNmos_(deviceType_v[theConnections.deviceId]))
|| (myMinConnections.gateVoltage < myExpectedVoltage && IsPmos_(deviceType_v[theConnections.deviceId])) ) ) {
float myLeakCurrent = myMinConnections.EstimatedMosDiodeCurrent(mySourceVoltage, theConnections);
if ( ExceedsLeakLimit_(myLeakCurrent) ) {
bool myCheckLeakCurrent = cvcParameters.cvcMosDiodeErrorThreshold == 0
|| abs(myMinConnections.gateVoltage - myExpectedVoltage) > cvcParameters.cvcMosDiodeErrorThreshold;
if ( myCheckLeakCurrent && ExceedsLeakLimit_(myLeakCurrent) ) {
PrintMinVoltageConflict(myTargetNetId, myMinConnections, myExpectedVoltage, myLeakCurrent);
// reportFile << "WARNING: Min voltage already set for " << NetName(myTargetNetId, PRINT_CIRCUIT_ON, PRINT_HIERARCHY_OFF);
// reportFile << " at mos diode " << DeviceName(theConnections.deviceId, PRINT_CIRCUIT_ON);
Expand Down Expand Up @@ -990,13 +995,20 @@ string CCvcDb::AdjustSimVoltage(CEventQueue& theEventQueue, deviceId_t theDevice
|| (theConnections.sourceVoltage != UNKNOWN_VOLTAGE && theConnections.drainVoltage == UNKNOWN_VOLTAGE) );
CPower * myPower_p = ( theDirection == SOURCE_TO_MASTER_DRAIN ) ? theConnections.sourcePower_p : theConnections.drainPower_p;
netId_t myTargetNet = ( theDirection == SOURCE_TO_MASTER_DRAIN ) ? theConnections.sourceId : theConnections.drainId;
resistance_t mySourceResistance = ( theDirection == SOURCE_TO_MASTER_DRAIN ) ? theConnections.masterDrainNet.finalResistance : theConnections.masterSourceNet.finalResistance;

voltage_t myMinTargetVoltage = MinSimVoltage(myTargetNet);
voltage_t myMaxTargetVoltage = MaxSimVoltage(myTargetNet);
resistance_t myMinTargetResistance = MinResistance(myTargetNet);
resistance_t myMaxTargetResistance = MaxResistance(myTargetNet);
voltage_t myOriginalVoltage = theVoltage;
if ( myMinTargetVoltage > myMaxTargetVoltage ) {
if ( myMinTargetVoltage != UNKNOWN_VOLTAGE && myMinTargetVoltage > myMaxTargetVoltage) {
voltage_t myTrueMinVoltage = myMaxTargetVoltage;
resistance_t myTrueMinResistance = myMaxTargetResistance;
myMaxTargetVoltage = myMinTargetVoltage;
myMaxTargetResistance = myMinTargetResistance;
myMinTargetVoltage = myTrueMinVoltage;
myMinTargetResistance = myTrueMinResistance;
}
string myCalculation = "";
if ( IsMos_(deviceType_v[theDeviceId]) ) {
Expand Down Expand Up @@ -1072,14 +1084,22 @@ string CCvcDb::AdjustSimVoltage(CEventQueue& theEventQueue, deviceId_t theDevice
if ( theVoltage == UNKNOWN_VOLTAGE ) return("");
if ( myMinTargetVoltage != UNKNOWN_VOLTAGE && theVoltage < myMinTargetVoltage ) {
myCalculation = " Limited sim to min" + myCalculation;
if ( thePropagationType != POWER_NETS_ONLY && myOriginalVoltage < myMinTargetVoltage ) ReportSimShort(theDeviceId, theVoltage, myMinTargetVoltage, myCalculation);
debugFile << myCalculation << " " << NetName(myTargetNet) << endl;
if ( thePropagationType != POWER_NETS_ONLY && myOriginalVoltage < myMinTargetVoltage
&& theConnections.EstimatedCurrent(theVoltage, myMinTargetVoltage, mySourceResistance, myMinTargetResistance) < cvcParameters.cvcLeakLimit ) {
ReportSimShort(theDeviceId, theVoltage, myMinTargetVoltage, myCalculation);
}
// voltage drops in first pass are skipped, only report original voltage limits
theVoltage = myMinTargetVoltage;
}
if ( myMaxTargetVoltage != UNKNOWN_VOLTAGE && theVoltage > myMaxTargetVoltage ) {
myCalculation = " Limited sim to max" + myCalculation;
if ( thePropagationType != POWER_NETS_ONLY && myOriginalVoltage > myMaxTargetVoltage ) ReportSimShort(theDeviceId, theVoltage, myMaxTargetVoltage, myCalculation);
// voltage drops in first pass are skipped, only report original voltage limits
debugFile << myCalculation << " " << NetName(myTargetNet) << endl;
if ( thePropagationType != POWER_NETS_ONLY && myOriginalVoltage > myMaxTargetVoltage
&& theConnections.EstimatedCurrent(theVoltage, myMaxTargetVoltage, mySourceResistance, myMaxTargetResistance) < cvcParameters.cvcLeakLimit ) {
ReportSimShort(theDeviceId, theVoltage, myMaxTargetVoltage, myCalculation);
}
// voltage drops in first pass are skipped, only report original voltage limits
theVoltage = myMaxTargetVoltage;
}
return(myCalculation);
Expand Down
2 changes: 2 additions & 0 deletions src/CCvcDb.hh
Original file line number Diff line number Diff line change
Expand Up @@ -320,12 +320,14 @@ public:
// CCvcDb-utility
voltage_t MinVoltage(netId_t theNetId, bool theSkipHiZFlag = false);
voltage_t MinSimVoltage(netId_t theNetId);
resistance_t MinResistance(netId_t theNetId);
voltage_t MinLeakVoltage(netId_t theNetId);
voltage_t SimVoltage(netId_t theNetId);
bool IsAlwaysOnCandidate(deviceId_t theDeviceId, shortDirection_t theDirection);
resistance_t SimResistance(netId_t theNetId);
voltage_t MaxVoltage(netId_t theNetId, bool theSkipHiZFlag = false);
voltage_t MaxSimVoltage(netId_t theNetId);
resistance_t MaxResistance(netId_t theNetId);
voltage_t MaxLeakVoltage(netId_t theNetId);
netId_t GetGreatestEquivalentNet(netId_t theNetId);
netId_t GetLeastEquivalentNet(netId_t theNetId);
Expand Down
12 changes: 12 additions & 0 deletions src/CCvcDb_error.cc
Original file line number Diff line number Diff line change
Expand Up @@ -709,27 +709,32 @@ void CCvcDb::FindNmosSourceVsBulkErrors() {
} else if ( myConnections.CheckTerminalMinVoltages(BULK | SOURCE) &&
( myConnections.minBulkVoltage - myConnections.minSourceVoltage > cvcParameters.cvcBiasErrorThreshold ||
( myConnections.minSourceVoltage == myConnections.minBulkVoltage &&
cvcParameters.cvcBiasErrorThreshold == 0 &&
myConnections.masterMinSourceNet.finalResistance < myConnections.masterMinBulkNet.finalResistance) ) ) {
myErrorFlag = true;
} else if ( myConnections.CheckTerminalMinVoltages(BULK | DRAIN) &&
( myConnections.minBulkVoltage - myConnections.minDrainVoltage > cvcParameters.cvcBiasErrorThreshold ||
( myConnections.minDrainVoltage == myConnections.minBulkVoltage &&
cvcParameters.cvcBiasErrorThreshold == 0 &&
myConnections.masterMinDrainNet.finalResistance < myConnections.masterMinBulkNet.finalResistance) ) ) {
myErrorFlag = true;
} else if ( myConnections.CheckTerminalSimVoltages(BULK | SOURCE) &&
( myConnections.simBulkVoltage - myConnections.simSourceVoltage > cvcParameters.cvcBiasErrorThreshold ||
( myConnections.simSourceVoltage == myConnections.simBulkVoltage &&
cvcParameters.cvcBiasErrorThreshold == 0 &&
myConnections.masterSimSourceNet.finalResistance < myConnections.masterSimBulkNet.finalResistance) ) ) {
myErrorFlag = true;
} else if ( myConnections.CheckTerminalSimVoltages(BULK | DRAIN) &&
( myConnections.simBulkVoltage - myConnections.simDrainVoltage > cvcParameters.cvcBiasErrorThreshold ||
( myConnections.simDrainVoltage == myConnections.simBulkVoltage &&
cvcParameters.cvcBiasErrorThreshold == 0 &&
myConnections.masterSimDrainNet.finalResistance < myConnections.masterSimBulkNet.finalResistance) ) ) {
myErrorFlag = true;
} else if ( myConnections.CheckTerminalMaxVoltages(BULK | SOURCE) &&
( ( myConnections.maxBulkVoltage - myConnections.maxSourceVoltage > cvcParameters.cvcBiasErrorThreshold &&
myConnections.maxSourcePower_p->defaultMaxNet != myConnections.bulkId ) ||
( myConnections.maxSourceVoltage == myConnections.maxBulkVoltage &&
cvcParameters.cvcBiasErrorThreshold == 0 &&
myConnections.maxSourceVoltage != myConnections.minBulkVoltage && // no leak path
// myConnections.masterMinBulkNet.finalNetId != myConnections.masterMaxBulkNet.finalNetId &&
myConnections.masterMaxSourceNet.finalResistance > myConnections.masterMaxBulkNet.finalResistance &&
Expand All @@ -741,6 +746,7 @@ void CCvcDb::FindNmosSourceVsBulkErrors() {
( ( myConnections.maxBulkVoltage - myConnections.maxDrainVoltage > cvcParameters.cvcBiasErrorThreshold &&
myConnections.maxDrainPower_p->defaultMaxNet != myConnections.bulkId ) ||
( myConnections.maxDrainVoltage == myConnections.maxBulkVoltage &&
cvcParameters.cvcBiasErrorThreshold == 0 &&
myConnections.maxDrainVoltage != myConnections.minBulkVoltage && // no leak path
// myConnections.masterMinBulkNet.finalNetId != myConnections.masterMaxBulkNet.finalNetId &&
myConnections.masterMaxDrainNet.finalResistance > myConnections.masterMaxBulkNet.finalResistance &&
Expand Down Expand Up @@ -813,6 +819,7 @@ void CCvcDb::FindPmosSourceVsBulkErrors() {
( ( myConnections.minSourceVoltage - myConnections.minBulkVoltage > cvcParameters.cvcBiasErrorThreshold &&
myConnections.minSourcePower_p->defaultMinNet != myConnections.bulkId ) ||
( myConnections.minSourceVoltage == myConnections.minBulkVoltage &&
cvcParameters.cvcBiasErrorThreshold == 0 &&
// myConnections.masterMinBulkNet.finalNetId != myConnections.masterMaxBulkNet.finalNetId &&
myConnections.minSourceVoltage != myConnections.maxBulkVoltage && // no leak path
myConnections.masterMinSourceNet.finalResistance > myConnections.masterMinBulkNet.finalResistance &&
Expand All @@ -823,6 +830,7 @@ void CCvcDb::FindPmosSourceVsBulkErrors() {
( ( myConnections.minDrainVoltage - myConnections.minBulkVoltage > cvcParameters.cvcBiasErrorThreshold &&
myConnections.minDrainPower_p->defaultMinNet != myConnections.bulkId ) ||
( myConnections.minDrainVoltage == myConnections.minBulkVoltage &&
cvcParameters.cvcBiasErrorThreshold == 0 &&
// myConnections.masterMinBulkNet.finalNetId != myConnections.masterMaxBulkNet.finalNetId &&
myConnections.minDrainVoltage != myConnections.maxBulkVoltage && // no leak path
myConnections.masterMinDrainNet.finalResistance > myConnections.masterMinBulkNet.finalResistance &&
Expand All @@ -832,21 +840,25 @@ void CCvcDb::FindPmosSourceVsBulkErrors() {
} else if ( myConnections.CheckTerminalSimVoltages(BULK | SOURCE) &&
( myConnections.simSourceVoltage - myConnections.simBulkVoltage > cvcParameters.cvcBiasErrorThreshold ||
( myConnections.simSourceVoltage == myConnections.simBulkVoltage &&
cvcParameters.cvcBiasErrorThreshold == 0 &&
myConnections.masterSimSourceNet.finalResistance < myConnections.masterSimBulkNet.finalResistance) ) ) {
myErrorFlag = true;
} else if ( myConnections.CheckTerminalSimVoltages(BULK | DRAIN) &&
( myConnections.simDrainVoltage - myConnections.simBulkVoltage > cvcParameters.cvcBiasErrorThreshold ||
( myConnections.simDrainVoltage == myConnections.simBulkVoltage &&
cvcParameters.cvcBiasErrorThreshold == 0 &&
myConnections.masterSimDrainNet.finalResistance < myConnections.masterSimBulkNet.finalResistance) ) ) {
myErrorFlag = true;
} else if ( myConnections.CheckTerminalMaxVoltages(BULK | SOURCE) &&
( myConnections.maxSourceVoltage - myConnections.maxBulkVoltage > cvcParameters.cvcBiasErrorThreshold ||
( myConnections.maxSourceVoltage == myConnections.maxBulkVoltage &&
cvcParameters.cvcBiasErrorThreshold == 0 &&
myConnections.masterMaxSourceNet.finalResistance < myConnections.masterMaxBulkNet.finalResistance) ) ) {
myErrorFlag = true;
} else if ( myConnections.CheckTerminalMaxVoltages(BULK | DRAIN) &&
( myConnections.maxDrainVoltage - myConnections.maxBulkVoltage > cvcParameters.cvcBiasErrorThreshold ||
( myConnections.maxDrainVoltage == myConnections.maxBulkVoltage &&
cvcParameters.cvcBiasErrorThreshold == 0 &&
myConnections.masterMaxDrainNet.finalResistance < myConnections.masterMaxBulkNet.finalResistance) ) ) {
myErrorFlag = true;
}
Expand Down
32 changes: 29 additions & 3 deletions src/CCvcDb_utility.cc
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,19 @@ voltage_t CCvcDb::MinSimVoltage(netId_t theNetId) {
return UNKNOWN_VOLTAGE;
}

resistance_t CCvcDb::MinResistance(netId_t theNetId) {
// resistance to minimum master net
if ( theNetId != UNKNOWN_NET ) {
static CVirtualNet myVirtualNet;
assert(theNetId == GetEquivalentNet(theNetId));
myVirtualNet(minNet_v, theNetId);
if ( myVirtualNet.finalNetId != UNKNOWN_NET ) {
return myVirtualNet.finalResistance;
}
}
return UNKNOWN_VOLTAGE;
}

voltage_t CCvcDb::MinLeakVoltage(netId_t theNetId) {
if ( theNetId != UNKNOWN_NET && leakVoltageSet ) {
netId_t myNetId = minLeakNet_v[theNetId].finalNetId;
Expand Down Expand Up @@ -286,6 +299,19 @@ voltage_t CCvcDb::MaxSimVoltage(netId_t theNetId) {
return UNKNOWN_VOLTAGE;
}

resistance_t CCvcDb::MaxResistance(netId_t theNetId) {
// resistance to maximum master net
if ( theNetId != UNKNOWN_NET ) {
static CVirtualNet myVirtualNet;
assert(theNetId == GetEquivalentNet(theNetId));
myVirtualNet(maxNet_v, theNetId);
if ( myVirtualNet.finalNetId != UNKNOWN_NET ) {
return myVirtualNet.finalResistance;
}
}
return UNKNOWN_VOLTAGE;
}

voltage_t CCvcDb::MaxLeakVoltage(netId_t theNetId) {
if ( theNetId != UNKNOWN_NET && leakVoltageSet ) {
assert(theNetId == GetEquivalentNet(theNetId));
Expand Down Expand Up @@ -1232,9 +1258,9 @@ void CCvcDb::RemoveInvalidPower(netId_t theNetId, size_t & theRemovedCount) {
CheckResistorOverflow_(maxNet_v[theNetId].finalResistance, theNetId, logFile);
}
}
if ( ! leakVoltageSet || leakVoltagePtr_v[theNetId] != myPower_p ) { // delete unless leak voltage
delete myPower_p;
}
// if ( ! leakVoltageSet || leakVoltagePtr_v[theNetId] != myPower_p ) { // delete unless leak voltage
// delete myPower_p;
// }
}
}

Expand Down
7 changes: 6 additions & 1 deletion src/CCvcParameters.cc
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/*
* Copyright (c) D. Mitch Bailey 2014.
*
* Copyright 2014-2018 D. Mitch Bailey cvc at shuharisystem dot com
* Copyright 2014-2019 D. Mitch Bailey cvc at shuharisystem dot com
*
* This file is part of cvc.
*
Expand Down Expand Up @@ -107,6 +107,7 @@ void CCvcParameters::ResetEnvironment() {
//! When true, detects worst case overvoltage errors. Default is to flag all errors including those not possible with current mode logic.
cvcLogicDiodes = defaultLogicDiodes;
//! When true, uses logic values, if known, for diode checks. Default is to ignore logic values.
cvcMosDiodeErrorThreshold = defaultErrorThreshold;
cvcShortErrorThreshold = defaultErrorThreshold;
cvcBiasErrorThreshold = defaultErrorThreshold;
cvcForwardErrorThreshold = defaultErrorThreshold;
Expand Down Expand Up @@ -138,6 +139,7 @@ void CCvcParameters::PrintEnvironment(ostream & theOutputFile) {
theOutputFile << "CVC_IGNORE_NO_LEAK_FLOATING = '" << (( cvcIgnoreNoLeakFloating ) ? "true" : "false") << "'" << endl;
theOutputFile << "CVC_LEAK_OVERVOLTAGE = '" << (( cvcLeakOvervoltage ) ? "true" : "false") << "'" << endl;
theOutputFile << "CVC_LOGIC_DIODES = '" << (( cvcLogicDiodes ) ? "true" : "false") << "'" << endl;
theOutputFile << "CVC_MOS_DIODE_ERROR_THRESHOLD = '" << Voltage_to_float(cvcMosDiodeErrorThreshold) << "'" << endl;
theOutputFile << "CVC_SHORT_ERROR_THRESHOLD = '" << Voltage_to_float(cvcShortErrorThreshold) << "'" << endl;
theOutputFile << "CVC_BIAS_ERROR_THRESHOLD = '" << Voltage_to_float(cvcBiasErrorThreshold) << "'" << endl;
theOutputFile << "CVC_FORWARD_ERROR_THRESHOLD = '" << Voltage_to_float(cvcForwardErrorThreshold) << "'" << endl;
Expand Down Expand Up @@ -175,6 +177,7 @@ void CCvcParameters::PrintDefaultEnvironment() {
myDefaultCvcrc << "CVC_IGNORE_NO_LEAK_FLOATING = '" << (( cvcIgnoreNoLeakFloating ) ? "true" : "false") << "'" << endl;
myDefaultCvcrc << "CVC_LEAK_OVERVOLTAGE = '" << (( cvcLeakOvervoltage ) ? "true" : "false") << "'" << endl;
myDefaultCvcrc << "CVC_LOGIC_DIODES = '" << (( cvcLogicDiodes ) ? "true" : "false") << "'" << endl;
myDefaultCvcrc << "CVC_MOS_DIODE_ERROR_THRESHOLD = '" << Voltage_to_float(cvcMosDiodeErrorThreshold) << "'" << endl;
myDefaultCvcrc << "CVC_SHORT_ERROR_THRESHOLD = '" << Voltage_to_float(cvcShortErrorThreshold) << "'" << endl;
myDefaultCvcrc << "CVC_BIAS_ERROR_THRESHOLD = '" << Voltage_to_float(cvcBiasErrorThreshold) << "'" << endl;
myDefaultCvcrc << "CVC_FORWARD_ERROR_THRESHOLD = '" << Voltage_to_float(cvcForwardErrorThreshold) << "'" << endl;
Expand Down Expand Up @@ -262,6 +265,8 @@ void CCvcParameters::LoadEnvironment(const string theEnvironmentFilename, const
cvcLeakOvervoltage = strcasecmp(myBuffer, "true") == 0;
} else if ( myVariable == "CVC_LOGIC_DIODES" ) {
cvcLogicDiodes = strcasecmp(myBuffer, "true") == 0;
} else if ( myVariable == "CVC_MOS_DIODE_ERROR_THRESHOLD" ) {
cvcMosDiodeErrorThreshold = String_to_Voltage(string(myBuffer));
} else if ( myVariable == "CVC_SHORT_ERROR_THRESHOLD" ) {
cvcShortErrorThreshold = String_to_Voltage(string(myBuffer));
} else if ( myVariable == "CVC_BIAS_ERROR_THRESHOLD" ) {
Expand Down
Loading

0 comments on commit 57d36db

Please sign in to comment.