foo : struct {
c1 : type1;
c2 : type2;
...
cn : typen;
}
where c1...cn are symbolic names. This declaration is exactly
equivalent to the declarations:
foo.c1 : type1; foo.c2 : type1; .. foo.cn : type1;That is, like an array, a structure is simply a collection of signals with similar names. Nonetheless, syntactic expansions make it possible to treat structures as if they were first-class objects, testing them for equality, assigning them and passing them as parameters. This is described in section 10.18 below.