Author Topic: Do "Device Sheets" help with PCB planning - or is this a schematic-only concept?  (Read 2660 times)

0 Members and 1 Guest are viewing this topic.

Offline 741Topic starter

  • Frequent Contributor
  • **
  • Posts: 400
  • Country: gb
    • Circuit & PCB Design (small PCB quantities OK)
I've been asked to design some equipment where there are 3 indentical channels (each channel itself has mutiple connectors plus analog inputs and outputs and its own dedicated RS232 interface).

I'd like to use the "Device Sheet" concept, as it seems an ideal use-case.

I was wondering what (if any) difference my organising the schematics this way would make to PCB layout.

Basically, once I've laid out 1 channel the other two channels would have the same layout. Note though all channels go onto 1 PCB and share a power rail.

Is there any way that, once I've laid out 1 channel (one Device Sheet Instance), I can import and lay out the tracks etc for the other 2 channels whilst 'leveraging' the 1st channel's layout?

Offline ajb

  • Super Contributor
  • ***
  • Posts: 2721
  • Country: us
Yes, you can duplicate layouts like this, but device sheets are not required.  This is basically the one situation where rooms are worth using, and it works with regular sheet symbols in regular multichannel designs.  Device sheets are more for reusing schematic sheets across multiple designs.  I imagine they *can* be used here, but don't HAVE to be. 

When you have three instances of the device sheet and allow Altium to automatically generate class and rooms you can lay out one of the channels in its room, and then copy the routing and component placement from that room to the others.  This is kind of clunky, and has some traps, but it's meant to do exactly what you're looking for here.  Make sure to lay out the first room in isolation, as any tracks that are contained by the room--not necessarily just the ones related to that room's circuitry--can be captured and duplicated to the other rooms depending on your settings.  Duplicating changes made in one room to the others can be tricky once the board is mostly laid out, as sometimes it can be hard to avoid capturing some tracks or vias you don't want. 

It's worth noting--since this isn't really clear from the docs, IIRC--that this works whether you use the 'repeat' syntax for one sheet symbol or you use multiple separate sheet symbols to get your three channels.  As long as they all use the same base sheet, they should be recognized as part of the same channel class and it should all work. 

I would definitely recommend playing around with this in a sample project before getting into the real one--or at least, try the room copying tools out before you get too far in laying out the board for real.  There are a few quirks to it, and to using rooms in general.
 
The following users thanked this post: 741

Offline 741Topic starter

  • Frequent Contributor
  • **
  • Posts: 400
  • Country: gb
    • Circuit & PCB Design (small PCB quantities OK)
Thanks for that advice: I now realise I have to understand rooms also.

Offline 741Topic starter

  • Frequent Contributor
  • **
  • Posts: 400
  • Country: gb
    • Circuit & PCB Design (small PCB quantities OK)
I'm using Altium 22, and I've been following this walkthrough http://valhalla.altium.com/Learning-Guides/TU0112%20Creating%20a%20Multi-channel%20Design.pdf

I now have a collections of rooms populated with components, and I've laid out one room.

When I now try
  • Design|Rooms|Copy Room Formats
  • Click on source room
  • Click on destination room

This is successful, which is great.
« Last Edit: July 12, 2022, 02:10:22 pm by 741 »
 

Offline 741Topic starter

  • Frequent Contributor
  • **
  • Posts: 400
  • Country: gb
    • Circuit & PCB Design (small PCB quantities OK)
Today I noticed this:

I have a single child sheet (one channel, a 'front panel' containing just connectors). Above that, on the parent sheet, I use REPEAT(FRONT, 1, 3).

Now, the channels are meant to be fully isolated (they will run from physically separate and floating power sources). I do not want any connections between the channels - but I would like them all on the same PCB.

Normally I would expect Altium to show 3 "greyed out" channels as tabs along the bottom of the schematic editor (alongside the actual editable schematic) as expected for a multi-channel design. But noting happens in this case...

I then added an (unwanted) port to the child schematic, and to the parent - 'lo & behold', suddenly the 3 extra tabs appear. As soon as I remove the port, the 3 channels again disappear.

Offline ajb

  • Super Contributor
  • ***
  • Posts: 2721
  • Country: us
ahhh yes, Altium sometimes doesn't compile projects correctly if it doesn't see some sort of connectivity between parent and child sheets.  I have some Altium projects used for wiring harness drawings that don't need any real connectivity between the ~40 child sheets and the parent sheet.  This generally works fine, but I had to add a port/sheet entry to ONE of those child sheets to get Altium to generate BOMs properly.  It didn't matter if the port/sheet entry was connected to anything else, just existing got Altium to compile the project properly.

If you can't get Altium to compile without that port, then you should be able to just leave it there.  You can use the 'REPEAT' syntax on the sheet entry to avoid generating incidental connectivity between the repeated sheets, but you may also be able to simply leave it disconnected.
 

Offline 741Topic starter

  • Frequent Contributor
  • **
  • Posts: 400
  • Country: gb
    • Circuit & PCB Design (small PCB quantities OK)
Thanks - I'm not sure if I fully understand the last part of your reply "...to avoid generating incidental connectivity", but that possibility does bother me.

Can I use REPEAT on the actual PORT itself?

I noticed that when a port is part of a 'REPEAT' sheet, then the default action is to connect all child sheet instances at that port.
(I was thinking I'd need to break the 'unwanted port' out into a bus, then break the bus out N times, finally terminating all those N wires with 'no connect')

Offline ajb

  • Super Contributor
  • ***
  • Posts: 2721
  • Country: us
I noticed that when a port is part of a 'REPEAT' sheet, then the default action is to connect all child sheet instances at that port.

That's actually what I meant by 'incidental connectivity'.  If the port isn't connected within the child sheet, it shouldn't matter, because you'll end up with a net with no pins and thus no real connectivity.  (In my experience just having the port mapped to a sheet symbol entry was enough to get the project to compile, even if neither was connected to anything else.  YMMV.)  If you do need to make an external connection then using the 'Repeat' syntax for the sheet entry for the port (not the port itself!) to get a bus of signals from each sheet should work around that.

You don't necessarily need to explicitly tag things as 'no connect'--that's one way to suppress errors, but you can also change the error reporting settings in project options so that things that are unusual but intentional aren't flagged, or are flagged as warnings instead of errors.
 

Offline 741Topic starter

  • Frequent Contributor
  • **
  • Posts: 400
  • Country: gb
    • Circuit & PCB Design (small PCB quantities OK)
Thanks again for your help.

I am finding that when I move from following the tutorial to creating my own test project, no rooms are generated.

The attached image shows a comparison of various dialogs etc.

I don't understand the Class Generation dialog well, but it seems the options are the same for both examples.

<Update>
Messages indicate rooms exist.
But  (even after zooming right out) I see no rooms. See 2nd attachment.



I can add the rooms "manually" of course.

Now, here's a thing... Having manually added a room (Design|Rooms|Place ectangularRoom) I then deleted channel 2's parts and did a re-import

I was expecting my (manually-created) room definition for channel 1 to either disappear or remain as it was.

In fact, the room I created was automatically re-named to CH1.



However, that is not really a fix. When I deleted all parts (plus the room), then ran an import, again no rooms were created.

3rd Image
Using Design|Update Schematics did produce a dialog where it seemed the rooms would be added. However, nothing changed as far as the PCB import is concerned. The rooms are not added when I then do an import. I still see no automatically generated rooms, even when zoomed out.

NOTE: I do not see the Add Room lines if the PCB has all parts deleted prior to choosing Design|Update Schematics.

« Last Edit: July 31, 2022, 11:33:19 am by 741 »
 

Offline 741Topic starter

  • Frequent Contributor
  • **
  • Posts: 400
  • Country: gb
    • Circuit & PCB Design (small PCB quantities OK)
Whilst I've still not solved the above problem, I did a test as follows which might shed some light...



I started with a simple as possible multi-channel example. Rooms are generated, all is well.

As a test, I then disabled room generation for the child sheet --> No rooms, as expected

Now, re-enable room generation --> Still no rooms! :(     //Or so it seemed...

I did a save & validate each time. Also, after I re-enabled rooms, the import dialog stated that rooms were being added... but no rooms were (apparently) added.

However, when I then disabled room generation for the child sheet, then re-imported I was warned about the fact that 2 rooms were about to be removed! So (in some sense...) the rooms were "there", despite the fact there was no visible evidence of that.


In this case, the answer was that the rooms were only visible after zooming out, and the components were not in their associated room. However, when I move a room, the components belonging to it sill move together.

Offline 741Topic starter

  • Frequent Contributor
  • **
  • Posts: 400
  • Country: gb
    • Circuit & PCB Design (small PCB quantities OK)
I found a related link (about disabling room generation). Link is here https://blog.mbedded.ninja/electronics/general/altium/altium-tricks-and-standards/ "Stopping Rooms From Being Added To The PCB".

So, after applying the opposite logic, I have those automatically generated rooms.  :-+

Sigh/Phew. That took for ever to find out.

Offline 741Topic starter

  • Frequent Contributor
  • **
  • Posts: 400
  • Country: gb
    • Circuit & PCB Design (small PCB quantities OK)
I did find that - for an existing project I was converting to use channels - I had to start from a new PCB. For some reason the import never generated the rooms on the existing PCB, despite the using the above settings.

One useful thing is that the components do not have to lie inside a room as far as moving 'all at once is concerned'. Hopefully this is true for copying layouts.


The initial import did do the 'copy layouts from source to destination rooms' thing OK. However, I then added another part to the child sheet, verified then re-imported.
This imported fine. But when I moved the new part into place and tried to copy room formats, thje copy operation did not work correctly.

What happened was that the new part (a box header) was moved in the destination rooms, but (a) to the wrong place and (b) the part was rotated 90 degrees. This makes no sense to me.


One thing I still need to understand is what the right Project Options are for Class Generation when using auo-generated rooms. I had to play about with these to make the newly added part (added on the child sheet) be 'recognised' as belonging to the right rooms when importing. This is in spite of the fact that the initial import seemd to work fine as far as rooms are concerned.


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf