Room copy with multi-channel design
mairomaster , 06-10-2016, 02:13 AM
Hello,
I am working on a project including multi-channel design. I am using Altium 16.1.9. Each channel is fairly complex - over 500 components, fine pitch devices, micro and buried vias, many nets, polygons, etc. The final board will consist of 16 such channels + other blocks (it will be a massive board). Currently I am designing a smaller test version of the board with only 4 channels.
I have one of the channels fully finished already and I tried to copy it using the room copy function. I encountered a couple of problems.
1. Components with manually modified silk screen do not copy properly. There position in the destination room is not precise - they are slightly offset. I needed to manually modify the silk screen of those components since it was causing DRC violation due to proximity to other components. If I first updated all components from the libraries, everything copies well. Do you know what is causing the issue and a way around it? Could it be the change of the bounding rectangle shape/size? The only solution I have now is to first copy and then manually modify the silk screen in all channels, which is obviously very slow and inefficient process, compared to first modifying and then copying.
2. Arguably the bigger issue is that most of the polygons, fills and some of the vias copy but do not get their nets updated properly. They either keep the same net as in channel 1 or get a random net. Component pads and tracks connected to them seem to update properly. With the vias I noticed that the problematic ones are those which are connected to a polygon/fill and not connected to a track/component pad. I did a good search about the issue and noticed that other people have it as well. I couldn't find a good solution though.
My best solution (still not good enough) for now is to manually re-assign the polygon nets using smart features as select connected copper for example. At the end of the process I select all electrical primitives in the channel and use the PCB list to quickly scroll through them and see if they all have nets with suffix 2 for example (for channel 2). I also use the rat nest to see if the channel tries to connect to other channels, which would mean that some of the nets are still wrong. Those methods are very inefficient and slow while being not very reliable at the same time as well. You can see how doing all of that for 16 complex channels is a huge hassle.
Do you have any ideas how the copying of polygons and all vias can be done quickly and more reliably?
Thank you
robertferanec , 06-12-2016, 10:26 AM
Hello @mairomaster.
What a very nice design! Wow!
Unfortunatelly, I don't know answers to your questions. I have never used channels in PCB
Please, try to ask your Altium supplier (that is what I would do). If you can not find a good answer, I will check with ours Altium supplier. Peter from edatools.cz is really good in Altium. Please, let me know.
petrtos , 06-13-2016, 12:56 AM
Hi @mairomaster
to your issues - Copy Room Format is not considering local modifications of footprints to be copied into other channels. To achieve that you really need to copy your footprints into other channels before you use the function. I also encountered the issue where some copied objects are not assigned to the net properly. It helped me to use Design » Netlist » Update free primitives from component pads. This function search for electrically connected objects and assign them nets from the pads. It fails in cases where you have different nets connected in the design (DRC violation of short circuit) but it is expected. I hope that could help you with the vias and polygons.
Petr
robertferanec , 06-13-2016, 12:57 AM
Thank you very much @petrtos
mairomaster , 06-13-2016, 01:33 AM
Thanks for the tips.
I use the Update free primitives function after I manually re-assign the polygons, just to fix some of the remaining vias/primitives that are still wrong. If I use it before that though, as you said it doesn't work that well since many polygons and vias have the wrong nets and there are different occasions where several nets are connected together, so it fails.
petrtos , 06-13-2016, 01:42 AM
Maybe it would be better set polygons and vias in the channels to No Net using Inspector panel as a first step to make the task easier for the algorithm...
Petr
mairomaster , 06-13-2016, 03:07 AM
Actually I tried again copying the room and running the Update free primitives command right after and it seemed to work quite well this time. Maybe something went wrong the previous time.
Setting the vias and polygons to No net first would work as well, however I have many ground stitching vias for example which would not have been able to pick up a net after updating, since I have my big polygon grounds temporarily shelved. If they are not shelved some primitives would be placed through them and pick the GND net by mistake.
Thanks for the tips again!
petrtos , 06-13-2016, 03:21 AM
I am glad it went ok for you this time.
Stitching vias are not an issue because AD knows they are in stitching vias union. You can e.g. select everything in the channels and then use Filter panel with this query - IsPoly or (IsVia and not IsStitchingVia). Set the panel to Select matching, Deselect non-matching and use Apply to Selected. This way you end up with just non-stitching vias and all polygons from your previous selection and you can apply the No Net without any worries about the rest of the design. The query can be saved to the Favorites for future use. But I understand it is not that convenient as one would wish and your design is ok anyway. Just a small remark it could be done using filter...
Have a nice day.
Petr
mairomaster , 06-13-2016, 04:07 AM
In my particular case I am placing my stitching vias manually and managing my unions manually as well. That is why I guess I don't have an union for my stitching vias - to be honest I didn't even know about this feature. I have to look into it.
Have a nice day, too!
petrtos , 06-13-2016, 04:53 AM
Aha, it is more difficult then.
Petr
Use our interactive
Discord forum to reply or ask new questions.