mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-03 21:09:12 +00:00 
			
		
		
		
	Improve "show" handling of 0/1/X/Z padding
Signed-off-by: Clifford Wolf <clifford@clifford.at>
This commit is contained in:
		
							parent
							
								
									148caecca3
								
							
						
					
					
						commit
						eafc4bd49f
					
				
					 1 changed files with 21 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -237,15 +237,34 @@ struct ShowWorker
 | 
			
		|||
			int idx = single_idx_count++;
 | 
			
		||||
			for (int rep, i = int(sig.chunks().size())-1; i >= 0; i -= rep) {
 | 
			
		||||
				const RTLIL::SigChunk &c = sig.chunks().at(i);
 | 
			
		||||
				net = gen_signode_simple(c, false);
 | 
			
		||||
				log_assert(!net.empty());
 | 
			
		||||
				if (!driver && c.wire == nullptr) {
 | 
			
		||||
					RTLIL::State s1 = c.data.front();
 | 
			
		||||
					for (auto s2 : c.data)
 | 
			
		||||
						if (s1 != s2)
 | 
			
		||||
							goto not_const_stream;
 | 
			
		||||
					net.clear();
 | 
			
		||||
				} else {
 | 
			
		||||
			not_const_stream:
 | 
			
		||||
					net = gen_signode_simple(c, false);
 | 
			
		||||
					log_assert(!net.empty());
 | 
			
		||||
				}
 | 
			
		||||
				for (rep = 1; i-rep >= 0 && c == sig.chunks().at(i-rep); rep++) {}
 | 
			
		||||
				std::string repinfo = rep > 1 ? stringf("%dx ", rep) : "";
 | 
			
		||||
				if (driver) {
 | 
			
		||||
					log_assert(!net.empty());
 | 
			
		||||
					label_string += stringf("<s%d> %d:%d - %s%d:%d |", i, pos, pos-c.width+1, repinfo.c_str(), c.offset+c.width-1, c.offset);
 | 
			
		||||
					net_conn_map[net].in.insert(stringf("x%d:s%d", idx, i));
 | 
			
		||||
					net_conn_map[net].bits = rep*c.width;
 | 
			
		||||
					net_conn_map[net].color = nextColor(c, net_conn_map[net].color);
 | 
			
		||||
				} else
 | 
			
		||||
				if (net.empty()) {
 | 
			
		||||
					log_assert(rep == 1);
 | 
			
		||||
					label_string += stringf("%c -> %d:%d |",
 | 
			
		||||
							c.data.front() == State::S0 ? '0' :
 | 
			
		||||
							c.data.front() == State::S1 ? '1' :
 | 
			
		||||
							c.data.front() == State::Sx ? 'X' :
 | 
			
		||||
							c.data.front() == State::Sz ? 'Z' : '?',
 | 
			
		||||
							pos, pos-rep*c.width+1);
 | 
			
		||||
				} else {
 | 
			
		||||
					label_string += stringf("<s%d> %s%d:%d - %d:%d |", i, repinfo.c_str(), c.offset+c.width-1, c.offset, pos, pos-rep*c.width+1);
 | 
			
		||||
					net_conn_map[net].out.insert(stringf("x%d:s%d", idx, i));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue