mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	Merge pull request #1573 from YosysHQ/eddie/xilinx_tristate
synth_xilinx: error out if tristate without '-iopad'
This commit is contained in:
		
						commit
						086c133ea5
					
				
					 3 changed files with 13 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -86,6 +86,7 @@ struct TribufWorker {
 | 
			
		|||
					cell->unsetPort(ID(S));
 | 
			
		||||
					cell->type = tri_type;
 | 
			
		||||
					tribuf_cells[sigmap(cell->getPort(ID::Y))].push_back(cell);
 | 
			
		||||
					module->design->scratchpad_set_bool("tribuf.added_something", true);
 | 
			
		||||
					continue;
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -95,6 +96,7 @@ struct TribufWorker {
 | 
			
		|||
					cell->unsetPort(ID(S));
 | 
			
		||||
					cell->type = tri_type;
 | 
			
		||||
					tribuf_cells[sigmap(cell->getPort(ID::Y))].push_back(cell);
 | 
			
		||||
					module->design->scratchpad_set_bool("tribuf.added_something", true);
 | 
			
		||||
					continue;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
| 
						 | 
				
			
			@ -130,8 +132,10 @@ struct TribufWorker {
 | 
			
		|||
 | 
			
		||||
				if (no_tribuf)
 | 
			
		||||
					module->connect(it.first, muxout);
 | 
			
		||||
				else
 | 
			
		||||
				else {
 | 
			
		||||
					module->addTribuf(NEW_ID, muxout, module->ReduceOr(NEW_ID, pmux_s), it.first);
 | 
			
		||||
					module->design->scratchpad_set_bool("tribuf.added_something", true);
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -316,7 +316,10 @@ struct SynthXilinxPass : public ScriptPass
 | 
			
		|||
			run("proc");
 | 
			
		||||
			if (flatten || help_mode)
 | 
			
		||||
				run("flatten", "(with '-flatten')");
 | 
			
		||||
			active_design->scratchpad_unset("tribuf.added_something");
 | 
			
		||||
			run("tribuf -logic");
 | 
			
		||||
			if (!do_iopad && active_design->scratchpad_get_bool("tribuf.added_something"))
 | 
			
		||||
				log_error("Tristate buffers are unsupported without the '-iopad' option.\n");
 | 
			
		||||
			run("deminout");
 | 
			
		||||
			run("opt_expr");
 | 
			
		||||
			run("opt_clean");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										5
									
								
								tests/arch/xilinx/tribuf.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								tests/arch/xilinx/tribuf.sh
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,5 @@
 | 
			
		|||
! ../../../yosys ../common/tribuf.v -qp "synth_xilinx"
 | 
			
		||||
../../../yosys ../common/tribuf.v -qp "synth_xilinx -iopad; \
 | 
			
		||||
select -assert-count 2 t:IBUF; \
 | 
			
		||||
select -assert-count 1 t:INV; \
 | 
			
		||||
select -assert-count 1 t:OBUFT"
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue