OpenCores
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;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.