Wow, this is a lot to answer via a forum post. I'd almost rather talk to you on the phone.
Let's see.
I've been using SoPC Builder for several years now. Honestly I love it. I fell in love with it the first time I used it. Now I'm going to sound like a fanboy but I will say that I use both Xilinx (including EDK and microBlaze) and Altera. My bias has developed out of usage experience. I should also state that my designs typically have a heavy amount of logic outside of SoPC builder and a heavy amount of logic within SoPC builder.
Lets state some simple truths:
1 - Between custom IP and generated IP ... You will always be able to write more efficient code than what you'll get from generated IP. A few reasons for this:
. a - Generated IP is designed to be all things to all people. It has to be generic to be useful for multiple audiences. This results in inefficiencies.
. b - A human will generally make more intelligent decisions than an algorithm. So for example, creating the memory map of your SoPC system. You are going to do a better job than SoPC builder is going to do.
2 - Using SoPC Builder implies that you are going to trust it to create reliable, bug-free code. Yes that means letting go of the control. The only way you can feel good about this is through positive experience that the tools produce reliable designs. You don't have that experience yet. However, I do, and a whole lot of other users (including those on the forum) do.
3 - The reason that you are going to take the risks listed in 1 & 2 is to gain some benefit. What are those beneifits?
. a - SoPC builder allows you to spend your time architecting the system rather than performing the busy work of actually piecing it together. You connect components with the click of a button rather than manually entering.
. b - SoPC Builder provides an infrastructure and design mentality that allows your design team to collaborate and design more quickly. Your interfaces are already defined (Avalon-MM, Avalon-ST). Your tools are defined (SoPC Builder, Quartus). The hardware is now very tightly integrated with the software allowing software and hardware to collaborate more easily.
. c - You're hoping to get to market faster and at a lower development cost.
. d - Using the NIOS processor you've just added the ability to add almost any custom hardware acceleration or integration to your processor within the FPGA. No re-spinning the board, no adding external chips. And it becomes a whole lot easier to test and debug your HDL code with that NIOS processor sitting in there.
. e - Removing the external CPU from the board removes a whole layer of design work for both hardware and software. You get to remove all the power supplies associated with the external CPU. The MTBF rating on your board improves because of diminished part count. You're more likely to get your prototype board right the first time because it's all FPGA code at this point. You probably saved power with the NIOS over the external CPU. You don't have to worry about the external CPU going end-of-life anymore.
. f - The components you create for SoPC builder can be easily reused in any other SoPC design. This makes it easy to pass components around to other engineers and easy to leverage in your next design.
. g - The avalon bus provides flexiblity in interfacing to memory and components that quite frankly would take you a very very long time to achieve on your own.
Now my personal experiences:
1 - In general, SoPC builder and all of the generated design code and IP has been rock solid. I rarely ever have a need to poke into Altera's generated code or IP blocks. In general, I fully place my trust in the system to do what I'm telling it to do. Keep in mind also that you have full access to any of your code that you put into the system.
2 - Altera's tools (Quartus, SoPC builder, and NIOS) are ... freakin' awesome right now. Maybe that'll change at some point but for right now, they're really on top of their game. It's a joy to use Quartus. You get more information from that tool about your design than you ever even knew was possible.
3 - If you know what you are doing, SoPC Builder can produce very efficient code. I'm willing to pay the price for a little code bloat because I get to market faster, the design is easier to modify, easier to maintain. And honestly if you're changing from brand X fpgas, you've got room to spare anyway because you're going to get better resource utilization from an Altera part.
4 - Engineering has gotten so broad and our products have gotten so complex that I just don't have the time to do things the old way anymore. I can't spend the time piecing together the bus architecture. Click-Click done for me.
Now all these things being said. I would definitely recommend that you read all the available documentation. The more you understand about how the system works, the more you'll feel like your able to control it and the more comfortable you'll be with its results.
Absolutely DO NOT take the approach of piecing the NIOS and everything together separately. This is ludicrous. The benefit of the NIOS processor is not in the NIOS processor. The benefit lies in SoPC builder, the Avalon Interconnect Fabric, and the tight integration between hardware and software. If you are not going to take advantage of these, then drop the NIOS altogether. It's not worth it. Go pick some other processor.
My recommendation:
Take a step out into the unknown. Let go. If you're like me you'll wonder how you ever lived without it. You'll start putting a NIOS in every design. You've got everyone on the forum to help you. Altera's probably willing to sleep in your office to get a design win so they'll support you. You'll start blowing everybody away with how fast you get the hardware design done.
Oh man that was a mouthful. Let me take off my cheerleader outfit. If you want to talk on the phone to specifically address your concerns, just send me a private message with your phone number.
Jake
P.S. What's wrong with the "_hw.tcl" files? I'm pretty fond of them. You should have seen they way they used to do things prior to 7.1.