Define vs. parameter - difference

In reply to rgarcia07:

Macros ARE just text substitutions. They do appear to have overlapping functionality, so in Michael54’s example, there is no difference in runtime execution.

Macros, parameters, and const variables all have features available in some but not others.

const variables get initialized once at the beginning of their lifetime. So if you have a const variable inside a procedural for-loop, that variable could get initialized at every iteration during runtime. Because const variables get initialized at runtime, you can't use them where constant expressions are required by the compiler, like the size in a declaration.

Parameter values can be overridden on a module instance by instance basis. And some tools even allow to override parameter values when you invoke simulation. You can’t do either using a macro.