mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-03 21:09:12 +00:00 
			
		
		
		
	Add genlib support to abc_new
This commit is contained in:
		
							parent
							
								
									4f968c6695
								
							
						
					
					
						commit
						e4ab6acb46
					
				
					 2 changed files with 23 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -168,7 +168,7 @@ void abc9_module(RTLIL::Design *design, std::string script_file, std::string exe
 | 
			
		|||
		vector<int> lut_costs, bool dff_mode, std::string delay_target, std::string /*lutin_shared*/, bool fast_mode,
 | 
			
		||||
		bool show_tempdir, std::string box_file, std::string lut_file,
 | 
			
		||||
		std::vector<std::string> liberty_files, std::string wire_delay, std::string tempdir_name,
 | 
			
		||||
		std::string constr_file, std::vector<std::string> dont_use_cells)
 | 
			
		||||
		std::string constr_file, std::vector<std::string> dont_use_cells, std::vector<std::string> genlib_files)
 | 
			
		||||
{
 | 
			
		||||
	std::string abc9_script;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -186,6 +186,10 @@ void abc9_module(RTLIL::Design *design, std::string script_file, std::string exe
 | 
			
		|||
		}
 | 
			
		||||
		if (!constr_file.empty())
 | 
			
		||||
			abc9_script += stringf("read_constr -v \"%s\"; ", constr_file.c_str());
 | 
			
		||||
	} else if (!genlib_files.empty()) {
 | 
			
		||||
		for (std::string genlib_file : genlib_files) {
 | 
			
		||||
			abc9_script += stringf("read_genlib \"%s\"; ", genlib_file.c_str());
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	log_assert(!box_file.empty());
 | 
			
		||||
| 
						 | 
				
			
			@ -384,9 +388,14 @@ struct Abc9ExePass : public Pass {
 | 
			
		|||
		log("        read the given Liberty file as a description of the target cell library.\n");
 | 
			
		||||
		log("        this option can be used multiple times.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
		log("    -genlib <file>\n");
 | 
			
		||||
		log("        read the given genlib file as a description of the target cell library.\n");
 | 
			
		||||
		log("        this option can be used multiple times.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
		log("    -dont_use <cell_name>\n");
 | 
			
		||||
		log("        avoid usage of the technology cell <cell_name> when mapping the design.\n");
 | 
			
		||||
		log("        this option can be used multiple times.\n");
 | 
			
		||||
		log("        this option can be used multiple times. only supported with Liberty\n");
 | 
			
		||||
		log("        cell libraries.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
		log("    -D <picoseconds>\n");
 | 
			
		||||
		log("        set delay target. the string {D} in the default scripts above is\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -441,7 +450,7 @@ struct Abc9ExePass : public Pass {
 | 
			
		|||
 | 
			
		||||
		std::string exe_file = yosys_abc_executable;
 | 
			
		||||
		std::string script_file, clk_str, box_file, lut_file, constr_file;
 | 
			
		||||
		std::vector<std::string> liberty_files, dont_use_cells;
 | 
			
		||||
		std::vector<std::string> liberty_files, genlib_files, dont_use_cells;
 | 
			
		||||
		std::string delay_target, lutin_shared = "-S 1", wire_delay;
 | 
			
		||||
		std::string tempdir_name;
 | 
			
		||||
		bool fast_mode = false, dff_mode = false;
 | 
			
		||||
| 
						 | 
				
			
			@ -530,9 +539,15 @@ struct Abc9ExePass : public Pass {
 | 
			
		|||
				continue;
 | 
			
		||||
			}
 | 
			
		||||
			if (arg == "-liberty" && argidx+1 < args.size()) {
 | 
			
		||||
				rewrite_filename(args[argidx+1]);
 | 
			
		||||
				liberty_files.push_back(args[++argidx]);
 | 
			
		||||
				continue;
 | 
			
		||||
			}
 | 
			
		||||
			if (arg == "-genlib" && argidx+1 < args.size()) {
 | 
			
		||||
				rewrite_filename(args[argidx+1]);
 | 
			
		||||
				genlib_files.push_back(args[++argidx]);
 | 
			
		||||
				continue;
 | 
			
		||||
			}
 | 
			
		||||
			if (arg == "-dont_use" && argidx+1 < args.size()) {
 | 
			
		||||
				dont_use_cells.push_back(args[++argidx]);
 | 
			
		||||
				continue;
 | 
			
		||||
| 
						 | 
				
			
			@ -601,11 +616,13 @@ struct Abc9ExePass : public Pass {
 | 
			
		|||
		if (tempdir_name.empty())
 | 
			
		||||
			log_cmd_error("abc9_exe '-cwd' option is mandatory.\n");
 | 
			
		||||
 | 
			
		||||
		if (!genlib_files.empty() && !dont_use_cells.empty())
 | 
			
		||||
			log_cmd_error("abc9_exe '-genlib' is incompatible with '-dont_use'.\n");
 | 
			
		||||
 | 
			
		||||
		abc9_module(design, script_file, exe_file, lut_costs, dff_mode,
 | 
			
		||||
				delay_target, lutin_shared, fast_mode, show_tempdir,
 | 
			
		||||
				box_file, lut_file, liberty_files, wire_delay, tempdir_name,
 | 
			
		||||
				constr_file, dont_use_cells);
 | 
			
		||||
				constr_file, dont_use_cells, genlib_files);
 | 
			
		||||
	}
 | 
			
		||||
} Abc9ExePass;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -68,6 +68,7 @@ struct AbcNewPass : public ScriptPass {
 | 
			
		|||
		log("    -constr <file>\n");
 | 
			
		||||
		log("    -dont_use <cell_name>\n");
 | 
			
		||||
		log("    -liberty <file>\n");
 | 
			
		||||
		log("    -genlib <file>\n");
 | 
			
		||||
		log("        these options are passed on to the 'abc9_exe' command which invokes\n");
 | 
			
		||||
		log("        the ABC tool on individual modules of the design. please see\n");
 | 
			
		||||
		log("        'help abc9_exe' for more details\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -90,7 +91,7 @@ struct AbcNewPass : public ScriptPass {
 | 
			
		|||
			if (args[argidx] == "-exe" || args[argidx] == "-script" ||
 | 
			
		||||
					args[argidx] == "-D" ||
 | 
			
		||||
					args[argidx] == "-constr" || args[argidx] == "-dont_use" ||
 | 
			
		||||
					args[argidx] == "-liberty") {
 | 
			
		||||
					args[argidx] == "-liberty" || args[argidx] == "-genlib") {
 | 
			
		||||
				abc_exe_options += " " + args[argidx] + " " + args[argidx + 1];
 | 
			
		||||
				argidx++;
 | 
			
		||||
			} else if (args[argidx] == "-run" && argidx + 1 < args.size()) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue