Certain IP cores cannot be inferred, such as FIFOs that use the hard FIFO or memories that use ECC. In these cases, one possible solution is to instantiate the hard primitives, and based on the parameterization possibilities, use a generate statement to cover all cases. The benefit of this method is that the results are very area optimized. The downside is that it is laborious to create more complex variants that cover a wide range of variants.