mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-04 13:29:12 +00:00 
			
		
		
		
	Add shregmap -init_msb_first and use in synth_xilinx
This commit is contained in:
		
							parent
							
								
									79b4a275ce
								
							
						
					
					
						commit
						26ecbc1aee
					
				
					 2 changed files with 16 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -34,7 +34,7 @@ struct ShregmapOptions
 | 
			
		|||
{
 | 
			
		||||
	int minlen, maxlen;
 | 
			
		||||
	int keep_before, keep_after;
 | 
			
		||||
	bool zinit, init, params, ffe;
 | 
			
		||||
	bool zinit, init, params, ffe, init_msb_first;
 | 
			
		||||
	dict<IdString, pair<IdString, IdString>> ffcells;
 | 
			
		||||
	ShregmapTech *tech;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -48,6 +48,7 @@ struct ShregmapOptions
 | 
			
		|||
		init = false;
 | 
			
		||||
		params = false;
 | 
			
		||||
		ffe = false;
 | 
			
		||||
		init_msb_first = false;
 | 
			
		||||
		tech = nullptr;
 | 
			
		||||
	}
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -307,6 +308,8 @@ struct ShregmapWorker
 | 
			
		|||
						initval.push_back(State::S0);
 | 
			
		||||
					remove_init.insert(bit);
 | 
			
		||||
				}
 | 
			
		||||
				if (opts.init_msb_first)
 | 
			
		||||
					std::reverse(initval.begin(), initval.end());
 | 
			
		||||
				first_cell->setParam("\\INIT", initval);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -442,9 +445,13 @@ struct ShregmapPass : public Pass {
 | 
			
		|||
		log("\n");
 | 
			
		||||
		log("    -init\n");
 | 
			
		||||
		log("        map initialized registers to the shift reg, add an INIT parameter to\n");
 | 
			
		||||
		log("        generated cells with the initialization value. (first bit to shift out\n");
 | 
			
		||||
		log("        generated cells with the initialization value. (First bit to shift out\n");
 | 
			
		||||
		log("        in LSB position)\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
		log("    -init_msb_first\n");
 | 
			
		||||
		log("        same as -init, but INIT parameter to have first bit to shift out\n");
 | 
			
		||||
		log("        in MSB position.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
		log("    -tech greenpak4\n");
 | 
			
		||||
		log("        map to greenpak4 shift registers.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -515,6 +522,11 @@ struct ShregmapPass : public Pass {
 | 
			
		|||
				opts.init = true;
 | 
			
		||||
				continue;
 | 
			
		||||
			}
 | 
			
		||||
			if (args[argidx] == "-init_msb_first") {
 | 
			
		||||
				opts.init = true;
 | 
			
		||||
				opts.init_msb_first = true;
 | 
			
		||||
				continue;
 | 
			
		||||
			}
 | 
			
		||||
			if (args[argidx] == "-params") {
 | 
			
		||||
				opts.params = true;
 | 
			
		||||
				continue;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue