URL
https://opencores.org/ocsvn/sc2v/sc2v/trunk
Subversion Repositories sc2v
Compare Revisions
- This comparison shows the changes necessary to convert path
/
- from Rev 19 to Rev 20
- ↔ Reverse comparison
Rev 19 → Rev 20
/trunk/ChangeLog
3,6 → 3,7
Corrected bug with <= comparation |
for loops with int type as index supported |
Support hex numbers in switchs |
Support sc_signals arrays |
|
25-02-2005 Version 0.4 |
|
/trunk/src/sc2v_step1.y
39,6 → 39,7
int openedkeys = 0; |
int newline = 0; |
int reg_found = 0; |
int array_size=0; |
int integer_found=0; |
int regs_end; |
int i = 0; //for loops counter |
509,6 → 510,7
else if (verilog == 1) |
fprintf (file, "%s-- ", (char *) $1); |
}; |
|
word: |
WORD |
{ |
/trunk/src/sc2v_step2.h
43,6 → 43,7
{ |
char name[MAX_NAME_LENGTH]; |
int size; |
int arraysize; |
struct _signal_node *next; |
} SignalNode; |
|
144,7 → 145,7
void EnumeratePorts (PortNode *list); |
|
/* Functions for signals list*/ |
SignalNode *InsertSignal (SignalNode *list,char *name, int size); |
SignalNode *InsertSignal (SignalNode *list,char *name, int size,int arraysize); |
void ShowSignalsList (SignalNode* list, WriteNode* writeslist); |
int IsWire (char *name, InstanceNode * list); |
|
/trunk/src/sc2v_step2.y
144,7 → 144,7
%token NUMBER SC_MODULE WORD OPENPAR CLOSEPAR SC_IN SC_OUT SEMICOLON BOOL ENUM |
%token MENOR MAYOR SC_REG SC_METHOD SENSITIVE_POS SENSITIVE_NEG SENSITIVE |
%token SENSIBLE CLOSEKEY OPENKEY SEMICOLON COLON SC_SIGNAL ARROW EQUALS NEW QUOTE |
%token SC_CTOR VOID ASTERISCO TRANSLATEON TRANSLATEOFF |
%token SC_CTOR VOID ASTERISCO TRANSLATEON TRANSLATEOFF OPENCORCH CLOSECORCH |
|
%% commands: /* empty */ |
|commands command; |
224,7 → 224,16
functioninputs |
| |
finishfunctioninputs |
| boolfunction | boolfunctioninputs | boolfinishfunctioninputs; |
| |
boolfunction |
| |
boolfunctioninputs |
| |
arraycolon |
| |
arraysemicolon |
| |
boolfinishfunctioninputs; |
|
module: |
SC_MODULE OPENPAR WORD CLOSEPAR OPENKEY |
459,7 → 468,25
} |
}; |
|
arraysemicolon: |
WORD OPENCORCH NUMBER CLOSECORCH SEMICOLON |
{ |
if (signalactive) |
{ |
signalslist = InsertSignal (signalslist, (char *) $1, lastsignalsize,$3); |
signalactive = 0; |
} |
} |
|
arraycolon: |
WORD OPENCORCH NUMBER CLOSECORCH COLON |
{ |
if (signalactive) |
{ |
signalslist = InsertSignal (signalslist, (char *) $1, lastsignalsize,$3); |
signalactive = 0; |
} |
} |
|
word_semicolon: |
WORD SEMICOLON |
474,8 → 501,7
} |
else if (signalactive) |
{ |
signalslist = |
InsertSignal (signalslist, (char *) $1, lastsignalsize); |
signalslist = InsertSignal (signalslist, (char *) $1, lastsignalsize,0); |
signalactive = 0; |
} |
else if (multipledec) |
490,7 → 516,7
{ |
//Calculate the number of bits needed to represent the enumerate |
length = findEnumerateLength (enumlistlist, list_pos); |
signalslist = InsertSignal (signalslist, (char *) $1, length); |
signalslist = InsertSignal (signalslist, (char *) $1, length, 0); |
writeslist = InsertWrite (writeslist, (char *) $1); |
free (storedtype); |
multipledec = 0; |
515,13 → 541,11
{ |
if (activeport) |
{ |
portlist = |
InsertPort (portlist, (char *) $1, lastportkind, lastportsize); |
portlist = InsertPort (portlist, (char *) $1, lastportkind, lastportsize); |
} |
else if (signalactive) |
{ |
signalslist = |
InsertSignal (signalslist, (char *) $1, lastsignalsize); |
signalslist = InsertSignal (signalslist, (char *) $1, lastsignalsize, 0); |
} |
else if (reading_enumerates) |
{ |
541,7 → 565,7
{ |
//Calculate the number of bits needed to represent the enumerate |
length = findEnumerateLength (enumlistlist, list_pos); |
signalslist = InsertSignal (signalslist, (char *) $1, length); |
signalslist = InsertSignal (signalslist, (char *) $1, length, 0); |
writeslist = InsertWrite (writeslist, (char *) $1); |
multipledec = 1; |
} |
734,7 → 758,7
{ |
//Calculate the number of bits needed to represent the enumerate |
length = findEnumerateLength (enumlistlist, list_pos); |
signalslist = InsertSignal (signalslist, (char *) $2, length); |
signalslist = InsertSignal (signalslist, (char *) $2, length, 0); |
writeslist = InsertWrite (writeslist, (char *) $2); |
} |
else |
771,7 → 795,7
length = findEnumerateLength (enumlistlist, list_pos); |
|
|
signalslist = InsertSignal (signalslist, (char *) $5, length); |
signalslist = InsertSignal (signalslist, (char *) $5, length, 0); |
|
writeslist = InsertWrite (writeslist, (char *) $5); |
|
818,7 → 842,7
|
strcpy (storedtype, (char *) $1); |
|
signalslist = InsertSignal (signalslist, (char *) $2, length); |
signalslist = InsertSignal (signalslist, (char *) $2, length,0); |
|
writeslist = InsertWrite (writeslist, (char *) $2); |
|
856,7 → 880,7
length = findEnumerateLength (enumlistlist, list_pos); |
storedtype = (char *) malloc (sizeof (char) * strlen ((char *) $3)); |
strcpy (storedtype, (char *) $3); |
signalslist = InsertSignal (signalslist, (char *) $5, length); |
signalslist = InsertSignal (signalslist, (char *) $5, length, 0); |
writeslist = InsertWrite (writeslist, (char *) $5); |
multipledec = 1; |
} |
/trunk/src/sc2v_step2.l
76,6 → 76,15
yylval=(int)strdup(yytext); |
return WORD; |
} |
"[" if(!includefound & !linecomment & !multilinecomment) { |
yylval=(int)strdup(yytext); |
return OPENCORCH; |
} |
"]" if(!includefound & !linecomment & !multilinecomment) { |
yylval=(int)strdup(yytext); |
return CLOSECORCH; |
} |
|
"*" if(!includefound & !linecomment & !multilinecomment) return ASTERISCO; |
"\n" includefound = 0; linecomment = 0; lineno++; |
"\\\n" lineno++;/* no new line */ |
/trunk/src/sc2v_step2.c
172,7 → 172,7
} |
|
SignalNode * |
InsertSignal (SignalNode * list, char *name, int size) |
InsertSignal (SignalNode * list, char *name, int size, int arraysize) |
{ |
SignalNode *sl; |
|
179,6 → 179,7
sl = (SignalNode *) malloc (sizeof (SignalNode)); |
strcpy (sl->name, name); |
sl->size = size; |
sl->arraysize=arraysize; |
SGLIB_LIST_ADD (SignalNode, list, sl, next); |
return (list); |
|
198,7 → 199,7
{ |
printf ("[%d:0] ", (-1 + sll->size)); |
} |
printf ("%s;\n", sll->name); |
printf ("%s", sll->name); |
} |
else |
{ |
207,8 → 208,11
{ |
printf ("[%d:0] ", (-1 + sll->size)); |
} |
printf ("%s;\n", sll->name); |
printf ("%s", sll->name); |
} |
if(sll->arraysize !=0) |
printf("[%d:0]", (-1 + sll->size)); |
printf(";\n"); |
} |
); |
return; |