7
mirror of https://gitlab.com/kicad/code/kicad.git synced 2025-04-18 00:19:22 +00:00
Commit Graph

293 Commits

Author SHA1 Message Date
JamesJCode
eb17ebee4e Implement time-domain length tuning
- Adds time and delay units
- Adds time domain tuning parameters entry and storage
- Adds pad-to-die delay property
- Adds time domain parameter interface for length / delay calculations
- Adds unit tracking for numerical constants through LIBEVAL
   - Will need future work to truly propagate through binary expressions
- Adds time domain tuning to meander placers
- Adds time delay display to net inspector panel
- Modifies DRC to handle time domain constraints
2025-04-17 21:46:56 +01:00
Mike Williams
b9013b87d0 sch groups: add test case for loading from file 2025-04-15 10:19:40 -04:00
Jeff Young
10af2f04d3 Make test use the solder-mask healing algo. 2025-04-14 15:38:18 +01:00
Wayne Stambaugh
66fad52331 Update QA JSON files to prevent modified status after running QA test. 2025-04-10 11:47:33 -04:00
Wayne Stambaugh
cb1e6b62e9 Update QA test json files with latest changes. 2025-04-08 08:17:12 -04:00
Wayne Stambaugh
11edaa6e4a Use arc mid point for footprint library parity DRC testing.
The arc center is a pseudo coordinate which is calculated for drawing
purposes.  This mid point is fixed unless the arc is modified which
should result in more reliable arc parity footprint library DRC testing.

Also change EDA_SHAPE::Compare() to use the arc mid point.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/15917
2025-04-04 15:30:44 -04:00
Mike Williams
40058ebe80 actions: move all basic selection operations to common actions 2025-04-02 12:02:01 -04:00
JamesJCode
906c24bc6d Unify length calculation between router, board / frame, and DRC 2025-03-30 09:18:41 +01:00
Wayne Stambaugh
69f758dbcd Update QA configuration files to the latest changes.
This prevents having to revert the changes to these files every time the
QA tests are run.
2025-03-25 10:56:33 -04:00
Jon Evans
1c83f0a70b Implement jumpers for footprints
Fixes https://gitlab.com/kicad/code/kicad/-/issues/2558
2025-03-24 22:17:46 -04:00
Jon Evans
805ca0c791 ADDED: Jumpers for symbols
Support explicit jumper symbols, defined either by a
flag that all pins with the same number are connected,
or by explicit groups of jumpered pins

Fixes https://gitlab.com/kicad/code/kicad/-/issues/2558
2025-03-24 22:08:46 -04:00
Jon Evans
fe22166d9f Use stable sort ordering in ERC reports
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20333
2025-03-16 10:25:29 -04:00
JamesJCode
ede5faee72 Implement dynamic assignment of component classes 2025-03-15 14:33:47 +00:00
JamesJCode
68b6c2d1da Add Orientation DRC property QA check 2025-03-06 15:56:39 +00:00
Daniel Treffenstädt
27edf0b949 ADDED: Per layer properties of zones used for control over zone hatching position 2025-03-02 20:31:04 +00:00
Daniel Treffenstädt
3768221d9c ADDED: Support for IPC-4761 Via protection features
Fixes https://gitlab.com/kicad/code/kicad/-/work_items/18837
2025-03-01 18:02:54 +00:00
Daniel Treffenstädt
5e467a969d Added check for custom thermal spoke count
When using custom thermal spoke templates, the user can create templates with fewer, or more, thermal spokes than 4.
2025-02-27 22:40:40 +00:00
Jon Evans
ca21a35bfc Improvements to kicad-cli test repeatability 2025-02-22 10:35:27 -05:00
Seth Hillbrand
9e4204340f Fixup net-tie caching and add QA for netties
When building a net tie, all elements in the footprint that belong to
the net tie can be arbitrarily close to one another.  outside of the
footprint, connected items can be arbitrarily close to the tie element
but must respect the clearance values for elements that have nets
assigned to them

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19933

(cherry picked from commit bff819edb0)
2025-02-13 14:45:40 -08:00
Ian McInerney
088e0e80a1 Fix layer writing/reading for copper zones
* Always enumerate layers - never use the wildcards
* Keep fills on layers the zone is actually on when loading

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19775
2025-01-29 00:31:28 +00:00
John Beard
954ef70a8a QA: add a library-mode footprint load/test/save test
This is not only a useful place to hang regression tests,
but also allows to catch defects specific to loading or
saving footprints.

For example, it would catch:

Relates-To: https://gitlab.com/kicad/code/kicad/-/issues/19713
2025-01-24 02:11:06 +08:00
Jon Evans
975fe32fa7 Add a mechanism for using a mock config dir for QA tests 2025-01-18 13:40:38 -05:00
JamesJCode
baa0beec4d Update some pcbnew QA files to remove warning messages 2025-01-14 22:49:21 +00:00
Seth Hillbrand
bfb3875a68 Add additional handling for arc collisions
Provides nearest point calculation for circles, segments and rects

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18203
2025-01-14 13:08:45 -08:00
Seth Hillbrand
00de67eea8 Properly handle cleanup for multiple collinear tracks
When we have multiple tracks that share a single anchor, they are
technically a node but should still be cleaned as they are collinear.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19574
2025-01-09 12:10:23 -08:00
Marek Roszko
ae0dc97929 Add qa for cli sch erc 2025-01-04 22:32:53 -05:00
JamesJCode
0c76b723b4 Add ERC QA for wire bus entry unconnected / off grid 2025-01-03 18:13:30 +00:00
Seth Hillbrand
66ee4a1ddd Fix up Annular ring check
- Remove bespoke collide routine.  We should never rewrite these instead
  of using the geometry library
- Optimize check by creating unified geometry before colliding
- Make extra variable that we don't need but makes cherry-picks easier
  (min/maxAnnularWidth)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19325

(cherry picked from commit a611c72c27)
2024-12-23 08:38:45 -08:00
Jeff Young
a048acf9db Don't assume all things with mask layers are in a footprint.
In particular, tracks can now have mask layers.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18878
2024-12-20 22:21:54 +00:00
JamesJCode
3a7aa7b660 Ensure deterministic ordering in cadstar netlist exporter
Also re-enable checking of exporter in qa_cli
2024-12-20 11:50:23 +00:00
JamesJCode
c9d74d24f0 Ensure deterministic ordering in orcadpcb2 netlist exporter
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18822
2024-12-19 23:01:32 +00:00
Seth Hillbrand
41d4a8caab Adjust DRC clearance for net ties
Items that are part of net ties (pads and copper shapes that connect to
them) should allow connections from any net in the tie.  This prevents
clearance errors from being generated for matched nets

Fixes https://gitlab.com/kicad/code/kicad/-/issues/14008
2024-12-10 15:54:47 -08:00
Seth Hillbrand
ad985aff9d Check secondary driver names when merging
If two nets are joined by a global power pin but both have global labels
that override the net name, we still want them to be merged.  This
checks for all net names in the drivers when looking for subgraph
merging candidates

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18092
2024-12-10 15:54:47 -08:00
Dhineshkumar S
57127f7d12 Add DRC warning for incorrectly mirrored text 2024-12-08 05:00:38 +00:00
Jon Evans
49d5e64428 API: Add initial definitions for dimensions 2024-11-29 21:18:51 -05:00
John Beard
44ca798925 Pcbnew IO: Use fill yes/no universally
There was a motion towards fill solid/none around
2020 (c.f. b31e97cfed),
but it was only for PCB_SHAPE.

Use yes/no universally (solid/none parsing the same way
as currently). In future if there are other fill modes
for these shapes, they can use the same pattern as ZONEs
do now: (fill yes) (hatch etc ....) or similar.

Relates-To: https://gitlab.com/kicad/code/kicad/-/issues/15232
2024-11-29 20:17:51 +08:00
Jon Evans
af91519e06 API: Implement Deserialize for ZONE 2024-11-23 12:06:54 -05:00
Daniel Treffenstädt
81ecccb21c Fixed: Fewer ERC items for pin connection conflicts in larger set of conflicting pins 2024-11-22 23:26:31 +00:00
Jan Wichmann
30cebd17e0 Added ERC check for directive labels
Checks to see if directive labels are connected in the same manner that other labels are

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/19075
2024-11-20 18:11:05 +00:00
Seth Hillbrand
64ff47c594 Handle edge cases in kissing zones
When zone kisses happen from different polygons, we need to be careful
not to use the different polygons for ear comparisons or prev/next
pointers

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18654
2024-10-24 17:40:25 -07:00
JamesJCode
db072a524c Consolidation of Component Class implementation
- Moves functionality to FOOTPRINT class from BOARD_ITEM
- Renames DRC property from ComponentClass to Component_Class
- Adds DRC checks QA for A.Component_Class and a.hasComponentClass('x')
2024-10-24 20:11:35 +01:00
JamesJCode
98da64dce7 Fix multichannel QA 2024-10-10 02:25:29 +01:00
Jon Evans
56e0811516 Phase 2 of padstack support
CHANGED: PCB file format now supports saving/loading complex padstacks

CHANGED: PTH pads are now rendered per copper layer in the copper color;
         the PTH pad color is no longer used.

ADDED: support for importing complex pad stacks from Altium PCBs

Enforce padstack-aware access to pad properties across KiCad

Fixes https://gitlab.com/kicad/code/kicad/-/issues/8182
2024-10-01 19:55:03 -04:00
JamesJCode
d64a112971 Implement Component Classes
- Adds Component Class field to SCH_DIRECTIVE_LABEL
- Adds SCH_SYMBOLs to SCH_RULE_AREA item lists
- SCH_SYMBOLs resolve Component Class directives
- Netlist exporter / importer handles Component Class names
- Adds DRC expressions and functions
- Adds QA check for component class netlist export
2024-10-01 22:36:18 +01:00
Wayne Stambaugh
be72f22f54 Add check for schematic files shared by multiple projects.
This test was added to the SCHEMATIC object along with QA tests to verify
the test works as expected.
2024-09-27 13:09:50 -04:00
Seth Hillbrand
5e0abadb23 Reorganize layer numbering
F_Cu = 0
B_Cu = 2
Remaining internal copper layers are even and incrementing

Non-copper layers are odd and incrementing.

This means that we can no longer do things like:
for( PCB_LAYER_ID layer = F_Cu; layer <= B_Cu; ++layer)
Instead, we have the class LAYER_RANGE:
for( PCB_LAYER_ID layer : LAYER_RANGE( F_Cu, B_Cu) )

Similarly, gt/lt tests should not refer to the integer value of the
layer.  We have functions such as IsCopperLayer to test whether a layer
is copper or not.

When using the connectivity RTree, the third dimension is layer, so we
provide B_Cu with the special INT_MAX value, ensuring that elements
between F_Cu and B_Cu will be identified.  There is a new, special
function GetBoardLayer() for interfacing with CN_ITEMS

Similarly, PNS layers remain unchanged and sequential.  A set of
interface functions is provided to map PNS layers to Board layers and
back.  This allows the PNS_LAYER_RANGE to function as expected
2024-09-06 23:07:58 +00:00
Tomasz Wlostowski
c3e621bb69 qa: added test layout for the MULTICHANNEL_TOOL 2024-08-14 00:09:31 +02:00
JamesJCode
3a007b8dd7 Remove group_matched token from DRC skew rule
This is the default behaviour anyway
2024-07-30 14:41:06 +01:00
JamesJCode
5187ea721d Implement within_diff_pairs and group_matched DRC skew arguments
Enables DRC to calculate skew based on new arguments to skew
constraint DRC clauses:

Using (group_matched): calculate skew across all matching nets
Using (within_diff_pairs): calculate skew within every diff pair
   found within the matching nets

Additionally fixes DRC skew calculation to calculate skew relative
to the longest net in the skew check set (in line with PNS meander
placer calculations).
2024-07-29 15:28:39 +01:00
James J
7ce00e511b Multi-netclass support 2024-07-26 20:49:29 +00:00