Protocols, configuration and utilities live in packages: named namespaces the compiler elaborates once and every file references. The lessons below build that discipline from declaration to scale.
Lesson | What you build |
|---|---|
One protocol package read three ways, plus an umbrella package. | |
A filelist in dependency order and a fix for undefined-type errors. | |
One package of widths flowing into a DUT and a depth-overridden fifo. | |
A guarded header included twice, and which mechanism shares what. | |
Later reading: two vendor protocols side by side without collisions. |
Each module got its own copy of the struct, for example by including the same file in both, so there are two different types. Put one typedef in one package and import it on both sides.