mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 11:42:30 +00:00 
			
		
		
		
	Replace "ILANG" with "RTLIL" everywhere.
The only difference between "RTLIL" and "ILANG" is that the latter is the text representation of the former, as opposed to the in-memory graph representation. This distinction serves no purpose but confuses people: it is not obvious that the ILANG backend writes RTLIL graphs. Passes `write_ilang` and `read_ilang` are provided as aliases to `write_rtlil` and `read_rtlil` for compatibility.
This commit is contained in:
		
							parent
							
								
									4f2b78e19a
								
							
						
					
					
						commit
						00e7dec7f5
					
				
					 28 changed files with 206 additions and 178 deletions
				
			
		
							
								
								
									
										150
									
								
								frontends/rtlil/rtlil_lexer.l
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										150
									
								
								frontends/rtlil/rtlil_lexer.l
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,150 @@ | |||
| /* | ||||
|  *  yosys -- Yosys Open SYnthesis Suite | ||||
|  * | ||||
|  *  Copyright (C) 2012  Clifford Wolf <clifford@clifford.at> | ||||
|  * | ||||
|  *  Permission to use, copy, modify, and/or distribute this software for any | ||||
|  *  purpose with or without fee is hereby granted, provided that the above | ||||
|  *  copyright notice and this permission notice appear in all copies. | ||||
|  * | ||||
|  *  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||||
|  *  WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||||
|  *  MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||||
|  *  ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||||
|  *  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||||
|  *  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||||
|  *  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
|  * | ||||
|  *  --- | ||||
|  * | ||||
|  *  A very simple and straightforward frontend for the RTLIL text | ||||
|  *  representation. | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| %{ | ||||
| 
 | ||||
| #ifdef __clang__ | ||||
| // bison generates code using the 'register' storage class specifier | ||||
| #pragma clang diagnostic ignored "-Wdeprecated-register" | ||||
| #endif | ||||
| 
 | ||||
| #include <cstdlib> | ||||
| #include "frontends/rtlil/rtlil_frontend.h" | ||||
| #include "rtlil_parser.tab.hh" | ||||
| 
 | ||||
| USING_YOSYS_NAMESPACE | ||||
| 
 | ||||
| #define YY_INPUT(buf,result,max_size) \ | ||||
| 	result = readsome(*RTLIL_FRONTEND::lexin, buf, max_size) | ||||
| 
 | ||||
| %} | ||||
| 
 | ||||
| %option yylineno | ||||
| %option noyywrap | ||||
| %option nounput | ||||
| %option prefix="rtlil_frontend_yy" | ||||
| 
 | ||||
| %x STRING | ||||
| 
 | ||||
| %% | ||||
| 
 | ||||
| "autoidx"	{ return TOK_AUTOIDX; } | ||||
| "module"	{ return TOK_MODULE; } | ||||
| "attribute"	{ return TOK_ATTRIBUTE; } | ||||
| "parameter"	{ return TOK_PARAMETER; } | ||||
| "signed"	{ return TOK_SIGNED; } | ||||
| "real"		{ return TOK_REAL; } | ||||
| "wire"		{ return TOK_WIRE; } | ||||
| "memory"	{ return TOK_MEMORY; } | ||||
| "width"		{ return TOK_WIDTH; } | ||||
| "upto"		{ return TOK_UPTO; } | ||||
| "offset"	{ return TOK_OFFSET; } | ||||
| "size"		{ return TOK_SIZE; } | ||||
| "input"		{ return TOK_INPUT; } | ||||
| "output"	{ return TOK_OUTPUT; } | ||||
| "inout"		{ return TOK_INOUT; } | ||||
| "cell"		{ return TOK_CELL; } | ||||
| "connect"	{ return TOK_CONNECT; } | ||||
| "switch"	{ return TOK_SWITCH; } | ||||
| "case"		{ return TOK_CASE; } | ||||
| "assign"	{ return TOK_ASSIGN; } | ||||
| "sync"		{ return TOK_SYNC; } | ||||
| "low"		{ return TOK_LOW; } | ||||
| "high"		{ return TOK_HIGH; } | ||||
| "posedge"	{ return TOK_POSEDGE; } | ||||
| "negedge"	{ return TOK_NEGEDGE; } | ||||
| "edge"		{ return TOK_EDGE; } | ||||
| "always"	{ return TOK_ALWAYS; } | ||||
| "global"	{ return TOK_GLOBAL; } | ||||
| "init"		{ return TOK_INIT; } | ||||
| "update"	{ return TOK_UPDATE; } | ||||
| "process"	{ return TOK_PROCESS; } | ||||
| "end"		{ return TOK_END; } | ||||
| 
 | ||||
| [a-z]+		{ return TOK_INVALID; } | ||||
| 
 | ||||
| "\\"[^ \t\r\n]+		{ rtlil_frontend_yylval.string = strdup(yytext); return TOK_ID; } | ||||
| "$"[^ \t\r\n]+		{ rtlil_frontend_yylval.string = strdup(yytext); return TOK_ID; } | ||||
| "."[0-9]+		{ rtlil_frontend_yylval.string = strdup(yytext); return TOK_ID; } | ||||
| 
 | ||||
| [0-9]+'[01xzm-]*	{ rtlil_frontend_yylval.string = strdup(yytext); return TOK_VALUE; } | ||||
| -?[0-9]+		{ | ||||
| 	char *end = nullptr; | ||||
| 	errno = 0; | ||||
| 	long value = strtol(yytext, &end, 10); | ||||
| 	log_assert(end == yytext + strlen(yytext)); | ||||
| 	if (errno == ERANGE) | ||||
| 		return TOK_INVALID; // literal out of range of long | ||||
| 	if (value < INT_MIN || value > INT_MAX) | ||||
| 		return TOK_INVALID; // literal out of range of int (relevant mostly for LP64 platforms) | ||||
| 	rtlil_frontend_yylval.integer = value; | ||||
| 	return TOK_INT; | ||||
| } | ||||
| 
 | ||||
| \"		{ BEGIN(STRING); } | ||||
| <STRING>\\.	{ yymore(); } | ||||
| <STRING>\"	{ | ||||
| 	BEGIN(0); | ||||
| 	char *yystr = strdup(yytext); | ||||
| 	yystr[strlen(yytext) - 1] = 0; | ||||
| 	int i = 0, j = 0; | ||||
| 	while (yystr[i]) { | ||||
| 		if (yystr[i] == '\\' && yystr[i + 1]) { | ||||
| 			i++; | ||||
| 			if (yystr[i] == 'n') | ||||
| 				yystr[i] = '\n'; | ||||
| 			else if (yystr[i] == 't') | ||||
| 				yystr[i] = '\t'; | ||||
| 			else if ('0' <= yystr[i] && yystr[i] <= '7') { | ||||
| 				yystr[i] = yystr[i] - '0'; | ||||
| 				if ('0' <= yystr[i + 1] && yystr[i + 1] <= '7') { | ||||
| 					yystr[i + 1] = yystr[i] * 8 + yystr[i + 1] - '0'; | ||||
| 					i++; | ||||
| 				} | ||||
| 				if ('0' <= yystr[i + 1] && yystr[i + 1] <= '7') { | ||||
| 					yystr[i + 1] = yystr[i] * 8 + yystr[i + 1] - '0'; | ||||
| 					i++; | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		yystr[j++] = yystr[i++]; | ||||
| 	} | ||||
| 	yystr[j] = 0; | ||||
| 	rtlil_frontend_yylval.string = yystr; | ||||
| 	return TOK_STRING; | ||||
| } | ||||
| <STRING>.	{ yymore(); } | ||||
| 
 | ||||
| "#"[^\n]*	/* ignore comments */ | ||||
| [ \t]		/* ignore non-newline whitespaces */ | ||||
| [\r\n]+		{ return TOK_EOL; } | ||||
| 
 | ||||
| .               { return *yytext; } | ||||
| 
 | ||||
| %% | ||||
| 
 | ||||
| // this is a hack to avoid the 'yyinput defined but not used' error msgs | ||||
| void *rtlil_frontend_avoid_input_warnings() { | ||||
| 	return (void*)&yyinput; | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue