Klass MODEL

Lühikirjeldus

Kirjeldab AG mudeli

Andmeliikmed

VARIABLE *Vars; - mudelis olevad muutujad
GRAPH *Grps; - mudelis olevad graafid
unsigned NodCount, - tippude arv mudelis
VarCount, - muutujate arv mudelis
GrpCount, - graafide arv mudelis
FunCount, - funktsioonide arv mudelis
InpCount, - sisendite arv
OutCount, - väljundite arv
CtrCount, - juhtmuutujate arv
ConstCount; - konstantide arv
int *Term; - viited juhtmuutujatele (CtrCount elementi)
model_type Type; - mudeli tüüp (STRUCTURAL, RTL, BEHAVIORAL)
PATTERN *Patterns; - testvektorid
unsigned VecCount; - testvektorite arv
unsigned EndVecCount; - abimuutuja simuleerimisel
int CurrentRow; - abimuutuja simuleerimisel
int EndCondValue; - simuleerimise lõputingimuse väärtus
int EndCondVar; - simuleerimise lõputingimuse muutuja indeks; kui EndCondVar ==-1, siis lõputingimus puudub
unsigned ArgPtr; - abimuutuja, mida kasutatakse funktsiooni argumentide otsimisel
unsigned MaxVecs; - simuleerimisel genereeritavate vektorite maksimaalne arv (lõputingimuse korral)
int NoVecOverflow; - näitab, millega simuleerimine lõppes (NoVecOverflow == 0, siis saadi lõputingimus, muul juhul saavutati MaxVecs limiit ilma lõputingimust rahuldamata)

Meetodid

void stepback(FILE *f);
Abifunktsioon (private); astub failis sammu tagasi
void wasteln(FILE *f);
Abifunktsioon (private); läheb failis uuele reale
void Copy(const MODEL &Other);
Abifunktsioon objekti kopeerimiseks (NB! Kopeeritakse KÕIK andmeliikmed)
void Destroy(void);
Vabastab objekti poolt eraldatud mälu
MODEL(void);
Vaikimisi konstruktor
MODEL(char *EndVar,
int EndValue,
unsigned MaxVectors);
Konstruktor;
EndVar - lõputingimuse muutuja nimi (0, kui lõputingimust pole);
EndValue - lõputingimuse muutuja väärtus
MaxVectors - maksimaalne vektorite arv (lõputingimuse korral)
~MODEL(void);
Destruktor, hoolitseb objekti poolt eraldatud mälu vabastamise eest
MODEL &operator=(const MODEL &Other);
Ülelaaditud omistamisoperaator
void Init(char *fileName);
Initsialiseerib mudeli AGM failist fileName
void Print(char *fileName);
Väljastab mudeli AGM faili fileName
void InitPatterns(char *fileName);
Loeb testvektorid testvektorite failist fileName
void PrintPatterns(char *fileName);
Kirjutab testvektorid testvektorite faili fileName
void AllocatePatterns();
Eraldab mälu VecCount vektorile (vektorite pikkuseks VarCount)
void InitPatternConstants(void);
Paneb testvektorites konstantsete muutujate väärtused paika; tuleb välja kutsuda enne esimest PatternSimulate väljakutset
void GraphSimulate(const unsigned graaf, const int CurrentVec);
Simuleerib vektori 'CurrentVec' graafi 'graaf'
void PatternSimulate(const int CurrentVec, const int StartGraph);
Simuleerib vektorit CurrentVec; StartGraph - graaf, kust simuleerimist alustatakse
int Activate(int node,int graph,int pattern,int dryrun);
Kui graafis graph on vektori pattern väärtuste põhjal aktiveeritav tee algtipust kuni tipuni node, siis väljastatakse 1, muidu 0.
Kui dryrun on nullist erinev, omistatakse Patternsi vastavatele liikmetele aktiveeritud tee väärtused.
int Activate(int node1,int node2,int graph,int pattern,int dryrun);
Kui graafis graph on vektori pattern väärtuste põhjal aktiveeritav tee tipust node1 kuni tipuni node2, siis väljastatakse 1, muidu 0.
Kui dryrun on nullist erinev, omistatakse Patternsi vastavatele liikmetele aktiveeritud int GetVarSlice(const int vek, const int var, const RANGE range);
Annab tagasi vek-nda vektori var-nda liikme bitilõigu range väärtuse
void DumpNodeFlags(const unsigned flag);
Võtab lipu flag maha kõigis tippudes (kui programm kasutab mingeid abilippe)
int CalcFunction(const int varindex, const int vektor, const int RefVar);
Arvutab funktsiooni väärtuse (antud varindex'iga); vektor - mitmendal vektoril arvutatakse RefVar - kasutatakse vaid behavioral mudeli korral. See on vajalik selleks, et pidada arvet, kas võtta väärtusi eelmisest või praegusest vektorist
int XArguments(const int varindex, const int vektor, const int RefVar);
Kontrollib, kas funktsiooni (antud varindex'iga) üheks argumendiks on X
void InitArgSearch(void);
Kutsutakse välja enne iga FindNextArg()-i
int FindNextArg(const unsigned var, const unsigned current);
Otsib rekursiivselt funktsioonimuutuja var current-ndat sisendit ja väljastab selle muutuja indeksi, millele viimane viitab. Kui current on liiga suur arv, siis väljastab -1
model_type GetType(void) const;
Tagastab mudeli tüübi
VARIABLE GetVariable(const int index) const;
Tagastab muutuja, mille indeks on index
void InsertVariable(const int n, const VARIABLE Var);
Lisab muutuja Var muutujate listi positsioonile n; NB! Suhteliselt aeglane operatsioon!
void AddVariable(const VARIABLE Var);
Lisab muutuja Var muutujate listi lõppu; NB! Suhteliselt aeglane operatsioon!
void RemoveVariable(const int n);
Eemaldab muutuja muutujate listi positsioonilt n; NB! Suhteliselt aeglane operatsioon!
GRAPH GetGraph(const int index) const;
Tagastab graafi indeksiga index
void InsertGraph(const int n, const GRAPH Graph);
Lisab graafi Graph graafide listi positsioonile n; NB! Suhteliselt aeglane operatsioon!
void AddGraph(const GRAPH Graph);
Lisab graafi Graph graafide listi lõppu; NB! Suhteliselt aeglane operatsioon!
void RemoveGraph(const int n);
Eemaldab graafi graafide nimistust positsioonilt n; NB! Suhteliselt aeglane operatsioon!
PATTERN GetPattern(const int index) const;
Tagastab index-nda testvektori
void PutPattern(const PATTERN Vector,const int index) const;
Omistab index-ndale testvektorile vektori Vektor.
int GetNodCount(void) const;
Tagastab tippude arvu
int GetVarCount(void) const;
Tagastab muutujate arvu
int GetGrpCount(void) const;
Tagastab graafide arvu
int GetFunCount(void) const;
Tagastab funktsioonide arvu
int GetInpCount(void) const;
Tagastab sisendite arvu
int GetOutCount(void) const;
Tagastab väljundite arvu
int GetCtrCount(void) const;
Tagastab juhtmuutujate arvu
int GetConstCount(void) const;
Tagastab konstantide arvu
int GetVecCount(void) const;
Tagastab vektorite arvu