Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Vhdl ams syntax error: Hamster

Status
Not open for further replies.

koukou

Newbie level 1
Joined
Jun 10, 2016
Messages
1
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
19
Vhdl ams syntaxe error: Hamster

Hello,

The following code results in the error under determined model and the simulation breaks off.
How should I remove the error. I have coded in Hamster Vhdl.
I would appreciate any help.


Code VHDL - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
entity MEM is
       generic (-- Initial state (between 0 and 1)
       X0 : REAL := 0.1;
       R_OFF : REAL := 16.0E3;
       R_ON : REAL := 100.0;
       D : REAL := 10.0E-9;
       UV : REAL := 1.0E-14);            
       port (terminal POS, NEG : ELECTRICAL);
       constant EPS_I : REAL := 1.0E-9;                   
           begin   
       assert (X0 > 0.0) and (X0 < 1.0)
       report "ERROR: X0 in (0,1) required ."
       severity ERROR;
           end entity MEM;                                                                                               
            
       architecture LINEAR of MEM is
type MODE_TYPE is (FREE , ZERO , ONE);
signal MODE : MODE_TYPE := FREE;
quantity V across I through POS to NEG;
quantity X : REAL;
       begin  
        if DOMAIN = QUIESCENT_DOMAIN use
          X == X0;
        elsif MODE = ZERO use
          X == 0.0;
        elsif MODE = ONE use
          X == 1.0;
        else X'DOT == (UV/(D**2))*R_ON*I;
        end use;                                                                                                                          
                                         
        break on MODE;
            V == (R_ON*X + (1.0-X)*R_OFF)*I;
             
        P1: process is                   
            begin
            wait on DOMAIN;  
   
            while TRUE loop           
                wait on X'above(0.0), X'above(1.0), I'above(EPS_I), I'above(-EPS_I);       ---ERROR--syntax error: Unexpected entry: '   
if MODE = FREE then    
            if X <= 0.0 then   
               MODE <= ZERO;                            
            elsif X >= 1.0 then
               MODE <= ONE;             
            end if;                               
            elsif MODE = ZERO then
            if I > EPS_I then
               MODE <= FREE;
            end if;
            elsif MODE = ONE then
            if I < -EPS_I then
               MODE <= FREE;
            end if;
            end if;
            end loop;
            end process P1;
                    
        end architecture LINEAR;

 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top