- To use multiple architectures in a single entity, the structure you're looking for (I believe) is configurations. I could never make heads or tails of configurations, and the usage is arcane as best I can tell. Best of luck if you try it.
- The half-assed way of doing it would be to use an if generate statement with a generic parameter selecting which instantiation to use. This requires having seperate entities for each architecture, and third entity to act as a wrapper around the generate statement.
- The really lazy way would be to just directly instantiate your HalfAdder and RippleCarryAdder as seperate modules, and ignore the headache altogether.
I've never attempted any of this, and I haven't used ISE in years. I don't know if it does support funky configurations, and it honestly wouldn't surprise me if didn't. Like everyone else was saying, I'd suggest upgrading to Vivado
In VHDL and in everything, there is never too many comments. Comments save a lot of time when somebdy else needs to continue your work, or interface it, or just understand it. Thus, each entity, signal and process needs to be explained.
There are also others convention, such as naming and make your code as clear as possible by indenting, align the entity port etc.
[EDIT]
You need to explain the entire module (entity + architecture) : what is it for, how does it work, how does it interface with other modules. Then you can specify the program developement unit, file, device, and autor of the module. You can inlcude an history, and what Tools do you use for simulation, synthesis, routing, how long should you simulate.
For the entity you explain what is it for and how does it work.
Best Answer
To supplement @vermaete's answer:
An entity defines an interface to a box; an architecture defines what's inside. If you don't have the same interface, you don't have the same entity. If you have the same port names, but each architecture uses them for different purposes, well, that's legal, but maybe not advisable - it depends on the specifics.
If you want to use multiple architectures simultaneously, an alternative to configurations is just to use direct instantiation:
If you want to use only one at a time, some sort of configuration is probably the way to go.