pcb-rnd knowledge pool
DNP and board build options with asm
asm_dnp by Tibor 'Igor2' Palinkas on 2021-07-09
Tags: howto, dnp, build, options, populate, omit, asm
Abstract: Practical examples on configuring the asm plugin for DNP (Do Not Populate) and different board build options.
The asm plugin is an efficient tool for manually populating a board. Its flexible grouping and sorting configuration makes it able to schedule parts so that the board is easiest to populate. With the exclude_query configuration node, it is also capable of handling DNP (do not populate) or board build options.
The exclude_query config node
The config node at plugins/asm1/exclude_query is either empty or contains a query expression. When empty, all subcircuits are presented in the asm() dialog. When non-empty, the query expression is evaluated for each subcircuit (being the @ variable in the expression). When the expression evaluates to true, the subcircuit is omitted from the build schedule.
How to implement DNP
Invent a subcircuit attribute for the purpose; let's call it dnp for this example. Set the dnp attribute to 1 on any subcircuit that should not be populated, then set plugins/asm1/exclude_query to:
@.a.dnp != ""
When the asm() action is invoked, the above query will exclude any subcircuit that has the dnp attribute set to any non-empty value.
How to implement build options
Invent a subcircuit attribute for the purpose; let's call it option for this example. Set the option attribute to A or B on any subcircuit that should be be populated only for option A or option B, then set plugins/asm1/exclude_query to:
(@.a.option != "") && (@.a.option != "B")
When the asm() action is invoked, the above query will exclude any subcircuit that has the option attribute set and the value is not B. Or in short, it will present non-optional subcircuits and subcircuits tagged for the 'B' option.