mirror of https://github.com/YosysHQ/yosys.git
SigSpec::extract() to return as many bits as poss if out of bounds
This commit is contained in:
parent
4d71ab384d
commit
8c31441ba0
|
@ -3354,7 +3354,13 @@ RTLIL::SigSpec RTLIL::SigSpec::extract(int offset, int length) const
|
||||||
{
|
{
|
||||||
unpack();
|
unpack();
|
||||||
cover("kernel.rtlil.sigspec.extract_pos");
|
cover("kernel.rtlil.sigspec.extract_pos");
|
||||||
return std::vector<RTLIL::SigBit>(bits_.begin() + offset, length >= 0 ? bits_.begin() + offset + length : bits_.end() + length + 1);
|
auto it = bits_.begin() + std::min<int>(offset, width_);
|
||||||
|
decltype(it) ie;
|
||||||
|
if (length >= 0)
|
||||||
|
ie = bits_.begin() + std::min<int>(offset + length, width_);
|
||||||
|
else
|
||||||
|
ie = bits_.end() + std::max<int>(length + 1, offset - width_);
|
||||||
|
return std::vector<RTLIL::SigBit>(it, ie);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RTLIL::SigSpec::append(const RTLIL::SigSpec &signal)
|
void RTLIL::SigSpec::append(const RTLIL::SigSpec &signal)
|
||||||
|
|
Loading…
Reference in New Issue