mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	Output "h" extension only if boxes
This commit is contained in:
		
							parent
							
								
									8f0c1232d7
								
							
						
					
					
						commit
						399ac760ff
					
				
					 1 changed files with 32 additions and 28 deletions
				
			
		| 
						 | 
					@ -575,6 +575,19 @@ struct XAigerWriter
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		f << "c";
 | 
							f << "c";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							auto write_buffer_float = [](std::stringstream &buffer, float f32) {
 | 
				
			||||||
 | 
								buffer.write(reinterpret_cast<const char*>(&f32), sizeof(f32));
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
							std::stringstream i_buffer;
 | 
				
			||||||
 | 
							auto write_i_buffer = std::bind(write_buffer_float, std::ref(i_buffer), std::placeholders::_1);
 | 
				
			||||||
 | 
							for (auto bit : input_bits)
 | 
				
			||||||
 | 
								write_i_buffer(arrival_times.at(bit, 0));
 | 
				
			||||||
 | 
							//std::stringstream o_buffer;
 | 
				
			||||||
 | 
							//auto write_o_buffer = std::bind(write_buffer_float, std::ref(o_buffer), std::placeholders::_1);
 | 
				
			||||||
 | 
							//for (auto bit : output_bits)
 | 
				
			||||||
 | 
							//	write_o_buffer(0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (!box_list.empty()) {
 | 
				
			||||||
			auto write_buffer = [](std::stringstream &buffer, int i32) {
 | 
								auto write_buffer = [](std::stringstream &buffer, int i32) {
 | 
				
			||||||
				int32_t i32_be = to_big_endian(i32);
 | 
									int32_t i32_be = to_big_endian(i32);
 | 
				
			||||||
				buffer.write(reinterpret_cast<const char*>(&i32_be), sizeof(i32_be));
 | 
									buffer.write(reinterpret_cast<const char*>(&i32_be), sizeof(i32_be));
 | 
				
			||||||
| 
						 | 
					@ -593,19 +606,6 @@ struct XAigerWriter
 | 
				
			||||||
			log_debug("boxNum = %d\n", GetSize(box_list));
 | 
								log_debug("boxNum = %d\n", GetSize(box_list));
 | 
				
			||||||
			write_h_buffer(box_list.size());
 | 
								write_h_buffer(box_list.size());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		auto write_buffer_float = [](std::stringstream &buffer, float f32) {
 | 
					 | 
				
			||||||
			buffer.write(reinterpret_cast<const char*>(&f32), sizeof(f32));
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
		std::stringstream i_buffer;
 | 
					 | 
				
			||||||
		auto write_i_buffer = std::bind(write_buffer_float, std::ref(i_buffer), std::placeholders::_1);
 | 
					 | 
				
			||||||
		for (auto bit : input_bits)
 | 
					 | 
				
			||||||
			write_i_buffer(arrival_times.at(bit, 0));
 | 
					 | 
				
			||||||
		//std::stringstream o_buffer;
 | 
					 | 
				
			||||||
		//auto write_o_buffer = std::bind(write_buffer_float, std::ref(o_buffer), std::placeholders::_1);
 | 
					 | 
				
			||||||
		//for (auto bit : output_bits)
 | 
					 | 
				
			||||||
		//	write_o_buffer(0);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		if (!box_list.empty()) {
 | 
					 | 
				
			||||||
			RTLIL::Module *holes_module = module->design->addModule("$__holes__");
 | 
								RTLIL::Module *holes_module = module->design->addModule("$__holes__");
 | 
				
			||||||
			log_assert(holes_module);
 | 
								log_assert(holes_module);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -669,12 +669,18 @@ struct XAigerWriter
 | 
				
			||||||
				write_h_buffer(box_count++);
 | 
									write_h_buffer(box_count++);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								f << "h";
 | 
				
			||||||
 | 
								std::string buffer_str = h_buffer.str();
 | 
				
			||||||
 | 
								int32_t buffer_size_be = to_big_endian(buffer_str.size());
 | 
				
			||||||
 | 
								f.write(reinterpret_cast<const char*>(&buffer_size_be), sizeof(buffer_size_be));
 | 
				
			||||||
 | 
								f.write(buffer_str.data(), buffer_str.size());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			std::stringstream r_buffer;
 | 
								std::stringstream r_buffer;
 | 
				
			||||||
			auto write_r_buffer = std::bind(write_buffer, std::ref(r_buffer), std::placeholders::_1);
 | 
								auto write_r_buffer = std::bind(write_buffer, std::ref(r_buffer), std::placeholders::_1);
 | 
				
			||||||
			write_r_buffer(0);
 | 
								write_r_buffer(0);
 | 
				
			||||||
			f << "r";
 | 
								f << "r";
 | 
				
			||||||
			std::string buffer_str = r_buffer.str();
 | 
								buffer_str = r_buffer.str();
 | 
				
			||||||
			int32_t buffer_size_be = to_big_endian(buffer_str.size());
 | 
								buffer_size_be = to_big_endian(buffer_str.size());
 | 
				
			||||||
			f.write(reinterpret_cast<const char*>(&buffer_size_be), sizeof(buffer_size_be));
 | 
								f.write(reinterpret_cast<const char*>(&buffer_size_be), sizeof(buffer_size_be));
 | 
				
			||||||
			f.write(buffer_str.data(), buffer_str.size());
 | 
								f.write(buffer_str.data(), buffer_str.size());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -727,16 +733,14 @@ struct XAigerWriter
 | 
				
			||||||
				log_pop();
 | 
									log_pop();
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
							else {
 | 
				
			||||||
		f << "h";
 | 
								log_debug("piNum = %d\n", GetSize(input_bits));
 | 
				
			||||||
		std::string buffer_str = h_buffer.str();
 | 
								log_debug("poNum = %d\n", GetSize(output_bits));
 | 
				
			||||||
		int32_t buffer_size_be = to_big_endian(buffer_str.size());
 | 
							}
 | 
				
			||||||
		f.write(reinterpret_cast<const char*>(&buffer_size_be), sizeof(buffer_size_be));
 | 
					 | 
				
			||||||
		f.write(buffer_str.data(), buffer_str.size());
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		f << "i";
 | 
							f << "i";
 | 
				
			||||||
		buffer_str = i_buffer.str();
 | 
							std::string buffer_str = i_buffer.str();
 | 
				
			||||||
		buffer_size_be = to_big_endian(buffer_str.size());
 | 
							int32_t buffer_size_be = to_big_endian(buffer_str.size());
 | 
				
			||||||
		f.write(reinterpret_cast<const char*>(&buffer_size_be), sizeof(buffer_size_be));
 | 
							f.write(reinterpret_cast<const char*>(&buffer_size_be), sizeof(buffer_size_be));
 | 
				
			||||||
		f.write(buffer_str.data(), buffer_str.size());
 | 
							f.write(buffer_str.data(), buffer_str.size());
 | 
				
			||||||
		//f << "o";
 | 
							//f << "o";
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue