mirror of
https://github.com/YosysHQ/yosys
synced 2025-09-12 12:41:28 +00:00
Make Const::as_string work without reducing packed bits to vector<State>
This commit is contained in:
parent
652190bd50
commit
a57b7dfd2e
2 changed files with 16 additions and 10 deletions
|
@ -505,18 +505,17 @@ std::optional<int> RTLIL::Const::as_int_compress(bool is_signed) const
|
||||||
|
|
||||||
std::string RTLIL::Const::as_string(const char* any) const
|
std::string RTLIL::Const::as_string(const char* any) const
|
||||||
{
|
{
|
||||||
bitvectorize_internal();
|
int sz = size();
|
||||||
bitvectype& bv = get_bits();
|
|
||||||
std::string ret;
|
std::string ret;
|
||||||
ret.reserve(bv.size());
|
ret.reserve(sz);
|
||||||
for (size_t i = bv.size(); i > 0; i--)
|
for (int i = sz - 1; i >= 0; --i)
|
||||||
switch (bv[i-1]) {
|
switch ((*this)[i]) {
|
||||||
case S0: ret += "0"; break;
|
case S0: ret.push_back('0'); break;
|
||||||
case S1: ret += "1"; break;
|
case S1: ret.push_back('1'); break;
|
||||||
case Sx: ret += "x"; break;
|
case Sx: ret.push_back('x'); break;
|
||||||
case Sz: ret += "z"; break;
|
case Sz: ret.push_back('z'); break;
|
||||||
case Sa: ret += any; break;
|
case Sa: ret += any; break;
|
||||||
case Sm: ret += "m"; break;
|
case Sm: ret.push_back('m'); break;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -124,6 +124,13 @@ namespace RTLIL {
|
||||||
EXPECT_TRUE(c.as_bool());
|
EXPECT_TRUE(c.as_bool());
|
||||||
EXPECT_TRUE(c.is_str());
|
EXPECT_TRUE(c.is_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
Const c(0x2, 8);
|
||||||
|
EXPECT_TRUE(c.is_str());
|
||||||
|
EXPECT_EQ(c.as_string(), "00000010");
|
||||||
|
EXPECT_TRUE(c.is_str());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(KernelRtlilTest, ConstConstIteratorWorks) {
|
TEST_F(KernelRtlilTest, ConstConstIteratorWorks) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue