In reply to perumallatarun:
Binding is not the only option, but it is one of the best in terms of portability and re-use.
Instead of binding a module with an assertion into a design, you can always instantiate the module in a separate testbench, and put hierarchical pathnames as port connections. Of course, the worst option would be to put hierarchical pathnames directly in your assertions.
Probably one of the best and least used options is to embed the assertions directly inside your model. But “ownership” of source code seems to prevent that.