I'm trying to figure out how to create an FPGA design in a plausible manner. From centuries of hardware design with schematics, I naturally prefer to create an FPGA in schematic mode. However, I can see that a large design could easily grow so huge that I'd need a house size display to see the whole schematic at once. And scrolling a little subwindow around the entire schematic would be a terrible experience (and easy to get lost).
So the obvious idea that occurs to me is to "encapsulate" and "create my own components". For example, once I create a CRC32 subsystem in schematic mode (or get my assistant to create that subsystem in verilog), I'd want to be able to convert that CRC32 subsystem into a single "component"... which for practical purposes is a "block diagram"... which for practical purposes sorta seems similar to a "megafunction" or perhaps call it "personal IP".
The next question is, when I create them, how to I specify which signals are inputs and outputs (or bidirectional or busses), so when I later insert them as a component/subsystem into a larger "schematic" (or as a sub-component in a larger component), it appears like a rectangle with some inputs [on the left] and outputs [on the right] and control signals [on top and bottom]?
Now, I don't quite understand how this works (or if this fully works), but how is this done, and what is each component created this called in altera/quartus terminology? Would this be the same as a "symbol" or a "block symbol"?
And then, how would I insert a few of these CRC32 symbols/block-symbols/components into a design? Where would I find them and how would I insert them? Would they all appear in some "personal IP" menu somewhere once I save them? Or what?
One of the really nice things about this technique... assuming it works like I envision here... is that I could create some of these components in schematic mode, and my assistant could create some with verilog, but they'd both become components that could be dropped into a larger "schematic" or "block" AKA "block diagram".
Is a "schematic" considered the same thing as a "block diagram" in altera/quartus terminology? Is there a difference?
The next question is, can I dig down deeper into a component by double-clicking that component in the schematic or block-diagram I'm currently working in? Would it create a new window somewhere that contains the innards of that component? If so, could I edit that window to change the component? And, what if I double-click a component inside another component? Will that create yet another window, and so forth, hierarchically? That would be great, though I doubt that would be necessary very often.
Lots to understand in quartus-land. For a "schematic guy" who is not comfortable with HDL, these features would help a lot. Actually, now that I think about it, how could a pure HDL guy even deal with these [component hierarchy] issues? No, don't answer that. I don't want to know. Yet.