aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2019-06-12 22:51:26 +0200
committerTrygve Laugstøl <trygvis@inamo.no>2019-06-12 22:51:26 +0200
commit7bea893adbb9e834d11e2706bdedc4f9db4969f8 (patch)
tree470947ad92b9228e88fa51fa8f339801c6ffbbba
parentb2e87255d3d51956dc5da440e535ce2cee5c6f5b (diff)
downloadee-python-7bea893adbb9e834d11e2706bdedc4f9db4969f8.tar.gz
ee-python-7bea893adbb9e834d11e2706bdedc4f9db4969f8.tar.bz2
ee-python-7bea893adbb9e834d11e2706bdedc4f9db4969f8.tar.xz
ee-python-7bea893adbb9e834d11e2706bdedc4f9db4969f8.zip
kicad.dl: Better organization of rules for classifying resistors,
capacitors, inductors, net ties, test points and mounting holes. This new (and consistent) style provides extension points for projects to use for their own rules. build.ninja.j2: Adding --no-warn to souffle rule, souffle complains when the relations are empty.
-rw-r--r--src/ee/souffle/kicad.dl147
-rw-r--r--src/ee/tools/templates/build.ninja.j26
-rw-r--r--src/ee/xml/uris.py1
3 files changed, 118 insertions, 36 deletions
diff --git a/src/ee/souffle/kicad.dl b/src/ee/souffle/kicad.dl
index ed9bf4a..3df801f 100644
--- a/src/ee/souffle/kicad.dl
+++ b/src/ee/souffle/kicad.dl
@@ -4,49 +4,81 @@
.decl add_fact(part_uri:symbol, key:symbol, value:symbol)
.output add_fact
-/*
-.decl is_resistor(uri:symbol)
-.decl is_capacitor(uri:symbol)
-.decl is_inductor(uri:symbol)
+// ---------------------------------------------------------------------------------------------------------------------
+// Resistor rules
-is_resistor(Ref) :-
+.decl resistor_symbol(lib:symbol, name:symbol)
+
+.decl resistor_lib(lib:symbol)
+resistor_lib("Resistor_SMD").
+resistor_lib("Resistor_THT").
+
+.decl resistor(uri:symbol)
+
+resistor(Part) :-
+ fact(Part, "http://purl.org/ee/kicad-sch-fact-type#footprint-library", lib),
resistor_lib(lib).
- fact(Ref, "http://purl.org/ee/kicad-sch-fact-type#footprint-library", lib).
-is_capacitor(Ref) :-
- capacitor_lib(lib).
- fact(Ref, "http://purl.org/ee/kicad-sch-fact-type#footprint-library", lib).
+resistor(Part) :-
+ fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-library", lib),
+ fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-name", name),
+ resistor_symbol(lib, name).
-is_inductor(Ref) :-
- inductor_lib(lib).
- fact(Ref, "http://purl.org/ee/kicad-sch-fact-type#footprint-library", lib).
-*/
+add_fact(Part, "http://purl.org/ee/fact-type/ee-component-type", "http://purl.org/ee/part-type#resistor") :-
+ resistor(Part).
-.decl resistor_lib(name:symbol)
-resistor_lib("Resistor_SMD").
-resistor_lib("Resistor_THT").
+// ---------------------------------------------------------------------------------------------------------------------
+// Capacitor rules
-.decl capacitor_lib(name:symbol)
+.decl capacitor_symbol(lib:symbol, name:symbol)
+
+.decl capacitor_lib(lib:symbol)
capacitor_lib("Capacitor_SMD").
-.decl inductor_lib(name:symbol)
+.decl capacitor(uri:symbol)
+
+capacitor(Part) :-
+ fact(Part, "http://purl.org/ee/kicad-sch-fact-type#footprint-library", lib),
+ capacitor_lib(lib).
+
+capacitor(Part) :-
+ fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-library", lib),
+ fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-name", name),
+ capacitor_symbol(lib, name).
+
+add_fact(Part, "http://purl.org/ee/fact-type/ee-component-type", "http://purl.org/ee/part-type#capacitor") :-
+ capacitor(Part).
+
+// ---------------------------------------------------------------------------------------------------------------------
+// Inductor rules
+
+.decl inductor_symbol(lib:symbol, name:symbol)
+
+.decl inductor_lib(lib:symbol)
inductor_lib("Inductor_SMD").
-add_fact(Ref, "http://purl.org/ee/fact-type/ee-component-type", "http://purl.org/ee/part-type#resistor") :-
- resistor_lib(lib),
- fact(Ref, "http://purl.org/ee/kicad-sch-fact-type#footprint-library", lib).
+.decl inductor(uri:symbol)
+
+inductor(Part) :-
+ fact(Part, "http://purl.org/ee/kicad-sch-fact-type#footprint-library", lib),
+ inductor_lib(lib).
+
+inductor(Part) :-
+ fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-library", lib),
+ fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-name", name),
+ inductor_symbol(lib, name).
-add_fact(Ref, "http://purl.org/ee/fact-type/ee-component-type", "http://purl.org/ee/part-type#capacitor") :-
- capacitor_lib(lib),
- fact(Ref, "http://purl.org/ee/kicad-sch-fact-type#footprint-library", lib).
+add_fact(Part, "http://purl.org/ee/fact-type/ee-component-type", "http://purl.org/ee/part-type#inductor") :-
+ inductor(Part).
-add_fact(Ref, "http://purl.org/ee/fact-type/ee-component-type", "http://purl.org/ee/part-type#inductor") :-
- inductor_lib(lib),
- fact(Ref, "http://purl.org/ee/kicad-sch-fact-type#footprint-library", lib).
+// ---------------------------------------------------------------------------------------------------------------------
+// Net tie rules
// Net ties and test points should probably not be marked as components to buy. Test points is possible to buy and
// install so that needs to be an option.
+.decl net_tie_lib(lib:symbol)
+
.decl net_tie_symbol(lib:symbol, name:symbol)
net_tie_symbol("Device", "Net-Tie_2").
net_tie_symbol("Device", "Net-Tie_3").
@@ -54,10 +86,24 @@ net_tie_symbol("Device", "Net-Tie_3_Tee").
net_tie_symbol("Device", "Net-Tie_4").
net_tie_symbol("Device", "Net-Tie_4_Cross").
-add_fact(Ref, "http://purl.org/ee/fact-type/ee-component-type", "http://purl.org/ee/part-type#net-tie") :-
- net_tie_symbol(lib, name),
- fact(Ref, "http://purl.org/ee/kicad-sch-fact-type#symbol-library", lib),
- fact(Ref, "http://purl.org/ee/kicad-sch-fact-type#symbol-name", name).
+.decl net_tie(uri:symbol)
+
+net_tie(Part) :-
+ net_tie_lib(lib),
+ fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-library", lib).
+
+net_tie(Part) :-
+ fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-library", lib),
+ fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-name", name),
+ net_tie_symbol(lib, name).
+
+add_fact(Part, "http://purl.org/ee/fact-type/ee-component-type", "http://purl.org/ee/part-type#net-tie") :-
+ net_tie(Part).
+
+// ---------------------------------------------------------------------------------------------------------------------
+// Test point rules
+
+.decl test_point_lib(lib:symbol)
.decl test_point_symbol(lib:symbol, name:symbol)
test_point_symbol("Connector", "TestPoint").
@@ -66,7 +112,38 @@ test_point_symbol("Connector", "TestPoint_Alt").
test_point_symbol("Connector", "TestPoint_Flag").
test_point_symbol("Connector", "TestPoint_Probe").
-add_fact(Ref, "http://purl.org/ee/fact-type/ee-component-type", "http://purl.org/ee/part-type#test-point") :-
- test_point_symbol(lib, name),
- fact(Ref, "http://purl.org/ee/kicad-sch-fact-type#symbol-library", lib),
- fact(Ref, "http://purl.org/ee/kicad-sch-fact-type#symbol-name", name).
+.decl test_point(uri:symbol)
+
+test_point(Part) :-
+ fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-library", lib),
+ test_point_lib(lib).
+
+test_point(Part) :-
+ fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-library", lib),
+ fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-name", name),
+ test_point_symbol(lib, name).
+
+add_fact(Part, "http://purl.org/ee/fact-type/ee-component-type", "http://purl.org/ee/part-type#test-point") :-
+ test_point(Part).
+
+// ---------------------------------------------------------------------------------------------------------------------
+// Mounting hole rules
+
+.decl mounting_hole_lib(lib:symbol)
+
+.decl mounting_hole_symbol(lib:symbol, name:symbol)
+mounting_hole_symbol("Mechanical", "MountingHole").
+
+.decl mounting_hole(uri:symbol)
+
+mounting_hole(Part) :-
+ fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-library", lib),
+ mounting_hole_lib(lib).
+
+mounting_hole(Part) :-
+ fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-library", lib),
+ fact(Part, "http://purl.org/ee/kicad-sch-fact-type#symbol-name", name),
+ mounting_hole_symbol(lib, name).
+
+add_fact(Part, "http://purl.org/ee/fact-type/ee-component-type", "http://purl.org/ee/part-type#mounting-hole") :-
+ mounting_hole(Part).
diff --git a/src/ee/tools/templates/build.ninja.j2 b/src/ee/tools/templates/build.ninja.j2
index e8ce404..5c94d3e 100644
--- a/src/ee/tools/templates/build.ninja.j2
+++ b/src/ee/tools/templates/build.ninja.j2
@@ -34,7 +34,11 @@ rule part-apply-souffle-pre
command = $ee part-apply-souffle-pre {{ log }} --in $in --work $work
rule souffle
- command = souffle -F $work/in -D $work/out -I $work -I "{{ souffle_ee_src }}" $in
+ command = souffle $
+ -F $work/in -D $work/out $
+ --no-warn $
+ -I $work $
+ -I "{{ souffle_ee_src }}" $in
rule part-apply-souffle-post
command = $ee part-apply-souffle-post {{ log }} --in $in_sch --out $out --work $work
diff --git a/src/ee/xml/uris.py b/src/ee/xml/uris.py
index d2e3f5b..97c3fa3 100644
--- a/src/ee/xml/uris.py
+++ b/src/ee/xml/uris.py
@@ -11,6 +11,7 @@ TRANSISTOR = "http://purl.org/ee/part-type#transistor"
NET_TIE = "http://purl.org/ee/part-type#net-tie"
TEST_POINT = "http://purl.org/ee/part-type#test-point"
+MOUNTING_HOLE = "http://purl.org/ee/part-type#mounting-hole"
_DIGIKEY_FACT_KEY_PREFIX = "http://purl.org/ee/digikey-fact-key#"