1`include "discipline.h" 2 3module myanalogfunction (p,q); 4electrical p,q; 5real a,b; 6 7 analog function real myfunction; 8 input x; 9 real x; 10 begin 11 if(x<0.2) 12 myfunction = abs(x); 13 else if(x<0.6) 14 myfunction = cos(2*x); 15 else 16 myfunction = sin(2*x); 17 end 18 endfunction 19 20 analog function real norm; 21 input x, y, index; 22 real x, y; 23 integer index; 24 25 begin 26 case(index) 27 0: norm = max(abs(x),abs(y)); 28 1: norm = abs(x)+abs(y); 29 2: norm = sqrt(pow(x,2)+pow(y,2)); 30 default: $strobe("Warning: norm does not exist"); 31 endcase 32 end 33 endfunction 34 35`define VEXLIM 200.0 36 analog function real expLin; 37 input x; 38 real x; 39 real expl; 40 41 begin 42 if (x < `VEXLIM) 43 expLin = exp(x); 44 else begin 45 expl = exp(`VEXLIM); 46 expLin = expl * (1.0 + (x - `VEXLIM)); 47 end 48 end 49 endfunction 50 51 analog function real linLog; 52 input x; 53 real x; 54 real vlim; 55 56 begin 57 vlim=10.0; 58 if (x < vlim) 59 linLog = x; 60 else 61 linLog = vlim + ln(1.0 + (x - vlim)); 62 end 63 endfunction 64 65 66analog 67 begin 68 case (a) 69 1,2: begin a=1; b=0; end 70 3,4: begin a=2; b=0; end 71 5,6: begin a=3; b=0; end 72 default : begin a=1234; b=5678; end 73 endcase 74 end 75endmodule 76 77