diff options
| author | Eddie Hung <eddie@fpgeh.com> | 2019-04-19 08:44:53 -0700 | 
|---|---|---|
| committer | Eddie Hung <eddie@fpgeh.com> | 2019-04-19 08:44:53 -0700 | 
| commit | 35f44f3ae8618b5e5da068c3df3d35b2fdc3d1aa (patch) | |
| tree | 01669c0c0f8e7b71307c16fe4125767a7b6d68a9 | |
| parent | 3544a7cd7b6b2595d25c56c5b1c3fbf6c9cccf7e (diff) | |
| download | yosys-35f44f3ae8618b5e5da068c3df3d35b2fdc3d1aa.tar.gz yosys-35f44f3ae8618b5e5da068c3df3d35b2fdc3d1aa.tar.bz2 yosys-35f44f3ae8618b5e5da068c3df3d35b2fdc3d1aa.zip  | |
Do not assume inst_module is always present
| -rw-r--r-- | backends/aiger/xaiger.cc | 21 | 
1 files changed, 9 insertions, 12 deletions
diff --git a/backends/aiger/xaiger.cc b/backends/aiger/xaiger.cc index 71aaebfd9..31b74f9aa 100644 --- a/backends/aiger/xaiger.cc +++ b/backends/aiger/xaiger.cc @@ -193,12 +193,13 @@ struct XAigerWriter  								continue;  						} -						log_assert(inst_module); -						RTLIL::Wire* inst_module_port = inst_module->wire(conn.first); -						log_assert(inst_module_port); +						if (inst_module) { +							RTLIL::Wire* inst_module_port = inst_module->wire(conn.first); +							log_assert(inst_module_port); -						if (inst_module_port->attributes.count("\\abc_flop_q")) -							continue; +							if (inst_module_port->attributes.count("\\abc_flop_q")) +								continue; +						}  					}  					if (cell->input(conn.first)) { @@ -254,7 +255,6 @@ struct XAigerWriter  			//	continue;  			//} -			log_assert(inst_module);  			if (inst_flop) {  				SigBit d, q;  				for (const auto &c : cell->connections()) { @@ -279,7 +279,7 @@ struct XAigerWriter  				ff_bits.emplace_back(d, q);  				undriven_bits.erase(q);  			} -			else if (!inst_module->attributes.count("\\abc_box_id")) { +			else if (inst_module && !inst_module->attributes.count("\\abc_box_id")) {  				for (const auto &c : cell->connections()) {  					if (c.second.is_fully_const()) continue;  					for (auto b : c.second.bits()) { @@ -386,15 +386,12 @@ struct XAigerWriter  		}  		// Do some CI/CO post-processing: -		// Erase all POs and COs that are undriven -		for (auto bit : undriven_bits) { -			//co_bits.erase(bit); +		// Erase all POs that are undriven +		for (auto bit : undriven_bits)  			output_bits.erase(bit); -		}  		// CIs cannot be undriven  		for (const auto &c : ci_bits)  			undriven_bits.erase(c.first); -  		for (auto bit : unused_bits)  			undriven_bits.erase(bit);  | 
