diff options
| author | Bogdan Vukobratovic <bogdan.vukobratovic@gmail.com> | 2019-06-27 12:11:47 +0200 | 
|---|---|---|
| committer | Bogdan Vukobratovic <bogdan.vukobratovic@gmail.com> | 2019-06-27 12:11:47 +0200 | 
| commit | 0f32cb4e0af85e16a90ae274cf7c9fee6fbd2ad7 (patch) | |
| tree | 9ed03b8345847046143161c3a63b8fa599393da2 /backends/btor | |
| parent | 2454ad99bf49afe752d6fd1c1567f59ee9e26736 (diff) | |
| parent | 0d2b87e3ed9bacae7d44d27a4712e56ca03c8dd3 (diff) | |
| download | yosys-0f32cb4e0af85e16a90ae274cf7c9fee6fbd2ad7.tar.gz yosys-0f32cb4e0af85e16a90ae274cf7c9fee6fbd2ad7.tar.bz2 yosys-0f32cb4e0af85e16a90ae274cf7c9fee6fbd2ad7.zip  | |
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'backends/btor')
| -rw-r--r-- | backends/btor/btor.cc | 30 | 
1 files changed, 27 insertions, 3 deletions
diff --git a/backends/btor/btor.cc b/backends/btor/btor.cc index 511a11942..a507b120b 100644 --- a/backends/btor/btor.cc +++ b/backends/btor/btor.cc @@ -17,6 +17,11 @@   *   */ +// [[CITE]] Btor2 , BtorMC and Boolector 3.0 +// Aina Niemetz, Mathias Preiner, Clifford Wolf, Armin Biere +// Computer Aided Verification - 30th International Conference, CAV 2018 +// https://cs.stanford.edu/people/niemetz/publication/2018/niemetzpreinerwolfbiere-cav18/ +  #include "kernel/rtlil.h"  #include "kernel/register.h"  #include "kernel/sigtools.h" @@ -875,9 +880,28 @@ struct BtorWorker  					else  					{  						if (bit_cell.count(bit) == 0) -							log_error("No driver for signal bit %s.\n", log_signal(bit)); -						export_cell(bit_cell.at(bit)); -						log_assert(bit_nid.count(bit)); +						{ +							SigSpec s = bit; + +							while (i+GetSize(s) < GetSize(sig) && sig[i+GetSize(s)].wire != nullptr && +									bit_cell.count(sig[i+GetSize(s)]) == 0) +								s.append(sig[i+GetSize(s)]); + +							log_warning("No driver for signal %s.\n", log_signal(s)); + +							int sid = get_bv_sid(GetSize(s)); +							int nid = next_nid++; +							btorf("%d input %d %s\n", nid, sid); +							nid_width[nid] = GetSize(s); + +							i += GetSize(s)-1; +							continue; +						} +						else +						{ +							export_cell(bit_cell.at(bit)); +							log_assert(bit_nid.count(bit)); +						}  					}  				}  | 
