Enum Types - 2023.1 English

Vivado Design Suite User Guide: Synthesis (UG901)

Document ID
UG901
Release Date
2023-06-09
Version
2023.1 English

Enumerated types can be declared with the following syntax:

enum [type] {enum_name1, enum_name2...enum_namex} identifier

If no type is specified, the enum defaults to int. Following is an example:

enum {sun, mon, tues, wed, thurs, fri, sat} day_of_week;

This code generates an enum of int with seven values. The values that are given to these names start with 0 and increment, so that, sun = 0 and sat = 6.

To override the default values, use code as in the following example:

enum {sun=1, mon, tues, wed, thurs, fri, sat} day_of week;

In this case, sun is 1 and sat is 7.

The following is another example how to override defaults:

enum {sun, mon=3, tues, wed, thurs=10, fri=12, sat} day_of_week;

In this case, sun=0, mon=3, tues=4, wed=5, thurs=10, fri=12, and sat=13.

Enumerated types can also be used with the typedef keyword.

typedef enum {sun,mon,tues,wed,thurs,fri,sat} day_of_week; day_of_week my_day;

The preceding example defines a signal called my_day that is of type day_of_week. You can also specify a range of enums. For example, the preceding example can be specified as:

enum {day[7]} day_of_week;

This creates an enumerated type called day_of_week with seven elements as follows: day0, day1day6.

Following are other ways to use enumerated types:

enum {day[1:7]} day_of_week; // creates day1,day2...day7
enum {day[7] = 5} day_of_week; //creates day0=5, day1=6... day6=11