EmbDev.net

Forum: FPGA, VHDL & Verilog Is it illegal to use an (enum) as a function input?


von Kevin S. (kvnsmnsn)


Rate this post
useful
not useful
I'm still very much interested in finding out whether or not it's 
possible for a Verilog function to have a boolean value as input, but 
while I was waiting for input on that I decided to rewrite a version of 
my Verilog code to use an (enum) instead of a (boolean). Much to my 
amazement, it appears that I can't use an (enum) as an input to a 
function either! I wrote the following code:
1
module useBin ();
2
3
typedef enum { ADD, MULTIPLY } binOp;
4
5
function integer execOp;
6
    input integer left;
7
    input integer right;
8
    input   binOp op;
9
  begin
10
    execOp = op == ADD ? left + right : left * right;
11
  end
12
endfunction
13
14
endmodule
When I ran Icarus to simulate it I got:
1
D:\Hf\Verilog\Unpacked\Common>ive useBin
2
\Icarus\bin\iverilog -g2009 -o useBin.out useBin.sv
3
useBin.sv:8: syntax error
4
useBin.sv:5: error: Syntax error defining function.
5
6
D:\Hf\Verilog\Unpacked\Common>
I can kind of understand why a (boolean) might cause a problem when used 
as a function input, but why in the world would it be illegal to use an 
(enum) like my (binOp) as a function input?

Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
No account? Register here.