OpenCores
URL https://opencores.org/ocsvn/pavr/pavr/trunk

Subversion Repositories pavr

[/] [pavr/] [trunk/] [tools/] [build_vhdl_test/] [build_vhdl_test.c] - Blame information for rev 8

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 4 doru
#include <string.h>
2
#include <io.h>
3
#include <stdio.h>
4
#include <stdlib.h>
5
#include <malloc.h>
6
#include "../common/tagScan.h"
7
 
8
#define TAG_CLK_CNT_BEGIN      "-- <Clk Cnt>"
9
#define TAG_CLK_CNT_END        "-- </Clk Cnt>"
10
#define TAG_INSTRUCTIONS_BEGIN "-- <Instructions>"
11
#define TAG_INSTRUCTIONS_END   "-- </Instructions>"
12
 
13
#define CLK_OFFSET 100
14
//#define K1 "         if std_logic_vector_to_nat(cnt)<"
15
//#define K2 " then\n"
16
#define K3 "               when "
17
#define K4 " => tmpv1 := pm_setup("
18
#define K5 ", 16#"
19
#define K6 "#);\n"
20
 
21
 
22
 
23
int main(int argc, char * argv[]) {
24
   FILE *fStr1;
25
   scanTag_t stag;
26
   long int pos1, pos2;
27
   char *tStr1, *tStr2;
28
   int instr;
29
   int addr;
30
 
31
   if (argc > 2)
32
   {
33
      scanTag_t_construct(&stag);
34
 
35
      fStr1 = fopen(argv[2], "rb");
36
      if (fStr1 != NULL)
37
      {
38
         fseek(fStr1, 0L, SEEK_SET);
39
         pos1 = ftell(fStr1);
40
         fseek(fStr1, 0L, SEEK_END);
41
         pos2 = ftell(fStr1);
42
 
43
         tStr1 = (char *) malloc(10+2);
44
         tStr2 = (char *) malloc(10+2);
45
         sprintf(tStr2, "%li", CLK_OFFSET+(pos2-pos1)/2);
46
         strcpy(tStr1, "\n");
47
         //strcat(tStr1, K1);
48
         strcat(tStr1, tStr2);
49
         strcat(tStr1, "\n");
50
         //strcat(tStr1, K2);
51
 
52
         // Scan VHDL source and modify the paragraph tagged by `-- <Clk Cnt>' `-- </Clk Cnt>'.
53
         scanTag_t_writeTaggedText(TAG_CLK_CNT_BEGIN, TAG_CLK_CNT_END, tStr1, argv[1], &stag);
54
 
55
         free(tStr1);
56
         tStr1 = (char *) malloc((pos2-pos1)*(sizeof(K3)+10+sizeof(K4)+10+sizeof(K5)+10+sizeof(K6))+2);
57
         strcpy(tStr1, "\n");
58
         fseek(fStr1, 0L, SEEK_SET);
59
         addr = 0;
60
         while (feof(fStr1) == 0)
61
         {
62
            fread(&instr, 2, 1, fStr1);
63
            if (feof(fStr1) == 0)
64
            {
65
               strcat(tStr1, K3);
66
               sprintf(tStr2, "%i", addr+CLK_OFFSET);
67
               strcat(tStr1, tStr2);
68
               strcat(tStr1, K4);
69
               sprintf(tStr2, "%i", addr);
70
               strcat(tStr1, tStr2);
71
               strcat(tStr1, K5);
72
               sprintf(tStr2, "%04x", instr);
73
               strcat(tStr1, tStr2);
74
               strcat(tStr1, K6);
75
               addr++;
76
            }
77
         }
78
 
79
         // Scan VHDL source and modify the paragraph tagged by `-- <Instructions>' `-- </Instructions>'.
80
         scanTag_t_writeTaggedText(TAG_INSTRUCTIONS_BEGIN, TAG_INSTRUCTIONS_END, tStr1, argv[1], &stag);
81
         free(tStr1);
82
         free(tStr2);
83
      }
84
      else
85
      {
86
         exit(1);
87
      }
88
 
89
 
90
      fprintf(stdout, "%s\n", scanTag_t_getStatus(&stag));
91
      scanTag_t_destruct(&stag);
92
   }
93
   else
94
   {
95
      fprintf(stderr, "Usage: this_executable.exe src.vhd prog.bin\n");
96
   }
97
   return 0;
98
}

powered by: WebSVN 2.1.0

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