Bug fix, check for unconnected signals in CRL::VectorPortMap::toVhdlportMap().
* Bug: In CRL::VectorPortmap::toVhdlPortMap(), unconnected bits where correctly checkeds for multi-bits vectors (both ordered and holed), but not for mono-bits connections (ONE bit of a vector).
This commit is contained in:
parent
5d891b2cd8
commit
09192ba084
|
@ -77,14 +77,13 @@ namespace Vhdl {
|
||||||
PortMap* PortMap::create ( const Signal* signal, unsigned int flags )
|
PortMap* PortMap::create ( const Signal* signal, unsigned int flags )
|
||||||
{
|
{
|
||||||
const ScalarSignal* scalarSignal = dynamic_cast<const ScalarSignal*>( signal );
|
const ScalarSignal* scalarSignal = dynamic_cast<const ScalarSignal*>( signal );
|
||||||
if (not scalarSignal) {
|
if (scalarSignal) return new ScalarPortMap ( scalarSignal, flags );
|
||||||
|
|
||||||
const VectorSignal* vectorSignal = dynamic_cast<const VectorSignal*>( signal );
|
const VectorSignal* vectorSignal = dynamic_cast<const VectorSignal*>( signal );
|
||||||
if (vectorSignal)
|
if (not vectorSignal)
|
||||||
return new VectorPortMap ( vectorSignal, flags );
|
|
||||||
else
|
|
||||||
throw Error( "PortMap::create() Unable to cast toward <ScalarSignal> or <VectorSignal>." );
|
throw Error( "PortMap::create() Unable to cast toward <ScalarSignal> or <VectorSignal>." );
|
||||||
}
|
|
||||||
return new ScalarPortMap ( scalarSignal, flags );
|
return new VectorPortMap ( vectorSignal, flags );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -243,16 +242,22 @@ namespace Vhdl {
|
||||||
first = false;
|
first = false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
const Bit* bit = NULL;
|
||||||
|
string name = "UNCONNECTED";
|
||||||
|
|
||||||
// cerr << "VhdlPortMap is in bit mode for \"" << _signal->getName() << "\""
|
// cerr << "VhdlPortMap is in bit mode for \"" << _signal->getName() << "\""
|
||||||
// << " _flags:" << _flags << " mappedNames:" << _mapping.size() << endl;
|
// << " _flags:" << _flags << " mappedNames:" << _mapping.size() << endl;
|
||||||
|
|
||||||
auto imapping = _mapping.rbegin();
|
auto imapping = _mapping.rbegin();
|
||||||
bool first = true;
|
bool first = true;
|
||||||
for ( ; imapping!=_mapping.rend() ; ++imapping ) {
|
for ( ; imapping!=_mapping.rend() ; ++imapping ) {
|
||||||
|
bit = imapping ->second;
|
||||||
|
name = (bit) ? bit ->getSignal()->getName() : "UNCONNECTED";
|
||||||
|
|
||||||
if (not first) out << "\n" << tab << " , ";
|
if (not first) out << "\n" << tab << " , ";
|
||||||
|
|
||||||
out << setw(width) << left << _signal->getBit(imapping->first)->getName()
|
out << setw(width) << left << _signal->getBit(imapping->first)->getName()
|
||||||
<< " => " << imapping->second->getName();
|
<< " => " << name;
|
||||||
first = false;
|
first = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue