Is it illegal to use an (enum) as a Verilog function input?

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 wa iting for input on that I decided to rewrite a version of my Verilog code t o use an (enum) instead of a (boolean). Much to my amazement, it appears th at I can't use an (enum) as an input to a function either! I wrote the foll owing code:

  module useBin ();

typedef enum { ADD, MULTIPLY } binOp;

function integer execOp; input integer left; input integer right; input binOp op; begin execOp = op == ADD ? left + right : left * right; end endfunction

endmodule

When I ran Icarus to simulate it I got:
  D:\Hf\Verilog\Unpacked\Common>ive useBin  \Icarus\bin\iverilog -g2009 -o useBin.out useBin.sv  useBin.sv:8: syntax error  useBin.sv:5: error: Syntax error defining function.

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?

Reply to
Kevin Simonson
Loading thread data ...

Enum, and any typedefs are all fine as SystemVerilog inputs to functions. They are all first class citizens. I can't spot the problem in your code by eye, but it should work fine.

As to "booleans" in Verilog there's no predefined "boolean" type in verilog. One just uses one bit signal. i.e. reg true_false; or bit true_false; // If you don't want to deal with x/z

Regards, Mark

Reply to
gtwrek

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.