|
|
1 module cast();
2
3 typedef enum {IDLE,SFD,PREAMBLE,
4 DATA,FCS,EFD} eth_state;
5
6 eth_state fsm;
7
8 initial begin
9 #5 fsm = IDLE;
10 $display("@%0dns Current value of FSM : %s\n",
11 $time,get_name(fsm));
12 #5 fsm = SFD;
13 $display("@%0dns Current value of FSM : %s\n",
14 $time,get_name(fsm));
15 #1 $cast(fsm,1+2);
16 $display("@%0dns Current value of FSM : %s\n",
17 $time,get_name(fsm));
18 // Below line should give compile error
19 //fsm = 2 + 1;
20 end
21
22 eth_state temp;
23 eth_state temp2;
24 integer i ;
25
26 initial begin
27 #20 ;
28 for(i = 0; i <= 5; i++) begin
29 $cast(temp,i);
30 $display("Value of temp is %s",
31 get_name(temp.next()));
32 end
33 end
34
35 function string get_name;
36 input eth_state lstate;
37 case(lstate)
38 IDLE : get_name = "IDLE";
39 SFD : get_name = "SFD";
40 PREAMBLE : get_name = "PREAMBLE";
41 DATA : get_name = "DATA";
42 FCS : get_name = "FCS";
43 EFD : get_name = "EFD";
44 endcase
45 endfunction
46
47 endmodule
You could download file cast.sv here
|