Flat Multi Page Document Emulation

I think that for many if not most designs a simple, flat schematic is optimal. This has to do with how people think. When a schematic has just three pages it is not at all intuitive to have to think about reaching a page through a hierarchy.

I’m facing exactly that issue in reviewing someone’s work on a three page design. I don’t know the design by heart, but if it were a flat design I would pick it up much more quickly by knowing the circuit I was just looking at was the previous page rather than having to learn the page names given and remembering what circuits are on what named pages. Visual connections are very intuitive and fundamental.

Kicad seems to allow for noting page numbers, but makes zero use of them that I can see. The pages in this design have numbers, but of no value in navigation.

The actual structure of the schematics doesn’t need to change. We just need a simple way to reach the other pages in the design as if they were by page numbers. Normally the page up and page down buttons would be used for that. If you are on page 2 and press page up, you are now on page 1. These buttons have a present use for scrolling within a page. So maybe a good way to handle this is to allow scrolling from one page to the next in a continuous manner like viewing a PDF document. When at the top of a document page up takes you to the bottom of the previous page.

The present arrangement is about the internal structure of the data files. Maybe we focus too much on that and should instead think purely in terms of the user’s view?

What can we do to improve this?

Proper hierarchy for schematic is not the same as just “multi-page” schematic.
Hierarchy is used to show the idea on different scopes: general and more deep into implementation.
At a general level you should see how the blocks are interconnected.
E.g. filter inserted in an audio circuit. Or a power supply delivering certain rails and signals.
If you open such block, you will see its actual implementation.
You should not rely on your memory to remember labels, nets, etc. You should see the design idea at glance.
And hierarchical design is rather non-linear, so page numbers are not much of a help.

I do not agree with this. Simple example, I’ve got a small SMPS circuit that I use in different PCB’s and I just copy that schematic into a new design and include the sheet in the hierarchy.

This also leaves more room on the main sheet for the rest. Making schematic sheets too crowded is very detrimental to a design.

The hierarchical sheets are just a tool, and for bigger designs the’re quite essential to keep some overview if used properly. I’m quite curious why you’re having trouble with a 3 sheet design. Maybe the hierarchical sheets were abused. maybe the design itself does not lead itself into dividing into logical blocks…

Normally each sheet has a name, and you can jump to it through the hierarchical sheet navigator:

In KiCad-nightly V5.99 there is an option to change the page numbering, and this should also change the printing order.

Sometimes it’s helpful to print the pages on paper, or export all the pages of a schematic to a single .PDF file. I believe there is an issue on gitlab for creating an option to have multiple schematic sheets on the same hierarchy level.

Fred, I think you missed my first paragraph.

for many if not most designs a simple, flat schematic is optimal

Sure, hierarchy if great for larger designs. The largest I’ve ever designed was just six pages and two of those weren’t even schematic, but a block diagram and board dimensions The block diagram didn’t need to be functional to be effective and included ECN information, in other words, a general notes page. So 4 pages of schematic and no hierarchy needed really.

The point is viewing the pages as flat is better for many designs but is not an option in KiCAD.

Paul, I don’t think you understood my post. I didn’t say anything about changing how sheets are implemented and I don’t see where anything you talk about is actually relevant to what I wrote. I am not suggesting changing anything about implementation. I’m just talking about options for viewing the pages. Please review my post and give it some consideration.

Your reference to the hierarchical sheet navigator is exactly what I find clumsy. It would be much simpler to be able to simply scroll through the pages like the pages were connected in a linear manner rather than a complex hierarchy.

What did you mean about gitlab? I don’t find anything there about kicad.

Gitlab is an official “issue tracker” for KiCad project.

IMO if you need more than one reasonable sheet for your schematic diagram, it’s best to split it into pieces using hierarchy (functional approach), instead of multi-page flat diagram which will be hard to read.

But anyway, I agree that in some cases it would be easier to quickly flip (keyboard shortcuts) between the sheets instead of GoBack > Dive into (anothe) sheet

Fred, thanks for the link. Searching in gitlab for CAD or KiCAD produces far too many results to be useful.

I have no idea why anyone would think a two or three page design needs to be oriented hierarchically. It is exactly the hierarchy that gets in the way of simply “seeing” the design. But flipping pages in no way detracts from viewing the design as a hierarchy. I just get tired of mucking with the hierarchy when I just want to go forward or back a page.

Do you have to print to paper? If not, try changing the page layout to A3 and immediately you’ll have 4x space available for the schematic in one page.

But I find the request reasonable and thought about it myself. It just hasn’t been so important that I would have reported it. I don’t how difficult it would be to implement, but maybe we could have it in v7 if someone writes an issue to the database.

We have talked about supporting schematics without a single root sheet (i.e. top-level sheet of the hierarchy) in the future and some of the groundwork has been done already. If for no other reasons, it’s important to support accurate import of projects from other EDA tools that also support flat (non-hierarchical) design.

This is a bit difficult if you want to search for labels etc. but it’s doable.

Thanks Jon. I didn’t think of having several sheets without hierarchical blocks, but indeed local labels don’t work across pages.

At the moment the concepts of sheet and page are tied together, maybe it would be easier to just support several (physical paper) pages for one sheet?

Even showing all pages in the main view at the same time would help if global labels are used.

In nightlies there is an option to keep the hierarchy navigator window open.
Then if you use root sheet as just a dumb container for other sheets schematic becomes effectively flat and you can switch between sheets in a single mouse click.

Yeah, but… :slight_smile:
Firstly, I can’t stand floating windows. They always go into my way, so I end up with moving them around. And can’t find them when I need’em.
Secondly, keyboard shorcuts Previous/Next would be better in quickly cycle through existing sheets.
And thirdly, tabbed sheets would be the way to go. I know that it’s a heavy caliber stuff, but tabbed navigation is so popular and intuitive that there’s no other equally efficient way to navigate between open documents (IMO).

Right now neither eeschema nor pcbnew can have more than one document open at once. If we can fix that, we can consider adding tabs (and nice things like having two sheets open side by side, two different views of the PCB, etc)

1 Like

Craftyjon, I’m not sure why you say that, perhaps you mean one sheet from a given schematic. I presently have two schematics open from the same design or project or whatever the nomenclature is. Two different boards, same .pro file.

I’m not suggesting fundamental changes to the tool. I’m just talking about being able to scroll through the pages of a design using an appropriate key or mouse control like is done in other page oriented applications like word processors or spread sheets, PDF viewers, etc. I’m not suggesting we need to view multiple pages at once.

It would be nice to be able to scroll left right or up down per the user’s preference. My designs tend to be left right oriented (I/O from previous page on the left, I/O to next page on the right), but I can see someone wanting it to be vertical.

Eeschema cannot have more than one sheet open. You can have more than one copy of Eeschema open, but that’s not the same thing. Also, you can’t have more than one PCB with one project file at the moment either (we want to fix that too)

Being able to smoothly scroll through pages of a design like it is a word processor document would mean having multiple pages open at once so that you could see both in the “transition” between the two.

There are a couple of issues here. First, regarding sheet navigation, tools like the old Mentor Design Architect and contemporary CR-8000 and CADSTAR store their schematic databases in a single file, unlike Altium and KiCad which store each schemo page in a separate file. A single schemo database file greatly simplifies sheet navigation, cross sheet connections and netlist continuity as well as automatic reference generation (no need to manually “annotate” a design). The entire schematic can be flat or hierarchial, that’s up to you. With KiCad because of its design (this also goes for Altium) it’s impossible to implement a truly flat schematic because it exists as multiple files needing organized in some sort of hierarchy. Hierarchial schematics simply don’t make sense for small or even moderate PCB designs. Where hierarchial schemos DO make sense is when designing complex systems, particularly application specific IC’s. In the bad old days before HDL languages we used to design custom IC’s this way, and a large chip could have schematics numbering in the hundreds of pages. It’s almost impossible to design something like this without hierarchial schematics but nowadays we don’t even do that anymore since the advent of VHDL and Verilog. In the red and blue tape days it was rare for a PCB to have more than one or two D-size schematic sheets. But even nowadays where everyone wants things on letter/A4 size pages a flat schemo is easier to follow if it is properly organized. It’s also way easier for technicians to figure out. Place I used to work years ago, if one sent a hierarchial PCB schematic to the lab the techs would come after you with pitchforks and torches…

This is not really true. You can have a flat (non-hierarchical) schematic with sheets stored in multiple files; Altium supports this. You just need to store information about what sheets are part of the schematic somewhere. Altium does this in the project file, and KiCad is going this direction too most likely. You can then use global labels or the equivalent to establish connections between non-hierarchical sheets.

KiCad lacks sheet cross linking. I think Gnuarm may have been hinting at this. It’s nice when navigating a schemo in the design tool to simply click on a cross sheet link and have the tool immediately take you to the schemo page and location of the connecting label. Altium can also have multiple sheets “open” at the same time since they have “tabs” in their UI.