/**************************************************************************** usage to generate a patter test.pat from test.p gcc -DINFILE="\"test.p\"" -DOUTFILE="\"test.pat\"" -o test.exe generator.c ; ./test.exe ; rm test.exe *************************************************************************/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define MAXLOOPS 3 #define MAXTIMERS 3 #define MAXWORDS 1024 uint64_t pat=0; uint64_t iopat=0; uint64_t clkpat=0; int iaddr=0; int waitaddr[3]={MAXWORDS,MAXWORDS,MAXWORDS}; int startloopaddr[3]={MAXWORDS,MAXWORDS,MAXWORDS}; int stoploopaddr[3]={MAXWORDS,MAXWORDS,MAXWORDS}; int start=0, stop=0; uint64_t waittime[3]={0,0,0}; int nloop[3]={0,0,0}; char infile[10000], outfile[10000]; FILE *fd, *fd1; uint64_t PAT[MAXWORDS]; int i,ii,iii,j,jj,jjj,pixx,pixy,memx,memy,muxout,memclk,colclk,rowclk,muxclk,memcol,memrow,loopcounter; void setstart() { start=iaddr; } void setstop() { stop=iaddr; } void setinput(int bit) { uint64_t mask=1; mask=mask<>bit; } void setstartloop(int iloop) { if (iloop>=0 && iloop=0 && iloop=0 && iloop=0 && iloop=0 && iloop=MAXWORDS) printf("ERROR: too many word in the pattern (%d instead of %d)!",iaddr, MAXWORDS); } int parseCommand(int clk, int cmdbit, int cmd, int length) { int ibit; clearbit(clk); for (ibit=0; ibit>ibit)) setbit(cmdbit); else clearbit(cmdbit); pw(); /******/ setbit(clk); pw(); /******/ } }; main(void) { int iloop=0; fd=fopen(OUTFILE,"w"); #include INFILE fprintf(fd,"patioctrl 0x%016llx\n",iopat); fprintf(fd,"patclkctrl 0x%016llx\n",clkpat); fprintf(fd,"patlimits 0x%04x 0x%04x\n",start, stop); for (iloop=0; iloop