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

Subversion Repositories ezidebug

[/] [ezidebug/] [trunk/] [EziDebug_src/] [reg_scan.h] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 EziDebug
#ifndef REG_SCAN_H
2
#define REG_SCAN_H
3
 
4
#include <QWidget>
5
#include "reg_type.h"
6
 
7
#include <QStringList>
8
#include <QDIR>
9
#include <QMap>
10
 
11
namespace Ui {
12
    class reg_scan;
13
}
14
 
15
class reg_scan : public QWidget
16
{
17
    Q_OBJECT
18
public:
19
    char *prog;
20
    char *p_buf;
21
    char cToken[64];
22
    TOK_TYPES eTokenType;
23
    TOKEN_IREPS eTok;
24
 
25
public:
26
    explicit reg_scan(QWidget *parent = 0);
27
 
28
        ~reg_scan();
29
public:
30
/*caculate the value of expressions*/
31
    /////////////////////////////
32
    //用于解析表达式
33
    void EvalExp(int &value);
34
    void EvalExp0(int &value);
35
    void EvalExp1(int &value);
36
    void EvalExp2(int &value);
37
    void EvalExp3(int &value);
38
    void EvalExp4(int &value);
39
    void EvalExp5(int &value);
40
    void Atom(int &value);
41
    /////////////////////////////
42
    void ClearModule();
43
    bool IsDelim(char c);
44
    bool DealError(char *str);
45
    bool FindModule(char* name);
46
    bool FindMacro(char *vname);
47
    bool IsVar(char *vname);
48
    bool LoadVeriFile(char *p,char *fname);
49
    bool SetRegAttr(char *reg,struct TempBuf* clk,struct TempBuf* rst,bool isRegValid);
50
 
51
    void PutBack();
52
    void ScanPre();
53
    void Interp();
54
    void PrintFile();
55
    void StoreMacro();
56
    void ExecInclude();
57
    void ExecModule();
58
    void ExecIO();
59
    void ExecReg();
60
    void ExecParam();
61
    void ExecAlways();
62
    void ExecAssign();
63
    void ExecInst();
64
    void ExecDefparam();
65
    void ExecDef();
66
    void ExecIfels(int &nElseFlag);
67
    void ExecElsend(int &nElseFlag);
68
    void SkipIfels(int &nElseFlag);
69
    void SkipElsend(int &nElseFlag);
70
    void InterpAlways(struct TempBuf* clk,struct TempBuf* rst,bool isRegValid);
71
 
72
    TOK_TYPES GetToken();
73
    TOKEN_IREPS LookUp(char *s);
74
 
75
    char *FindInstModu(char *name);
76
 
77
    unsigned int VarToUint(char *str);
78
    QString FindVar(char *vname);
79
    //void find_attr_reg();
80
    //void assign_var(char *vname,int value);
81
private:
82
    //Ui::reg_scan *ui;
83
};
84
 
85
 
86
struct commands
87
{
88
    char cCmd[20];
89
    TOKEN_IREPS eTok;
90
};
91
 
92
 
93
//建立模块结构体,每个文件中可以有多个模块
94
struct ModuleMem{ //store the attribute of  module and inst_modle
95
    char cModuleName[MAX_NAME_LEN];
96
 
97
    //例化模块结构体
98
    struct InstModuType
99
    {
100
        char cInstName[MAX_NAME_LEN];
101
        char cModuName[MAX_NAME_LEN];
102
        unsigned int unSize;
103
    }InstModuTab[MAX_T_LEN];  //record the location of inst_module
104
 
105
    //IO接口结构体
106
    struct IOPort{
107
        char cIOName[MAX_NAME_LEN];
108
        IO_ATTRI eIOAttri;
109
        QString  iIOWidth; // 为了便于替换(模块外部定义其他模块参数的情况),定义成字符串
110
    }IOTab[MAX_T_LEN];
111
 
112
    //Register结构体
113
    struct RegMem{ //store the found reg
114
        char cRegName[MAX_NAME_LEN];
115
        QString  iRegWidth ;
116
        QString  iRegCnt ;
117
        struct RegClk{
118
            char  cClkName[MAX_NAME_LEN];
119
            EDGE_ATTRI eClkEdge;
120
        }ClkAttri;
121
        struct RegRst{
122
            char cRstName[MAX_NAME_LEN];
123
            EDGE_ATTRI eRstEdge;
124
        }RstAttri;
125
 
126
        //标志是否是随时钟沿变化的信号
127
        bool IsFlag;   /* 0: invalid,1: valid ;*/
128
    }RegTab[MAX_T_LEN];
129
 
130
    //Parameter结构体
131
    struct ParaMem{ //store the local variable
132
        char cParaName[MAX_NAME_LEN];
133
        QString   iParaVal;
134
    }ParaTab[MAX_T_LEN];
135
 
136
 
137
    //公共统计变量
138
    unsigned int unIOCnt ;
139
    unsigned int unParaCnt;
140
    unsigned int unRegCnt ;
141
    unsigned int unInstCnt ;
142
 
143
    //标志是否是IPCore
144
    int nIPCore;
145
 
146
};
147
 
148
 
149
//存储宏信息
150
struct MacroMem{ //store the macro
151
    char cMacroName[MAX_NAME_LEN];
152
    QString   iMacroVal;
153
    int nMacroFlag;
154
};
155
 
156
#endif // REG_SCAN_H

powered by: WebSVN 2.1.0

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