diff options
-rw-r--r-- | .gitmodules | 3 | ||||
-rw-r--r-- | CMakeLists.txt | 1 | ||||
-rw-r--r-- | README.md | 76 | ||||
-rw-r--r-- | cli/generate-header.cpp | 2 | ||||
-rw-r--r-- | doc/CMakeLists.txt | 24 | ||||
-rw-r--r-- | doc/flow.svg | 235 | ||||
-rw-r--r-- | doc/flow.tikz | 29 | ||||
-rw-r--r-- | doc/template-qtikz.tex | 15 | ||||
-rw-r--r-- | doc/template-tex.tex | 15 | ||||
-rw-r--r-- | kicad/kicad-utils.pro | 32 | ||||
-rw-r--r-- | templates/nodemcu-arduino.py | 28 | ||||
m--------- | thirdparty/antlr4 | 0 |
12 files changed, 445 insertions, 15 deletions
diff --git a/.gitmodules b/.gitmodules index 83b6a4d..50c8663 100644 --- a/.gitmodules +++ b/.gitmodules @@ -5,3 +5,6 @@ [submodule "python/pybind11"] path = python/pybind11 url = https://github.com/pybind/pybind11 +[submodule "thirdparty/antlr4"] + path = thirdparty/antlr4 + url = https://github.com/trygvis/antlr4 diff --git a/CMakeLists.txt b/CMakeLists.txt index 3b4c6e1..58d3aa4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,5 +8,6 @@ add_compile_options(-Wextra) add_subdirectory(core) add_subdirectory(python) add_subdirectory(cli) +add_subdirectory(doc) #add_subdirectory(examples) diff --git a/README.md b/README.md new file mode 100644 index 0000000..af174b6 --- /dev/null +++ b/README.md @@ -0,0 +1,76 @@ +Kicad utils contains utilities for automating your Kicad workflow. + +# generate-header + +Generate header is a tool to generate header files from your schematics to ensure that your schematic and +pin mapping always is correct. + +![flow] + +[flow]: doc/flow.svg "Flow with generate-header" + +## Command line usage + +You can use the generate-header tool as a standalone command line tool like this: + + generate-header -n schematic/foo.net -r U1 -t intel-quark-d2000 -o firmware/schematic.h + +The usage is summarized like this: + + usage: generate-header -n <net file> -r <ref> -t <template> [-l <template lib dir>] [-o <out file>] + +## CMake integration + +Put this in your `CMakeLists.txt`: + + find_package(KicadUtils) + + kicad_generate_header( + OUTPUT schematic.h + NET schematic/intel-quark-d2000.net + REF U1 + TEMPLATE intel-quark-d2000) + +and `schematic.h` will automatically be generated. CMake now knows that `schematic.h` is generated and depends on +`schematic/intel-quark-d2000.net`. + +# Templates + +The templates are simply Python files that map from the part's pin number to a platform-specific symbol. The +`kicad-utils` KiCAD library contains parts with pins that act as documentation for what the pins mean. If you don't use +the `kicad-utils` library, make sure that your pin usage matches what is used in the library. + +For example the `nodemcu-arduino` template will assume that the part follows the pin ordering and usage for the +`NODEMCU` part in the library and that it used the Arduino IDE with the ESP8266 board package. The generated header file +will look like this: + + namespace schematic { + + static const int AD0 = D0; + ... + } + + +# Building + +## Antlr4 + +Kicad utils needs a fork of Antlr4 with better CMake support. + + mkdir thirdparty/antlr4/build + cd thirdparty/antlr4/build + cmake .. \ + -DCMAKE_INSTALL_PREFIX=$HOME/opt/antlr4-cpp + make + make install + +## Kicad utils + + mkdir build + cd build + cmake .. \ + -DAntlr4_DIR=$HOME/opt/antlr4-cpp/lib/cmake/Antlr4 \ + -DCMAKE_INSTALL_PREFIX=$HOME/opt/kicad-utils \ + -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=YES + make + make install diff --git a/cli/generate-header.cpp b/cli/generate-header.cpp index 3ff39f6..bc02277 100644 --- a/cli/generate-header.cpp +++ b/cli/generate-header.cpp @@ -35,7 +35,7 @@ char *program; __attribute__((noreturn)) void usage(const char *reason = nullptr) { if (reason) { - fprintf(stderr, "%s\n", reason); + fprintf(stderr, "error: %s\n", reason); } fprintf(stderr, "usage: %s -n <net file> -r <ref> -t <template> [-l <template lib dir>] [-o <out file>]\n", program); diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt new file mode 100644 index 0000000..9c7fdb7 --- /dev/null +++ b/doc/CMakeLists.txt @@ -0,0 +1,24 @@ +function(add_tikz_target TIKZ_FILE TEMPLATE) + get_filename_component(basename ${TIKZ_FILE} NAME_WE) + set(pdf_file "${basename}.pdf") + set(svg_file "${basename}.svg") + + add_custom_command(OUTPUT ${pdf_file} + COMMAND echo "'\\def\\\\tikzfile{${CMAKE_CURRENT_SOURCE_DIR}/${TIKZ_FILE}}'" > tmp.tex + COMMAND echo "'\\input{${CMAKE_CURRENT_SOURCE_DIR}/template-tex.tex}}'" >> tmp.tex + COMMAND pdflatex -jobname ${basename} -file-line-error -interaction nonstopmode tmp.tex >/dev/null + COMMAND cmake -E remove tmp.tex + MAIN_DEPENDENCY ${TIKZ_FILE} + COMMENT "Generating ${pdf_file}" + ) + + add_custom_command(OUTPUT ${svg_file} + COMMAND pdf2svg ${pdf_file} ${svg_file} + COMMAND cmake -E copy_if_different ${svg_file} ${CMAKE_CURRENT_SOURCE_DIR}/${svg_file} + MAIN_DEPENDENCY ${pdf_file} + COMMENT "Generating ${svg_file}" + ) +endfunction() + +add_tikz_target(flow.tikz template-qtikz.tex) +add_custom_target(doc DEPENDS flow.svg) diff --git a/doc/flow.svg b/doc/flow.svg new file mode 100644 index 0000000..688e300 --- /dev/null +++ b/doc/flow.svg @@ -0,0 +1,235 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="189.797pt" height="379.399pt" viewBox="0 0 189.797 379.399" version="1.1"> +<defs> +<g> +<symbol overflow="visible" id="glyph0-0"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph0-1"> +<path style="stroke:none;" d="M 2.328125 -1.75 C 1.78125 -1.75 1.359375 -2.21875 1.359375 -2.75 C 1.359375 -3.3125 1.796875 -3.765625 2.328125 -3.765625 C 2.859375 -3.765625 3.28125 -3.296875 3.28125 -2.765625 C 3.28125 -2.1875 2.84375 -1.75 2.328125 -1.75 Z M 1.421875 -1.40625 C 1.453125 -1.390625 1.828125 -1.15625 2.328125 -1.15625 C 3.234375 -1.15625 3.96875 -1.875 3.96875 -2.765625 C 3.96875 -3.0625 3.875 -3.34375 3.703125 -3.625 C 3.921875 -3.75 4.15625 -3.78125 4.28125 -3.796875 C 4.34375 -3.53125 4.578125 -3.453125 4.671875 -3.453125 C 4.84375 -3.453125 5.078125 -3.578125 5.078125 -3.875 C 5.078125 -4.09375 4.890625 -4.40625 4.34375 -4.40625 C 4.234375 -4.40625 3.75 -4.390625 3.296875 -4.0625 C 3.125 -4.171875 2.78125 -4.359375 2.328125 -4.359375 C 1.390625 -4.359375 0.671875 -3.609375 0.671875 -2.765625 C 0.671875 -2.328125 0.84375 -2 1 -1.8125 C 0.890625 -1.65625 0.796875 -1.4375 0.796875 -1.140625 C 0.796875 -0.78125 0.9375 -0.53125 1.03125 -0.421875 C 0.296875 0.03125 0.296875 0.703125 0.296875 0.8125 C 0.296875 1.671875 1.328125 2.28125 2.609375 2.28125 C 3.890625 2.28125 4.9375 1.671875 4.9375 0.8125 C 4.9375 0.453125 4.75 -0.046875 4.25 -0.3125 C 4.109375 -0.390625 3.703125 -0.609375 2.796875 -0.609375 L 2.109375 -0.609375 C 2.03125 -0.609375 1.890625 -0.609375 1.8125 -0.625 C 1.671875 -0.625 1.609375 -0.625 1.484375 -0.765625 C 1.375 -0.90625 1.359375 -1.109375 1.359375 -1.125 C 1.359375 -1.171875 1.390625 -1.3125 1.421875 -1.40625 Z M 2.609375 1.6875 C 1.609375 1.6875 0.875 1.25 0.875 0.8125 C 0.875 0.640625 0.953125 0.3125 1.28125 0.125 C 1.53125 -0.046875 1.609375 -0.046875 2.34375 -0.046875 C 3.234375 -0.046875 4.359375 -0.046875 4.359375 0.8125 C 4.359375 1.25 3.609375 1.6875 2.609375 1.6875 Z M 2.609375 1.6875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-2"> +<path style="stroke:none;" d="M 4.234375 -1.90625 C 4.4375 -1.90625 4.625 -1.90625 4.625 -2.265625 C 4.625 -3.40625 3.984375 -4.390625 2.6875 -4.390625 C 1.5 -4.390625 0.546875 -3.390625 0.546875 -2.15625 C 0.546875 -0.953125 1.5625 0.0625 2.84375 0.0625 C 4.15625 0.0625 4.625 -0.84375 4.625 -1.09375 C 4.625 -1.359375 4.34375 -1.359375 4.28125 -1.359375 C 4.09375 -1.359375 4.015625 -1.328125 3.953125 -1.140625 C 3.734375 -0.640625 3.1875 -0.546875 2.90625 -0.546875 C 2.15625 -0.546875 1.421875 -1.046875 1.25 -1.90625 Z M 1.265625 -2.5 C 1.40625 -3.234375 2 -3.78125 2.6875 -3.78125 C 3.203125 -3.78125 3.828125 -3.53125 3.921875 -2.5 Z M 1.265625 -2.5 "/> +</symbol> +<symbol overflow="visible" id="glyph0-3"> +<path style="stroke:none;" d="M 1.65625 -3.828125 C 1.65625 -4.140625 1.65625 -4.296875 1.25 -4.296875 L 0.53125 -4.296875 C 0.375 -4.296875 0.125 -4.296875 0.125 -3.984375 C 0.125 -3.6875 0.375 -3.6875 0.515625 -3.6875 L 0.96875 -3.6875 L 0.96875 -0.609375 L 0.53125 -0.609375 C 0.375 -0.609375 0.125 -0.609375 0.125 -0.296875 C 0.125 0 0.375 0 0.515625 0 L 2.109375 0 C 2.25 0 2.5 0 2.5 -0.296875 C 2.5 -0.609375 2.25 -0.609375 2.09375 -0.609375 L 1.65625 -0.609375 L 1.65625 -2.375 C 1.65625 -3.375 2.390625 -3.75 2.90625 -3.75 C 3.421875 -3.75 3.5625 -3.46875 3.5625 -2.875 L 3.5625 -0.609375 L 3.1875 -0.609375 C 3.015625 -0.609375 2.765625 -0.609375 2.765625 -0.296875 C 2.765625 0 3.046875 0 3.1875 0 L 4.703125 0 C 4.84375 0 5.109375 0 5.109375 -0.296875 C 5.109375 -0.609375 4.859375 -0.609375 4.6875 -0.609375 L 4.25 -0.609375 L 4.25 -2.921875 C 4.25 -3.921875 3.75 -4.359375 2.953125 -4.359375 C 2.296875 -4.359375 1.84375 -4.015625 1.65625 -3.828125 Z M 1.65625 -3.828125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-4"> +<path style="stroke:none;" d="M 2.21875 -1.859375 C 2.21875 -2.796875 2.796875 -3.75 4 -3.75 C 4.015625 -3.515625 4.1875 -3.3125 4.4375 -3.3125 C 4.65625 -3.3125 4.859375 -3.46875 4.859375 -3.734375 C 4.859375 -3.9375 4.734375 -4.359375 3.90625 -4.359375 C 3.40625 -4.359375 2.765625 -4.171875 2.21875 -3.546875 L 2.21875 -3.890625 C 2.21875 -4.203125 2.15625 -4.296875 1.8125 -4.296875 L 0.71875 -4.296875 C 0.5625 -4.296875 0.3125 -4.296875 0.3125 -4 C 0.3125 -3.6875 0.5625 -3.6875 0.71875 -3.6875 L 1.53125 -3.6875 L 1.53125 -0.609375 L 0.71875 -0.609375 C 0.5625 -0.609375 0.3125 -0.609375 0.3125 -0.3125 C 0.3125 0 0.5625 0 0.71875 0 L 3.3125 0 C 3.46875 0 3.734375 0 3.734375 -0.296875 C 3.734375 -0.609375 3.46875 -0.609375 3.3125 -0.609375 L 2.21875 -0.609375 Z M 2.21875 -1.859375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-5"> +<path style="stroke:none;" d="M 3.65625 -0.3125 C 3.875 -0.015625 4.34375 0 4.71875 0 C 5 0 5.21875 0 5.21875 -0.3125 C 5.21875 -0.609375 4.96875 -0.609375 4.828125 -0.609375 C 4.40625 -0.609375 4.3125 -0.65625 4.234375 -0.6875 L 4.234375 -2.84375 C 4.234375 -3.546875 3.6875 -4.390625 2.25 -4.390625 C 1.828125 -4.390625 0.8125 -4.390625 0.8125 -3.65625 C 0.8125 -3.359375 1.015625 -3.203125 1.25 -3.203125 C 1.40625 -3.203125 1.6875 -3.296875 1.6875 -3.65625 C 1.6875 -3.734375 1.703125 -3.75 1.90625 -3.765625 C 2.046875 -3.78125 2.171875 -3.78125 2.265625 -3.78125 C 3.015625 -3.78125 3.53125 -3.46875 3.53125 -2.765625 C 1.78125 -2.734375 0.546875 -2.234375 0.546875 -1.28125 C 0.546875 -0.59375 1.171875 0.0625 2.1875 0.0625 C 2.5625 0.0625 3.1875 -0.015625 3.65625 -0.3125 Z M 3.53125 -2.171875 L 3.53125 -1.328125 C 3.53125 -1.109375 3.53125 -0.890625 3.15625 -0.71875 C 2.796875 -0.546875 2.34375 -0.546875 2.265625 -0.546875 C 1.640625 -0.546875 1.234375 -0.890625 1.234375 -1.28125 C 1.234375 -1.765625 2.09375 -2.140625 3.53125 -2.171875 Z M 3.53125 -2.171875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-6"> +<path style="stroke:none;" d="M 2.21875 -3.6875 L 3.84375 -3.6875 C 4 -3.6875 4.25 -3.6875 4.25 -3.984375 C 4.25 -4.296875 4 -4.296875 3.84375 -4.296875 L 2.21875 -4.296875 L 2.21875 -5.109375 C 2.21875 -5.296875 2.21875 -5.515625 1.875 -5.515625 C 1.53125 -5.515625 1.53125 -5.3125 1.53125 -5.109375 L 1.53125 -4.296875 L 0.65625 -4.296875 C 0.5 -4.296875 0.25 -4.296875 0.25 -3.984375 C 0.25 -3.6875 0.5 -3.6875 0.640625 -3.6875 L 1.53125 -3.6875 L 1.53125 -1.25 C 1.53125 -0.296875 2.203125 0.0625 2.9375 0.0625 C 3.671875 0.0625 4.46875 -0.375 4.46875 -1.25 C 4.46875 -1.4375 4.46875 -1.640625 4.125 -1.640625 C 3.796875 -1.640625 3.78125 -1.4375 3.78125 -1.265625 C 3.78125 -0.640625 3.203125 -0.546875 2.984375 -0.546875 C 2.21875 -0.546875 2.21875 -1.0625 2.21875 -1.3125 Z M 2.21875 -3.6875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-7"> +<path style="stroke:none;" d="M 4.203125 -2.703125 C 4.3125 -2.703125 4.671875 -2.703125 4.671875 -3.046875 C 4.671875 -3.40625 4.3125 -3.40625 4.203125 -3.40625 L 1.03125 -3.40625 C 0.90625 -3.40625 0.5625 -3.40625 0.5625 -3.046875 C 0.5625 -2.703125 0.90625 -2.703125 1.03125 -2.703125 Z M 4.203125 -2.703125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-8"> +<path style="stroke:none;" d="M 4.25 -2.921875 C 4.25 -3.921875 3.75 -4.359375 2.953125 -4.359375 C 2.296875 -4.359375 1.84375 -4.015625 1.65625 -3.828125 L 1.65625 -5.6875 C 1.65625 -5.984375 1.59375 -6.09375 1.25 -6.09375 L 0.53125 -6.09375 C 0.375 -6.09375 0.125 -6.09375 0.125 -5.78125 C 0.125 -5.484375 0.375 -5.484375 0.515625 -5.484375 L 0.96875 -5.484375 L 0.96875 -0.609375 L 0.53125 -0.609375 C 0.375 -0.609375 0.125 -0.609375 0.125 -0.296875 C 0.125 0 0.375 0 0.515625 0 L 2.109375 0 C 2.25 0 2.5 0 2.5 -0.296875 C 2.5 -0.609375 2.25 -0.609375 2.09375 -0.609375 L 1.65625 -0.609375 L 1.65625 -2.375 C 1.65625 -3.375 2.390625 -3.75 2.90625 -3.75 C 3.421875 -3.75 3.5625 -3.46875 3.5625 -2.875 L 3.5625 -0.609375 L 3.1875 -0.609375 C 3.015625 -0.609375 2.765625 -0.609375 2.765625 -0.296875 C 2.765625 0 3.046875 0 3.1875 0 L 4.703125 0 C 4.84375 0 5.109375 0 5.109375 -0.296875 C 5.109375 -0.609375 4.859375 -0.609375 4.6875 -0.609375 L 4.25 -0.609375 Z M 4.25 -2.921875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-9"> +<path style="stroke:none;" d="M 3.5625 -0.5 C 3.5625 -0.140625 3.5625 0 3.96875 0 L 4.6875 0 C 4.859375 0 5.109375 0 5.109375 -0.3125 C 5.109375 -0.609375 4.84375 -0.609375 4.703125 -0.609375 L 4.25 -0.609375 L 4.25 -5.6875 C 4.25 -5.984375 4.203125 -6.09375 3.859375 -6.09375 L 3.125 -6.09375 C 2.96875 -6.09375 2.71875 -6.09375 2.71875 -5.78125 C 2.71875 -5.484375 2.984375 -5.484375 3.125 -5.484375 L 3.5625 -5.484375 L 3.5625 -3.90625 C 3.234375 -4.203125 2.828125 -4.359375 2.40625 -4.359375 C 1.3125 -4.359375 0.359375 -3.40625 0.359375 -2.140625 C 0.359375 -0.90625 1.25 0.0625 2.3125 0.0625 C 2.875 0.0625 3.296875 -0.203125 3.5625 -0.5 Z M 3.5625 -2.640625 L 3.5625 -1.9375 C 3.5625 -1.375 3.125 -0.546875 2.359375 -0.546875 C 1.640625 -0.546875 1.046875 -1.25 1.046875 -2.140625 C 1.046875 -3.09375 1.75 -3.75 2.4375 -3.75 C 3.078125 -3.75 3.5625 -3.1875 3.5625 -2.640625 Z M 3.5625 -2.640625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-10"> +<path style="stroke:none;" d="M 2.515625 -3.6875 L 3.734375 -3.6875 C 3.890625 -3.6875 4.140625 -3.6875 4.140625 -3.984375 C 4.140625 -4.296875 3.890625 -4.296875 3.734375 -4.296875 L 2.515625 -4.296875 L 2.515625 -4.765625 C 2.515625 -5.546875 3.1875 -5.546875 3.484375 -5.546875 C 3.484375 -5.5 3.578125 -5.109375 3.921875 -5.109375 C 4.125 -5.109375 4.359375 -5.28125 4.359375 -5.546875 C 4.359375 -6.15625 3.5625 -6.15625 3.40625 -6.15625 C 2.609375 -6.15625 1.828125 -5.6875 1.828125 -4.828125 L 1.828125 -4.296875 L 0.84375 -4.296875 C 0.671875 -4.296875 0.421875 -4.296875 0.421875 -3.984375 C 0.421875 -3.6875 0.671875 -3.6875 0.828125 -3.6875 L 1.828125 -3.6875 L 1.828125 -0.609375 L 0.828125 -0.609375 C 0.671875 -0.609375 0.421875 -0.609375 0.421875 -0.3125 C 0.421875 0 0.671875 0 0.828125 0 L 3.53125 0 C 3.671875 0 3.9375 0 3.9375 -0.296875 C 3.9375 -0.609375 3.671875 -0.609375 3.53125 -0.609375 L 2.515625 -0.609375 Z M 2.515625 -3.6875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-11"> +<path style="stroke:none;" d="M 4.65625 -2.15625 C 4.65625 -3.40625 3.734375 -4.390625 2.609375 -4.390625 C 1.5 -4.390625 0.5625 -3.40625 0.5625 -2.15625 C 0.5625 -0.890625 1.515625 0.0625 2.609375 0.0625 C 3.703125 0.0625 4.65625 -0.890625 4.65625 -2.15625 Z M 2.609375 -0.546875 C 1.875 -0.546875 1.25 -1.296875 1.25 -2.21875 C 1.25 -3.125 1.90625 -3.78125 2.609375 -3.78125 C 3.328125 -3.78125 3.96875 -3.125 3.96875 -2.21875 C 3.96875 -1.296875 3.34375 -0.546875 2.609375 -0.546875 Z M 2.609375 -0.546875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-12"> +<path style="stroke:none;" d="M 3.234375 -0.625 C 3.234375 -0.984375 2.9375 -1.25 2.625 -1.25 C 2.25 -1.25 2 -0.9375 2 -0.625 C 2 -0.265625 2.296875 0 2.609375 0 C 2.984375 0 3.234375 -0.3125 3.234375 -0.625 Z M 3.234375 -0.625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-13"> +<path style="stroke:none;" d="M 2.96875 -2.546875 C 2.734375 -2.578125 2.546875 -2.609375 2.296875 -2.65625 C 2 -2.703125 1.328125 -2.828125 1.328125 -3.203125 C 1.328125 -3.46875 1.640625 -3.78125 2.59375 -3.78125 C 3.421875 -3.78125 3.5625 -3.484375 3.59375 -3.21875 C 3.59375 -3.046875 3.625 -2.875 3.921875 -2.875 C 4.28125 -2.875 4.28125 -3.09375 4.28125 -3.296875 L 4.28125 -3.984375 C 4.28125 -4.140625 4.28125 -4.390625 3.984375 -4.390625 C 3.734375 -4.390625 3.703125 -4.25 3.671875 -4.171875 C 3.234375 -4.390625 2.796875 -4.390625 2.609375 -4.390625 C 0.953125 -4.390625 0.71875 -3.5625 0.71875 -3.203125 C 0.71875 -2.296875 1.765625 -2.125 2.6875 -1.984375 C 3.171875 -1.90625 3.96875 -1.78125 3.96875 -1.25 C 3.96875 -0.875 3.59375 -0.546875 2.6875 -0.546875 C 2.21875 -0.546875 1.671875 -0.65625 1.421875 -1.4375 C 1.359375 -1.609375 1.328125 -1.71875 1.0625 -1.71875 C 0.71875 -1.71875 0.71875 -1.515625 0.71875 -1.3125 L 0.71875 -0.34375 C 0.71875 -0.1875 0.71875 0.0625 1.015625 0.0625 C 1.109375 0.0625 1.265625 0.046875 1.390625 -0.3125 C 1.875 0.046875 2.40625 0.0625 2.6875 0.0625 C 4.25 0.0625 4.578125 -0.765625 4.578125 -1.25 C 4.578125 -2.28125 3.296875 -2.5 2.96875 -2.546875 Z M 2.96875 -2.546875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-14"> +<path style="stroke:none;" d="M 4.640625 -1.09375 C 4.640625 -1.359375 4.359375 -1.359375 4.296875 -1.359375 C 4.140625 -1.359375 4.03125 -1.34375 3.96875 -1.140625 C 3.90625 -1.015625 3.71875 -0.546875 2.984375 -0.546875 C 2.140625 -0.546875 1.421875 -1.25 1.421875 -2.15625 C 1.421875 -2.625 1.6875 -3.78125 3.046875 -3.78125 C 3.25 -3.78125 3.640625 -3.78125 3.640625 -3.6875 C 3.65625 -3.34375 3.84375 -3.203125 4.078125 -3.203125 C 4.3125 -3.203125 4.53125 -3.375 4.53125 -3.65625 C 4.53125 -4.390625 3.484375 -4.390625 3.046875 -4.390625 C 1.328125 -4.390625 0.734375 -3.03125 0.734375 -2.15625 C 0.734375 -0.953125 1.671875 0.0625 2.921875 0.0625 C 4.3125 0.0625 4.640625 -0.921875 4.640625 -1.09375 Z M 4.640625 -1.09375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-15"> +<path style="stroke:none;" d="M 1.09375 -4 C 1.0625 -4.296875 0.875 -4.296875 0.6875 -4.296875 L 0.375 -4.296875 C 0.21875 -4.296875 -0.046875 -4.296875 -0.046875 -4 C -0.046875 -3.6875 0.171875 -3.6875 0.53125 -3.6875 L 0.53125 -0.609375 C 0.171875 -0.609375 -0.046875 -0.609375 -0.046875 -0.296875 C -0.046875 0 0.234375 0 0.375 0 L 1.25 0 C 1.390625 0 1.65625 0 1.65625 -0.296875 C 1.65625 -0.609375 1.453125 -0.609375 1.09375 -0.609375 L 1.09375 -2.390625 C 1.09375 -3.28125 1.5 -3.75 1.90625 -3.75 C 2.140625 -3.75 2.265625 -3.578125 2.265625 -2.9375 L 2.265625 -0.609375 C 2.078125 -0.609375 1.828125 -0.609375 1.828125 -0.296875 C 1.828125 0 2.109375 0 2.25 0 L 2.984375 0 C 3.140625 0 3.40625 0 3.40625 -0.296875 C 3.40625 -0.609375 3.1875 -0.609375 2.828125 -0.609375 L 2.828125 -2.390625 C 2.828125 -3.28125 3.234375 -3.75 3.65625 -3.75 C 3.875 -3.75 4.015625 -3.578125 4.015625 -2.9375 L 4.015625 -0.609375 C 3.828125 -0.609375 3.578125 -0.609375 3.578125 -0.296875 C 3.578125 0 3.84375 0 3.984375 0 L 4.734375 0 C 4.890625 0 5.140625 0 5.140625 -0.296875 C 5.140625 -0.609375 4.9375 -0.609375 4.578125 -0.609375 L 4.578125 -3.015625 C 4.578125 -3.21875 4.578125 -4.359375 3.6875 -4.359375 C 3.390625 -4.359375 2.984375 -4.234375 2.703125 -3.84375 C 2.546875 -4.171875 2.265625 -4.359375 1.9375 -4.359375 C 1.625 -4.359375 1.328125 -4.21875 1.09375 -4 Z M 1.09375 -4 "/> +</symbol> +<symbol overflow="visible" id="glyph0-16"> +<path style="stroke:none;" d="M 4.28125 -3.6875 L 4.578125 -3.6875 C 4.734375 -3.6875 4.984375 -3.6875 4.984375 -3.984375 C 4.984375 -4.296875 4.75 -4.296875 4.578125 -4.296875 L 3.421875 -4.296875 C 3.265625 -4.296875 3.015625 -4.296875 3.015625 -4 C 3.015625 -3.6875 3.265625 -3.6875 3.421875 -3.6875 L 3.703125 -3.6875 L 2.984375 -1.5625 C 2.84375 -1.203125 2.796875 -1.015625 2.71875 -0.703125 C 2.65625 -0.890625 2.578125 -1.109375 2.5 -1.296875 L 1.578125 -3.6875 L 1.828125 -3.6875 C 1.96875 -3.6875 2.21875 -3.6875 2.21875 -3.984375 C 2.21875 -4.296875 1.984375 -4.296875 1.828125 -4.296875 L 0.65625 -4.296875 C 0.5 -4.296875 0.265625 -4.296875 0.265625 -3.984375 C 0.265625 -3.6875 0.515625 -3.6875 0.65625 -3.6875 L 0.96875 -3.6875 L 2.375 -0.125 C 2.421875 -0.03125 2.421875 -0.015625 2.421875 0 C 2.421875 0.015625 2.171875 0.84375 2.046875 1.09375 C 1.75 1.640625 1.390625 1.65625 1.25 1.671875 C 1.25 1.65625 1.296875 1.578125 1.296875 1.453125 C 1.296875 1.203125 1.109375 1.015625 0.875 1.015625 C 0.59375 1.015625 0.421875 1.203125 0.421875 1.453125 C 0.421875 1.875 0.765625 2.265625 1.25 2.265625 C 2.25 2.265625 2.703125 0.953125 2.734375 0.84375 Z M 4.28125 -3.6875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-17"> +<path style="stroke:none;" d="M 1.65625 -2.625 C 1.65625 -3.21875 2.234375 -3.75 2.859375 -3.75 C 3.59375 -3.75 4.171875 -3.015625 4.171875 -2.15625 C 4.171875 -1.203125 3.484375 -0.546875 2.78125 -0.546875 C 2 -0.546875 1.65625 -1.421875 1.65625 -1.90625 Z M 1.65625 -0.453125 C 2.0625 -0.03125 2.5 0.0625 2.8125 0.0625 C 3.890625 0.0625 4.859375 -0.890625 4.859375 -2.15625 C 4.859375 -3.375 3.984375 -4.359375 2.921875 -4.359375 C 2.4375 -4.359375 2 -4.171875 1.65625 -3.875 C 1.65625 -4.15625 1.640625 -4.296875 1.25 -4.296875 L 0.53125 -4.296875 C 0.375 -4.296875 0.125 -4.296875 0.125 -3.984375 C 0.125 -3.6875 0.375 -3.6875 0.515625 -3.6875 L 0.96875 -3.6875 L 0.96875 1.609375 L 0.53125 1.609375 C 0.375 1.609375 0.125 1.609375 0.125 1.90625 C 0.125 2.21875 0.375 2.21875 0.515625 2.21875 L 2.109375 2.21875 C 2.25 2.21875 2.5 2.21875 2.5 1.90625 C 2.5 1.609375 2.25 1.609375 2.09375 1.609375 L 1.65625 1.609375 Z M 1.65625 -0.453125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-18"> +<path style="stroke:none;" d="M 2.953125 -5.6875 C 2.953125 -5.984375 2.90625 -6.09375 2.5625 -6.09375 L 0.984375 -6.09375 C 0.828125 -6.09375 0.578125 -6.09375 0.578125 -5.78125 C 0.578125 -5.484375 0.84375 -5.484375 0.984375 -5.484375 L 2.265625 -5.484375 L 2.265625 -0.609375 L 0.984375 -0.609375 C 0.828125 -0.609375 0.578125 -0.609375 0.578125 -0.296875 C 0.578125 0 0.84375 0 0.984375 0 L 4.25 0 C 4.40625 0 4.65625 0 4.65625 -0.296875 C 4.65625 -0.609375 4.421875 -0.609375 4.25 -0.609375 L 2.953125 -0.609375 Z M 2.953125 -5.6875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-0"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph1-1"> +<path style="stroke:none;" d="M 2.1875 -6.921875 L 0.953125 -6.921875 L 0.953125 0 L 1.734375 0 L 1.734375 -6.203125 L 1.75 -6.203125 C 1.9375 -5.796875 2.359375 -4.953125 2.40625 -4.84375 L 4.859375 0 L 6.09375 0 L 6.09375 -6.921875 L 5.3125 -6.921875 L 5.3125 -0.703125 L 5.296875 -0.703125 C 5.109375 -1.109375 4.6875 -1.96875 4.640625 -2.078125 Z M 2.1875 -6.921875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-2"> +<path style="stroke:none;" d="M 4.125 -2.1875 C 4.125 -2.515625 4.109375 -3.265625 3.734375 -3.875 C 3.3125 -4.484375 2.71875 -4.59375 2.359375 -4.59375 C 1.25 -4.59375 0.34375 -3.53125 0.34375 -2.25 C 0.34375 -0.9375 1.3125 0.109375 2.5 0.109375 C 3.125 0.109375 3.703125 -0.125 4.09375 -0.40625 L 4.03125 -1.0625 C 3.40625 -0.53125 2.734375 -0.5 2.515625 -0.5 C 1.71875 -0.5 1.078125 -1.203125 1.046875 -2.1875 Z M 1.09375 -2.734375 C 1.25 -3.484375 1.78125 -3.984375 2.359375 -3.984375 C 2.875 -3.984375 3.421875 -3.65625 3.5625 -2.734375 Z M 1.09375 -2.734375 "/> +</symbol> +<symbol overflow="visible" id="glyph1-3"> +<path style="stroke:none;" d="M 1.75 -3.84375 L 3.15625 -3.84375 L 3.15625 -4.421875 L 1.75 -4.421875 L 1.75 -5.6875 L 1.0625 -5.6875 L 1.0625 -4.421875 L 0.1875 -4.421875 L 0.1875 -3.84375 L 1.03125 -3.84375 L 1.03125 -1.1875 C 1.03125 -0.59375 1.171875 0.109375 1.859375 0.109375 C 2.546875 0.109375 3.0625 -0.140625 3.3125 -0.265625 L 3.15625 -0.859375 C 2.890625 -0.640625 2.578125 -0.53125 2.25 -0.53125 C 1.890625 -0.53125 1.75 -0.828125 1.75 -1.359375 Z M 1.75 -3.84375 "/> +</symbol> +<symbol overflow="visible" id="glyph1-4"> +<path style="stroke:none;" d="M 1.5625 -6.921875 L 0.8125 -6.921875 L 0.8125 0 L 1.5625 0 Z M 1.5625 -6.921875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-5"> +<path style="stroke:none;" d="M 1.625 -6.78125 L 0.734375 -6.78125 L 0.734375 -5.890625 L 1.625 -5.890625 Z M 1.5625 -4.421875 L 0.8125 -4.421875 L 0.8125 0 L 1.5625 0 Z M 1.5625 -4.421875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-6"> +<path style="stroke:none;" d="M 3.421875 -4.28125 C 2.90625 -4.515625 2.5 -4.59375 1.984375 -4.59375 C 1.734375 -4.59375 0.328125 -4.59375 0.328125 -3.296875 C 0.328125 -2.796875 0.625 -2.484375 0.875 -2.296875 C 1.171875 -2.078125 1.390625 -2.03125 1.9375 -1.921875 C 2.296875 -1.859375 2.875 -1.734375 2.875 -1.203125 C 2.875 -0.515625 2.09375 -0.515625 1.9375 -0.515625 C 1.140625 -0.515625 0.578125 -0.890625 0.40625 -1 L 0.28125 -0.328125 C 0.59375 -0.171875 1.140625 0.109375 1.953125 0.109375 C 2.140625 0.109375 2.6875 0.109375 3.109375 -0.203125 C 3.421875 -0.453125 3.59375 -0.84375 3.59375 -1.28125 C 3.59375 -1.828125 3.21875 -2.15625 3.203125 -2.1875 C 2.8125 -2.546875 2.546875 -2.609375 2.046875 -2.6875 C 1.5 -2.796875 1.03125 -2.90625 1.03125 -3.390625 C 1.03125 -4 1.75 -4 1.890625 -4 C 2.203125 -4 2.734375 -3.96875 3.296875 -3.625 Z M 3.421875 -4.28125 "/> +</symbol> +<symbol overflow="visible" id="glyph1-7"> +<path style="stroke:none;" d="M 4.640625 -6.640625 C 4.09375 -6.96875 3.53125 -7.140625 2.8125 -7.140625 C 1.421875 -7.140625 0.5625 -6.15625 0.5625 -5.171875 C 0.5625 -4.75 0.703125 -4.328125 1.09375 -3.90625 C 1.515625 -3.453125 1.953125 -3.34375 2.546875 -3.203125 C 3.390625 -2.984375 3.484375 -2.953125 3.765625 -2.71875 C 3.96875 -2.546875 4.1875 -2.21875 4.1875 -1.78125 C 4.1875 -1.125 3.640625 -0.46875 2.734375 -0.46875 C 2.328125 -0.46875 1.421875 -0.5625 0.59375 -1.28125 L 0.4375 -0.46875 C 1.3125 0.078125 2.109375 0.21875 2.734375 0.21875 C 4.0625 0.21875 4.96875 -0.78125 4.96875 -1.890625 C 4.96875 -2.53125 4.671875 -3.015625 4.453125 -3.25 C 3.984375 -3.75 3.65625 -3.84375 2.734375 -4.0625 C 2.15625 -4.203125 2 -4.25 1.6875 -4.5 C 1.625 -4.5625 1.34375 -4.859375 1.34375 -5.296875 C 1.34375 -5.875 1.890625 -6.484375 2.796875 -6.484375 C 3.640625 -6.484375 4.109375 -6.15625 4.484375 -5.84375 Z M 4.640625 -6.640625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-8"> +<path style="stroke:none;" d="M 4.09375 -4.171875 C 3.5 -4.5 3.15625 -4.59375 2.546875 -4.59375 C 1.171875 -4.59375 0.359375 -3.390625 0.359375 -2.21875 C 0.359375 -0.984375 1.265625 0.109375 2.515625 0.109375 C 3.046875 0.109375 3.59375 -0.03125 4.140625 -0.40625 L 4.078125 -1.0625 C 3.5625 -0.671875 3.03125 -0.53125 2.515625 -0.53125 C 1.6875 -0.53125 1.140625 -1.25 1.140625 -2.21875 C 1.140625 -3 1.5 -3.953125 2.5625 -3.953125 C 3.078125 -3.953125 3.421875 -3.875 3.96875 -3.515625 Z M 4.09375 -4.171875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-9"> +<path style="stroke:none;" d="M 4.34375 -2.96875 C 4.34375 -3.625 4.1875 -4.53125 2.96875 -4.53125 C 2.359375 -4.53125 1.875 -4.234375 1.5625 -3.8125 L 1.5625 -6.921875 L 0.8125 -6.921875 L 0.8125 0 L 1.578125 0 L 1.578125 -2.4375 C 1.578125 -3.09375 1.828125 -3.921875 2.59375 -3.921875 C 3.546875 -3.921875 3.5625 -3.21875 3.5625 -2.90625 L 3.5625 0 L 4.34375 0 Z M 4.34375 -2.96875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-10"> +<path style="stroke:none;" d="M 7.109375 -2.96875 C 7.109375 -3.640625 6.953125 -4.53125 5.734375 -4.53125 C 5.140625 -4.53125 4.625 -4.25 4.25 -3.71875 C 4 -4.46875 3.296875 -4.53125 2.984375 -4.53125 C 2.265625 -4.53125 1.796875 -4.125 1.53125 -3.765625 L 1.53125 -4.484375 L 0.8125 -4.484375 L 0.8125 0 L 1.578125 0 L 1.578125 -2.4375 C 1.578125 -3.125 1.859375 -3.921875 2.59375 -3.921875 C 3.515625 -3.921875 3.5625 -3.28125 3.5625 -2.90625 L 3.5625 0 L 4.34375 0 L 4.34375 -2.4375 C 4.34375 -3.125 4.609375 -3.921875 5.359375 -3.921875 C 6.28125 -3.921875 6.328125 -3.28125 6.328125 -2.90625 L 6.328125 0 L 7.109375 0 Z M 7.109375 -2.96875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-11"> +<path style="stroke:none;" d="M 3.984375 -2.875 C 3.984375 -3.890625 3.25 -4.59375 2.328125 -4.59375 C 1.6875 -4.59375 1.234375 -4.4375 0.765625 -4.171875 L 0.828125 -3.515625 C 1.34375 -3.875 1.84375 -4 2.328125 -4 C 2.796875 -4 3.203125 -3.609375 3.203125 -2.875 L 3.203125 -2.4375 C 1.703125 -2.421875 0.4375 -2 0.4375 -1.125 C 0.4375 -0.703125 0.703125 0.109375 1.578125 0.109375 C 1.71875 0.109375 2.65625 0.09375 3.234375 -0.359375 L 3.234375 0 L 3.984375 0 Z M 3.203125 -1.3125 C 3.203125 -1.125 3.203125 -0.875 2.859375 -0.6875 C 2.578125 -0.515625 2.1875 -0.5 2.078125 -0.5 C 1.609375 -0.5 1.15625 -0.734375 1.15625 -1.140625 C 1.15625 -1.84375 2.765625 -1.90625 3.203125 -1.9375 Z M 3.203125 -1.3125 "/> +</symbol> +<symbol overflow="visible" id="glyph1-12"> +<path style="stroke:none;" d="M 6.109375 -6.921875 L 5.21875 -6.921875 L 5.21875 -3.890625 L 1.828125 -3.890625 L 1.828125 -6.921875 L 0.9375 -6.921875 L 0.9375 0 L 1.828125 0 L 1.828125 -3.296875 L 5.21875 -3.296875 L 5.21875 0 L 6.109375 0 Z M 6.109375 -6.921875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-13"> +<path style="stroke:none;" d="M 4.328125 -6.921875 L 3.578125 -6.921875 L 3.578125 -3.984375 C 3.046875 -4.421875 2.5 -4.53125 2.125 -4.53125 C 1.140625 -4.53125 0.359375 -3.5 0.359375 -2.21875 C 0.359375 -0.90625 1.125 0.109375 2.078125 0.109375 C 2.40625 0.109375 2.984375 0.015625 3.546875 -0.515625 L 3.546875 0 L 4.328125 0 Z M 3.546875 -1.390625 C 3.546875 -1.25 3.53125 -1.0625 3.21875 -0.78125 C 2.984375 -0.578125 2.734375 -0.5 2.484375 -0.5 C 1.859375 -0.5 1.140625 -0.96875 1.140625 -2.203125 C 1.140625 -3.515625 2 -3.921875 2.578125 -3.921875 C 3.03125 -3.921875 3.328125 -3.703125 3.546875 -3.375 Z M 3.546875 -1.390625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-14"> +<path style="stroke:none;" d="M 1.5625 -2.140625 C 1.5625 -3.125 2.28125 -3.84375 3.265625 -3.875 L 3.265625 -4.53125 C 2.375 -4.53125 1.828125 -4.03125 1.515625 -3.578125 L 1.515625 -4.484375 L 0.8125 -4.484375 L 0.8125 0 L 1.5625 0 Z M 1.5625 -2.140625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-15"> +<path style="stroke:none;" d="M 3.84375 -6.21875 L 4.71875 -6.21875 C 4.84375 -6.21875 4.96875 -6.203125 5.078125 -6.203125 L 6.421875 -6.203125 L 6.421875 -6.859375 L 0.359375 -6.859375 L 0.359375 -6.203125 L 1.6875 -6.203125 C 1.8125 -6.203125 1.9375 -6.21875 2.046875 -6.21875 L 2.953125 -6.21875 L 2.953125 0 L 3.84375 0 Z M 3.84375 -6.21875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-16"> +<path style="stroke:none;" d="M 1.59375 -0.453125 C 1.90625 -0.171875 2.34375 0.109375 2.9375 0.109375 C 3.90625 0.109375 4.78125 -0.875 4.78125 -2.21875 C 4.78125 -3.421875 4.15625 -4.53125 3.203125 -4.53125 C 2.609375 -4.53125 2.03125 -4.328125 1.5625 -3.9375 L 1.5625 -4.421875 L 0.8125 -4.421875 L 0.8125 1.9375 L 1.59375 1.9375 Z M 1.59375 -3.3125 C 1.828125 -3.671875 2.21875 -3.890625 2.65625 -3.890625 C 3.40625 -3.890625 4 -3.140625 4 -2.21875 C 4 -1.203125 3.296875 -0.5 2.546875 -0.5 C 2.15625 -0.5 1.890625 -0.703125 1.6875 -0.96875 C 1.59375 -1.109375 1.59375 -1.140625 1.59375 -1.3125 Z M 1.59375 -3.3125 "/> +</symbol> +</g> +<clipPath id="clip1"> + <path d="M 89 203 L 189.796875 203 L 189.796875 283 L 89 283 Z M 89 203 "/> +</clipPath> +<clipPath id="clip2"> + <path d="M 103 311 L 184 311 L 184 379.398438 L 103 379.398438 Z M 103 311 "/> +</clipPath> +</defs> +<g id="surface1"> +<g clip-path="url(#clip1)" clip-rule="nonzero"> +<path style="fill:none;stroke-width:0.79701;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 38.56375 28.347094 L -38.565156 28.347094 C -40.764375 28.347094 -42.549531 26.561937 -42.549531 24.362719 L -42.549531 -24.359938 C -42.549531 -26.563063 -40.764375 -28.348219 -38.565156 -28.348219 L 38.56375 -28.348219 C 40.762969 -28.348219 42.548125 -26.563063 42.548125 -24.359938 L 42.548125 24.362719 C 42.548125 26.561937 40.762969 28.347094 38.56375 28.347094 Z M 38.56375 28.347094 " transform="matrix(1,0,0,-1,143.53,243.351)"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="104.302" y="245.288"/> + <use xlink:href="#glyph0-2" x="109.532365" y="245.288"/> + <use xlink:href="#glyph0-3" x="114.76273" y="245.288"/> + <use xlink:href="#glyph0-2" x="119.993095" y="245.288"/> + <use xlink:href="#glyph0-4" x="125.22346" y="245.288"/> + <use xlink:href="#glyph0-5" x="130.453825" y="245.288"/> + <use xlink:href="#glyph0-6" x="135.68419" y="245.288"/> + <use xlink:href="#glyph0-2" x="140.914555" y="245.288"/> + <use xlink:href="#glyph0-7" x="146.14492" y="245.288"/> + <use xlink:href="#glyph0-8" x="151.375285" y="245.288"/> + <use xlink:href="#glyph0-2" x="156.60565" y="245.288"/> + <use xlink:href="#glyph0-5" x="161.836015" y="245.288"/> + <use xlink:href="#glyph0-9" x="167.06638" y="245.288"/> + <use xlink:href="#glyph0-2" x="172.296745" y="245.288"/> + <use xlink:href="#glyph0-4" x="177.52711" y="245.288"/> +</g> +<path style="fill:none;stroke-width:0.79701;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 24.360625 135.651781 L -24.362031 135.651781 C -26.56125 135.651781 -28.346406 133.866625 -28.346406 131.667406 L -28.346406 82.94475 C -28.346406 80.741625 -26.56125 78.956469 -24.362031 78.956469 L 24.360625 78.956469 C 26.56375 78.956469 28.345 80.741625 28.345 82.94475 L 28.345 131.667406 C 28.345 133.866625 26.56375 135.651781 24.360625 135.651781 Z M 24.360625 135.651781 " transform="matrix(1,0,0,-1,143.53,243.351)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="129.901" y="133.529"/> + <use xlink:href="#glyph1-2" x="136.95751" y="133.529"/> + <use xlink:href="#glyph1-3" x="141.384889" y="133.529"/> + <use xlink:href="#glyph1-4" x="144.982384" y="133.529"/> + <use xlink:href="#glyph1-5" x="147.362449" y="133.529"/> + <use xlink:href="#glyph1-6" x="149.742514" y="133.529"/> + <use xlink:href="#glyph1-3" x="153.561179" y="133.529"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-10" x="125.224" y="145.485"/> + <use xlink:href="#glyph0-11" x="130.454365" y="145.485"/> + <use xlink:href="#glyph0-11" x="135.68473" y="145.485"/> + <use xlink:href="#glyph0-12" x="140.915095" y="145.485"/> + <use xlink:href="#glyph0-3" x="146.14546" y="145.485"/> + <use xlink:href="#glyph0-2" x="151.375825" y="145.485"/> + <use xlink:href="#glyph0-6" x="156.60619" y="145.485"/> +</g> +<path style="fill:none;stroke-width:0.79701;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 24.360625 242.956469 L -24.362031 242.956469 C -26.56125 242.956469 -28.346406 241.171312 -28.346406 238.972094 L -28.346406 190.245531 C -28.346406 188.046312 -26.56125 186.261156 -24.362031 186.261156 L 24.360625 186.261156 C 26.56375 186.261156 28.345 188.046312 28.345 190.245531 L 28.345 238.972094 C 28.345 241.171312 26.56375 242.956469 24.360625 242.956469 Z M 24.360625 242.956469 " transform="matrix(1,0,0,-1,143.53,243.351)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-7" x="122.207" y="26.226"/> + <use xlink:href="#glyph1-8" x="127.742221" y="26.226"/> + <use xlink:href="#glyph1-9" x="132.1696" y="26.226"/> + <use xlink:href="#glyph1-2" x="137.317275" y="26.226"/> + <use xlink:href="#glyph1-10" x="141.744655" y="26.226"/> + <use xlink:href="#glyph1-11" x="149.658944" y="26.226"/> + <use xlink:href="#glyph1-3" x="154.44697" y="26.226"/> + <use xlink:href="#glyph1-5" x="158.044465" y="26.226"/> + <use xlink:href="#glyph1-8" x="160.42453" y="26.226"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-10" x="125.224" y="38.181"/> + <use xlink:href="#glyph0-11" x="130.454365" y="38.181"/> + <use xlink:href="#glyph0-11" x="135.68473" y="38.181"/> + <use xlink:href="#glyph0-12" x="140.915095" y="38.181"/> + <use xlink:href="#glyph0-13" x="146.14546" y="38.181"/> + <use xlink:href="#glyph0-14" x="151.375825" y="38.181"/> + <use xlink:href="#glyph0-8" x="156.60619" y="38.181"/> +</g> +<g clip-path="url(#clip2)" clip-rule="nonzero"> +<path style="fill:none;stroke-width:0.79701;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 24.360625 -78.957594 L -24.362031 -78.957594 C -26.56125 -78.957594 -28.346406 -80.74275 -28.346406 -82.941969 L -28.346406 -131.664625 C -28.346406 -133.86775 -26.56125 -135.652906 -24.362031 -135.652906 L 24.360625 -135.652906 C 26.56375 -135.652906 28.345 -133.86775 28.345 -131.664625 L 28.345 -82.941969 C 28.345 -80.74275 26.56375 -78.957594 24.360625 -78.957594 Z M 24.360625 -78.957594 " transform="matrix(1,0,0,-1,143.53,243.351)"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-12" x="128.904" y="348.136"/> + <use xlink:href="#glyph1-2" x="135.96051" y="348.136"/> + <use xlink:href="#glyph1-11" x="140.387889" y="348.136"/> + <use xlink:href="#glyph1-13" x="145.175915" y="348.136"/> + <use xlink:href="#glyph1-2" x="150.32359" y="348.136"/> + <use xlink:href="#glyph1-14" x="154.750969" y="348.136"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-10" x="130.454" y="360.091"/> + <use xlink:href="#glyph0-11" x="135.684365" y="360.091"/> + <use xlink:href="#glyph0-11" x="140.91473" y="360.091"/> + <use xlink:href="#glyph0-12" x="146.145095" y="360.091"/> + <use xlink:href="#glyph0-8" x="151.37546" y="360.091"/> +</g> +<path style="fill:none;stroke-width:0.79701;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -82.944063 135.651781 L -139.147188 135.651781 C -141.350313 135.651781 -143.131563 133.866625 -143.131563 131.667406 L -143.131563 82.94475 C -143.131563 80.741625 -141.350313 78.956469 -139.147188 78.956469 L -82.944063 78.956469 C -80.740938 78.956469 -78.955781 80.741625 -78.955781 82.94475 L -78.955781 131.667406 C -78.955781 133.866625 -80.740938 135.651781 -82.944063 135.651781 Z M -82.944063 135.651781 " transform="matrix(1,0,0,-1,143.53,243.351)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-15" x="13.169" y="132.422"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-2" x="19.12265" y="132.422"/> + <use xlink:href="#glyph1-10" x="23.550029" y="132.422"/> + <use xlink:href="#glyph1-16" x="31.464319" y="132.422"/> + <use xlink:href="#glyph1-4" x="36.611994" y="132.422"/> + <use xlink:href="#glyph1-11" x="38.992059" y="132.422"/> + <use xlink:href="#glyph1-3" x="43.780085" y="132.422"/> + <use xlink:href="#glyph1-2" x="47.37758" y="132.422"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-15" x="3.719" y="144.378"/> + <use xlink:href="#glyph0-16" x="8.949365" y="144.378"/> + <use xlink:href="#glyph0-7" x="14.17973" y="144.378"/> + <use xlink:href="#glyph0-6" x="19.410095" y="144.378"/> + <use xlink:href="#glyph0-2" x="24.64046" y="144.378"/> + <use xlink:href="#glyph0-15" x="29.870825" y="144.378"/> + <use xlink:href="#glyph0-17" x="35.10119" y="144.378"/> + <use xlink:href="#glyph0-18" x="40.331555" y="144.378"/> + <use xlink:href="#glyph0-5" x="45.56192" y="144.378"/> + <use xlink:href="#glyph0-6" x="50.792285" y="144.378"/> + <use xlink:href="#glyph0-2" x="56.02265" y="144.378"/> +</g> +<path style="fill:none;stroke-width:0.79701;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.00125 185.862719 L 0.00125 137.011156 " transform="matrix(1,0,0,-1,143.53,243.351)"/> +<path style="fill:none;stroke-width:0.79701;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0006725 3.087187 L 3.089171 0.00125 L -0.0006725 -3.088594 " transform="matrix(0,1,1,0,143.53,103.64911)"/> +<path style="fill:none;stroke-width:0.79701;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.00125 78.558031 L 0.00125 29.706469 " transform="matrix(1,0,0,-1,143.53,243.351)"/> +<path style="fill:none;stroke-width:0.79701;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.000535 3.087187 L 3.089309 0.00125 L -0.000535 -3.088594 " transform="matrix(0,1,1,0,143.53,210.95366)"/> +<path style="fill:none;stroke-width:0.79701;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.00125 -28.746656 L 0.00125 -77.598219 " transform="matrix(1,0,0,-1,143.53,243.351)"/> +<path style="fill:none;stroke-width:0.79701;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0003875 3.087187 L 3.089456 0.00125 L -0.0003875 -3.088594 " transform="matrix(0,1,1,0,143.53,318.2582)"/> +<path style="fill:none;stroke-width:0.79701;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -111.045625 78.558031 L -111.045625 -0.0005625 L -43.908906 -0.0005625 " transform="matrix(1,0,0,-1,143.53,243.351)"/> +<path style="fill:none;stroke-width:0.79701;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0011625 3.089281 L 3.088681 -0.0005625 L -0.0011625 -3.090406 " transform="matrix(1,0,0,-1,96.93085,243.351)"/> +</g> +</svg> diff --git a/doc/flow.tikz b/doc/flow.tikz new file mode 100644 index 0000000..4c6c49e --- /dev/null +++ b/doc/flow.tikz @@ -0,0 +1,29 @@ +\begin{tikzpicture} +[ +major/.style={rectangle,draw,rounded corners, thick, align=center, minimum size=20mm}, +minor/.style={rectangle,draw,rounded corners, thick, minimum width=40mm, minimum height=15mm} +] + +\node (generate-header)[major] {\texttt{generate-header}}; +\node (netlist)[major, above=5em of generate-header] {Netlist\\\texttt{foo.net}}; +\node (schematic)[major, above=5em of netlist] {Schematic\\\texttt{foo.sch}}; +\node (header)[major, below=5em of generate-header] {Header\\\texttt{foo.h}}; +\node (template)[major, left=5em of netlist] {Template\\\texttt{my-template}}; + +\draw [-Straight Barb, thick] + (schematic.south) -- (netlist.north) + node[above, midway] {}; + +\draw [-Straight Barb, thick] + (netlist.south) -- (generate-header.north) + node[above, near end] {}; + +\draw [-Straight Barb, thick] + (generate-header.south) -- (header.north) + node[above, midway] {}; + +\draw [-Straight Barb, thick] + (template.south) |- (generate-header.west) + node[above, near end] {}; + +\end{tikzpicture} diff --git a/doc/template-qtikz.tex b/doc/template-qtikz.tex new file mode 100644 index 0000000..45a9e74 --- /dev/null +++ b/doc/template-qtikz.tex @@ -0,0 +1,15 @@ +\documentclass{standalone} +\usepackage{tikz} +\usetikzlibrary{arrows.meta} +\usetikzlibrary{backgrounds} +\usetikzlibrary{calc} +\usetikzlibrary{fit} +\usetikzlibrary{positioning} + +\usepackage{flowchart} + +\tikzstyle{every picture}+=[font=\sffamily] + +\begin{document} +<> +\end{document} diff --git a/doc/template-tex.tex b/doc/template-tex.tex new file mode 100644 index 0000000..5329710 --- /dev/null +++ b/doc/template-tex.tex @@ -0,0 +1,15 @@ +\documentclass{standalone} +\usepackage{tikz} +\usetikzlibrary{arrows.meta} +\usetikzlibrary{backgrounds} +\usetikzlibrary{calc} +\usetikzlibrary{fit} +\usetikzlibrary{positioning} + +\usepackage{flowchart} + +\tikzstyle{every picture}+=[font=\sffamily] + +\begin{document} +\input{\tikzfile} +\end{document} diff --git a/kicad/kicad-utils.pro b/kicad/kicad-utils.pro new file mode 100644 index 0000000..d6cdf98 --- /dev/null +++ b/kicad/kicad-utils.pro @@ -0,0 +1,32 @@ +update=Sun 07 Aug 2016 14:04:39 CEST +version=1 +last_client=kicad +[pcbnew] +version=1 +LastNetListRead= +UseCmpFile=1 +PadDrill=0.600000000000 +PadDrillOvalY=0.600000000000 +PadSizeH=1.500000000000 +PadSizeV=1.500000000000 +PcbTextSizeV=1.500000000000 +PcbTextSizeH=1.500000000000 +PcbTextThickness=0.300000000000 +ModuleTextSizeV=1.000000000000 +ModuleTextSizeH=1.000000000000 +ModuleTextSizeThickness=0.150000000000 +SolderMaskClearance=0.000000000000 +SolderMaskMinWidth=0.000000000000 +DrawSegmentWidth=0.200000000000 +BoardOutlineThickness=0.100000000000 +ModuleOutlineThickness=0.150000000000 +[cvpcb] +version=1 +NetIExt=net +[general] +version=1 +[eeschema] +version=1 +LibDir= +[eeschema/libraries] +LibName1=kicad_utils diff --git a/templates/nodemcu-arduino.py b/templates/nodemcu-arduino.py index 1f258e6..ab0f283 100644 --- a/templates/nodemcu-arduino.py +++ b/templates/nodemcu-arduino.py @@ -12,26 +12,26 @@ gpio_map = { 8: None, # SD0 9: None, # CMD 10: None, # SD1 - 11: '9', # SD2 - 12: '10', # SD3 + 11: 'D9', # SD2 + 12: 'D10', # SD3 13: None, # RSV 14: None, # RSV - 15: '0', # A0 + 15: 'D0', # A0 # Right side - 16: '16', - 17: '5', - 18: '4', - 19: '0', - 20: '2', + 16: 'D16', + 17: 'D5', + 18: 'D4', + 19: 'D0', + 20: 'D2', 21: None, # 3V3 22: None, # Gnd - 23: '14', - 24: '12', - 25: '13', - 26: '15', - 27: '3', - 28: '1', + 23: 'D14', + 24: 'D12', + 25: 'D13', + 26: 'D15', + 27: 'D3', + 28: 'D1', 29: None, # GND 30: None, # 3V3 } diff --git a/thirdparty/antlr4 b/thirdparty/antlr4 new file mode 160000 +Subproject f47e9548b77ef4fc84291a66ff3d19fb0807ad3 |