--- Quote Start ---
Probably because I belong to the stubborn class of people :)
--- Quote End ---
I can understand that :)
--- Quote Start ---
But even if I would port a project to another FPGA type, I still would try to take the decision at the lowest level. Propagating the Device Type from the top level down to the lowest module via generics doesn't sound appealing to me.
--- Quote End ---
Yeah, I'm not a big fan of it either, but it would work.
The other option is to use VHDL configurations. I haven't used them, but I believe they could be coaxed into being used for your application. You'd have a component definition, eg., 'fifo', that does not have a corresponding architecture definition, its really just a place-holder within your design. In your top-level configuration file you would effectively do something like; for <heirachical path to 'fifo'> use fifo_cycloneII, where fifo_cycloneII has the same ports as the fifo component, or you can map port names in the configuration file. You'd do something similar for a 'ram' component. Then when you changed target devices, you'd have a configuration file that mapped to fifo_cyloneIV. In fact, you could probably have the mapping to lpm_scfifo, and just configure the generics and lpm_hint as you want.
I'm beginning to like this solution ...
--- Quote Start ---
I don't use any scripts to do top-level synthesis, simulation or to run TimeQuest, doing everything from within the Quartus environment(s).
--- Quote End ---
I prefer the scripting approach. If you'd like an example on how to correct the error of your ways, let me know, and I'll send you example scripts :)
Cheers,
Dave