diff options
| author | clairexen <claire@symbioticeda.com> | 2020-10-01 14:32:43 +0200 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-10-01 14:32:43 +0200 | 
| commit | 492bd3c4c280a6143cb282507e9bc8f7ee81fe81 (patch) | |
| tree | 31b73690f98274f07116207f0657c77640a82ec1 /frontends | |
| parent | f9ed9786bf8743e96aafb42838cfef5e18e35f29 (diff) | |
| parent | a44c5df25958c80793c1b3e3915521a347753d25 (diff) | |
| download | yosys-492bd3c4c280a6143cb282507e9bc8f7ee81fe81.tar.gz yosys-492bd3c4c280a6143cb282507e9bc8f7ee81fe81.tar.bz2 yosys-492bd3c4c280a6143cb282507e9bc8f7ee81fe81.zip | |
Merge pull request #2395 from YosysHQ/sha1_if_contain_spaces
Use sha1 for parameter list in case if they contain spaces
Diffstat (limited to 'frontends')
| -rw-r--r-- | frontends/verific/verific.cc | 20 | 
1 files changed, 18 insertions, 2 deletions
| diff --git a/frontends/verific/verific.cc b/frontends/verific/verific.cc index 7bbda9d49..acb854a4d 100644 --- a/frontends/verific/verific.cc +++ b/frontends/verific/verific.cc @@ -21,6 +21,7 @@  #include "kernel/sigtools.h"  #include "kernel/celltypes.h"  #include "kernel/log.h" +#include "libs/sha1/sha1.h"  #include <stdlib.h>  #include <stdio.h>  #include <string.h> @@ -864,6 +865,21 @@ void VerificImporter::merge_past_ffs(pool<RTLIL::Cell*> &candidates)  		merge_past_ffs_clock(it.second, it.first.first, it.first.second);  } +static std::string sha1_if_contain_spaces(std::string str) +{ +	if(str.find_first_of(' ') != std::string::npos) { +		std::size_t open = str.find_first_of('('); +		std::size_t closed = str.find_last_of(')'); +		if (open != std::string::npos && closed != std::string::npos) { +			std::string content = str.substr(open + 1, closed - open - 1); +			return str.substr(0, open + 1) + sha1(content) + str.substr(closed); +		} else { +			return sha1(str); +		} +	} +	return str; +} +  void VerificImporter::import_netlist(RTLIL::Design *design, Netlist *nl, std::set<Netlist*> &nl_todo, bool norename)  {  	std::string netlist_name = nl->GetAtt(" \\top") ? nl->CellBaseName() : nl->Owner()->Name(); @@ -877,7 +893,7 @@ void VerificImporter::import_netlist(RTLIL::Design *design, Netlist *nl, std::se  			module_name += nl->Name();  			module_name += ")";  		} -		module_name = "\\" + module_name; +		module_name = "\\" + sha1_if_contain_spaces(module_name);  	}  	netlist = nl; @@ -1512,7 +1528,7 @@ void VerificImporter::import_netlist(RTLIL::Design *design, Netlist *nl, std::se  				inst_type += inst->View()->Name();  				inst_type += ")";  			} -			inst_type = "\\" + inst_type; +			inst_type = "\\" + sha1_if_contain_spaces(inst_type);  		}  		RTLIL::Cell *cell = module->addCell(inst_name, inst_type); | 
