diff options
author | Eddie Hung <eddie@fpgeh.com> | 2019-07-15 09:49:41 -0700 |
---|---|---|
committer | Eddie Hung <eddie@fpgeh.com> | 2019-07-15 09:49:41 -0700 |
commit | 146451a767bc0ba77da86bdb8ebec5d3387b49ca (patch) | |
tree | 4477f092c352de034fef1a315a542778185d90ce /backends/verilog/verilog_backend.cc | |
parent | b33ecd2a746b734fda33d8535afecf76bd35f59c (diff) | |
parent | a97d30d2f88d2f7a41abf8b913bbc017b60d8c7d (diff) | |
download | yosys-146451a767bc0ba77da86bdb8ebec5d3387b49ca.tar.gz yosys-146451a767bc0ba77da86bdb8ebec5d3387b49ca.tar.bz2 yosys-146451a767bc0ba77da86bdb8ebec5d3387b49ca.zip |
Merge remote-tracking branch 'origin/master' into xc7dsp
Diffstat (limited to 'backends/verilog/verilog_backend.cc')
-rw-r--r-- | backends/verilog/verilog_backend.cc | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/backends/verilog/verilog_backend.cc b/backends/verilog/verilog_backend.cc index 087c6fec6..a020d82b6 100644 --- a/backends/verilog/verilog_backend.cc +++ b/backends/verilog/verilog_backend.cc @@ -222,7 +222,7 @@ void dump_const(std::ostream &f, const RTLIL::Const &data, int width = -1, int o case RTLIL::S1: bin_digits.push_back('1'); break; case RTLIL::Sx: bin_digits.push_back('x'); break; case RTLIL::Sz: bin_digits.push_back('z'); break; - case RTLIL::Sa: bin_digits.push_back('z'); break; + case RTLIL::Sa: bin_digits.push_back('?'); break; case RTLIL::Sm: log_error("Found marker state in final netlist."); } } @@ -251,6 +251,12 @@ void dump_const(std::ostream &f, const RTLIL::Const &data, int width = -1, int o hex_digits.push_back('z'); continue; } + if (bit_3 == '?' || bit_2 == '?' || bit_1 == '?' || bit_0 == '?') { + if (bit_3 != '?' || bit_2 != '?' || bit_1 != '?' || bit_0 != '?') + goto dump_bin; + hex_digits.push_back('?'); + continue; + } int val = 8*(bit_3 - '0') + 4*(bit_2 - '0') + 2*(bit_1 - '0') + (bit_0 - '0'); hex_digits.push_back(val < 10 ? '0' + val : 'a' + val - 10); } @@ -270,7 +276,7 @@ void dump_const(std::ostream &f, const RTLIL::Const &data, int width = -1, int o case RTLIL::S1: f << stringf("1"); break; case RTLIL::Sx: f << stringf("x"); break; case RTLIL::Sz: f << stringf("z"); break; - case RTLIL::Sa: f << stringf("z"); break; + case RTLIL::Sa: f << stringf("?"); break; case RTLIL::Sm: log_error("Found marker state in final netlist."); } } |