From 6429b6c17b912e06ad1e4b0bde5ae9d2de00610d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Sun, 15 Oct 2017 18:59:28 +0200 Subject: [PATCH 01/33] Update version in Readme --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 44c4bd7ef..db5dcfe9f 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -[![Build Status](https://travis-ci.org/FPGAwars/icestudio.svg?branch=0.3.0)](https://travis-ci.org/FPGAwars/icestudio) -[![Version](https://img.shields.io/badge/version-v0.3.0-orange.svg)](https://github.com/FPGAwars/icestudio/releases) +[![Build Status](https://travis-ci.org/FPGAwars/icestudio.svg?branch=0.3.1-rc)](https://travis-ci.org/FPGAwars/icestudio) +[![Version](https://img.shields.io/badge/version-v0.3.1--rc-orange.svg)](https://github.com/FPGAwars/icestudio/releases) [![License](http://img.shields.io/:license-gpl-blue.svg)](http://opensource.org/licenses/GPL-2.0) [![Documentation Status](https://readthedocs.org/projects/icestudio/badge/?version=latest)](http://icestudio.readthedocs.io/en/latest) From b9da4869e94e87483a788dbaebb8a2b080cc8c82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Tue, 17 Oct 2017 22:42:50 +0200 Subject: [PATCH 02/33] Update Project sample --- samples/Project.ice | 1194 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1194 insertions(+) create mode 100644 samples/Project.ice diff --git a/samples/Project.ice b/samples/Project.ice new file mode 100644 index 000000000..116e84363 --- /dev/null +++ b/samples/Project.ice @@ -0,0 +1,1194 @@ +{ + "version": "1.1", + "package": { + "name": "", + "version": "", + "description": "", + "author": "", + "image": "" + }, + "design": { + "board": "icezum", + "graph": { + "blocks": [ + { + "id": "f78f2a75-f077-414e-abfc-4f3a1e6dfc1b", + "type": "basic.output", + "data": { + "name": "LED", + "pins": [ + { + "index": "0", + "name": "LED0", + "value": "95" + } + ], + "virtual": false + }, + "position": { + "x": 832, + "y": 168 + } + }, + { + "id": "07652035-9f66-416e-b1f7-695d73cc3bcc", + "type": "basic.input", + "data": { + "name": "Pushbutton", + "pins": [ + { + "index": "0", + "name": "SW1", + "value": "10" + } + ], + "virtual": false, + "clock": false + }, + "position": { + "x": 112, + "y": 328 + } + }, + { + "id": "0301fc3b-23c6-46cb-9521-b74df9aa0ad0", + "type": "basic.input", + "data": { + "name": "Pushbutton", + "pins": [ + { + "index": "0", + "name": "SW2", + "value": "11" + } + ], + "virtual": false, + "clock": false + }, + "position": { + "x": 112, + "y": 424 + } + }, + { + "id": "a00e3e07-c233-4726-a912-1c3be184d517", + "type": "basic.constant", + "data": { + "name": "N", + "value": "22", + "local": false + }, + "position": { + "x": 344, + "y": -48 + } + }, + { + "id": "cfd60d2c-93ff-4cde-8164-e42ea465ed04", + "type": "862d2a36c72ddee13ea44bf906fe1b60efa90941", + "position": { + "x": 112, + "y": 136 + }, + "size": { + "width": 96, + "height": 64 + } + }, + { + "id": "5d660fc4-cff7-4f88-9362-e09cd446afce", + "type": "ddd2fad062ba832388938ba74bb3f6c211b8e440", + "position": { + "x": 344, + "y": 152 + }, + "size": { + "width": 96, + "height": 96 + } + }, + { + "id": "a9f0d5a7-b688-4467-9dfd-7fb19b4d2fd7", + "type": "ddd2fad062ba832388938ba74bb3f6c211b8e440", + "position": { + "x": 616, + "y": 152 + }, + "size": { + "width": 96, + "height": 96 + } + }, + { + "id": "9a306672-577c-4f80-bfad-83c850cca654", + "type": "3e6c249e205080168c1bf4ee8dbc33b50653d5f4", + "position": { + "x": 112, + "y": 224 + }, + "size": { + "width": 96, + "height": 64 + } + }, + { + "id": "b2fab142-60b0-420a-958c-7371437a9938", + "type": "10d93310e23daeea6814d2c785127dcb17e7527b", + "position": { + "x": 264, + "y": 312 + }, + "size": { + "width": 96, + "height": 64 + } + }, + { + "id": "13c4719d-b7d7-4aaf-bd10-bf4addc1532a", + "type": "6c8610c44ae8c46bb48287efc576bf248791ebd9", + "position": { + "x": 408, + "y": 312 + }, + "size": { + "width": 96, + "height": 64 + } + }, + { + "id": "dd9675aa-5a46-4016-8583-08f34b25cdcf", + "type": "10d93310e23daeea6814d2c785127dcb17e7527b", + "position": { + "x": 264, + "y": 408 + }, + "size": { + "width": 96, + "height": 64 + } + }, + { + "id": "b67f9494-24b7-4795-9ca1-649f2e7de041", + "type": "6c8610c44ae8c46bb48287efc576bf248791ebd9", + "position": { + "x": 408, + "y": 408 + }, + "size": { + "width": 96, + "height": 64 + } + }, + { + "id": "f230eb74-bb9d-4d97-85df-1593b9d35fd1", + "type": "basic.info", + "data": { + "info": "The LED has three modes of operation:\nblinking, turned on and turned off\n", + "readonly": true + }, + "position": { + "x": 632, + "y": 296 + }, + "size": { + "width": 304, + "height": 144 + } + }, + { + "id": "bffe1fe4-69da-4871-a95f-9a0dd853ebd0", + "type": "435b29b7b65c2c6d3c3df9bacef7e063156a0f7f", + "position": { + "x": 344, + "y": 64 + }, + "size": { + "width": 96, + "height": 64 + } + } + ], + "wires": [ + { + "source": { + "block": "9a306672-577c-4f80-bfad-83c850cca654", + "port": "19c8f68d-5022-487f-9ab0-f0a3cd58bead" + }, + "target": { + "block": "5d660fc4-cff7-4f88-9362-e09cd446afce", + "port": "5fb29465-2ee7-45bb-afa4-9a3de895c774" + }, + "vertices": [ + { + "x": 248, + "y": 200 + } + ] + }, + { + "source": { + "block": "07652035-9f66-416e-b1f7-695d73cc3bcc", + "port": "out" + }, + "target": { + "block": "b2fab142-60b0-420a-958c-7371437a9938", + "port": "c9e1af2a-6f09-4cf6-a5b3-fdf7ec2c6530" + } + }, + { + "source": { + "block": "cfd60d2c-93ff-4cde-8164-e42ea465ed04", + "port": "19c8f68d-5022-487f-9ab0-f0a3cd58bead" + }, + "target": { + "block": "5d660fc4-cff7-4f88-9362-e09cd446afce", + "port": "c3f73f68-1074-4355-b69f-6a20f7bea3e7" + } + }, + { + "source": { + "block": "0301fc3b-23c6-46cb-9521-b74df9aa0ad0", + "port": "out" + }, + "target": { + "block": "dd9675aa-5a46-4016-8583-08f34b25cdcf", + "port": "c9e1af2a-6f09-4cf6-a5b3-fdf7ec2c6530" + }, + "vertices": [] + }, + { + "source": { + "block": "a9f0d5a7-b688-4467-9dfd-7fb19b4d2fd7", + "port": "061aa997-2f30-4591-8841-fb6abf5c3b2e" + }, + "target": { + "block": "f78f2a75-f077-414e-abfc-4f3a1e6dfc1b", + "port": "in" + } + }, + { + "source": { + "block": "dd9675aa-5a46-4016-8583-08f34b25cdcf", + "port": "22ff3fa1-943b-4d1a-bd89-36e1c054d077" + }, + "target": { + "block": "b67f9494-24b7-4795-9ca1-649f2e7de041", + "port": "b32a6101-5bd1-4bcf-ae5f-e569b958a6a2" + } + }, + { + "source": { + "block": "b2fab142-60b0-420a-958c-7371437a9938", + "port": "22ff3fa1-943b-4d1a-bd89-36e1c054d077" + }, + "target": { + "block": "13c4719d-b7d7-4aaf-bd10-bf4addc1532a", + "port": "b32a6101-5bd1-4bcf-ae5f-e569b958a6a2" + } + }, + { + "source": { + "block": "13c4719d-b7d7-4aaf-bd10-bf4addc1532a", + "port": "ffdd9aa2-aea3-4aa9-8431-80e799226774" + }, + "target": { + "block": "5d660fc4-cff7-4f88-9362-e09cd446afce", + "port": "67ed5e09-486d-4f97-929f-aefea9c43951" + }, + "vertices": [ + { + "x": 384, + "y": 280 + } + ] + }, + { + "source": { + "block": "5d660fc4-cff7-4f88-9362-e09cd446afce", + "port": "061aa997-2f30-4591-8841-fb6abf5c3b2e" + }, + "target": { + "block": "a9f0d5a7-b688-4467-9dfd-7fb19b4d2fd7", + "port": "5fb29465-2ee7-45bb-afa4-9a3de895c774" + } + }, + { + "source": { + "block": "a00e3e07-c233-4726-a912-1c3be184d517", + "port": "constant-out" + }, + "target": { + "block": "bffe1fe4-69da-4871-a95f-9a0dd853ebd0", + "port": "de2d8a2d-7908-48a2-9e35-7763a45886e4" + } + }, + { + "source": { + "block": "bffe1fe4-69da-4871-a95f-9a0dd853ebd0", + "port": "7e07d449-6475-4839-b43e-8aead8be2aac" + }, + "target": { + "block": "a9f0d5a7-b688-4467-9dfd-7fb19b4d2fd7", + "port": "c3f73f68-1074-4355-b69f-6a20f7bea3e7" + } + }, + { + "source": { + "block": "b67f9494-24b7-4795-9ca1-649f2e7de041", + "port": "ffdd9aa2-aea3-4aa9-8431-80e799226774" + }, + "target": { + "block": "a9f0d5a7-b688-4467-9dfd-7fb19b4d2fd7", + "port": "67ed5e09-486d-4f97-929f-aefea9c43951" + } + } + ] + }, + "state": { + "pan": { + "x": 14.5075, + "y": 80.0299 + }, + "zoom": 0.834 + } + }, + "dependencies": { + "862d2a36c72ddee13ea44bf906fe1b60efa90941": { + "package": { + "name": "Bit 0", + "version": "1.0.0", + "description": "Assign 0 to the output wire", + "author": "Jesús Arroyo", + "image": "%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%2247.303%22%20height=%2227.648%22%20viewBox=%220%200%2044.346456%2025.919999%22%3E%3Ctext%20style=%22line-height:125%25%22%20x=%22325.37%22%20y=%22315.373%22%20font-weight=%22400%22%20font-size=%2212.669%22%20font-family=%22sans-serif%22%20letter-spacing=%220%22%20word-spacing=%220%22%20transform=%22translate(-307.01%20-298.51)%22%3E%3Ctspan%20x=%22325.37%22%20y=%22315.373%22%20style=%22-inkscape-font-specification:'Courier%2010%20Pitch'%22%20font-family=%22Courier%2010%20Pitch%22%3E0%3C/tspan%3E%3C/text%3E%3C/svg%3E" + }, + "design": { + "graph": { + "blocks": [ + { + "id": "b959fb96-ac67-4aea-90b3-ed35a4c17bf5", + "type": "basic.code", + "data": { + "code": "// Bit 0\n\nassign v = 1'b0;", + "params": [], + "ports": { + "in": [], + "out": [ + { + "name": "v" + } + ] + } + }, + "position": { + "x": 96, + "y": 96 + } + }, + { + "id": "19c8f68d-5022-487f-9ab0-f0a3cd58bead", + "type": "basic.output", + "data": { + "name": "" + }, + "position": { + "x": 608, + "y": 192 + } + } + ], + "wires": [ + { + "source": { + "block": "b959fb96-ac67-4aea-90b3-ed35a4c17bf5", + "port": "v" + }, + "target": { + "block": "19c8f68d-5022-487f-9ab0-f0a3cd58bead", + "port": "in" + } + } + ] + }, + "state": { + "pan": { + "x": 0, + "y": 0 + }, + "zoom": 1 + } + } + }, + "ddd2fad062ba832388938ba74bb3f6c211b8e440": { + "package": { + "name": "Mux 2:1", + "version": "1.0.0", + "description": "Multiplexer 2:1", + "author": "Carlos Diaz", + "image": "%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%22-252%20400.9%2090%2040%22%3E%3Cpath%20d=%22M-162%20419.9h-24v-7.2l-41-11.8v9h-25v2h25v18h-25v2h25v9l41-11.7v-7.4h24v-1.9zm-63%2018.5v-35l37%2010.8v13.5l-37%2010.7z%22/%3E%3C/svg%3E" + }, + "design": { + "graph": { + "blocks": [ + { + "id": "ba573190-2ead-411a-a323-1b15a22d46db", + "type": "basic.code", + "data": { + "code": "reg _o;\n\nalways @(*) begin\n case(sel0)\n 0: _o = in0;\n 1: _o = in1;\n default: _o = in0;\n endcase\nend\n\nassign o = _o;", + "params": [], + "ports": { + "in": [ + { + "name": "in0" + }, + { + "name": "in1" + }, + { + "name": "sel0" + } + ], + "out": [ + { + "name": "o" + } + ] + } + }, + "position": { + "x": 312, + "y": 112 + } + }, + { + "id": "c3f73f68-1074-4355-b69f-6a20f7bea3e7", + "type": "basic.input", + "data": { + "name": "i0" + }, + "position": { + "x": 80, + "y": 120 + } + }, + { + "id": "5fb29465-2ee7-45bb-afa4-9a3de895c774", + "type": "basic.input", + "data": { + "name": "i1" + }, + "position": { + "x": 80, + "y": 208 + } + }, + { + "id": "061aa997-2f30-4591-8841-fb6abf5c3b2e", + "type": "basic.output", + "data": { + "name": "o" + }, + "position": { + "x": 792, + "y": 208 + } + }, + { + "id": "67ed5e09-486d-4f97-929f-aefea9c43951", + "type": "basic.input", + "data": { + "name": "sel" + }, + "position": { + "x": 80, + "y": 296 + } + } + ], + "wires": [ + { + "source": { + "block": "ba573190-2ead-411a-a323-1b15a22d46db", + "port": "o" + }, + "target": { + "block": "061aa997-2f30-4591-8841-fb6abf5c3b2e", + "port": "in" + } + }, + { + "source": { + "block": "c3f73f68-1074-4355-b69f-6a20f7bea3e7", + "port": "out" + }, + "target": { + "block": "ba573190-2ead-411a-a323-1b15a22d46db", + "port": "in0" + } + }, + { + "source": { + "block": "5fb29465-2ee7-45bb-afa4-9a3de895c774", + "port": "out" + }, + "target": { + "block": "ba573190-2ead-411a-a323-1b15a22d46db", + "port": "in1" + } + }, + { + "source": { + "block": "67ed5e09-486d-4f97-929f-aefea9c43951", + "port": "out" + }, + "target": { + "block": "ba573190-2ead-411a-a323-1b15a22d46db", + "port": "sel0" + } + } + ] + }, + "state": { + "pan": { + "x": -21.0375, + "y": 29.4792 + }, + "zoom": 1 + } + } + }, + "3e6c249e205080168c1bf4ee8dbc33b50653d5f4": { + "package": { + "name": "Bit 1", + "version": "1.0.0", + "description": "Assign 1 to the output wire", + "author": "Jesús Arroyo", + "image": "%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%2247.303%22%20height=%2227.648%22%20viewBox=%220%200%2044.346456%2025.919999%22%3E%3Ctext%20style=%22line-height:125%25%22%20x=%22325.218%22%20y=%22315.455%22%20font-weight=%22400%22%20font-size=%2212.669%22%20font-family=%22sans-serif%22%20letter-spacing=%220%22%20word-spacing=%220%22%20transform=%22translate(-307.01%20-298.51)%22%3E%3Ctspan%20x=%22325.218%22%20y=%22315.455%22%20style=%22-inkscape-font-specification:'Courier%2010%20Pitch'%22%20font-family=%22Courier%2010%20Pitch%22%3E1%3C/tspan%3E%3C/text%3E%3C/svg%3E" + }, + "design": { + "graph": { + "blocks": [ + { + "id": "b959fb96-ac67-4aea-90b3-ed35a4c17bf5", + "type": "basic.code", + "data": { + "code": "// Bit 1\n\nassign v = 1'b1;", + "params": [], + "ports": { + "in": [], + "out": [ + { + "name": "v" + } + ] + } + }, + "position": { + "x": 96, + "y": 96 + } + }, + { + "id": "19c8f68d-5022-487f-9ab0-f0a3cd58bead", + "type": "basic.output", + "data": { + "name": "" + }, + "position": { + "x": 608, + "y": 192 + } + } + ], + "wires": [ + { + "source": { + "block": "b959fb96-ac67-4aea-90b3-ed35a4c17bf5", + "port": "v" + }, + "target": { + "block": "19c8f68d-5022-487f-9ab0-f0a3cd58bead", + "port": "in" + } + } + ] + }, + "state": { + "pan": { + "x": 0, + "y": 0 + }, + "zoom": 1 + } + } + }, + "10d93310e23daeea6814d2c785127dcb17e7527b": { + "package": { + "name": "Debouncer", + "version": "1.0.0", + "description": "Remove the rebound on a mechanical switch", + "author": "Juan González", + "image": "%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%22-252%20400.9%2090%2040%22%3E%3Cpath%20d=%22M-251.547%20436.672h22.802v-30.353h5.862v30.353h5.259v-30.353h3.447v30.353h2.984v-30.353h3.506v30.523h6.406V405.77h38.868%22%20fill=%22none%22%20stroke=%22#000%22%20stroke-width=%221.4%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cpath%20d=%22M-232.57%20403.877l26.946%2032.391M-205.624%20403.877l-26.946%2032.391%22%20fill=%22none%22%20stroke=%22red%22%20stroke-width=%223%22%20stroke-linecap=%22round%22/%3E%3C/svg%3E" + }, + "design": { + "graph": { + "blocks": [ + { + "id": "92490e7e-c3ba-4e9c-a917-2a771d99f1ef", + "type": "basic.code", + "data": { + "code": "//-- Debouncer Circuit\n//-- It produces a stable output when the\n//-- input signal is bouncing\n\nreg btn_prev = 0;\nreg btn_out_r = 0;\n\nreg [16:0] counter = 0;\n\n\nalways @(posedge clk) begin\n\n //-- If btn_prev and btn_in are differents\n if (btn_prev ^ in == 1'b1) begin\n \n //-- Reset the counter\n counter <= 0;\n \n //-- Capture the button status\n btn_prev <= in;\n end\n \n //-- If no timeout, increase the counter\n else if (counter[16] == 1'b0)\n counter <= counter + 1;\n \n else\n //-- Set the output to the stable value\n btn_out_r <= btn_prev;\n\nend\n\nassign out = btn_out_r;\n", + "params": [], + "ports": { + "in": [ + { + "name": "clk" + }, + { + "name": "in" + } + ], + "out": [ + { + "name": "out" + } + ] + } + }, + "position": { + "x": 264, + "y": 112 + }, + "size": { + "width": 384, + "height": 256 + } + }, + { + "id": "4bf41c17-a2da-4140-95f7-2a80d51b1e1a", + "type": "basic.input", + "data": { + "name": "", + "clock": true + }, + "position": { + "x": 48, + "y": 144 + } + }, + { + "id": "22ff3fa1-943b-4d1a-bd89-36e1c054d077", + "type": "basic.output", + "data": { + "name": "" + }, + "position": { + "x": 768, + "y": 208 + } + }, + { + "id": "c9e1af2a-6f09-4cf6-a5b3-fdf7ec2c6530", + "type": "basic.input", + "data": { + "name": "", + "clock": false + }, + "position": { + "x": 48, + "y": 272 + } + } + ], + "wires": [ + { + "source": { + "block": "92490e7e-c3ba-4e9c-a917-2a771d99f1ef", + "port": "out" + }, + "target": { + "block": "22ff3fa1-943b-4d1a-bd89-36e1c054d077", + "port": "in" + } + }, + { + "source": { + "block": "4bf41c17-a2da-4140-95f7-2a80d51b1e1a", + "port": "out" + }, + "target": { + "block": "92490e7e-c3ba-4e9c-a917-2a771d99f1ef", + "port": "clk" + } + }, + { + "source": { + "block": "c9e1af2a-6f09-4cf6-a5b3-fdf7ec2c6530", + "port": "out" + }, + "target": { + "block": "92490e7e-c3ba-4e9c-a917-2a771d99f1ef", + "port": "in" + } + } + ] + }, + "state": { + "pan": { + "x": 0, + "y": -1 + }, + "zoom": 1 + } + } + }, + "6c8610c44ae8c46bb48287efc576bf248791ebd9": { + "package": { + "name": "Flip-flop T", + "version": "1.0.0", + "description": "Toggle flip-flop", + "author": "Carlos Diaz", + "image": "%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%22-252%20400.9%2090%2040%22%3E%3Ctext%20style=%22line-height:125%25%22%20x=%22-227.932%22%20y=%22429.867%22%20font-weight=%22400%22%20font-size=%2224.601%22%20font-family=%22sans-serif%22%20letter-spacing=%220%22%20word-spacing=%220%22%3E%3Ctspan%20x=%22-227.932%22%20y=%22429.867%22%3ETFF%3C/tspan%3E%3C/text%3E%3C/svg%3E" + }, + "design": { + "graph": { + "blocks": [ + { + "id": "b32a6101-5bd1-4bcf-ae5f-e569b958a6a2", + "type": "basic.input", + "data": { + "name": "", + "clock": true + }, + "position": { + "x": 160, + "y": -80 + } + }, + { + "id": "f8a48554-c608-4f6a-ad56-04c70e5baef3", + "type": "70ff7f2a2f0ede80fc37c66a997650a1d0d0102b", + "position": { + "x": 352, + "y": -64 + }, + "size": { + "width": 96, + "height": 64 + } + }, + { + "id": "ffdd9aa2-aea3-4aa9-8431-80e799226774", + "type": "basic.output", + "data": { + "name": "" + }, + "position": { + "x": 672, + "y": -64 + } + }, + { + "id": "6d1059f6-855e-429e-8cf2-848f56d2c993", + "type": "32200dc0915d45d6ec035bcec61c8472f0cc7b88", + "position": { + "x": 496, + "y": -16 + }, + "size": { + "width": 96, + "height": 64 + } + } + ], + "wires": [ + { + "source": { + "block": "f8a48554-c608-4f6a-ad56-04c70e5baef3", + "port": "ffdd9aa2-aea3-4aa9-8431-80e799226774" + }, + "target": { + "block": "ffdd9aa2-aea3-4aa9-8431-80e799226774", + "port": "in" + } + }, + { + "source": { + "block": "f8a48554-c608-4f6a-ad56-04c70e5baef3", + "port": "ffdd9aa2-aea3-4aa9-8431-80e799226774" + }, + "target": { + "block": "6d1059f6-855e-429e-8cf2-848f56d2c993", + "port": "18c2ebc7-5152-439c-9b3f-851c59bac834" + } + }, + { + "source": { + "block": "b32a6101-5bd1-4bcf-ae5f-e569b958a6a2", + "port": "out" + }, + "target": { + "block": "f8a48554-c608-4f6a-ad56-04c70e5baef3", + "port": "6855f64f-fa1c-4371-b2e1-a98970674a96" + } + }, + { + "source": { + "block": "6d1059f6-855e-429e-8cf2-848f56d2c993", + "port": "664caf9e-5f40-4df4-800a-b626af702e62" + }, + "target": { + "block": "f8a48554-c608-4f6a-ad56-04c70e5baef3", + "port": "b32a6101-5bd1-4bcf-ae5f-e569b958a6a2" + }, + "vertices": [ + { + "x": 408, + "y": 64 + } + ] + } + ] + }, + "state": { + "pan": { + "x": -14, + "y": 267.5 + }, + "zoom": 1 + } + } + }, + "70ff7f2a2f0ede80fc37c66a997650a1d0d0102b": { + "package": { + "name": "Flip-flop D", + "version": "1.0.0", + "description": "Delay flip-flop", + "author": "Carlos Diaz", + "image": "%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%22-252%20400.9%2090%2040%22%3E%3Ctext%20style=%22line-height:125%25%22%20x=%22-231.121%22%20y=%22429.867%22%20font-weight=%22400%22%20font-size=%2224.601%22%20font-family=%22sans-serif%22%20letter-spacing=%220%22%20word-spacing=%220%22%3E%3Ctspan%20x=%22-231.121%22%20y=%22429.867%22%3EDFF%3C/tspan%3E%3C/text%3E%3C/svg%3E" + }, + "design": { + "graph": { + "blocks": [ + { + "id": "e5222a6e-4717-4f08-99d7-7cde897060ca", + "type": "basic.code", + "data": { + "code": "// D flip-flop\n\nreg q = 1'b0;\n\nalways @(posedge clk)\nbegin\n q <= d;\nend\n\n", + "params": [], + "ports": { + "in": [ + { + "name": "clk" + }, + { + "name": "d" + } + ], + "out": [ + { + "name": "q" + } + ] + } + }, + "position": { + "x": 432, + "y": 128 + }, + "size": { + "width": 368, + "height": 272 + } + }, + { + "id": "6855f64f-fa1c-4371-b2e1-a98970674a96", + "type": "basic.input", + "data": { + "name": "", + "clock": true + }, + "position": { + "x": 232, + "y": 168 + } + }, + { + "id": "ffdd9aa2-aea3-4aa9-8431-80e799226774", + "type": "basic.output", + "data": { + "name": "" + }, + "position": { + "x": 864, + "y": 232 + } + }, + { + "id": "b32a6101-5bd1-4bcf-ae5f-e569b958a6a2", + "type": "basic.input", + "data": { + "name": "", + "clock": false + }, + "position": { + "x": 232, + "y": 304 + } + } + ], + "wires": [ + { + "source": { + "block": "b32a6101-5bd1-4bcf-ae5f-e569b958a6a2", + "port": "out" + }, + "target": { + "block": "e5222a6e-4717-4f08-99d7-7cde897060ca", + "port": "d" + } + }, + { + "source": { + "block": "6855f64f-fa1c-4371-b2e1-a98970674a96", + "port": "out" + }, + "target": { + "block": "e5222a6e-4717-4f08-99d7-7cde897060ca", + "port": "clk" + } + }, + { + "source": { + "block": "e5222a6e-4717-4f08-99d7-7cde897060ca", + "port": "q" + }, + "target": { + "block": "ffdd9aa2-aea3-4aa9-8431-80e799226774", + "port": "in" + } + } + ] + }, + "state": { + "pan": { + "x": -146, + "y": -0.5 + }, + "zoom": 1 + } + } + }, + "32200dc0915d45d6ec035bcec61c8472f0cc7b88": { + "package": { + "name": "NOT", + "version": "1.0.0", + "description": "NOT logic gate", + "author": "Jesús Arroyo", + "image": "%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%2291.33%22%20height=%2245.752%22%20version=%221%22%3E%3Cpath%20d=%22M0%2020.446h27v2H0zM70.322%2020.447h15.3v2h-15.3z%22/%3E%3Cpath%20d=%22M66.05%2026.746c-2.9%200-5.3-2.4-5.3-5.3s2.4-5.3%205.3-5.3%205.3%202.4%205.3%205.3-2.4%205.3-5.3%205.3zm0-8.6c-1.8%200-3.3%201.5-3.3%203.3%200%201.8%201.5%203.3%203.3%203.3%201.8%200%203.3-1.5%203.3-3.3%200-1.8-1.5-3.3-3.3-3.3z%22/%3E%3Cpath%20d=%22M25.962%202.563l33.624%2018.883L25.962%2040.33V2.563z%22%20fill=%22none%22%20stroke=%22#000%22%20stroke-width=%223%22/%3E%3C/svg%3E" + }, + "design": { + "graph": { + "blocks": [ + { + "id": "5365ed8c-e5db-4445-938f-8d689830ea5c", + "type": "basic.code", + "data": { + "code": "// NOT logic gate\n\nassign c = ~ a;", + "params": [], + "ports": { + "in": [ + { + "name": "a" + } + ], + "out": [ + { + "name": "c" + } + ] + } + }, + "position": { + "x": 256, + "y": 48 + } + }, + { + "id": "18c2ebc7-5152-439c-9b3f-851c59bac834", + "type": "basic.input", + "data": { + "name": "" + }, + "position": { + "x": 64, + "y": 144 + } + }, + { + "id": "664caf9e-5f40-4df4-800a-b626af702e62", + "type": "basic.output", + "data": { + "name": "" + }, + "position": { + "x": 752, + "y": 144 + } + } + ], + "wires": [ + { + "source": { + "block": "18c2ebc7-5152-439c-9b3f-851c59bac834", + "port": "out" + }, + "target": { + "block": "5365ed8c-e5db-4445-938f-8d689830ea5c", + "port": "a" + } + }, + { + "source": { + "block": "5365ed8c-e5db-4445-938f-8d689830ea5c", + "port": "c" + }, + "target": { + "block": "664caf9e-5f40-4df4-800a-b626af702e62", + "port": "in" + } + } + ] + }, + "state": { + "pan": { + "x": 0, + "y": 0 + }, + "zoom": 1 + } + } + }, + "435b29b7b65c2c6d3c3df9bacef7e063156a0f7f": { + "package": { + "name": "PrescalerN", + "version": "0.1", + "description": "Parametric N-bits prescaler", + "author": "Juan Gonzalez (Obijuan)", + "image": "" + }, + "design": { + "graph": { + "blocks": [ + { + "id": "de2d8a2d-7908-48a2-9e35-7763a45886e4", + "type": "basic.constant", + "data": { + "name": "N", + "value": "22", + "local": false + }, + "position": { + "x": 352, + "y": 56 + } + }, + { + "id": "2330955f-5ce6-4d1c-8ee4-0a09a0349389", + "type": "basic.code", + "data": { + "code": "//-- Number of bits of the prescaler\n//parameter N = 22;\n\n//-- divisor register\nreg [N-1:0] divcounter;\n\n//-- N bit counter\nalways @(posedge clk_in)\n divcounter <= divcounter + 1;\n\n//-- Use the most significant bit as output\nassign clk_out = divcounter[N-1];", + "params": [ + { + "name": "N" + } + ], + "ports": { + "in": [ + { + "name": "clk_in" + } + ], + "out": [ + { + "name": "clk_out" + } + ] + } + }, + "position": { + "x": 176, + "y": 176 + }, + "size": { + "width": 448, + "height": 224 + } + }, + { + "id": "e19c6f2f-5747-4ed1-87c8-748575f0cc10", + "type": "basic.input", + "data": { + "name": "", + "clock": true + }, + "position": { + "x": 0, + "y": 256 + } + }, + { + "id": "7e07d449-6475-4839-b43e-8aead8be2aac", + "type": "basic.output", + "data": { + "name": "" + }, + "position": { + "x": 720, + "y": 256 + } + } + ], + "wires": [ + { + "source": { + "block": "2330955f-5ce6-4d1c-8ee4-0a09a0349389", + "port": "clk_out" + }, + "target": { + "block": "7e07d449-6475-4839-b43e-8aead8be2aac", + "port": "in" + } + }, + { + "source": { + "block": "e19c6f2f-5747-4ed1-87c8-748575f0cc10", + "port": "out" + }, + "target": { + "block": "2330955f-5ce6-4d1c-8ee4-0a09a0349389", + "port": "clk_in" + } + }, + { + "source": { + "block": "de2d8a2d-7908-48a2-9e35-7763a45886e4", + "port": "constant-out" + }, + "target": { + "block": "2330955f-5ce6-4d1c-8ee4-0a09a0349389", + "port": "N" + } + } + ] + }, + "state": { + "pan": { + "x": 42, + "y": 35.5 + }, + "zoom": 1 + } + } + } + } +} \ No newline at end of file From 788016089e6e2f512033128df1a0c740b0f6c9fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Tue, 17 Oct 2017 22:43:00 +0200 Subject: [PATCH 03/33] Update Readme images --- README.md | 2 +- doc/images/main-1.png | Bin 56288 -> 49163 bytes doc/images/main.png | Bin 48694 -> 42075 bytes 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index db5dcfe9f..ac0a8a6d6 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ **Experimental** graphic editor for open FPGAs. Built on top of the [Icestorm project](http://www.clifford.at/icestorm/). - GUI -> JSON -> Verilog, PCF + Graphic design -> Verilog, PCF -> Bistream -> FPGA Supported boards: diff --git a/doc/images/main-1.png b/doc/images/main-1.png index 7ef9654937384741fda1fac3b51c4b6193ec4ac2..0581374dd86a6eaba253a55231066bd0746b84d1 100644 GIT binary patch literal 49163 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�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 Z^vWdsWdK&b0&s8)X-RpBBC#)i{|gwvgq8pR literal 56288 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 WKu5lB-o1PPY8T)ae4ySp=IVbjKA)2S diff --git a/doc/images/main.png b/doc/images/main.png index 3c316823938525509a951747dcd0cf40532354a9..d4cfb30f9af430cf78202daab680c21eb750a3cc 100644 GIT binary patch literal 42075 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 literal 48694 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

    S` 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 Date: Fri, 20 Oct 2017 20:48:20 +0200 Subject: [PATCH 04/33] =?UTF-8?q?8K=20breakout=20pcf:=20Poner=20el=20pin?= =?UTF-8?q?=20RTS=20en=20su=20secci=C3=B3n.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/resources/boards/iCE40-HX8K/pinout.pcf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/resources/boards/iCE40-HX8K/pinout.pcf b/app/resources/boards/iCE40-HX8K/pinout.pcf index b3a92e13c..f5c79097b 100644 --- a/app/resources/boards/iCE40-HX8K/pinout.pcf +++ b/app/resources/boards/iCE40-HX8K/pinout.pcf @@ -26,7 +26,6 @@ set_io --warn-no-port MISO P12 # input set_io --warn-no-port MOSI P11 # output set_io --warn-no-port SCK R11 # output set_io --warn-no-port SS R12 # output #J7.1 -set_io --warn-no-port RTS B13 # input set_io --warn-no-port RESET N11 # input set_io --warn-no-port DONE M10 # output @@ -39,6 +38,7 @@ set_io --warn-no-port DCD B15 # output set_io --warn-no-port DSR B14 # output set_io --warn-no-port DTR A16 # input set_io --warn-no-port CTS A15 # output +set_io --warn-no-port RTS B13 # input # ************************************ From cff41d777a4a43b00d05990a20b1c775cd2132d1 Mon Sep 17 00:00:00 2001 From: yomboprime Date: Sat, 21 Oct 2017 04:00:51 +0200 Subject: [PATCH 05/33] Add HX8K breakout board quick sheet SVG image. --- app/resources/boards/iCE40-HX8K/pinout.svg | 20582 +++++++++++++++++++ 1 file changed, 20582 insertions(+) create mode 100644 app/resources/boards/iCE40-HX8K/pinout.svg diff --git a/app/resources/boards/iCE40-HX8K/pinout.svg b/app/resources/boards/iCE40-HX8K/pinout.svg new file mode 100644 index 000000000..dd27c7995 --- /dev/null +++ b/app/resources/boards/iCE40-HX8K/pinout.svg @@ -0,0 +1,20582 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + B5 + + + + + B4 + + + + + + A2 + + + GND + + + + + + + C3 + + + + + B3 + + + + + + A1 + + + GND + + + + + + + + + + + + + + + + E16 + + + D16 + + + + + C16 + + + GND + + + + + + D15 + + + + D14 + + + + + B16 + + + GND + + + + + + + A6 + + + + B6 + + + + + + A5 + + + GND + + + + + + + C6 + + + C5 + + + + + + C4 + + + GND + + + + + + + H16 + + + + G16 + + + + + F16 + + + GND + + + + + + + + G15 + + + F15 + + + + + E14 + + + GND + + + + + + + + G2 + + + + F2 + + + + + + + E2 + + + GND + + + + + + + H1 + + + + G1 + + + + + F1 + + + GND + + + + + + + T7 + + + + T6 + + + + + T5 + + + GND + + + + + + + T8 + + + + R6 + + + + + R5 + + + GND + + + + + + A9 + + + + B8 + + + + + + B7 + + + GND + + + + + + B9 + + + A7 + + + + + + C7 + + + GND + + + + + + + K14 + + + + G14 + + + + + J15 + + + GND + + + + + + + + J14 + + + F14 + + + + + H14 + + + GND + + + + + + K3 + + J2 + + + H2 + + + GND + + + + + + K1 + + + + J1 + + + + + J3 + + + GND + + + + + + + T10 + + + + P8 + + + + + T9 + + + GND + + + + + + + R10 + + + + P9 + + + + + R9 + + + GND + + + + + + B12 + + + A11 + + + + + A10 + + + GND + + + + + + B11 + + + B10 + + + + + C9 + + + GND + + + + + + N16 + + + M16 + + + + + K15 + + + GND + + + + + + M15 + + + L16 + + + + + K16 + + + GND + + + + + + + N3 + + + M2 + + + L3 + + + GND + + + + + + N2 + + + + M1 + + + + + L1 + + + GND + + + + + + + N12 + + + + N10 + + + + + T11 + + + GND + + + + + + + P13 + + + + M11 + + + + + P10 + + + GND + + + + + + A16 + + + A15 + + + + + B13 + + + GND + + + + + + VCCIO0 + + + B15 + + + + + B14 + + + GND + + + + + + 1.2V + + + 1.2V + + + + + P16 + + + GND + + + + + + + VCCIO1 + + + + R15 + + + + + P15 + + + GND + + + + + + 3.3V + + + 3.3V + + + + P1 + + + GND + + + + + VCCIO3 + + + + + R1 + + + + + P2 + + + GND + + + + + + R16 + + + + T15 + + + + + T13 + + + GND + + + + + + + VCCIO2 + + + + T16 + + + + + T14 + + + GND + + + + + + + + + + + + + + + + + + J2 + J1 + J3 + J4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 7 6 5 4 3 2 1 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Lattice HX8K + breakout board + + + + + + + + + + + + USB + + + + + + + + + FTDI + + + + + Clock + 12Mhz + + + FPGA + + + Serial + + SPI + + + + + SPI + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + iCE40HX8K + Power + + + + GND + + + + Serial Pin + + Test point + + Control + + Physical Pin + + + + 051 + + LED7 + + + + + + + LED6 + + + + + + + LED5 + + + + + + + LED4 + + + + + + LED3 + + + + + + LED2 + + + + + + LED1 + + + + + + LED0 + + + + + + + + + + + + + + + 047 + + + 046 + + + 045 + + + 044 + + + 042 + + + 041 + + + 039 + + S02 + + R11 + + SCK + + S01 + + P11 + + SDI + + S00 + + P12 + + SDO + + S03 + + R12 + + SS + + + CDONE + + DONE + + + CREST + + REST + FTDI + + + + B10 + + 014 + + RX + + B12 + + 013 + + TX + + B13 + + 009 + + RTS + + A16 + + 007 + + DTR + + A15 + + 008 + + CTS + + B14 + + 003 + + DSR + + B15 + + 001 + + DCD + + FTDI + + + + + + + + + + + 20 OCT 2017 + ver 1 rev 1 + +   + + + + + FPGA + wars + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Inkscape + Made with + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D1 + + + + C1 + + + + + B1 + + + GND + + + + + + + D2 + + + + C2 + + + + + B2 + + + GND + + + + + + + R3 + + + + R2 + + + + + T1 + + + GND + + + + + + + R4 + + + + T3 + + + + + T2 + + + GND + + + + + + The VCCIOx test pins are connected + through a resistor in series to 3.3V + They are used to measure PIO intensities. + Jumpers position to program the FLASH + Jumpers position to program the bit stream + + + + + + + + + From 2b14dc9e0375bf2cd2e3d44f3e5c63baf8d700d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Sat, 21 Oct 2017 11:33:43 +0200 Subject: [PATCH 06/33] Update iCE40-HX8K pinout.json --- app/resources/boards/iCE40-HX8K/pinout.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/resources/boards/iCE40-HX8K/pinout.json b/app/resources/boards/iCE40-HX8K/pinout.json index e6d1cdc27..8bf823df9 100644 --- a/app/resources/boards/iCE40-HX8K/pinout.json +++ b/app/resources/boards/iCE40-HX8K/pinout.json @@ -1 +1 @@ -[{"type": "output", "name": "LED0", "value": "B5"}, {"type": "output", "name": "LED1", "value": "B4"}, {"type": "output", "name": "LED2", "value": "A2"}, {"type": "output", "name": "LED3", "value": "A1"}, {"type": "output", "name": "LED4", "value": "C5"}, {"type": "output", "name": "LED5", "value": "C4"}, {"type": "output", "name": "LED6", "value": "B3"}, {"type": "output", "name": "LED7", "value": "C3"}, {"type": "input", "name": "CLK", "value": "J3"}, {"type": "input", "name": "MISO", "value": "P12"}, {"type": "output", "name": "MOSI", "value": "P11"}, {"type": "output", "name": "SCK", "value": "R11"}, {"type": "output", "name": "SS", "value": "R12"}, {"type": "input", "name": "RTS", "value": "B13"}, {"type": "input", "name": "RESET", "value": "N11"}, {"type": "output", "name": "DONE", "value": "M10"}, {"type": "output", "name": "TX", "value": "B12"}, {"type": "input", "name": "RX", "value": "B10"}, {"type": "output", "name": "DCD", "value": "B15"}, {"type": "output", "name": "DSR", "value": "B14"}, {"type": "input", "name": "DTR", "value": "A16"}, {"type": "output", "name": "CTS", "value": "A15"}, {"type": "inout", "name": "A16", "value": "A16"}, {"type": "inout", "name": "A15", "value": "A15"}, {"type": "inout", "name": "B15", "value": "B15"}, {"type": "inout", "name": "B13", "value": "B13"}, {"type": "inout", "name": "B14", "value": "B14"}, {"type": "inout", "name": "B12", "value": "B12"}, {"type": "inout", "name": "B11", "value": "B11"}, {"type": "inout", "name": "A11", "value": "A11"}, {"type": "inout", "name": "B10", "value": "B10"}, {"type": "inout", "name": "A10", "value": "A10"}, {"type": "inout", "name": "C9", "value": "C9"}, {"type": "inout", "name": "A9", "value": "A9"}, {"type": "inout", "name": "B9", "value": "B9"}, {"type": "inout", "name": "B8", "value": "B8"}, {"type": "inout", "name": "A7", "value": "A7"}, {"type": "inout", "name": "B7", "value": "B7"}, {"type": "inout", "name": "C7", "value": "C7"}, {"type": "inout", "name": "A6", "value": "A6"}, {"type": "inout", "name": "C6", "value": "C6"}, {"type": "inout", "name": "B6", "value": "B6"}, {"type": "inout", "name": "C5", "value": "C5"}, {"type": "inout", "name": "A5", "value": "A5"}, {"type": "inout", "name": "C4", "value": "C4"}, {"type": "inout", "name": "B5", "value": "B5"}, {"type": "inout", "name": "C3", "value": "C3"}, {"type": "inout", "name": "B4", "value": "B4"}, {"type": "inout", "name": "B3", "value": "B3"}, {"type": "inout", "name": "A2", "value": "A2"}, {"type": "inout", "name": "A1", "value": "A1"}, {"type": "inout", "name": "R15", "value": "R15"}, {"type": "inout", "name": "P16", "value": "P16"}, {"type": "inout", "name": "P15", "value": "P15"}, {"type": "inout", "name": "N16", "value": "N16"}, {"type": "inout", "name": "M15", "value": "M15"}, {"type": "inout", "name": "M16", "value": "M16"}, {"type": "inout", "name": "L16", "value": "L16"}, {"type": "inout", "name": "K15", "value": "K15"}, {"type": "inout", "name": "K16", "value": "K16"}, {"type": "inout", "name": "K14", "value": "K14"}, {"type": "inout", "name": "J14", "value": "J14"}, {"type": "inout", "name": "G14", "value": "G14"}, {"type": "inout", "name": "F14", "value": "F14"}, {"type": "inout", "name": "J15", "value": "J15"}, {"type": "inout", "name": "H14", "value": "H14"}, {"type": "inout", "name": "H16", "value": "H16"}, {"type": "inout", "name": "G15", "value": "G15"}, {"type": "inout", "name": "G16", "value": "G16"}, {"type": "inout", "name": "F15", "value": "F15"}, {"type": "inout", "name": "F16", "value": "F16"}, {"type": "inout", "name": "E14", "value": "E14"}, {"type": "inout", "name": "E16", "value": "E16"}, {"type": "inout", "name": "D15", "value": "D15"}, {"type": "inout", "name": "D16", "value": "D16"}, {"type": "inout", "name": "D14", "value": "D14"}, {"type": "inout", "name": "C16", "value": "C16"}, {"type": "inout", "name": "B16", "value": "B16"}, {"type": "inout", "name": "R16", "value": "R16"}, {"type": "inout", "name": "T15", "value": "T15"}, {"type": "inout", "name": "T16", "value": "T16"}, {"type": "inout", "name": "T13", "value": "T13"}, {"type": "inout", "name": "T14", "value": "T14"}, {"type": "inout", "name": "N12", "value": "N12"}, {"type": "inout", "name": "P13", "value": "P13"}, {"type": "inout", "name": "N10", "value": "N10"}, {"type": "inout", "name": "M11", "value": "M11"}, {"type": "inout", "name": "T11", "value": "T11"}, {"type": "inout", "name": "P10", "value": "P10"}, {"type": "inout", "name": "T10", "value": "T10"}, {"type": "inout", "name": "R10", "value": "R10"}, {"type": "inout", "name": "P8", "value": "P8"}, {"type": "inout", "name": "P9", "value": "P9"}, {"type": "inout", "name": "T9", "value": "T9"}, {"type": "inout", "name": "R9", "value": "R9"}, {"type": "inout", "name": "T7", "value": "T7"}, {"type": "inout", "name": "T8", "value": "T8"}, {"type": "inout", "name": "T6", "value": "T6"}, {"type": "inout", "name": "R6", "value": "R6"}, {"type": "inout", "name": "T5", "value": "T5"}, {"type": "inout", "name": "R5", "value": "R5"}, {"type": "inout", "name": "R3", "value": "R3"}, {"type": "inout", "name": "R4", "value": "R4"}, {"type": "inout", "name": "R2", "value": "R2"}, {"type": "inout", "name": "T3", "value": "T3"}, {"type": "inout", "name": "T1", "value": "T1"}, {"type": "inout", "name": "T2", "value": "T2"}, {"type": "inout", "name": "R1", "value": "R1"}, {"type": "inout", "name": "P1", "value": "P1"}, {"type": "inout", "name": "P2", "value": "P2"}, {"type": "inout", "name": "N3", "value": "N3"}, {"type": "inout", "name": "N2", "value": "N2"}, {"type": "inout", "name": "M2", "value": "M2"}, {"type": "inout", "name": "M1", "value": "M1"}, {"type": "inout", "name": "L3", "value": "L3"}, {"type": "inout", "name": "L1", "value": "L1"}, {"type": "inout", "name": "K3", "value": "K3"}, {"type": "inout", "name": "K1", "value": "K1"}, {"type": "inout", "name": "J2", "value": "J2"}, {"type": "inout", "name": "J1", "value": "J1"}, {"type": "inout", "name": "H2", "value": "H2"}, {"type": "inout", "name": "J3", "value": "J3"}, {"type": "inout", "name": "G2", "value": "G2"}, {"type": "inout", "name": "H1", "value": "H1"}, {"type": "inout", "name": "F2", "value": "F2"}, {"type": "inout", "name": "G1", "value": "G1"}, {"type": "inout", "name": "E2", "value": "E2"}, {"type": "inout", "name": "F1", "value": "F1"}, {"type": "inout", "name": "D1", "value": "D1"}, {"type": "inout", "name": "D2", "value": "D2"}, {"type": "inout", "name": "C1", "value": "C1"}, {"type": "inout", "name": "C2", "value": "C2"}, {"type": "inout", "name": "B1", "value": "B1"}, {"type": "inout", "name": "B2", "value": "B2"}] \ No newline at end of file +[{"type": "output", "name": "LED0", "value": "B5"}, {"type": "output", "name": "LED1", "value": "B4"}, {"type": "output", "name": "LED2", "value": "A2"}, {"type": "output", "name": "LED3", "value": "A1"}, {"type": "output", "name": "LED4", "value": "C5"}, {"type": "output", "name": "LED5", "value": "C4"}, {"type": "output", "name": "LED6", "value": "B3"}, {"type": "output", "name": "LED7", "value": "C3"}, {"type": "input", "name": "CLK", "value": "J3"}, {"type": "input", "name": "MISO", "value": "P12"}, {"type": "output", "name": "MOSI", "value": "P11"}, {"type": "output", "name": "SCK", "value": "R11"}, {"type": "output", "name": "SS", "value": "R12"}, {"type": "input", "name": "RESET", "value": "N11"}, {"type": "output", "name": "DONE", "value": "M10"}, {"type": "output", "name": "TX", "value": "B12"}, {"type": "input", "name": "RX", "value": "B10"}, {"type": "output", "name": "DCD", "value": "B15"}, {"type": "output", "name": "DSR", "value": "B14"}, {"type": "input", "name": "DTR", "value": "A16"}, {"type": "output", "name": "CTS", "value": "A15"}, {"type": "input", "name": "RTS", "value": "B13"}, {"type": "inout", "name": "A16", "value": "A16"}, {"type": "inout", "name": "A15", "value": "A15"}, {"type": "inout", "name": "B15", "value": "B15"}, {"type": "inout", "name": "B13", "value": "B13"}, {"type": "inout", "name": "B14", "value": "B14"}, {"type": "inout", "name": "B12", "value": "B12"}, {"type": "inout", "name": "B11", "value": "B11"}, {"type": "inout", "name": "A11", "value": "A11"}, {"type": "inout", "name": "B10", "value": "B10"}, {"type": "inout", "name": "A10", "value": "A10"}, {"type": "inout", "name": "C9", "value": "C9"}, {"type": "inout", "name": "A9", "value": "A9"}, {"type": "inout", "name": "B9", "value": "B9"}, {"type": "inout", "name": "B8", "value": "B8"}, {"type": "inout", "name": "A7", "value": "A7"}, {"type": "inout", "name": "B7", "value": "B7"}, {"type": "inout", "name": "C7", "value": "C7"}, {"type": "inout", "name": "A6", "value": "A6"}, {"type": "inout", "name": "C6", "value": "C6"}, {"type": "inout", "name": "B6", "value": "B6"}, {"type": "inout", "name": "C5", "value": "C5"}, {"type": "inout", "name": "A5", "value": "A5"}, {"type": "inout", "name": "C4", "value": "C4"}, {"type": "inout", "name": "B5", "value": "B5"}, {"type": "inout", "name": "C3", "value": "C3"}, {"type": "inout", "name": "B4", "value": "B4"}, {"type": "inout", "name": "B3", "value": "B3"}, {"type": "inout", "name": "A2", "value": "A2"}, {"type": "inout", "name": "A1", "value": "A1"}, {"type": "inout", "name": "R15", "value": "R15"}, {"type": "inout", "name": "P16", "value": "P16"}, {"type": "inout", "name": "P15", "value": "P15"}, {"type": "inout", "name": "N16", "value": "N16"}, {"type": "inout", "name": "M15", "value": "M15"}, {"type": "inout", "name": "M16", "value": "M16"}, {"type": "inout", "name": "L16", "value": "L16"}, {"type": "inout", "name": "K15", "value": "K15"}, {"type": "inout", "name": "K16", "value": "K16"}, {"type": "inout", "name": "K14", "value": "K14"}, {"type": "inout", "name": "J14", "value": "J14"}, {"type": "inout", "name": "G14", "value": "G14"}, {"type": "inout", "name": "F14", "value": "F14"}, {"type": "inout", "name": "J15", "value": "J15"}, {"type": "inout", "name": "H14", "value": "H14"}, {"type": "inout", "name": "H16", "value": "H16"}, {"type": "inout", "name": "G15", "value": "G15"}, {"type": "inout", "name": "G16", "value": "G16"}, {"type": "inout", "name": "F15", "value": "F15"}, {"type": "inout", "name": "F16", "value": "F16"}, {"type": "inout", "name": "E14", "value": "E14"}, {"type": "inout", "name": "E16", "value": "E16"}, {"type": "inout", "name": "D15", "value": "D15"}, {"type": "inout", "name": "D16", "value": "D16"}, {"type": "inout", "name": "D14", "value": "D14"}, {"type": "inout", "name": "C16", "value": "C16"}, {"type": "inout", "name": "B16", "value": "B16"}, {"type": "inout", "name": "R16", "value": "R16"}, {"type": "inout", "name": "T15", "value": "T15"}, {"type": "inout", "name": "T16", "value": "T16"}, {"type": "inout", "name": "T13", "value": "T13"}, {"type": "inout", "name": "T14", "value": "T14"}, {"type": "inout", "name": "N12", "value": "N12"}, {"type": "inout", "name": "P13", "value": "P13"}, {"type": "inout", "name": "N10", "value": "N10"}, {"type": "inout", "name": "M11", "value": "M11"}, {"type": "inout", "name": "T11", "value": "T11"}, {"type": "inout", "name": "P10", "value": "P10"}, {"type": "inout", "name": "T10", "value": "T10"}, {"type": "inout", "name": "R10", "value": "R10"}, {"type": "inout", "name": "P8", "value": "P8"}, {"type": "inout", "name": "P9", "value": "P9"}, {"type": "inout", "name": "T9", "value": "T9"}, {"type": "inout", "name": "R9", "value": "R9"}, {"type": "inout", "name": "T7", "value": "T7"}, {"type": "inout", "name": "T8", "value": "T8"}, {"type": "inout", "name": "T6", "value": "T6"}, {"type": "inout", "name": "R6", "value": "R6"}, {"type": "inout", "name": "T5", "value": "T5"}, {"type": "inout", "name": "R5", "value": "R5"}, {"type": "inout", "name": "R3", "value": "R3"}, {"type": "inout", "name": "R4", "value": "R4"}, {"type": "inout", "name": "R2", "value": "R2"}, {"type": "inout", "name": "T3", "value": "T3"}, {"type": "inout", "name": "T1", "value": "T1"}, {"type": "inout", "name": "T2", "value": "T2"}, {"type": "inout", "name": "R1", "value": "R1"}, {"type": "inout", "name": "P1", "value": "P1"}, {"type": "inout", "name": "P2", "value": "P2"}, {"type": "inout", "name": "N3", "value": "N3"}, {"type": "inout", "name": "N2", "value": "N2"}, {"type": "inout", "name": "M2", "value": "M2"}, {"type": "inout", "name": "M1", "value": "M1"}, {"type": "inout", "name": "L3", "value": "L3"}, {"type": "inout", "name": "L1", "value": "L1"}, {"type": "inout", "name": "K3", "value": "K3"}, {"type": "inout", "name": "K1", "value": "K1"}, {"type": "inout", "name": "J2", "value": "J2"}, {"type": "inout", "name": "J1", "value": "J1"}, {"type": "inout", "name": "H2", "value": "H2"}, {"type": "inout", "name": "J3", "value": "J3"}, {"type": "inout", "name": "G2", "value": "G2"}, {"type": "inout", "name": "H1", "value": "H1"}, {"type": "inout", "name": "F2", "value": "F2"}, {"type": "inout", "name": "G1", "value": "G1"}, {"type": "inout", "name": "E2", "value": "E2"}, {"type": "inout", "name": "F1", "value": "F1"}, {"type": "inout", "name": "D1", "value": "D1"}, {"type": "inout", "name": "D2", "value": "D2"}, {"type": "inout", "name": "C1", "value": "C1"}, {"type": "inout", "name": "C2", "value": "C2"}, {"type": "inout", "name": "B1", "value": "B1"}, {"type": "inout", "name": "B2", "value": "B2"}] \ No newline at end of file From d89b57e752d0117c2384858e43cd3d2af2817444 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Sun, 22 Oct 2017 01:52:26 +0200 Subject: [PATCH 07/33] Add FPGA resources section --- app/scripts/controllers/design.js | 2 +- app/scripts/controllers/menu.js | 2 +- app/scripts/services/common.js | 16 ++++++++++++++++ app/scripts/services/graph.js | 12 ++++++------ app/styles/design.css | 8 ++++++++ app/views/design.html | 11 ++++++++--- 6 files changed, 40 insertions(+), 11 deletions(-) diff --git a/app/scripts/controllers/design.js b/app/scripts/controllers/design.js index f0c249ae4..f513e70eb 100644 --- a/app/scripts/controllers/design.js +++ b/app/scripts/controllers/design.js @@ -14,7 +14,7 @@ angular.module('icestudio') // Intialization - graph.createPaper($('#paper')); + graph.createPaper($('.paper')); // Breadcrumbs diff --git a/app/scripts/controllers/menu.js b/app/scripts/controllers/menu.js index d2ec13bb0..8fd881a1d 100644 --- a/app/scripts/controllers/menu.js +++ b/app/scripts/controllers/menu.js @@ -751,7 +751,7 @@ angular.module('icestudio') $(document).on('mouseup', function() { mousedown = false; }); - $(document).on('mousedown', '#paper', function() { + $(document).on('mousedown', '.paper', function() { mousedown = true; // Close current menu $scope.status[menu] = false; diff --git a/app/scripts/services/common.js b/app/scripts/services/common.js index e6550ccc7..02274c5b1 100644 --- a/app/scripts/services/common.js +++ b/app/scripts/services/common.js @@ -20,6 +20,22 @@ angular.module('icestudio') this.collections = []; this.selectedCollection = null; + // FPGA resources + this.fpgaResources = { + pios: { + used: '-', + total: 96 + }, + plbs: { + used: '-', + total: 160 + }, + brams: { + used: '-', + total: 16 + } + }; + // OS this.LINUX = Boolean(process.platform.indexOf('linux') > -1); this.WIN32 = Boolean(process.platform.indexOf('win32') > -1); diff --git a/app/scripts/services/graph.js b/app/scripts/services/graph.js index 23dbf562e..49bba489c 100644 --- a/app/scripts/services/graph.js +++ b/app/scripts/services/graph.js @@ -573,15 +573,15 @@ angular.module('icestudio') paper.options.enabled = value; if (value) { angular.element('#menu').removeClass('is-disabled'); - angular.element('#paper').removeClass('looks-disabled'); - angular.element('#board').removeClass('looks-disabled'); - angular.element('#banner').addClass('hidden'); + angular.element('.paper').removeClass('looks-disabled'); + angular.element('.board-container').removeClass('looks-disabled'); + angular.element('.banner').addClass('hidden'); } else { angular.element('#menu').addClass('is-disabled'); - angular.element('#paper').addClass('looks-disabled'); - angular.element('#board').addClass('looks-disabled'); - angular.element('#banner').removeClass('hidden'); + angular.element('.paper').addClass('looks-disabled'); + angular.element('.board-container').addClass('looks-disabled'); + angular.element('.banner').removeClass('hidden'); } var cells = graph.getCells(); _.each(cells, function(cell) { diff --git a/app/styles/design.css b/app/styles/design.css index c18dd7016..4410659eb 100644 --- a/app/styles/design.css +++ b/app/styles/design.css @@ -34,6 +34,14 @@ padding: 0 15px; } +.fpga-resources { + color: #777; +} + +.fpga-resources span { + margin-right: 20px; +} + .breadcrumb { margin: 0; background-color: #f5f6f7; diff --git a/app/views/design.html b/app/views/design.html index ff5309b64..5d33647ba 100644 --- a/app/views/design.html +++ b/app/views/design.html @@ -1,11 +1,11 @@
    -
-
+
PIOs:  {{ common.fpgaResources.pios.used }} / {{ common.fpgaResources.pios.total }} PLBs:  {{ common.fpgaResources.plbs.used }} / {{ common.fpgaResources.plbs.total }} BRAMs:  {{ common.fpgaResources.brams.used }} / {{ common.fpgaResources.brams.total }} diff --git a/app/views/menu.html b/app/views/menu.html index 8b15cb462..8752ec663 100644 --- a/app/views/menu.html +++ b/app/views/menu.html @@ -173,6 +173,13 @@
  • {{ 'Collection info' | translate }}
  • +
  • +
  • + + {{ 'FPGA resources' | translate }}  + + +
  • From bda666727f5cdc85c01c69e31bed223b0176d6c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Sun, 22 Oct 2017 02:14:29 +0200 Subject: [PATCH 09/33] Store showFPGAResources in the profile --- app/scripts/controllers/design.js | 4 +++- app/scripts/controllers/menu.js | 2 +- app/scripts/services/common.js | 3 +-- app/scripts/services/profile.js | 6 ++++-- app/views/design.html | 8 ++++---- app/views/menu.html | 2 +- 6 files changed, 14 insertions(+), 11 deletions(-) diff --git a/app/scripts/controllers/design.js b/app/scripts/controllers/design.js index f513e70eb..6a65b6b63 100644 --- a/app/scripts/controllers/design.js +++ b/app/scripts/controllers/design.js @@ -4,12 +4,14 @@ angular.module('icestudio') .controller('DesignCtrl', function ($rootScope, $scope, project, + profile, graph, utils, common) { - $scope.common = common; $scope.graph = graph; + $scope.common = common; + $scope.profile = profile; $scope.information = {}; // Intialization diff --git a/app/scripts/controllers/menu.js b/app/scripts/controllers/menu.js index 02efe2e2c..907b84621 100644 --- a/app/scripts/controllers/menu.js +++ b/app/scripts/controllers/menu.js @@ -451,7 +451,7 @@ angular.module('icestudio') }; $scope.toggleFPGAResources = function() { - common.fpgaResources.show = !common.fpgaResources.show; + profile.set('showFPGAResources', !profile.get('showFPGAResources')); }; $scope.showCollectionData = function() { diff --git a/app/scripts/services/common.js b/app/scripts/services/common.js index 58146abc4..d4545b429 100644 --- a/app/scripts/services/common.js +++ b/app/scripts/services/common.js @@ -21,8 +21,7 @@ angular.module('icestudio') this.selectedCollection = null; // FPGA resources - this.fpgaResources = { - show: false, + this.FPGAResources = { pios: { used: '-', total: 96 diff --git a/app/scripts/services/profile.js b/app/scripts/services/profile.js index c978fd869..b8d71cc42 100644 --- a/app/scripts/services/profile.js +++ b/app/scripts/services/profile.js @@ -10,7 +10,8 @@ angular.module('icestudio') 'remoteHostname': '', 'collection': '', 'board': '', - 'boardRules': true + 'boardRules': true, + 'showFPGAResources': false }; if (common.DARWIN) { @@ -26,7 +27,8 @@ angular.module('icestudio') 'remoteHostname': data.remoteHostname || '', 'collection': data.collection || '', 'board': data.board || '', - 'boardRules': data.boardRules !== false + 'boardRules': data.boardRules !== false, + 'showFPGAResources': data.showFPGAResources || false }; if (common.DARWIN) { self.data['macosDrivers'] = data.macosDrivers || false; diff --git a/app/views/design.html b/app/views/design.html index 555cc1f59..87ae71d1d 100644 --- a/app/views/design.html +++ b/app/views/design.html @@ -16,10 +16,10 @@
    -
    - PIOs:  {{ common.fpgaResources.pios.used }} / {{ common.fpgaResources.pios.total }} - PLBs:  {{ common.fpgaResources.plbs.used }} / {{ common.fpgaResources.plbs.total }} - BRAMs:  {{ common.fpgaResources.brams.used }} / {{ common.fpgaResources.brams.total }} +
    + PIOs:  {{ common.FPGAResources.pios.used }} / {{ common.FPGAResources.pios.total }} + PLBs:  {{ common.FPGAResources.plbs.used }} / {{ common.FPGAResources.plbs.total }} + BRAMs:  {{ common.FPGAResources.brams.used }} / {{ common.FPGAResources.brams.total }}
    {{ common.selectedBoard.info.label }}
    diff --git a/app/views/menu.html b/app/views/menu.html index 8752ec663..a7db33680 100644 --- a/app/views/menu.html +++ b/app/views/menu.html @@ -177,7 +177,7 @@
  • {{ 'FPGA resources' | translate }}  - +
  • From f13cb8b3b8056080b39dc98e89c795d012990d02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Sun, 22 Oct 2017 02:26:55 +0200 Subject: [PATCH 10/33] Add FPGA total resources for all supported boards --- app/resources/boards/go-board/info.json | 7 ++++++- app/resources/boards/iCE40-HX8K/info.json | 7 ++++++- app/resources/boards/icestick/info.json | 7 ++++++- app/resources/boards/icezum/info.json | 7 ++++++- app/resources/boards/icoboard/info.json | 7 ++++++- app/resources/boards/kefir/info.json | 7 ++++++- app/scripts/services/common.js | 15 +++------------ app/views/design.html | 6 +++--- 8 files changed, 42 insertions(+), 21 deletions(-) diff --git a/app/resources/boards/go-board/info.json b/app/resources/boards/go-board/info.json index db4ce4cf4..4e46bfd93 100644 --- a/app/resources/boards/go-board/info.json +++ b/app/resources/boards/go-board/info.json @@ -1,4 +1,9 @@ { "label": "Nandland Go board", - "datasheet": "https://www.nandland.com/goboard/introduction.html" + "datasheet": "https://www.nandland.com/goboard/introduction.html", + "FPGAResources": { + "pios": 72, + "plbs": 160, + "brams": 16 + } } diff --git a/app/resources/boards/iCE40-HX8K/info.json b/app/resources/boards/iCE40-HX8K/info.json index a7fbb23de..4080c7d1b 100644 --- a/app/resources/boards/iCE40-HX8K/info.json +++ b/app/resources/boards/iCE40-HX8K/info.json @@ -1,4 +1,9 @@ { "label": "iCE40-HX8K Breakout Board", - "datasheet": "http://www.latticesemi.com/view_document?document_id=50373" + "datasheet": "http://www.latticesemi.com/view_document?document_id=50373", + "FPGAResources": { + "pios": 206, + "plbs": 960, + "brams": 32 + } } diff --git a/app/resources/boards/icestick/info.json b/app/resources/boards/icestick/info.json index 740dc73a6..7c7a54d3f 100644 --- a/app/resources/boards/icestick/info.json +++ b/app/resources/boards/icestick/info.json @@ -1,4 +1,9 @@ { "label": "iCEstick Evaluation Kit", - "datasheet": "http://www.latticesemi.com/icestick" + "datasheet": "http://www.latticesemi.com/icestick", + "FPGAResources": { + "pios": 96, + "plbs": 160, + "brams": 16 + } } diff --git a/app/resources/boards/icezum/info.json b/app/resources/boards/icezum/info.json index 8e4c4239d..fcecb89d9 100644 --- a/app/resources/boards/icezum/info.json +++ b/app/resources/boards/icezum/info.json @@ -1,4 +1,9 @@ { "label": "IceZUM Alhambra", - "datasheet": "https://github.com/FPGAwars/icezum/wiki" + "datasheet": "https://github.com/FPGAwars/icezum/wiki", + "FPGAResources": { + "pios": 96, + "plbs": 160, + "brams": 16 + } } diff --git a/app/resources/boards/icoboard/info.json b/app/resources/boards/icoboard/info.json index bc2e39a50..902b4c8cd 100644 --- a/app/resources/boards/icoboard/info.json +++ b/app/resources/boards/icoboard/info.json @@ -1,4 +1,9 @@ { "label": "icoBOARD 1.0", - "datasheet": "http://icoboard.org/about-icoboard.html" + "datasheet": "http://icoboard.org/about-icoboard.html", + "FPGAResources": { + "pios": 206, + "plbs": 960, + "brams": 32 + } } diff --git a/app/resources/boards/kefir/info.json b/app/resources/boards/kefir/info.json index 0e521f54f..fa2679f3f 100644 --- a/app/resources/boards/kefir/info.json +++ b/app/resources/boards/kefir/info.json @@ -1,4 +1,9 @@ { "label": "Kéfir I iCE40-HX4K", - "datasheet": "http://fpgalibre.sourceforge.net/Kefir/" + "datasheet": "http://fpgalibre.sourceforge.net/Kefir/", + "FPGAResources": { + "pios": 107, + "plbs": 960, + "brams": 32 + } } diff --git a/app/scripts/services/common.js b/app/scripts/services/common.js index d4545b429..4840e90e2 100644 --- a/app/scripts/services/common.js +++ b/app/scripts/services/common.js @@ -22,18 +22,9 @@ angular.module('icestudio') // FPGA resources this.FPGAResources = { - pios: { - used: '-', - total: 96 - }, - plbs: { - used: '-', - total: 160 - }, - brams: { - used: '-', - total: 16 - } + pios: '-', + plbs: '-', + brams: '-' }; // OS diff --git a/app/views/design.html b/app/views/design.html index 87ae71d1d..96a3e0dd3 100644 --- a/app/views/design.html +++ b/app/views/design.html @@ -17,9 +17,9 @@
    - PIOs:  {{ common.FPGAResources.pios.used }} / {{ common.FPGAResources.pios.total }} - PLBs:  {{ common.FPGAResources.plbs.used }} / {{ common.FPGAResources.plbs.total }} - BRAMs:  {{ common.FPGAResources.brams.used }} / {{ common.FPGAResources.brams.total }} + PIOs:  {{ common.FPGAResources.pios }} / {{ common.selectedBoard.info.FPGAResources.pios }} + PLBs:  {{ common.FPGAResources.plbs }} / {{ common.selectedBoard.info.FPGAResources.plbs }} + BRAMs:  {{ common.FPGAResources.brams }} / {{ common.selectedBoard.info.FPGAResources.brams }}
    {{ common.selectedBoard.info.label }}
    From 69d868cd057ab7aa98d3c93bb8732d50a1ceb7c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Sun, 22 Oct 2017 02:50:26 +0200 Subject: [PATCH 11/33] Update FPGA used resources on build --- app/scripts/services/tools.js | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/app/scripts/services/tools.js b/app/scripts/services/tools.js index 4ac91b8c0..206a2e779 100644 --- a/app/scripts/services/tools.js +++ b/app/scripts/services/tools.js @@ -463,29 +463,20 @@ angular.module('icestudio') if (stdout && show) { // Show used resources in the FPGA - /* - PIOs 0 / 96 - PLBs 0 / 160 - BRAMs 0 / 16 - */ - var match; - var fpgaResources = ''; - var patterns = [ /PIOs.+/g, /PLBs.+/g, /BRAMs.+/g ]; - - for (var p in patterns) { - match = patterns[p].exec(stdout); - fpgaResources += (match && match.length > 0) ? match[0] + '\n' : ''; - } - if (fpgaResources) { - setTimeout(function() { - alertify.message('
    ' + fpgaResources + '
    ', 5); - }, 0); - } + common.FPGAResources.pios = findFPGAResources(/PIOs\s+([0-9]+)\s/g, stdout, common.FPGAResources.pios); + common.FPGAResources.plbs = findFPGAResources(/PLBs\s+([0-9]+)\s/g, stdout, common.FPGAResources.plbs); + common.FPGAResources.brams = findFPGAResources(/BRAMs\s+([0-9]+)\s/g, stdout, common.FPGAResources.brams); + utils.rootScopeSafeApply(); } } }); } + function findFPGAResources(pattern, output, previousValue) { + var match = pattern.exec(output); + return (match && match[1]) ? match[1] : previousValue; + } + function mapCodeModules(code) { var codelines = code.split('\n'); var match, module = { params: [] }, modules = []; From 75e385fe3269e3124f108fa50e44853a48d42f9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Sun, 22 Oct 2017 03:30:28 +0200 Subject: [PATCH 12/33] Reset FPGA resources if there are changes. Restore with undo --- app/scripts/controllers/menu.js | 38 ++++++++++++++++++++++----------- app/scripts/services/common.js | 3 +++ app/views/design.html | 12 ++++++++--- 3 files changed, 38 insertions(+), 15 deletions(-) diff --git a/app/scripts/controllers/menu.js b/app/scripts/controllers/menu.js index 907b84621..b8f6b8900 100644 --- a/app/scripts/controllers/menu.js +++ b/app/scripts/controllers/menu.js @@ -33,9 +33,12 @@ angular.module('icestudio') $scope.snapshotdir = ''; var zeroProject = true; // New project without changes - var resultAlert = null; + var buildUndoStack = []; + var storedUndoStack = []; + var currentUndoStack = []; + // Window events var win = gui.Window.get(); win.on('close', function() { @@ -206,7 +209,8 @@ angular.module('icestudio') // Update the working directory updateWorkingdir(filepath); }); - }); + }) + .catch(function () {}); } function exportFromBuilder(id, name, ext) { @@ -226,7 +230,8 @@ angular.module('icestudio') // Update the working directory updateWorkingdir(filepath); }); - }); + }) + .catch(function () {}); } function updateWorkingdir(filepath) { @@ -308,7 +313,8 @@ angular.module('icestudio') checkGraph() .then(function() { graph.selectAll(); - }); + }) + .catch(function () {}); }; function removeSelected() { @@ -527,7 +533,8 @@ angular.module('icestudio') }) .then(function() { return tools.verifyCode(startMessage, endMessage); - }); + }) + .catch(function () {}); }; $scope.buildCode = function() { @@ -538,8 +545,14 @@ angular.module('icestudio') return graph.resetCodeErrors(); }) .then(function() { - return tools.buildCode(startMessage, endMessage); - }); + return tools.buildCode(startMessage, endMessage) + .then(function() { + // Success: reset build undo stack + buildUndoStack = currentUndoStack; + common.hasChangesSinceBuild = false; + }); + }) + .catch(function () {}); }; $scope.uploadCode = function() { @@ -551,7 +564,8 @@ angular.module('icestudio') }) .then(function() { return tools.uploadCode(startMessage, endMessage); - }); + }) + .catch(function () {}); }; function checkGraph() { @@ -628,14 +642,14 @@ angular.module('icestudio') // Events - var storedUndoStack = []; - var currentUndoStack = []; - $(document).on('stackChanged', function(evt, undoStack) { currentUndoStack = undoStack; - project.changed = JSON.stringify(storedUndoStack) !== JSON.stringify(undoStack); + var undoStackString = JSON.stringify(undoStack); + project.changed = JSON.stringify(storedUndoStack) !== undoStackString; project.updateTitle(); zeroProject = false; + common.hasChangesSinceBuild = JSON.stringify(buildUndoStack) !== undoStackString; + utils.rootScopeSafeApply(); }); function resetChanged() { diff --git a/app/scripts/services/common.js b/app/scripts/services/common.js index 4840e90e2..675a5e5cc 100644 --- a/app/scripts/services/common.js +++ b/app/scripts/services/common.js @@ -7,6 +7,9 @@ angular.module('icestudio') // Project version this.VERSION = '1.1'; + // Project status + this.hasChangesSinceBuild = false; + // All project dependencies this.allDependencies = {}; diff --git a/app/views/design.html b/app/views/design.html index 96a3e0dd3..2f28c4529 100644 --- a/app/views/design.html +++ b/app/views/design.html @@ -17,9 +17,15 @@
    - PIOs:  {{ common.FPGAResources.pios }} / {{ common.selectedBoard.info.FPGAResources.pios }} - PLBs:  {{ common.FPGAResources.plbs }} / {{ common.selectedBoard.info.FPGAResources.plbs }} - BRAMs:  {{ common.FPGAResources.brams }} / {{ common.selectedBoard.info.FPGAResources.brams }} + + PIOs:  {{ common.hasChangesSinceBuild ? '-' : common.FPGAResources.pios }} / {{ common.selectedBoard.info.FPGAResources.pios }} + + + PLBs:  {{ common.hasChangesSinceBuild ? '-' : common.FPGAResources.plbs }} / {{ common.selectedBoard.info.FPGAResources.plbs }} + + + BRAMs:  {{ common.hasChangesSinceBuild ? '-' : common.FPGAResources.brams }} / {{ common.selectedBoard.info.FPGAResources.brams }} +
    {{ common.selectedBoard.info.label }}
    From dd22ee42f8ffff771173ca5d90a1eabf7593b038 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Sun, 22 Oct 2017 03:40:49 +0200 Subject: [PATCH 13/33] Show FPGA resources only on top module --- app/scripts/controllers/design.js | 3 +++ app/views/design.html | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/scripts/controllers/design.js b/app/scripts/controllers/design.js index 6a65b6b63..74acb407d 100644 --- a/app/scripts/controllers/design.js +++ b/app/scripts/controllers/design.js @@ -13,6 +13,7 @@ angular.module('icestudio') $scope.common = common; $scope.profile = profile; $scope.information = {}; + $scope.topModule = true; // Intialization @@ -42,6 +43,7 @@ angular.module('icestudio') var design = project.get('design'); opt.disabled = false; graph.loadDesign(design, opt); + $scope.topModule = true; } else { var type = graph.breadcrumbs[n-1].type; @@ -68,6 +70,7 @@ angular.module('icestudio') graph.fitContent(); }); } + $scope.topModule = false; $scope.information = args.project.package; utils.rootScopeSafeApply(); }); diff --git a/app/views/design.html b/app/views/design.html index 2f28c4529..b6bfec79b 100644 --- a/app/views/design.html +++ b/app/views/design.html @@ -16,7 +16,7 @@
    -
    +
    PIOs:  {{ common.hasChangesSinceBuild ? '-' : common.FPGAResources.pios }} / {{ common.selectedBoard.info.FPGAResources.pios }} From d3db17e0b9efd2f58568922aa165dec021ff5b82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Sun, 22 Oct 2017 10:08:03 +0200 Subject: [PATCH 14/33] Set FPGA resources on Export > BLIF,ASC,Bitstream and Tools > Upload --- app/scripts/controllers/menu.js | 25 +++++++++++++++++++------ app/scripts/services/tools.js | 7 +++---- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/app/scripts/controllers/menu.js b/app/scripts/controllers/menu.js index b8f6b8900..4aca6282e 100644 --- a/app/scripts/controllers/menu.js +++ b/app/scripts/controllers/menu.js @@ -221,6 +221,12 @@ angular.module('icestudio') .then(function() { return tools.buildCode(); }) + .then(function() { + // Success: reset build undo stack + buildUndoStack = currentUndoStack; + common.hasChangesSinceBuild = false; + utils.rootScopeSafeApply(); + }) .then(function() { utils.saveDialog('#input-export-' + id, ext, function(filepath) { // Copy the built file @@ -545,12 +551,13 @@ angular.module('icestudio') return graph.resetCodeErrors(); }) .then(function() { - return tools.buildCode(startMessage, endMessage) - .then(function() { - // Success: reset build undo stack - buildUndoStack = currentUndoStack; - common.hasChangesSinceBuild = false; - }); + return tools.buildCode(startMessage, endMessage); + }) + .then(function() { + // Success: reset build undo stack + buildUndoStack = currentUndoStack; + common.hasChangesSinceBuild = false; + utils.rootScopeSafeApply(); }) .catch(function () {}); }; @@ -565,6 +572,12 @@ angular.module('icestudio') .then(function() { return tools.uploadCode(startMessage, endMessage); }) + .then(function() { + // Success: reset build undo stack + buildUndoStack = currentUndoStack; + common.hasChangesSinceBuild = false; + utils.rootScopeSafeApply(); + }) .catch(function () {}); }; diff --git a/app/scripts/services/tools.js b/app/scripts/services/tools.js index 206a2e779..64ce1a26a 100644 --- a/app/scripts/services/tools.js +++ b/app/scripts/services/tools.js @@ -82,8 +82,7 @@ angular.module('icestudio') } }) .then(function(result) { - var show = startMessage || endMessage; - return processResult(result, sourceCode, show); + return processResult(result, sourceCode); }) .then(function() { // Success @@ -315,7 +314,7 @@ angular.module('icestudio') }); } - function processResult(result, code, show) { + function processResult(result, code) { result = result || {}; var error = result.error; var stdout = result.stdout; @@ -461,7 +460,7 @@ angular.module('icestudio') //-- Process output resolve(); - if (stdout && show) { + if (stdout) { // Show used resources in the FPGA common.FPGAResources.pios = findFPGAResources(/PIOs\s+([0-9]+)\s/g, stdout, common.FPGAResources.pios); common.FPGAResources.plbs = findFPGAResources(/PLBs\s+([0-9]+)\s/g, stdout, common.FPGAResources.plbs); From ad1878467c952e4566f2b4bdbb66c9d3ced4285c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Sun, 22 Oct 2017 10:51:40 +0200 Subject: [PATCH 15/33] Refactor resetBuildStack --- app/scripts/controllers/menu.js | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/app/scripts/controllers/menu.js b/app/scripts/controllers/menu.js index 4aca6282e..539ca9c06 100644 --- a/app/scripts/controllers/menu.js +++ b/app/scripts/controllers/menu.js @@ -36,7 +36,7 @@ angular.module('icestudio') var resultAlert = null; var buildUndoStack = []; - var storedUndoStack = []; + var changedUndoStack = []; var currentUndoStack = []; // Window events @@ -133,7 +133,7 @@ angular.module('icestudio') var filepath = project.path; if (filepath) { project.save(filepath); - resetChanged(); + resetChangedStack(); } else { $scope.saveProjectAs(); @@ -144,7 +144,7 @@ angular.module('icestudio') utils.saveDialog('#input-save-project', '.ice', function(filepath) { updateWorkingdir(filepath); project.save(filepath); - resetChanged(); + resetChangedStack(); if (localCallback) { localCallback(); } @@ -222,10 +222,7 @@ angular.module('icestudio') return tools.buildCode(); }) .then(function() { - // Success: reset build undo stack - buildUndoStack = currentUndoStack; - common.hasChangesSinceBuild = false; - utils.rootScopeSafeApply(); + resetBuildStack(); }) .then(function() { utils.saveDialog('#input-export-' + id, ext, function(filepath) { @@ -554,10 +551,7 @@ angular.module('icestudio') return tools.buildCode(startMessage, endMessage); }) .then(function() { - // Success: reset build undo stack - buildUndoStack = currentUndoStack; - common.hasChangesSinceBuild = false; - utils.rootScopeSafeApply(); + resetBuildStack(); }) .catch(function () {}); }; @@ -573,10 +567,7 @@ angular.module('icestudio') return tools.uploadCode(startMessage, endMessage); }) .then(function() { - // Success: reset build undo stack - buildUndoStack = currentUndoStack; - common.hasChangesSinceBuild = false; - utils.rootScopeSafeApply(); + resetBuildStack(); }) .catch(function () {}); }; @@ -658,20 +649,26 @@ angular.module('icestudio') $(document).on('stackChanged', function(evt, undoStack) { currentUndoStack = undoStack; var undoStackString = JSON.stringify(undoStack); - project.changed = JSON.stringify(storedUndoStack) !== undoStackString; + project.changed = JSON.stringify(changedUndoStack) !== undoStackString; project.updateTitle(); zeroProject = false; common.hasChangesSinceBuild = JSON.stringify(buildUndoStack) !== undoStackString; utils.rootScopeSafeApply(); }); - function resetChanged() { - storedUndoStack = currentUndoStack; + function resetChangedStack() { + changedUndoStack = currentUndoStack; project.changed = false; project.updateTitle(); zeroProject = false; } + function resetBuildStack() { + buildUndoStack = currentUndoStack; + common.hasChangesSinceBuild = false; + utils.rootScopeSafeApply(); + } + // Detect prompt var promptShown = false; From bc165e2b64094b356ff2c091d0ba249a4657fab1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Sun, 22 Oct 2017 11:47:56 +0200 Subject: [PATCH 16/33] Fix reset code errors --- app/scripts/controllers/menu.js | 12 ------------ app/scripts/services/tools.js | 6 +++++- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/app/scripts/controllers/menu.js b/app/scripts/controllers/menu.js index 539ca9c06..c80e631f7 100644 --- a/app/scripts/controllers/menu.js +++ b/app/scripts/controllers/menu.js @@ -215,9 +215,6 @@ angular.module('icestudio') function exportFromBuilder(id, name, ext) { checkGraph() - .then(function() { - return graph.resetCodeErrors(); - }) .then(function() { return tools.buildCode(); }) @@ -531,9 +528,6 @@ angular.module('icestudio') var startMessage = gettextCatalog.getString('Start verification'); var endMessage = gettextCatalog.getString('Verification done'); checkGraph() - .then(function() { - return graph.resetCodeErrors(); - }) .then(function() { return tools.verifyCode(startMessage, endMessage); }) @@ -544,9 +538,6 @@ angular.module('icestudio') var startMessage = gettextCatalog.getString('Start build'); var endMessage = gettextCatalog.getString('Build done'); checkGraph() - .then(function() { - return graph.resetCodeErrors(); - }) .then(function() { return tools.buildCode(startMessage, endMessage); }) @@ -560,9 +551,6 @@ angular.module('icestudio') var startMessage = gettextCatalog.getString('Start upload'); var endMessage = gettextCatalog.getString('Upload done'); checkGraph() - .then(function() { - return graph.resetCodeErrors(); - }) .then(function() { return tools.uploadCode(startMessage, endMessage); }) diff --git a/app/scripts/services/tools.js b/app/scripts/services/tools.js index 64ce1a26a..3072570e6 100644 --- a/app/scripts/services/tools.js +++ b/app/scripts/services/tools.js @@ -6,6 +6,7 @@ angular.module('icestudio') profile, collections, drivers, + graph, utils, common, gettextCatalog, @@ -60,7 +61,10 @@ angular.module('icestudio') resultAlert.dismiss(false); } - checkToolchainInstalled() + graph.resetCodeErrors() + .then(function() { + return checkToolchainInstalled(); + }) .then(function() { enableTaskMode(); if (startMessage) { From 97ad39c0f090da03be1b8d399c0798a95ba1b1ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Sun, 22 Oct 2017 14:10:06 +0200 Subject: [PATCH 17/33] Update alerts style --- app/styles/main.css | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/app/styles/main.css b/app/styles/main.css index a322eb26f..6f050f2dc 100644 --- a/app/styles/main.css +++ b/app/styles/main.css @@ -70,6 +70,24 @@ body { animation-duration: 10ms; } +.ajs-header { + display: none; +} + +.ajs-footer { + background: white !important; + border-top: none !important; +} + + +input:focus { + outline: #ccc solid 1px; +} + +button:focus { + outline: #ccc solid 2px; +} + ::selection { color: #fff; background: #3593d2; From 5e2eee80989073565c70d41034e03be279430699 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Sun, 22 Oct 2017 14:10:37 +0200 Subject: [PATCH 18/33] Default focus cancel on close alert --- app/scripts/controllers/menu.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/scripts/controllers/menu.js b/app/scripts/controllers/menu.js index c80e631f7..641c2b6a4 100644 --- a/app/scripts/controllers/menu.js +++ b/app/scripts/controllers/menu.js @@ -251,6 +251,7 @@ angular.module('icestudio') alertify.set('confirm', 'labels', { 'ok': gettextCatalog.getString('Close') }); + alertify.set('confirm', 'defaultFocus', 'cancel'); alertify.confirm( utils.bold(gettextCatalog.getString('Do you want to close the application?')) + '
    ' + gettextCatalog.getString('Your changes will be lost if you don’t save them'), @@ -264,6 +265,7 @@ angular.module('icestudio') alertify.set('confirm', 'labels', { 'ok': gettextCatalog.getString('OK') }); + alertify.set('confirm', 'defaultFocus', 'ok'); }, 200); } ); From c0cc3954699c438dcaaf1c0aa032d4dae924f388 Mon Sep 17 00:00:00 2001 From: "Salvador E. Tropea" Date: Mon, 23 Oct 2017 09:09:56 -0300 Subject: [PATCH 19/33] Added PMODA/B, RS-232 handshake and Arduino I/Os to the Kefir PCF --- app/resources/boards/kefir/pinout.json | 2 +- app/resources/boards/kefir/pinout.pcf | 59 ++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 1 deletion(-) diff --git a/app/resources/boards/kefir/pinout.json b/app/resources/boards/kefir/pinout.json index 1a9d46ba9..7c32de352 100644 --- a/app/resources/boards/kefir/pinout.json +++ b/app/resources/boards/kefir/pinout.json @@ -1 +1 @@ -[{"type": "input", "name": "BTN1", "value": "136"}, {"type": "input", "name": "BTN2", "value": "134"}, {"type": "input", "name": "BTN3", "value": "128"}, {"type": "input", "name": "BTN4", "value": "122"}, {"type": "output", "name": "LED1", "value": "137"}, {"type": "output", "name": "LED2", "value": "135"}, {"type": "output", "name": "LED3", "value": "129"}, {"type": "output", "name": "LED4", "value": "121"}, {"type": "input", "name": "CLK", "value": "49"}, {"type": "inout", "name": "SS_B", "value": "71"}, {"type": "inout", "name": "AD_CS", "value": "101"}, {"type": "inout", "name": "AD_Din", "value": "102"}, {"type": "inout", "name": "AD_Dout", "value": "104"}, {"type": "inout", "name": "AD_Clk", "value": "105"}, {"type": "inout", "name": "USB_Vp_o", "value": "112"}, {"type": "inout", "name": "USB_Vm_o", "value": "113"}, {"type": "inout", "name": "USB_Vm_i", "value": "114"}, {"type": "inout", "name": "USB_Vp_i", "value": "115"}, {"type": "inout", "name": "USB_nOE", "value": "116"}, {"type": "inout", "name": "ARDU00", "value": "138"}, {"type": "inout", "name": "ARDU01", "value": "141"}, {"type": "inout", "name": "ARDU02", "value": "143"}, {"type": "inout", "name": "ARDU03", "value": "1"}, {"type": "inout", "name": "RESET_P2", "value": "73"}, {"type": "inout", "name": "Milk_TXD", "value": "37"}, {"type": "inout", "name": "Milk_RXD", "value": "38"}] \ No newline at end of file +[{"type": "input", "name": "BTN1", "value": "136"}, {"type": "input", "name": "BTN2", "value": "134"}, {"type": "input", "name": "BTN3", "value": "128"}, {"type": "input", "name": "BTN4", "value": "122"}, {"type": "output", "name": "LED1", "value": "137"}, {"type": "output", "name": "LED2", "value": "135"}, {"type": "output", "name": "LED3", "value": "129"}, {"type": "output", "name": "LED4", "value": "121"}, {"type": "input", "name": "CLK", "value": "49"}, {"type": "inout", "name": "SS_B", "value": "71"}, {"type": "inout", "name": "ISP_RESET", "value": "117"}, {"type": "inout", "name": "ISP_SCK", "value": "118"}, {"type": "inout", "name": "ISP_MOSI", "value": "119"}, {"type": "inout", "name": "ISP_MISO", "value": "120"}, {"type": "inout", "name": "AD_CS", "value": "101"}, {"type": "inout", "name": "AD_Din", "value": "102"}, {"type": "inout", "name": "AD_Dout", "value": "104"}, {"type": "inout", "name": "AD_Clk", "value": "105"}, {"type": "inout", "name": "USB_Vp_o", "value": "112"}, {"type": "inout", "name": "USB_Vm_o", "value": "113"}, {"type": "inout", "name": "USB_Vm_i", "value": "114"}, {"type": "inout", "name": "USB_Vp_i", "value": "115"}, {"type": "inout", "name": "USB_nOE", "value": "116"}, {"type": "inout", "name": "ARDU00", "value": "138"}, {"type": "inout", "name": "ARDU01", "value": "141"}, {"type": "inout", "name": "ARDU02", "value": "143"}, {"type": "inout", "name": "ARDU03", "value": "1"}, {"type": "inout", "name": "ARDU04", "value": "4"}, {"type": "inout", "name": "ARDU05", "value": "8"}, {"type": "inout", "name": "ARDU06", "value": "10"}, {"type": "inout", "name": "ARDU07", "value": "12"}, {"type": "inout", "name": "ARDU08", "value": "19"}, {"type": "inout", "name": "ARDU09", "value": "21"}, {"type": "inout", "name": "ARDU10", "value": "23"}, {"type": "inout", "name": "ARDU11", "value": "25"}, {"type": "inout", "name": "ARDU12", "value": "28"}, {"type": "inout", "name": "ARDU13", "value": "31"}, {"type": "inout", "name": "ARDU26", "value": "139"}, {"type": "inout", "name": "ARDU27", "value": "142"}, {"type": "inout", "name": "ARDU28", "value": "144"}, {"type": "inout", "name": "ARDU29", "value": "2"}, {"type": "inout", "name": "ARDU30", "value": "3"}, {"type": "inout", "name": "ARDU31", "value": "7"}, {"type": "inout", "name": "ARDU32", "value": "9"}, {"type": "inout", "name": "ARDU33", "value": "11"}, {"type": "inout", "name": "ARDU34", "value": "20"}, {"type": "inout", "name": "ARDU35", "value": "22"}, {"type": "inout", "name": "ARDU36", "value": "24"}, {"type": "inout", "name": "ARDU37", "value": "26"}, {"type": "inout", "name": "ARDU38", "value": "29"}, {"type": "inout", "name": "ARDU39", "value": "32"}, {"type": "inout", "name": "ARDU40", "value": "33"}, {"type": "inout", "name": "ARDU41", "value": "34"}, {"type": "inout", "name": "RESET_P2", "value": "73"}, {"type": "inout", "name": "Milk_TXD", "value": "37"}, {"type": "inout", "name": "Milk_RXD", "value": "38"}, {"type": "inout", "name": "Milk_RTS", "value": "39"}, {"type": "inout", "name": "Milk_CTS", "value": "41"}, {"type": "inout", "name": "Milk_DTR", "value": "42"}, {"type": "inout", "name": "Milk_DSR", "value": "43"}, {"type": "inout", "name": "Milk_DCD", "value": "44"}, {"type": "inout", "name": "Milk_RI", "value": "45"}, {"type": "inout", "name": "PMA0", "value": "74"}, {"type": "inout", "name": "PMA1", "value": "75"}, {"type": "inout", "name": "PMA2", "value": "76"}, {"type": "inout", "name": "PMA3", "value": "78"}, {"type": "inout", "name": "PMA4", "value": "79"}, {"type": "inout", "name": "PMA5", "value": "80"}, {"type": "inout", "name": "PMA6", "value": "81"}, {"type": "inout", "name": "PMA7", "value": "87"}, {"type": "inout", "name": "PMB0", "value": "88"}, {"type": "inout", "name": "PMB1", "value": "90"}, {"type": "inout", "name": "PMB2", "value": "91"}, {"type": "inout", "name": "PMB3", "value": "95"}, {"type": "inout", "name": "PMB4", "value": "96"}, {"type": "inout", "name": "PMB5", "value": "97"}, {"type": "inout", "name": "PMB6", "value": "98"}, {"type": "inout", "name": "PMB7", "value": "99"}] \ No newline at end of file diff --git a/app/resources/boards/kefir/pinout.pcf b/app/resources/boards/kefir/pinout.pcf index 610078356..e867576d3 100644 --- a/app/resources/boards/kefir/pinout.pcf +++ b/app/resources/boards/kefir/pinout.pcf @@ -20,6 +20,12 @@ set_io --warn-no-port CLK 49 # input # SPI Flash enable control set_io --warn-no-port SS_B 71 +# ISP SPI +set_io --warn-no-port ISP_RESET 117 +set_io --warn-no-port ISP_SCK 118 +set_io --warn-no-port ISP_MOSI 119 +set_io --warn-no-port ISP_MISO 120 + # MCP3008 A/D set_io --warn-no-port AD_CS 101 set_io --warn-no-port AD_Din 102 @@ -37,6 +43,32 @@ set_io --warn-no-port ARDU00 138 set_io --warn-no-port ARDU01 141 set_io --warn-no-port ARDU02 143 set_io --warn-no-port ARDU03 1 +set_io --warn-no-port ARDU04 4 +set_io --warn-no-port ARDU05 8 +set_io --warn-no-port ARDU06 10 +set_io --warn-no-port ARDU07 12 +set_io --warn-no-port ARDU08 19 +set_io --warn-no-port ARDU09 21 +set_io --warn-no-port ARDU10 23 +set_io --warn-no-port ARDU11 25 +set_io --warn-no-port ARDU12 28 +set_io --warn-no-port ARDU13 31 +set_io --warn-no-port ARDU26 139 +set_io --warn-no-port ARDU27 142 +set_io --warn-no-port ARDU28 144 +set_io --warn-no-port ARDU29 2 +set_io --warn-no-port ARDU30 3 +set_io --warn-no-port ARDU31 7 +set_io --warn-no-port ARDU32 9 +set_io --warn-no-port ARDU33 11 +set_io --warn-no-port ARDU34 20 +set_io --warn-no-port ARDU35 22 +set_io --warn-no-port ARDU36 24 +set_io --warn-no-port ARDU37 26 +set_io --warn-no-port ARDU38 29 +set_io --warn-no-port ARDU39 32 +set_io --warn-no-port ARDU40 33 +set_io --warn-no-port ARDU41 34 # Arduino Power (P2) # Active low RESET @@ -45,3 +77,30 @@ set_io --warn-no-port RESET_P2 73 # Milk channel A set_io --warn-no-port Milk_TXD 37 set_io --warn-no-port Milk_RXD 38 +set_io --warn-no-port Milk_RTS 39 +set_io --warn-no-port Milk_CTS 41 +set_io --warn-no-port Milk_DTR 42 +set_io --warn-no-port Milk_DSR 43 +set_io --warn-no-port Milk_DCD 44 +set_io --warn-no-port Milk_RI 45 + +# PMOD A +set_io --warn-no-port PMA0 74 +set_io --warn-no-port PMA1 75 +set_io --warn-no-port PMA2 76 +set_io --warn-no-port PMA3 78 +set_io --warn-no-port PMA4 79 +set_io --warn-no-port PMA5 80 +set_io --warn-no-port PMA6 81 +set_io --warn-no-port PMA7 87 + +# PMOD B +set_io --warn-no-port PMB0 88 +set_io --warn-no-port PMB1 90 +set_io --warn-no-port PMB2 91 +set_io --warn-no-port PMB3 95 +set_io --warn-no-port PMB4 96 +set_io --warn-no-port PMB5 97 +set_io --warn-no-port PMB6 98 +set_io --warn-no-port PMB7 99 + From f973639ec67c7de677eb0f6e1e0fa2f198b47434 Mon Sep 17 00:00:00 2001 From: "Salvador E. Tropea" Date: Mon, 23 Oct 2017 14:14:19 -0300 Subject: [PATCH 20/33] Added input/output comments to Kefir pins that are connected to the USB and A/D chips --- app/resources/boards/kefir/pinout.json | 2 +- app/resources/boards/kefir/pinout.pcf | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/resources/boards/kefir/pinout.json b/app/resources/boards/kefir/pinout.json index 7c32de352..50a9e8daa 100644 --- a/app/resources/boards/kefir/pinout.json +++ b/app/resources/boards/kefir/pinout.json @@ -1 +1 @@ -[{"type": "input", "name": "BTN1", "value": "136"}, {"type": "input", "name": "BTN2", "value": "134"}, {"type": "input", "name": "BTN3", "value": "128"}, {"type": "input", "name": "BTN4", "value": "122"}, {"type": "output", "name": "LED1", "value": "137"}, {"type": "output", "name": "LED2", "value": "135"}, {"type": "output", "name": "LED3", "value": "129"}, {"type": "output", "name": "LED4", "value": "121"}, {"type": "input", "name": "CLK", "value": "49"}, {"type": "inout", "name": "SS_B", "value": "71"}, {"type": "inout", "name": "ISP_RESET", "value": "117"}, {"type": "inout", "name": "ISP_SCK", "value": "118"}, {"type": "inout", "name": "ISP_MOSI", "value": "119"}, {"type": "inout", "name": "ISP_MISO", "value": "120"}, {"type": "inout", "name": "AD_CS", "value": "101"}, {"type": "inout", "name": "AD_Din", "value": "102"}, {"type": "inout", "name": "AD_Dout", "value": "104"}, {"type": "inout", "name": "AD_Clk", "value": "105"}, {"type": "inout", "name": "USB_Vp_o", "value": "112"}, {"type": "inout", "name": "USB_Vm_o", "value": "113"}, {"type": "inout", "name": "USB_Vm_i", "value": "114"}, {"type": "inout", "name": "USB_Vp_i", "value": "115"}, {"type": "inout", "name": "USB_nOE", "value": "116"}, {"type": "inout", "name": "ARDU00", "value": "138"}, {"type": "inout", "name": "ARDU01", "value": "141"}, {"type": "inout", "name": "ARDU02", "value": "143"}, {"type": "inout", "name": "ARDU03", "value": "1"}, {"type": "inout", "name": "ARDU04", "value": "4"}, {"type": "inout", "name": "ARDU05", "value": "8"}, {"type": "inout", "name": "ARDU06", "value": "10"}, {"type": "inout", "name": "ARDU07", "value": "12"}, {"type": "inout", "name": "ARDU08", "value": "19"}, {"type": "inout", "name": "ARDU09", "value": "21"}, {"type": "inout", "name": "ARDU10", "value": "23"}, {"type": "inout", "name": "ARDU11", "value": "25"}, {"type": "inout", "name": "ARDU12", "value": "28"}, {"type": "inout", "name": "ARDU13", "value": "31"}, {"type": "inout", "name": "ARDU26", "value": "139"}, {"type": "inout", "name": "ARDU27", "value": "142"}, {"type": "inout", "name": "ARDU28", "value": "144"}, {"type": "inout", "name": "ARDU29", "value": "2"}, {"type": "inout", "name": "ARDU30", "value": "3"}, {"type": "inout", "name": "ARDU31", "value": "7"}, {"type": "inout", "name": "ARDU32", "value": "9"}, {"type": "inout", "name": "ARDU33", "value": "11"}, {"type": "inout", "name": "ARDU34", "value": "20"}, {"type": "inout", "name": "ARDU35", "value": "22"}, {"type": "inout", "name": "ARDU36", "value": "24"}, {"type": "inout", "name": "ARDU37", "value": "26"}, {"type": "inout", "name": "ARDU38", "value": "29"}, {"type": "inout", "name": "ARDU39", "value": "32"}, {"type": "inout", "name": "ARDU40", "value": "33"}, {"type": "inout", "name": "ARDU41", "value": "34"}, {"type": "inout", "name": "RESET_P2", "value": "73"}, {"type": "inout", "name": "Milk_TXD", "value": "37"}, {"type": "inout", "name": "Milk_RXD", "value": "38"}, {"type": "inout", "name": "Milk_RTS", "value": "39"}, {"type": "inout", "name": "Milk_CTS", "value": "41"}, {"type": "inout", "name": "Milk_DTR", "value": "42"}, {"type": "inout", "name": "Milk_DSR", "value": "43"}, {"type": "inout", "name": "Milk_DCD", "value": "44"}, {"type": "inout", "name": "Milk_RI", "value": "45"}, {"type": "inout", "name": "PMA0", "value": "74"}, {"type": "inout", "name": "PMA1", "value": "75"}, {"type": "inout", "name": "PMA2", "value": "76"}, {"type": "inout", "name": "PMA3", "value": "78"}, {"type": "inout", "name": "PMA4", "value": "79"}, {"type": "inout", "name": "PMA5", "value": "80"}, {"type": "inout", "name": "PMA6", "value": "81"}, {"type": "inout", "name": "PMA7", "value": "87"}, {"type": "inout", "name": "PMB0", "value": "88"}, {"type": "inout", "name": "PMB1", "value": "90"}, {"type": "inout", "name": "PMB2", "value": "91"}, {"type": "inout", "name": "PMB3", "value": "95"}, {"type": "inout", "name": "PMB4", "value": "96"}, {"type": "inout", "name": "PMB5", "value": "97"}, {"type": "inout", "name": "PMB6", "value": "98"}, {"type": "inout", "name": "PMB7", "value": "99"}] \ No newline at end of file +[{"type": "input", "name": "BTN1", "value": "136"}, {"type": "input", "name": "BTN2", "value": "134"}, {"type": "input", "name": "BTN3", "value": "128"}, {"type": "input", "name": "BTN4", "value": "122"}, {"type": "output", "name": "LED1", "value": "137"}, {"type": "output", "name": "LED2", "value": "135"}, {"type": "output", "name": "LED3", "value": "129"}, {"type": "output", "name": "LED4", "value": "121"}, {"type": "input", "name": "CLK", "value": "49"}, {"type": "inout", "name": "SS_B", "value": "71"}, {"type": "inout", "name": "ISP_RESET", "value": "117"}, {"type": "inout", "name": "ISP_SCK", "value": "118"}, {"type": "inout", "name": "ISP_MOSI", "value": "119"}, {"type": "inout", "name": "ISP_MISO", "value": "120"}, {"type": "output", "name": "AD_CS", "value": "101"}, {"type": "output", "name": "AD_Din", "value": "102"}, {"type": "input", "name": "AD_Dout", "value": "104"}, {"type": "output", "name": "AD_Clk", "value": "105"}, {"type": "output", "name": "USB_Vp_o", "value": "112"}, {"type": "output", "name": "USB_Vm_o", "value": "113"}, {"type": "input", "name": "USB_Vm_i", "value": "114"}, {"type": "input", "name": "USB_Vp_i", "value": "115"}, {"type": "output", "name": "USB_nOE", "value": "116"}, {"type": "inout", "name": "ARDU00", "value": "138"}, {"type": "inout", "name": "ARDU01", "value": "141"}, {"type": "inout", "name": "ARDU02", "value": "143"}, {"type": "inout", "name": "ARDU03", "value": "1"}, {"type": "inout", "name": "ARDU04", "value": "4"}, {"type": "inout", "name": "ARDU05", "value": "8"}, {"type": "inout", "name": "ARDU06", "value": "10"}, {"type": "inout", "name": "ARDU07", "value": "12"}, {"type": "inout", "name": "ARDU08", "value": "19"}, {"type": "inout", "name": "ARDU09", "value": "21"}, {"type": "inout", "name": "ARDU10", "value": "23"}, {"type": "inout", "name": "ARDU11", "value": "25"}, {"type": "inout", "name": "ARDU12", "value": "28"}, {"type": "inout", "name": "ARDU13", "value": "31"}, {"type": "inout", "name": "ARDU26", "value": "139"}, {"type": "inout", "name": "ARDU27", "value": "142"}, {"type": "inout", "name": "ARDU28", "value": "144"}, {"type": "inout", "name": "ARDU29", "value": "2"}, {"type": "inout", "name": "ARDU30", "value": "3"}, {"type": "inout", "name": "ARDU31", "value": "7"}, {"type": "inout", "name": "ARDU32", "value": "9"}, {"type": "inout", "name": "ARDU33", "value": "11"}, {"type": "inout", "name": "ARDU34", "value": "20"}, {"type": "inout", "name": "ARDU35", "value": "22"}, {"type": "inout", "name": "ARDU36", "value": "24"}, {"type": "inout", "name": "ARDU37", "value": "26"}, {"type": "inout", "name": "ARDU38", "value": "29"}, {"type": "inout", "name": "ARDU39", "value": "32"}, {"type": "inout", "name": "ARDU40", "value": "33"}, {"type": "inout", "name": "ARDU41", "value": "34"}, {"type": "inout", "name": "RESET_P2", "value": "73"}, {"type": "inout", "name": "Milk_TXD", "value": "37"}, {"type": "inout", "name": "Milk_RXD", "value": "38"}, {"type": "inout", "name": "Milk_RTS", "value": "39"}, {"type": "inout", "name": "Milk_CTS", "value": "41"}, {"type": "inout", "name": "Milk_DTR", "value": "42"}, {"type": "inout", "name": "Milk_DSR", "value": "43"}, {"type": "inout", "name": "Milk_DCD", "value": "44"}, {"type": "inout", "name": "Milk_RI", "value": "45"}, {"type": "inout", "name": "PMA0", "value": "74"}, {"type": "inout", "name": "PMA1", "value": "75"}, {"type": "inout", "name": "PMA2", "value": "76"}, {"type": "inout", "name": "PMA3", "value": "78"}, {"type": "inout", "name": "PMA4", "value": "79"}, {"type": "inout", "name": "PMA5", "value": "80"}, {"type": "inout", "name": "PMA6", "value": "81"}, {"type": "inout", "name": "PMA7", "value": "87"}, {"type": "inout", "name": "PMB0", "value": "88"}, {"type": "inout", "name": "PMB1", "value": "90"}, {"type": "inout", "name": "PMB2", "value": "91"}, {"type": "inout", "name": "PMB3", "value": "95"}, {"type": "inout", "name": "PMB4", "value": "96"}, {"type": "inout", "name": "PMB5", "value": "97"}, {"type": "inout", "name": "PMB6", "value": "98"}, {"type": "inout", "name": "PMB7", "value": "99"}] \ No newline at end of file diff --git a/app/resources/boards/kefir/pinout.pcf b/app/resources/boards/kefir/pinout.pcf index e867576d3..51480bac4 100644 --- a/app/resources/boards/kefir/pinout.pcf +++ b/app/resources/boards/kefir/pinout.pcf @@ -27,17 +27,17 @@ set_io --warn-no-port ISP_MOSI 119 set_io --warn-no-port ISP_MISO 120 # MCP3008 A/D -set_io --warn-no-port AD_CS 101 -set_io --warn-no-port AD_Din 102 -set_io --warn-no-port AD_Dout 104 -set_io --warn-no-port AD_Clk 105 +set_io --warn-no-port AD_CS 101 # output +set_io --warn-no-port AD_Din 102 # output +set_io --warn-no-port AD_Dout 104 # input +set_io --warn-no-port AD_Clk 105 # output # USB -set_io --warn-no-port USB_Vp_o 112 -set_io --warn-no-port USB_Vm_o 113 -set_io --warn-no-port USB_Vm_i 114 -set_io --warn-no-port USB_Vp_i 115 -set_io --warn-no-port USB_nOE 116 +set_io --warn-no-port USB_Vp_o 112 # output +set_io --warn-no-port USB_Vm_o 113 # output +set_io --warn-no-port USB_Vm_i 114 # input +set_io --warn-no-port USB_Vp_i 115 # input +set_io --warn-no-port USB_nOE 116 # output set_io --warn-no-port ARDU00 138 set_io --warn-no-port ARDU01 141 From 51af6d7758f47d8051c52999e5fe6d6926bb1b44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Sun, 22 Oct 2017 15:02:19 +0200 Subject: [PATCH 21/33] Fix footer padding --- app/styles/design.css | 5 +++-- app/views/design.html | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/styles/design.css b/app/styles/design.css index 4410659eb..d02ed0b2f 100644 --- a/app/styles/design.css +++ b/app/styles/design.css @@ -18,13 +18,14 @@ position: absolute; bottom: 0; width: 100%; - min-height: 45px; - padding: 4px; + min-height: 47px; border-top: 1px solid #d5dadd; z-index: 1501; } .breadcrumbs-container { + display: flex; + align-items: center; flex: 1; } diff --git a/app/views/design.html b/app/views/design.html index b6bfec79b..7f268e4a9 100644 --- a/app/views/design.html +++ b/app/views/design.html @@ -16,7 +16,7 @@
    -
    +
    PIOs:  {{ common.hasChangesSinceBuild ? '-' : common.FPGAResources.pios }} / {{ common.selectedBoard.info.FPGAResources.pios }} From f4c4171915c0061bf282c2301ab4fbce6316a8c4 Mon Sep 17 00:00:00 2001 From: Lorea-Aldabaldetreku Date: Wed, 25 Oct 2017 18:04:28 +0200 Subject: [PATCH 22/33] =?UTF-8?q?actualizar=20traducci=C3=B3n=20del=20eusk?= =?UTF-8?q?ara?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/resources/locale/eu_ES/eu_ES.po | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/app/resources/locale/eu_ES/eu_ES.po b/app/resources/locale/eu_ES/eu_ES.po index 68edcfa8f..4ae19a1f1 100644 --- a/app/resources/locale/eu_ES/eu_ES.po +++ b/app/resources/locale/eu_ES/eu_ES.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.7.1\n" +"X-Generator: Poedit 2.0.1\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: app/scripts/services/drivers.js:211 app/scripts/services/drivers.js:87 @@ -137,7 +137,7 @@ msgstr "Python egiaztatu..." #: app/scripts/services/tools.js:819 msgid "Click here to setup the drivers" -msgstr "" +msgstr "Klik egizu hemen driverrak eguneratzeko" #: app/scripts/services/drivers.js:110 app/scripts/services/drivers.js:203 #: app/scripts/services/drivers.js:225 app/scripts/services/tools.js:132 @@ -147,11 +147,11 @@ msgstr "Instalatzeko hemen klik egin" #: app/scripts/controllers/menu.js:326 msgid "Click here to view" -msgstr "" +msgstr "Klik egizu ikusteko" #: app/scripts/controllers/menu.js:247 msgid "Close" -msgstr "" +msgstr "Itxi" #: app/views/menu.html:347 msgid "Code" @@ -203,7 +203,7 @@ msgstr "Konstantea" #: app/scripts/services/project.js:108 msgid "Convert" -msgstr "" +msgstr "Bihurtu" #: app/views/menu.html:104 msgid "Copy" @@ -328,7 +328,7 @@ msgstr "Errorea: {{error}}" #: app/scripts/services/tools.js:418 msgid "Errors detected in the design" -msgstr "" +msgstr "Akatsak daude diseinuan" #: app/views/menu.html:42 msgid "Examples" @@ -468,7 +468,7 @@ msgstr "Sarrerako konexio anitzak baliogabeak" #: app/scripts/services/utils.js:259 msgid "Invalid project format" -msgstr "" +msgstr "Proiektuaren formatua baliogabea da" #: app/scripts/services/drivers.js:196 msgid "It is recommended to use USB 2.0 ports" @@ -480,7 +480,7 @@ msgstr "Hizkuntza" #: app/scripts/services/project.js:107 msgid "Load" -msgstr "" +msgstr "Kargatu" #: app/scripts/services/blocks.js:186 app/scripts/services/blocks.js:866 msgid "Local parameter" @@ -492,7 +492,7 @@ msgstr "Env birtuala sortu..." #: app/scripts/services/utils.js:758 msgid "Maximum bus size: 96 bits" -msgstr "" +msgstr "Busaren tamaina maximoa: 96 bit" #: app/scripts/services/utils.js:530 msgid "Name" @@ -553,7 +553,7 @@ msgstr "Proiektuaren informazioa" #: app/scripts/controllers/menu.js:326 app/scripts/controllers/menu.js:340 msgid "Project information updated" -msgstr "" +msgstr "Proiektuaren informazioa eguneratu da" #: app/scripts/services/project.js:133 msgid "Project {{name}} loaded" @@ -714,7 +714,7 @@ msgstr "Toolchain-a ezabatu da" #: app/scripts/services/tools.js:246 msgid "Toolchain version does not match" -msgstr "" +msgstr "Toolchainaren bertsioa ez dator bat" #: app/views/menu.html:216 msgid "Tools" @@ -771,7 +771,7 @@ msgstr "Lizentzia ikusi" #: app/scripts/services/tools.js:421 msgid "Warnings detected in the design" -msgstr "" +msgstr "Diseinuan abisuak detektatu dira" #: app/scripts/services/blocks.js:410 msgid "Wrong block format: {{type}}" @@ -801,7 +801,7 @@ msgstr "Urrutiko ostalariaren {{name}} izena okerra da" #: app/scripts/services/project.js:112 msgid "You can load it as it is or convert it for the {{name}} board." -msgstr "" +msgstr "Dagoen moduan karga dezakezu edo {{name}} plakarako bihurtu" #: app/scripts/controllers/menu.js:251 msgid "Your changes will be lost if you don’t save them" @@ -829,7 +829,7 @@ msgstr "{{board}} txartelaren arauak ez daude definituta" #: app/scripts/controllers/menu.js:201 app/scripts/controllers/menu.js:224 msgid "{{name}} exported" -msgstr "" +msgstr "{{name}} esportatu da" #~ msgid "Errors detected in the code" #~ msgstr "Kodean erroreak aurkitu dira" From 3b606f0f81014904950e70d7804197ed36805b04 Mon Sep 17 00:00:00 2001 From: Brian 'Redbeard' Harrington Date: Sat, 28 Oct 2017 02:36:39 -0700 Subject: [PATCH 23/33] board: Olimex iCE40HX8K-EVB This is the definition files for the open hardware Olimex iCE40HX8K-EVB. This device features 4 40 pin breakouts (at 1mm pitch) as well as a 34 pin GPIO breakout. Programming is done via SPI at 3.3v though the board utilizes 5V. The breakout headers supply both 3.3 and 5v. More information on the hardware can be found here: Info page: https://www.olimex.com/Products/FPGA/iCE40/iCE40HX8K-EVB/open-source-hardware Source repository with Gerbers / KiCAD definitions: https://github.com/OLIMEX/iCE40HX8K-EVB Discussions about the hardware: https://www.olimex.com/forum/index.php?board=35.0 --- app/resources/boards/iCE40HX8K-EVB/info.json | 9 + .../boards/iCE40HX8K-EVB/pinout.json | 1 + app/resources/boards/iCE40HX8K-EVB/pinout.pcf | 350 ++++++++++++++++++ app/resources/boards/iCE40HX8K-EVB/rules.json | 18 + 4 files changed, 378 insertions(+) create mode 100644 app/resources/boards/iCE40HX8K-EVB/info.json create mode 100644 app/resources/boards/iCE40HX8K-EVB/pinout.json create mode 100644 app/resources/boards/iCE40HX8K-EVB/pinout.pcf create mode 100644 app/resources/boards/iCE40HX8K-EVB/rules.json diff --git a/app/resources/boards/iCE40HX8K-EVB/info.json b/app/resources/boards/iCE40HX8K-EVB/info.json new file mode 100644 index 000000000..bd0fb8948 --- /dev/null +++ b/app/resources/boards/iCE40HX8K-EVB/info.json @@ -0,0 +1,9 @@ +{ + "label": "iCE40HX8K-EVB", + "datasheet": "https://github.com/OLIMEX/iCE40HX8K-EVB/raw/master/HARDWARE/REV-B/iCE40HX8K-EVB_Rev_B.pdf", + "FPGAResources": { + "pios": 206, + "plbs": 960, + "brams": 32 + } +} diff --git a/app/resources/boards/iCE40HX8K-EVB/pinout.json b/app/resources/boards/iCE40HX8K-EVB/pinout.json new file mode 100644 index 000000000..9ee493bc3 --- /dev/null +++ b/app/resources/boards/iCE40HX8K-EVB/pinout.json @@ -0,0 +1 @@ +[{"type": "output", "name": "LED1", "value": "M12"}, {"type": "output", "name": "LED2", "value": "R16"}, {"type": "output", "name": "BUT1", "value": "K11"}, {"type": "output", "name": "BUT2", "value": "P13"}, {"type": "output", "name": "TX", "value": "J3"}, {"type": "input", "name": "RX", "value": "J3"}, {"type": "input", "name": "CLK", "value": "J3"}, {"type": "input", "name": "SYSCLK", "value": "J3"}, {"type": "input", "name": "RES", "value": "N11"}, {"type": "input", "name": "CRESET", "value": "N11"}, {"type": "output", "name": "DONE", "value": "M10"}, {"type": "output", "name": "CDONE", "value": "M10"}, {"type": "output", "name": "SS", "value": "R12"}, {"type": "output", "name": "SS_Bi", "value": "R12"}, {"type": "input", "name": "MISO", "value": "P12"}, {"type": "input", "name": "SDI", "value": "P12"}, {"type": "output", "name": "MOSI", "value": "P11"}, {"type": "output", "name": "SDO", "value": "P11"}, {"type": "output", "name": "SCK", "value": "R11"}, {"type": "inout", "name": "C14", "value": "C14"}, {"type": "inout", "name": "B15", "value": "B15"}, {"type": "inout", "name": "D13", "value": "D13"}, {"type": "inout", "name": "B14", "value": "B14"}, {"type": "inout", "name": "C12", "value": "C12"}, {"type": "inout", "name": "E11", "value": "E11"}, {"type": "inout", "name": "C13", "value": "C13"}, {"type": "inout", "name": "A16", "value": "A16"}, {"type": "inout", "name": "A15", "value": "A15"}, {"type": "inout", "name": "B13", "value": "B13"}, {"type": "inout", "name": "E10", "value": "E10"}, {"type": "inout", "name": "C11", "value": "C11"}, {"type": "inout", "name": "D11", "value": "D11"}, {"type": "inout", "name": "B12", "value": "B12"}, {"type": "inout", "name": "B10", "value": "B10"}, {"type": "inout", "name": "B11", "value": "B11"}, {"type": "inout", "name": "C10", "value": "C10"}, {"type": "inout", "name": "A10", "value": "A10"}, {"type": "inout", "name": "A11", "value": "A11"}, {"type": "inout", "name": "D10", "value": "D10"}, {"type": "inout", "name": "C9", "value": "C9"}, {"type": "inout", "name": "E9", "value": "E9"}, {"type": "inout", "name": "D9", "value": "D9"}, {"type": "inout", "name": "A9", "value": "A9"}, {"type": "inout", "name": "F9", "value": "F9"}, {"type": "inout", "name": "C8", "value": "C8"}, {"type": "inout", "name": "F7", "value": "F7"}, {"type": "inout", "name": "B9", "value": "B9"}, {"type": "inout", "name": "D8", "value": "D8"}, {"type": "inout", "name": "B8", "value": "B8"}, {"type": "inout", "name": "A7", "value": "A7"}, {"type": "inout", "name": "C7", "value": "C7"}, {"type": "inout", "name": "B6", "value": "B6"}, {"type": "inout", "name": "C6", "value": "C6"}, {"type": "inout", "name": "D7", "value": "D7"}, {"type": "inout", "name": "A6", "value": "A6"}, {"type": "inout", "name": "D6", "value": "D6"}, {"type": "inout", "name": "A5", "value": "A5"}, {"type": "inout", "name": "B5", "value": "B5"}, {"type": "inout", "name": "E6", "value": "E6"}, {"type": "inout", "name": "B4", "value": "B4"}, {"type": "inout", "name": "A2", "value": "A2"}, {"type": "inout", "name": "D5", "value": "D5"}, {"type": "inout", "name": "A1", "value": "A1"}, {"type": "inout", "name": "C5", "value": "C5"}, {"type": "inout", "name": "C4", "value": "C4"}, {"type": "inout", "name": "B3", "value": "B3"}, {"type": "inout", "name": "D4", "value": "D4"}, {"type": "inout", "name": "E5", "value": "E5"}, {"type": "inout", "name": "D3", "value": "D3"}, {"type": "inout", "name": "C3", "value": "C3"}, {"type": "inout", "name": "R14", "value": "R14"}, {"type": "inout", "name": "R15", "value": "R15"}, {"type": "inout", "name": "P14", "value": "P14"}, {"type": "inout", "name": "P15", "value": "P15"}, {"type": "inout", "name": "P16", "value": "P16"}, {"type": "inout", "name": "M13", "value": "M13"}, {"type": "inout", "name": "M14", "value": "M14"}, {"type": "inout", "name": "L12", "value": "L12"}, {"type": "inout", "name": "N16", "value": "N16"}, {"type": "inout", "name": "L13", "value": "L13"}, {"type": "inout", "name": "L14", "value": "L14"}, {"type": "inout", "name": "K12", "value": "K12"}, {"type": "inout", "name": "M16", "value": "M16"}, {"type": "inout", "name": "J10", "value": "J10"}, {"type": "inout", "name": "M15", "value": "M15"}, {"type": "inout", "name": "J11", "value": "J11"}, {"type": "inout", "name": "L16", "value": "L16"}, {"type": "inout", "name": "K13", "value": "K13"}, {"type": "inout", "name": "K14", "value": "K14"}, {"type": "inout", "name": "J15", "value": "J15"}, {"type": "inout", "name": "K15", "value": "K15"}, {"type": "inout", "name": "K16", "value": "K16"}, {"type": "inout", "name": "J14", "value": "J14"}, {"type": "inout", "name": "J12", "value": "J12"}, {"type": "inout", "name": "J13", "value": "J13"}, {"type": "inout", "name": "J16", "value": "J16"}, {"type": "inout", "name": "H13", "value": "H13"}, {"type": "inout", "name": "H11", "value": "H11"}, {"type": "inout", "name": "H16", "value": "H16"}, {"type": "inout", "name": "H14", "value": "H14"}, {"type": "inout", "name": "G16", "value": "G16"}, {"type": "inout", "name": "H12", "value": "H12"}, {"type": "inout", "name": "G15", "value": "G15"}, {"type": "inout", "name": "G10", "value": "G10"}, {"type": "inout", "name": "F16", "value": "F16"}, {"type": "inout", "name": "G11", "value": "G11"}, {"type": "inout", "name": "F15", "value": "F15"}, {"type": "inout", "name": "G14", "value": "G14"}, {"type": "inout", "name": "E16", "value": "E16"}, {"type": "inout", "name": "G13", "value": "G13"}, {"type": "inout", "name": "D16", "value": "D16"}, {"type": "inout", "name": "G12", "value": "G12"}, {"type": "inout", "name": "F14", "value": "F14"}, {"type": "inout", "name": "F12", "value": "F12"}, {"type": "inout", "name": "D15", "value": "D15"}, {"type": "inout", "name": "F11", "value": "F11"}, {"type": "inout", "name": "E14", "value": "E14"}, {"type": "inout", "name": "C16", "value": "C16"}, {"type": "inout", "name": "F13", "value": "F13"}, {"type": "inout", "name": "B16", "value": "B16"}, {"type": "inout", "name": "E13", "value": "E13"}, {"type": "inout", "name": "D14", "value": "D14"}, {"type": "inout", "name": "M11", "value": "M11"}, {"type": "inout", "name": "T13", "value": "T13"}, {"type": "inout", "name": "N12", "value": "N12"}, {"type": "inout", "name": "M12", "value": "M12"}, {"type": "inout", "name": "R16", "value": "R16"}, {"type": "inout", "name": "J1", "value": "J1"}, {"type": "inout", "name": "K1", "value": "K1"}, {"type": "inout", "name": "K3", "value": "K3"}, {"type": "inout", "name": "L4", "value": "L4"}, {"type": "inout", "name": "L1", "value": "L1"}, {"type": "inout", "name": "K4", "value": "K4"}, {"type": "inout", "name": "M1", "value": "M1"}, {"type": "inout", "name": "L6", "value": "L6"}, {"type": "inout", "name": "L3", "value": "L3"}, {"type": "inout", "name": "K5", "value": "K5"}, {"type": "inout", "name": "M2", "value": "M2"}, {"type": "inout", "name": "L7", "value": "L7"}, {"type": "inout", "name": "N2", "value": "N2"}, {"type": "inout", "name": "M6", "value": "M6"}, {"type": "inout", "name": "M3", "value": "M3"}, {"type": "inout", "name": "L5", "value": "L5"}, {"type": "inout", "name": "N3", "value": "N3"}, {"type": "inout", "name": "P1", "value": "P1"}, {"type": "inout", "name": "M4", "value": "M4"}, {"type": "inout", "name": "P2", "value": "P2"}, {"type": "inout", "name": "M5", "value": "M5"}, {"type": "inout", "name": "R1", "value": "R1"}, {"type": "inout", "name": "N4", "value": "N4"}] \ No newline at end of file diff --git a/app/resources/boards/iCE40HX8K-EVB/pinout.pcf b/app/resources/boards/iCE40HX8K-EVB/pinout.pcf new file mode 100644 index 000000000..4e171ea96 --- /dev/null +++ b/app/resources/boards/iCE40HX8K-EVB/pinout.pcf @@ -0,0 +1,350 @@ +# ----------------------------------------------------------------------------- +#- iCE40HX8K-EVB constraint file (.pcf) +#- By Brian 'redbeard' Harrington +#- October 2017 +#- GPL license +#- Board info: +# - https://www.olimex.com/Products/FPGA/iCE40/iCE40HX8K-EVB/open-source-hardware +# - https://github.com/OLIMEX/iCE40HX8K-EVB + +#------------------------------ LEDS ------------------------------------------ + +set_io --warn-no-port LED1 M12 # output +set_io --warn-no-port LED2 R16 # output + +#----------------------------- BUTTONS ---------------------------------------- + +set_io --warn-no-port BUT1 K11 # output +set_io --warn-no-port BUT2 P13 # output + +#--------------------------- SERIAL COMMS ------------------------------------- + +set_io --warn-no-port TX J3 # output +set_io --warn-no-port RX J3 # input + + +# -------------------------- SYSTEM CLOCK ------------------------------------- + +set_io --warn-no-port CLK J3 # input +set_io --warn-no-port SYSCLK J3 # input + + +# ************************************ +# * * +# --------------------* Serigraphy of PCB *--------------------- +# * * +# ************************************ + +# ------------------------- Programming connector------------------------------ +# PGM1 +# ----------- +# OPEN 1---| 3V3 GND |---2 +# OPEN 3---| RX TX |---4 OPEN +# 5---| DONE RES |---6 +# 7---| MISO MOSI |---8 +# 9---| SCK SS_B |---10 +# ------------ + +set_io --warn-no-port RES N11 # input +set_io --warn-no-port CRESET N11 # input + +set_io --warn-no-port DONE M10 # output +set_io --warn-no-port CDONE M10 # output + +set_io --warn-no-port SS R12 # output +set_io --warn-no-port SS_Bi R12 # output + +set_io --warn-no-port MISO P12 # input +set_io --warn-no-port SDI P12 # input + +set_io --warn-no-port MOSI P11 # output +set_io --warn-no-port SDO P11 # output + +set_io --warn-no-port SCK R11 # output + +# ------------------------- GPIO1 connector ----------------------------------- +# GPIO1 +# -------- +# 1---| VCC GND |---2 +# 3---| 3V3 GND |---4 +# 5---| E4 EXT |---6 EXTCLK +# 7---| B2 GND |---8 +# 9---| F5 J2 |---10 +# --------- +# 11---| B1 H1 |---12 +# 13---| C1 G1 |---14 +# 15---| C2 J5 |---16 +# 17---| F4 H2 |---18 +# 19---| D2 J4 |---20 +# --------- +# 21---| G5 G2 |---22 +# 23---| D1 H4 |---24 +# 25---| G4 F1 |---26 +# 27---| E3 H6 |---28 +# 29---| H5 F2 |---30 +# --------- +# 31---| E2 H3 |---32 +# 33---| G3 F3 |---34 +# --------- + +# ------------------------- EXT1 connector ------------------------------------ +# +# +# +# J1 +# -------- +# 1---| VCC GND |---2 +# 3---| 3V3 GND |---4 +# 5---| 3V3 EXT |---6 EXTCLK +# 7---| C14 GND |---8 +# 9---| B15 B7 |---10 +# --------- +# 11---| D13 C7 |---12 +# 13---| B14 A7 |---14 +# 15---| C12 B8 |---16 +# 17---| E11 D8 |---18 +# 19---| C13 B9 |---20 +# --------- +# 21---| A16 F7 |---22 +# 23---| A15 C8 |---24 +# 25---| B13 F9 |---26 +# 27---| E10 A9 |---28 +# 29---| C11 D9 |---30 +# --------- +# 31---| D11 E9 |---32 +# 33---| B12 C9 |---34 +# 35---| B10 D10 |---36 +# 37---| B11 A11 |---38 +# 39---| C10 A10 |---40 +# --------- + +set_io --warn-no-port C14 C14 +set_io --warn-no-port B15 B15 +set_io --warn-no-port D13 D13 +set_io --warn-no-port B14 B14 +set_io --warn-no-port C12 C12 +set_io --warn-no-port E11 E11 +set_io --warn-no-port C13 C13 +set_io --warn-no-port A16 A16 +set_io --warn-no-port A15 A15 +set_io --warn-no-port B13 B13 +set_io --warn-no-port E10 E10 +set_io --warn-no-port C11 C11 +set_io --warn-no-port D11 D11 +set_io --warn-no-port B12 B12 +set_io --warn-no-port B10 B10 +set_io --warn-no-port B11 B11 +set_io --warn-no-port C10 C10 +set_io --warn-no-port A10 A10 +set_io --warn-no-port A11 A11 +set_io --warn-no-port D10 D10 +set_io --warn-no-port C9 C9 +set_io --warn-no-port E9 E9 +set_io --warn-no-port D9 D9 +set_io --warn-no-port A9 A9 +set_io --warn-no-port F9 F9 +set_io --warn-no-port C8 C8 +set_io --warn-no-port F7 F7 +set_io --warn-no-port B9 B9 +set_io --warn-no-port D8 D8 +set_io --warn-no-port B8 B8 +set_io --warn-no-port A7 A7 +set_io --warn-no-port C7 C7 + + +# ------------------------- EXT2 connector ------------------------------------ +# +# +# +# EXT2 +# -------- +# 1---| VCC GND |---2 +# 3---| 3V3 GND |---4 +# 5---| 3V3 EXT |---6 EXTCLK +# 7---| B6 GND |---8 +# 9---| C6 J10 |---10 +# --------- +# 11---| D7 M16 |---12 +# 13---| A6 K12 |---14 +# 15---| D6 L14 |---16 +# 17---| A5 L13 |---18 +# 19---| B5 N16 |---20 +# --------- +# 21---| E6 L12 |---22 +# 23---| B4 M14 |---24 +# 25---| A2 M13 |---26 +# 27---| D5 P16 |---28 +# 29---| A1 P15 |---30 +# --------- +# 31---| C5 P14 |---32 +# 33---| C4 R15 |---34 +# 35---| B3 R14 |---36 +# 37---| D4 C3 |---38 +# 39---| E5 D3 |---40 +# --------- + +set_io --warn-no-port B6 B6 +set_io --warn-no-port C6 C6 +set_io --warn-no-port D7 D7 +set_io --warn-no-port A6 A6 +set_io --warn-no-port D6 D6 +set_io --warn-no-port A5 A5 +set_io --warn-no-port B5 B5 +set_io --warn-no-port E6 E6 +set_io --warn-no-port B4 B4 +set_io --warn-no-port A2 A2 +set_io --warn-no-port D5 D5 +set_io --warn-no-port A1 A1 +set_io --warn-no-port C5 C5 +set_io --warn-no-port C4 C4 +set_io --warn-no-port B3 B3 +set_io --warn-no-port D4 D4 +set_io --warn-no-port E5 E5 +set_io --warn-no-port D3 D3 +set_io --warn-no-port C3 C3 +set_io --warn-no-port R14 R14 +set_io --warn-no-port R15 R15 +set_io --warn-no-port P14 P14 +set_io --warn-no-port P15 P15 +set_io --warn-no-port P16 P16 +set_io --warn-no-port M13 M13 +set_io --warn-no-port M14 M14 +set_io --warn-no-port L12 L12 +set_io --warn-no-port N16 N16 +set_io --warn-no-port L13 L13 +set_io --warn-no-port L14 L14 +set_io --warn-no-port K12 K12 +set_io --warn-no-port M16 M16 +set_io --warn-no-port J10 J10 + + +# ------------------------- EXT3 connector ------------------------------------ +# +# +# +# EXT3 +# -------- +# 1---| VCC GND |---2 +# 3---| 3V3 GND |---4 +# 5---| 3V3 EXT |---6 EXTCLK +# 7---| M15 GND |---8 +# 9---| J11 E14 |---10 +# --------- +# 11---| L16 F11 |---12 +# 13---| K13 D15 |---14 +# 15---| K14 F12 |---16 +# 17---| J15 F14 |---18 +# 19---| K15 G12 |---20 +# --------- +# 21---| K16 D16 |---22 +# 23---| J14 G13 |---24 +# 25---| J12 E16 |---26 +# 27---| J13 G14 |---28 +# 29---| J16 F15 |---30 +# --------- +# 31---| H13 G11 |---32 +# 33---| H11 F16 |---34 +# 35---| H16 G10 |---36 +# 37---| H14 G15 |---38 +# 39---| G16 H12 |---40 +# --------- + +set_io --warn-no-port M15 M15 +set_io --warn-no-port J11 J11 +set_io --warn-no-port L16 L16 +set_io --warn-no-port K13 K13 +set_io --warn-no-port K14 K14 +set_io --warn-no-port J15 J15 +set_io --warn-no-port K15 K15 +set_io --warn-no-port K16 K16 +set_io --warn-no-port J14 J14 +set_io --warn-no-port J12 J12 +set_io --warn-no-port J13 J13 +set_io --warn-no-port J16 J16 +set_io --warn-no-port H13 H13 +set_io --warn-no-port H11 H11 +set_io --warn-no-port H16 H16 +set_io --warn-no-port H14 H14 +set_io --warn-no-port G16 G16 +set_io --warn-no-port H12 H12 +set_io --warn-no-port G15 G15 +set_io --warn-no-port G10 G10 +set_io --warn-no-port F16 F16 +set_io --warn-no-port G11 G11 +set_io --warn-no-port F15 F15 +set_io --warn-no-port G14 G14 +set_io --warn-no-port E16 E16 +set_io --warn-no-port G13 G13 +set_io --warn-no-port D16 D16 +set_io --warn-no-port G12 G12 +set_io --warn-no-port F14 F14 +set_io --warn-no-port F12 F12 +set_io --warn-no-port D15 D15 +set_io --warn-no-port F11 F11 +set_io --warn-no-port E14 E14 + + +# ------------------------- EXT4 connector ------------------------------------ +# +# +# +# EXT4 +# -------- +# 1---| VCC GND |---2 +# 3---| 3V3 GND |---4 +# 5---| 3V3 EXT |---6 EXTCLK +# 7---| C16 GND |---8 +# 9---| F13 N4 |---10 +# --------- +# 11---| B16 R1 |---12 +# 13---| E13 M5 |---14 +# 15---| D14 P2 |---16 +# 17---| M11 M4 |---18 +# 19---| T13 P1 |---20 +# --------- +# 21---| N12 N3 |---22 +#LED1 23---| M12 L5 |---24 +#LED2 25---| R16 M3 |---26 +# 27---| J1 M6 |---28 +# 29---| K1 N2 |---30 +# --------- +# 31---| K3 L7 |---32 +# 33---| L4 M2 |---34 +# 35---| L1 K5 |---36 +# 37---| K4 L3 |---38 +# 39---| M1 L6 |---40 +# --------- + +set_io --warn-no-port C16 C16 +set_io --warn-no-port F13 F13 +set_io --warn-no-port B16 B16 +set_io --warn-no-port E13 E13 +set_io --warn-no-port D14 D14 +set_io --warn-no-port M11 M11 +set_io --warn-no-port T13 T13 +set_io --warn-no-port N12 N12 +set_io --warn-no-port M12 M12 #output +set_io --warn-no-port R16 R16 #output +set_io --warn-no-port J1 J1 +set_io --warn-no-port K1 K1 +set_io --warn-no-port K3 K3 +set_io --warn-no-port L4 L4 +set_io --warn-no-port L1 L1 +set_io --warn-no-port K4 K4 +set_io --warn-no-port M1 M1 +set_io --warn-no-port L6 L6 +set_io --warn-no-port L3 L3 +set_io --warn-no-port K5 K5 +set_io --warn-no-port M2 M2 +set_io --warn-no-port L7 L7 +set_io --warn-no-port N2 N2 +set_io --warn-no-port M6 M6 +set_io --warn-no-port M3 M3 +set_io --warn-no-port L5 L5 +set_io --warn-no-port N3 N3 +set_io --warn-no-port P1 P1 +set_io --warn-no-port M4 M4 +set_io --warn-no-port P2 P2 +set_io --warn-no-port M5 M5 +set_io --warn-no-port R1 R1 +set_io --warn-no-port N4 N4 diff --git a/app/resources/boards/iCE40HX8K-EVB/rules.json b/app/resources/boards/iCE40HX8K-EVB/rules.json new file mode 100644 index 000000000..19a357907 --- /dev/null +++ b/app/resources/boards/iCE40HX8K-EVB/rules.json @@ -0,0 +1,18 @@ +{ + "input" : [ + { + "port" : "clk", + "pin": "J3" + } + ], + "output": [ + { + "pin": "M12", + "bit": "0" + }, + { + "pin": "M16", + "bit": "0" + } + ] +} From 9a8669f8a7bed908a1cf32ce06cd79a37bdfd783 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Sat, 28 Oct 2017 18:08:11 +0200 Subject: [PATCH 24/33] Hide iCE40HX8K-EVB board --- app/resources/boards/{iCE40HX8K-EVB => _iCE40HX8K-EVB}/info.json | 0 .../boards/{iCE40HX8K-EVB => _iCE40HX8K-EVB}/pinout.json | 0 app/resources/boards/{iCE40HX8K-EVB => _iCE40HX8K-EVB}/pinout.pcf | 0 app/resources/boards/{iCE40HX8K-EVB => _iCE40HX8K-EVB}/rules.json | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename app/resources/boards/{iCE40HX8K-EVB => _iCE40HX8K-EVB}/info.json (100%) rename app/resources/boards/{iCE40HX8K-EVB => _iCE40HX8K-EVB}/pinout.json (100%) rename app/resources/boards/{iCE40HX8K-EVB => _iCE40HX8K-EVB}/pinout.pcf (100%) rename app/resources/boards/{iCE40HX8K-EVB => _iCE40HX8K-EVB}/rules.json (100%) diff --git a/app/resources/boards/iCE40HX8K-EVB/info.json b/app/resources/boards/_iCE40HX8K-EVB/info.json similarity index 100% rename from app/resources/boards/iCE40HX8K-EVB/info.json rename to app/resources/boards/_iCE40HX8K-EVB/info.json diff --git a/app/resources/boards/iCE40HX8K-EVB/pinout.json b/app/resources/boards/_iCE40HX8K-EVB/pinout.json similarity index 100% rename from app/resources/boards/iCE40HX8K-EVB/pinout.json rename to app/resources/boards/_iCE40HX8K-EVB/pinout.json diff --git a/app/resources/boards/iCE40HX8K-EVB/pinout.pcf b/app/resources/boards/_iCE40HX8K-EVB/pinout.pcf similarity index 100% rename from app/resources/boards/iCE40HX8K-EVB/pinout.pcf rename to app/resources/boards/_iCE40HX8K-EVB/pinout.pcf diff --git a/app/resources/boards/iCE40HX8K-EVB/rules.json b/app/resources/boards/_iCE40HX8K-EVB/rules.json similarity index 100% rename from app/resources/boards/iCE40HX8K-EVB/rules.json rename to app/resources/boards/_iCE40HX8K-EVB/rules.json From 5b30d22ef7bf503f75cd23c4c48bb7d813ca654a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Sat, 28 Oct 2017 18:58:08 +0200 Subject: [PATCH 25/33] Improve Basic menu style --- app/styles/menu.css | 21 +++++++++++++++++++++ app/views/menu.html | 11 +++++------ 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/app/styles/menu.css b/app/styles/menu.css index 3f834a4c4..5f1239ed7 100644 --- a/app/styles/menu.css +++ b/app/styles/menu.css @@ -110,3 +110,24 @@ .navbar-default .navbar-nav>li>a { color: #333 !important; } + +.marker { + float: left; + width: 8px; + height: 8px; + margin-top: 6px; + margin-right: 12px; + border-radius: 1px; +} +.marker-yellow { + background-color: #f6f688; +} +.marker-orange { + background-color: #f8e5a0; +} +.marker-blue { + background-color: #c0dfeb; +} +.marker-gray { + background-color: #ddd; +} diff --git a/app/views/menu.html b/app/views/menu.html index a7db33680..efcb68ce7 100644 --- a/app/views/menu.html +++ b/app/views/menu.html @@ -340,21 +340,20 @@ {{ 'Basic' | translate }} From 7b29f038ec6f23e163a01df1dfe30bdaf2da9481 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Sun, 29 Oct 2017 09:01:23 +0100 Subject: [PATCH 26/33] Detect yosys libffi error --- app/scripts/services/drivers.js | 1 - app/scripts/services/tools.js | 45 +++++++++++++++++++++++---------- 2 files changed, 31 insertions(+), 15 deletions(-) diff --git a/app/scripts/services/drivers.js b/app/scripts/services/drivers.js index f9868cfc5..abd03a68e 100644 --- a/app/scripts/services/drivers.js +++ b/app/scripts/services/drivers.js @@ -102,7 +102,6 @@ angular.module('icestudio') ]; beginLazyProcess(); nodeChildProcess.exec(brewCommands.join('; '), function(error, stdout, stderr) { - // console.log(error, stdout, stderr); if (error) { if ((stderr.indexOf('brew: command not found') !== -1) || (stderr.indexOf('brew: No such file or directory') !== -1)) { diff --git a/app/scripts/services/tools.js b/app/scripts/services/tools.js index 3072570e6..4a412764b 100644 --- a/app/scripts/services/tools.js +++ b/app/scripts/services/tools.js @@ -57,6 +57,10 @@ angular.module('icestudio') if (!taskRunning) { taskRunning = true; + if (infoAlert) { + infoAlert.dismiss(false); + } + if (resultAlert) { resultAlert.dismiss(false); } @@ -291,7 +295,7 @@ angular.module('icestudio') function executeLocal(commands) { return new Promise(function(resolve) { if (commands[0] === 'upload') { - // Upload command requires drivers setup (Mac OS X) + // Upload command requires drivers setup (Mac OS) drivers.preUpload(function() { _executeLocal(); }); @@ -309,7 +313,7 @@ angular.module('icestudio') { maxBuffer: 5000 * 1024 }, // To avoid buffer overflow function(error, stdout, stderr) { if (commands[0] === 'upload') { - // Upload command requires to restore the drivers (Mac OS X) + // Upload command requires to restore the drivers (Mac OS) drivers.postUpload(); } resolve({ error: error, stdout: stdout, stderr: stderr }); @@ -338,6 +342,12 @@ angular.module('icestudio') else if (stdout.indexOf('Error: unkown board') !== -1) { resultAlert = alertify.error(gettextCatalog.getString('Unknown board'), 30); } + // Yosys error (Mac OS) + else if (stdout.indexOf('Library not loaded:') !== -1 && + stdout.indexOf('libffi') !== -1) { + resultAlert = alertify.error(gettextCatalog.getString('Configuration not completed'), 30); + setupDriversAlert(); + } // - Arachne-pnr errors else if (stdout.indexOf('set_io: too few arguments') !== -1 || stdout.indexOf('fatal error: unknown pin') !== -1) { @@ -822,18 +832,7 @@ angular.module('icestudio') updateProgress(gettextCatalog.getString('Installation completed'), 100); closeToolchainAlert(); alertify.success(gettextCatalog.getString('Toolchain installed')); - var message = gettextCatalog.getString('Click here to setup the drivers'); - if (!infoAlert) { - setTimeout(function() { - infoAlert = alertify.message(message, 30); - infoAlert.callback = function(isClicked) { - infoAlert = null; - if (isClicked) { - $rootScope.$broadcast('enableDrivers'); - } - }; - }, 1000); - } + setupDriversAlert(); } else { closeToolchainAlert(); @@ -844,6 +843,24 @@ angular.module('icestudio') }); } + function setupDriversAlert() { + var message = gettextCatalog.getString('Click here to setup the drivers'); + if (!infoAlert) { + setTimeout(function() { + infoAlert = alertify.message(message, 30); + infoAlert.callback = function(isClicked) { + infoAlert = null; + if (isClicked) { + if (resultAlert) { + resultAlert.dismiss(false); + } + $rootScope.$broadcast('enableDrivers'); + } + }; + }, 1000); + } + } + function updateProgress(message, value) { angular.element('#progress-message') .text(message); From 1e44361b42ba559fc45c15a667148883930a1ea1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Sun, 29 Oct 2017 10:34:38 +0100 Subject: [PATCH 27/33] Fix cursor padding on zoom --- app/scripts/graphics/joint.shapes.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/scripts/graphics/joint.shapes.js b/app/scripts/graphics/joint.shapes.js index ed5dd1482..5f436a06e 100644 --- a/app/scripts/graphics/joint.shapes.js +++ b/app/scripts/graphics/joint.shapes.js @@ -1093,6 +1093,8 @@ joint.shapes.ice.CodeView = joint.shapes.ice.ModelView.extend({ } // Scale font size this.editor.setFontSize(Math.round(aceFontSize * state.zoom)); + // Scale cursor + this.editor.renderer.$cursorLayer.$padding = Math.round(4 * state.zoom); } this.editor.resize(); } @@ -1401,6 +1403,8 @@ joint.shapes.ice.InfoView = joint.shapes.ice.ModelView.extend({ this.$box.find('.ace_text-layer').css('padding', '0px ' + Math.round(4 * state.zoom) + 'px'); // Scale font size this.editor.setFontSize(Math.round(aceFontSize * state.zoom)); + // Scale cursor + this.editor.renderer.$cursorLayer.$padding = Math.round(4 * state.zoom); this.editor.resize(); } From 8622964b0a6d726703a1dae270b6c25951be8585 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Sun, 29 Oct 2017 11:52:49 +0100 Subject: [PATCH 28/33] Improve menu auto show/hide behavior --- app/scripts/controllers/menu.js | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/app/scripts/controllers/menu.js b/app/scripts/controllers/menu.js index 641c2b6a4..8427e411a 100644 --- a/app/scripts/controllers/menu.js +++ b/app/scripts/controllers/menu.js @@ -778,26 +778,30 @@ angular.module('icestudio') // Show menu with delay $scope.showMenu = function(newMenu) { - menu = newMenu; + $timeout.cancel(timerOpen); $timeout.cancel(timerClose); - if (!mousedown && !graph.addingDraggableBlock && !$scope.status[menu]) { + if (menu !== newMenu) { + $scope.status[menu] = false; + menu = newMenu; + } + if (!mousedown && !graph.addingDraggableBlock && !$scope.status[newMenu]) { timerOpen = $timeout(function() { - $scope.status[menu] = true; + $scope.status[newMenu] = true; }, 300); } }; // Hide menu with delay - $scope.hideMenu = function(menu) { + $scope.hideMenu = function(currentMenu) { $timeout.cancel(timerOpen); timerClose = $timeout(function() { - $scope.status[menu] = false; + $scope.status[currentMenu] = false; }, 900); }; // Fix menu - $scope.fixMenu = function(menu) { - $scope.status[menu] = true; + $scope.fixMenu = function(currentMenu) { + $scope.status[currentMenu] = true; }; // Disable click in submenus From 2f23ebb7e672530d08fc53517d69d3845fc8ce19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Sun, 29 Oct 2017 13:08:41 +0100 Subject: [PATCH 29/33] Update supported boards in Readme --- README.md | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index ac0a8a6d6..ae5d7bebf 100644 --- a/README.md +++ b/README.md @@ -9,20 +9,18 @@ Graphic design -> Verilog, PCF -> Bistream -> FPGA -Supported boards: +### Supported boards -* [IceZUM Alhambra](https://github.com/FPGAwars/icezum) -* [Kéfir I iCE40-HX4K](http://fpgalibre.sourceforge.net/Kefir/) -* [Nandland Go board](https://www.nandland.com/goboard/introduction.html) -* [iCE40-HX8K Breakout Board](http://www.latticesemi.com/Products/DevelopmentBoardsAndKits/iCE40HX8KBreakoutBoard.aspx) -* [iCEstick Evaluation Kit](http://www.pighixxx.com/test/portfolio-items/icestick/) -* [icoBOARD 1.0](http://icoboard.org/about-icoboard.html) +| Board name | GNU/Linux | Windows | Mac OS | +|:-|:-:|:-:|:-:| +| [IceZUM Alhambra](https://github.com/FPGAwars/icezum) | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| [Kéfir I iCE40-HX4K](http://fpgalibre.sourceforge.net/Kefir/) | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| [Nandland Go board](https://www.nandland.com/goboard/introduction.html) | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| [iCE40-HX8K Breakout Board](http://www.latticesemi.com/Products/DevelopmentBoardsAndKits/iCE40HX8KBreakoutBoard.aspx) | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| [iCEstick Evaluation Kit](http://www.pighixxx.com/test/portfolio-items/icestick/) | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| [icoBOARD 1.0](http://icoboard.org/about-icoboard.html) |   :white_check_mark: **\*** | - | - | -Supported operating systems: - -* GNU/Linux -* Windows -* Mac OS X +**\*** Use with Raspberry Pi ## Installation @@ -37,7 +35,7 @@ Supported operating systems: 1. Download and execute the [Windows installer](https://github.com/FPGAwars/icestudio/releases) -* **Mac OS X** +* **Mac OS** 1. Install [Python 2.7](https://www.python.org) and [Homebrew](https://brew.sh) 2. Download and execute the [DMG package](https://github.com/FPGAwars/icestudio/releases) @@ -93,7 +91,7 @@ npm run dist |:---:|:-------------:|:-----------------:| | GNU/Linux | GNU/Linux | (linux32,linux64).zip, (linux32,linux64).AppImage | | Windows | GNU/Linux | (win32,win64).zip, (win32,win64).exe | -| Mac OS X | Mac OS X | (osx32,osx64).zip, osx64.dmg | +| Mac OS | Mac OS | (osx32,osx64).zip, osx64.dmg | ## Languages From 3c895c04e53ec6683845a00cde500fe52397c7de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Wed, 1 Nov 2017 10:45:37 +0100 Subject: [PATCH 30/33] Use default cursor for disabled menu items --- app/styles/menu.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/styles/menu.css b/app/styles/menu.css index 5f1239ed7..15e5c6f8e 100644 --- a/app/styles/menu.css +++ b/app/styles/menu.css @@ -131,3 +131,7 @@ .marker-gray { background-color: #ddd; } + +.disabled > a { + cursor: default !important; +} From 13fd5f29013e801c77e45d8d57b0e8aaba7a1175 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Wed, 1 Nov 2017 10:53:30 +0100 Subject: [PATCH 31/33] Update translation texts --- README.md | 37 ++-- app/resources/locale/ca_ES/ca_ES.po | 232 +++++++++++++------------- app/resources/locale/en/en.po | 232 +++++++++++++------------- app/resources/locale/es_ES/es_ES.po | 232 +++++++++++++------------- app/resources/locale/eu_ES/eu_ES.po | 234 +++++++++++++------------- app/resources/locale/fr_FR/fr_FR.po | 232 +++++++++++++------------- app/resources/locale/gl_ES/gl_ES.po | 232 +++++++++++++------------- app/resources/locale/template.pot | 250 ++++++++++++++-------------- 8 files changed, 868 insertions(+), 813 deletions(-) diff --git a/README.md b/README.md index ae5d7bebf..80d009d88 100644 --- a/README.md +++ b/README.md @@ -81,29 +81,16 @@ npm install npm start ``` -### Package - -```bash -npm run dist -``` - -| OS | Development OS | Output files | -|:---:|:-------------:|:-----------------:| -| GNU/Linux | GNU/Linux | (linux32,linux64).zip, (linux32,linux64).AppImage | -| Windows | GNU/Linux | (win32,win64).zip, (win32,win64).exe | -| Mac OS | Mac OS | (osx32,osx64).zip, osx64.dmg | - - -## Languages +### Languages | Language | Translated strings | |:----------:|:------------------------------------------:| | English | ![Progress](http://progressed.io/bar/100) | | Spanish | ![Progress](http://progressed.io/bar/100) | -| French | ![Progress](http://progressed.io/bar/95) | -| Basque | ![Progress](http://progressed.io/bar/93) | -| Galician | ![Progress](http://progressed.io/bar/89) | -| Catalan | ![Progress](http://progressed.io/bar/89) | +| Basque | ![Progress](http://progressed.io/bar/98) | +| French | ![Progress](http://progressed.io/bar/94) | +| Galician | ![Progress](http://progressed.io/bar/88) | +| Catalan | ![Progress](http://progressed.io/bar/88) | **Contribute!** @@ -111,7 +98,19 @@ Add or update the [app translations](https://github.com/FPGAwars/icestudio/tree/ *Developer note*: use `npm run gettext` to extract the labels from the code. -## Troubleshooting +### Package + +```bash +npm run dist +``` + +| Target OS | Development OS | Output files | +|:---:|:-------------:|:-----------------:| +| GNU/Linux | GNU/Linux | (linux32,linux64).zip, (linux32,linux64).AppImage | +| Windows | GNU/Linux | (win32,win64).zip, (win32,win64).exe | +| Mac OS | Mac OS | (osx32,osx64).zip, osx64.dmg | + +### Troubleshooting If you get this error `npm ERR! peerinvalid The package grunt@1.0.1 does not satisfy its siblings' peerDependencies requirements!`, try to update your **[nodejs](https://github.com/nodejs/node)** or execute: diff --git a/app/resources/locale/ca_ES/ca_ES.po b/app/resources/locale/ca_ES/ca_ES.po index c804a7c00..32a2f7234 100644 --- a/app/resources/locale/ca_ES/ca_ES.po +++ b/app/resources/locale/ca_ES/ca_ES.po @@ -12,11 +12,11 @@ msgstr "" "X-Generator: Poedit 1.8.7.1\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app/scripts/services/drivers.js:211 app/scripts/services/drivers.js:87 +#: app/scripts/services/drivers.js:210 app/scripts/services/drivers.js:87 msgid "Unplug and reconnect the board" msgstr "Desconnecta i connecta la placa" -#: app/scripts/services/drivers.js:195 +#: app/scripts/services/drivers.js:194 msgid "" "

    FTDI driver installation instructions

    1. Connect the FPGA " "board
    2. Replace the (Interface 0) driver of the board by " @@ -26,7 +26,7 @@ msgstr "" "placa FPGA
    3. Reemplaça el driver de la (Interface 0) de la " "placa por libusbK
    4. Desconnecta i connecta la placa
    " -#: app/scripts/services/drivers.js:218 +#: app/scripts/services/drivers.js:217 msgid "" "

    FTDI driver uninstallation instructions

    1. Find the FPGA USB " "Device
    2. Select the board interface and uninstall the driver
    " @@ -35,15 +35,15 @@ msgstr "" "dispositiu USB de la FPGA
  • Selecciona la interfície de la placa i " "desinstal·la el driver
  • " -#: app/views/menu.html:322 +#: app/views/menu.html:329 msgid "About Icestudio" msgstr "Quant a Icestudio" -#: app/views/menu.html:276 +#: app/views/menu.html:283 msgid "Add" msgstr "Afegir" -#: app/scripts/controllers/menu.js:562 +#: app/scripts/controllers/menu.js:574 msgid "Add a block to start" msgstr "Afegeix un bloc per a iniciar" @@ -51,11 +51,11 @@ msgstr "Afegeix un bloc per a iniciar" msgid "Add as block" msgstr "Afegeix com a bloc" -#: app/scripts/services/tools.js:1036 +#: app/scripts/services/tools.js:1059 msgid "All collections removed" msgstr "Col·leccions eliminades" -#: app/scripts/controllers/menu.js:586 +#: app/scripts/controllers/menu.js:598 msgid "All stored collections will be lost. Do you want to continue?" msgstr "Totes les col·leccions emmagatzemades es perdran. Vols continuar?" @@ -63,7 +63,7 @@ msgstr "Totes les col·leccions emmagatzemades es perdran. Vols continuar?" msgid "Author" msgstr "Autor" -#: app/views/menu.html:333 +#: app/views/menu.html:340 msgid "Basic" msgstr "Bàsic" @@ -86,7 +86,7 @@ msgstr "Bloc {{name}} importat" msgid "Blocks" msgstr "Blocs" -#: app/views/menu.html:183 +#: app/views/menu.html:190 msgid "Board" msgstr "Placa" @@ -94,27 +94,27 @@ msgstr "Placa" msgid "Board rules" msgstr "Regles de la placa" -#: app/scripts/controllers/menu.js:371 +#: app/scripts/controllers/menu.js:379 msgid "Board rules disabled" msgstr "Regles de la placa inhabilitades" -#: app/scripts/controllers/menu.js:366 +#: app/scripts/controllers/menu.js:374 msgid "Board rules enabled" msgstr "Regles de la placa habilitades" -#: app/scripts/services/tools.js:333 +#: app/scripts/services/tools.js:340 msgid "Board {{name}} not detected" msgstr "Placa {{name}} no detectada" -#: app/scripts/controllers/menu.js:510 +#: app/scripts/controllers/menu.js:522 msgid "Board {{name}} selected" msgstr "Placa {{name}} seleccionada" -#: app/views/menu.html:222 +#: app/views/menu.html:229 msgid "Build" msgstr "Sintetitza" -#: app/scripts/controllers/menu.js:531 +#: app/scripts/controllers/menu.js:541 msgid "Build done" msgstr "Sintetitzat realitzat" @@ -126,37 +126,37 @@ msgstr "Cancel·la" msgid "Catalan" msgstr "Català" -#: app/scripts/services/tools.js:727 +#: app/scripts/services/tools.js:743 msgid "Check Internet connection..." msgstr "Comprovant connexió a Internet..." -#: app/scripts/services/tools.js:737 +#: app/scripts/services/tools.js:753 msgid "Check Python..." msgstr "Comprovant Python" -#: app/scripts/services/tools.js:819 +#: app/scripts/services/tools.js:847 msgid "Click here to setup the drivers" msgstr "" -#: app/scripts/services/drivers.js:110 app/scripts/services/drivers.js:203 -#: app/scripts/services/drivers.js:225 app/scripts/services/tools.js:132 -#: app/scripts/services/tools.js:246 +#: app/scripts/services/drivers.js:109 app/scripts/services/drivers.js:202 +#: app/scripts/services/drivers.js:224 app/scripts/services/tools.js:139 +#: app/scripts/services/tools.js:253 msgid "Click here to install it" msgstr "" -#: app/scripts/controllers/menu.js:326 +#: app/scripts/controllers/menu.js:334 msgid "Click here to view" msgstr "" -#: app/scripts/controllers/menu.js:247 +#: app/scripts/controllers/menu.js:252 msgid "Close" msgstr "" -#: app/views/menu.html:347 +#: app/views/menu.html:353 msgid "Code" msgstr "Codi" -#: app/views/menu.html:194 +#: app/views/menu.html:201 msgid "Collection" msgstr "Col·lecció" @@ -164,39 +164,43 @@ msgstr "Col·lecció" msgid "Collection info" msgstr "" -#: app/scripts/controllers/menu.js:468 +#: app/scripts/controllers/menu.js:480 msgid "Collection {{collection}} info not defined" msgstr "" -#: app/scripts/services/tools.js:920 +#: app/scripts/services/tools.js:943 msgid "Collection {{name}} added" msgstr "Col·lecció {{name}} afegida" -#: app/scripts/services/tools.js:914 +#: app/scripts/services/tools.js:937 msgid "Collection {{name}} not replaced" msgstr "Col·lecció {{name}} no reemplaçada" -#: app/scripts/services/tools.js:1030 +#: app/scripts/services/tools.js:1053 msgid "Collection {{name}} removed" msgstr "Col·lecció {{name}} eliminada" -#: app/scripts/services/tools.js:910 +#: app/scripts/services/tools.js:933 msgid "Collection {{name}} replaced" msgstr "Col·lecció {{name}} reemplaçada" -#: app/scripts/controllers/menu.js:476 +#: app/scripts/controllers/menu.js:488 msgid "Collection {{name}} selected" msgstr "Col·lecció {{name}} seleccionada" -#: app/views/menu.html:272 +#: app/views/menu.html:279 msgid "Collections" msgstr "Col·leccions" -#: app/views/menu.html:318 +#: app/views/menu.html:325 msgid "Community forum" msgstr "Fòrum de la comunitat" -#: app/views/menu.html:344 +#: app/scripts/services/tools.js:348 +msgid "Configuration not completed" +msgstr "" + +#: app/views/menu.html:350 msgid "Constant" msgstr "Constant" @@ -216,11 +220,11 @@ msgstr "Retalla" msgid "Datasheet" msgstr "Full de dades" -#: app/views/menu.html:199 +#: app/views/menu.html:206 msgid "Default" msgstr "Per defecte" -#: app/scripts/services/tools.js:603 +#: app/scripts/services/tools.js:610 msgid "" "Default toolchain not found. Toolchain will be downloaded. This operation " "requires Internet connection. Do you want to continue?" @@ -232,39 +236,39 @@ msgstr "" msgid "Description" msgstr "Descripció" -#: app/views/menu.html:138 app/views/menu.html:265 +#: app/views/menu.html:138 app/views/menu.html:272 msgid "Disable" msgstr "Inhabilita" -#: app/scripts/controllers/menu.js:250 +#: app/scripts/controllers/menu.js:256 msgid "Do you want to close the application?" msgstr "Vols tancar l'aplicació?" -#: app/scripts/controllers/menu.js:576 +#: app/scripts/controllers/menu.js:588 msgid "Do you want to remove the {{name}} collection?" msgstr "Vols eliminar la col·lecció {{name}}?" -#: app/scripts/services/tools.js:906 +#: app/scripts/services/tools.js:929 msgid "Do you want to replace it?" msgstr "Vols reemplaçar-la?" -#: app/views/menu.html:311 +#: app/views/menu.html:318 msgid "Documentation" msgstr "Documentació" -#: app/views/menu.html:256 +#: app/views/menu.html:263 msgid "Drivers" msgstr "Drivers" -#: app/scripts/services/drivers.js:134 app/scripts/services/drivers.js:72 +#: app/scripts/services/drivers.js:133 app/scripts/services/drivers.js:72 msgid "Drivers disabled" msgstr "Drivers inhabilitats" -#: app/scripts/services/drivers.js:126 app/scripts/services/drivers.js:63 +#: app/scripts/services/drivers.js:125 app/scripts/services/drivers.js:63 msgid "Drivers enabled" msgstr "Drivers habilitats" -#: app/scripts/services/tools.js:344 +#: app/scripts/services/tools.js:357 msgid "Duplicated FPGA I/O ports" msgstr "Ports d'E/S de la FPGA duplicats" @@ -276,11 +280,11 @@ msgstr "Atributs de bloc duplicats" msgid "Edit" msgstr "Edita" -#: app/scripts/services/tools.js:895 +#: app/scripts/services/tools.js:918 msgid "Edit the collection name" msgstr "" -#: app/views/menu.html:133 app/views/menu.html:260 +#: app/views/menu.html:133 app/views/menu.html:267 msgid "Enable" msgstr "Habilita" @@ -312,11 +316,11 @@ msgstr "Introdueix els ports de sortida" msgid "Enter the parameters" msgstr "Introdueix els paràmetres" -#: app/scripts/controllers/menu.js:358 +#: app/scripts/controllers/menu.js:366 msgid "Enter the remote hostname user@host (experimental)" msgstr "Introdueix el nom del host remot usuari@host" -#: app/scripts/services/tools.js:626 +#: app/scripts/services/tools.js:639 msgid "Error: default toolchain not found in '{{dir}}'" msgstr "Error: toolchain per defecte no trobada en '{{dir}}'" @@ -324,7 +328,7 @@ msgstr "Error: toolchain per defecte no trobada en '{{dir}}'" msgid "Error: {{error}}" msgstr "Error: {{error}}" -#: app/scripts/services/tools.js:418 +#: app/scripts/services/tools.js:431 msgid "Errors detected in the design" msgstr "" @@ -332,7 +336,7 @@ msgstr "" msgid "Examples" msgstr "Exemples" -#: app/scripts/services/tools.js:275 +#: app/scripts/services/tools.js:282 msgid "Execute remote {{label}} ..." msgstr "Executa {{label}} remot..." @@ -340,19 +344,19 @@ msgstr "Executa {{label}} remot..." msgid "Export" msgstr "Exporta" -#: app/scripts/services/tools.js:762 +#: app/scripts/services/tools.js:778 msgid "Extract default apio files..." msgstr "Extreu fitxers de apio..." -#: app/scripts/services/tools.js:772 +#: app/scripts/services/tools.js:788 msgid "Extract default apio packages..." msgstr "Extreu paquets de apio..." -#: app/scripts/services/tools.js:750 +#: app/scripts/services/tools.js:766 msgid "Extract virtual env files..." msgstr "Extreu fitxers de l'entorn virtual" -#: app/scripts/services/tools.js:341 +#: app/scripts/services/tools.js:354 msgid "FPGA I/O ports not defined" msgstr "Ports d'E/S de la FPGA no definits" @@ -361,6 +365,10 @@ msgstr "Ports d'E/S de la FPGA no definits" msgid "FPGA pin" msgstr "FPGA pin" +#: app/views/menu.html:179 +msgid "FPGA resources" +msgstr "" + #: app/views/menu.html:29 msgid "File" msgstr "Fitxer" @@ -372,7 +380,7 @@ msgstr "" "El fitxer {{file}} ja existeix en el directori del projecte. Vols reemplaçar-" "lo?" -#: app/scripts/services/tools.js:214 +#: app/scripts/services/tools.js:221 msgid "File {{file}} does not exist" msgstr "El fitxer {{file}} no existeix" @@ -392,7 +400,7 @@ msgstr "Francès" msgid "Galician" msgstr "Gallec" -#: app/views/menu.html:301 +#: app/views/menu.html:308 msgid "Help" msgstr "Ajuda" @@ -400,35 +408,35 @@ msgstr "Ajuda" msgid "Image" msgstr "Imatge" -#: app/scripts/controllers/menu.js:735 +#: app/scripts/controllers/menu.js:753 msgid "Image {{name}} saved" msgstr "Imatge {{name}} desada" -#: app/views/menu.html:350 +#: app/views/menu.html:356 msgid "Information" msgstr "Informació" -#: app/views/menu.html:338 +#: app/views/menu.html:344 msgid "Input" msgstr "Entrada" -#: app/views/menu.html:233 +#: app/views/menu.html:240 msgid "Install" msgstr "Instal·lar" -#: app/scripts/services/tools.js:767 +#: app/scripts/services/tools.js:783 msgid "Install default apio..." msgstr "Instal·lar apio" -#: app/scripts/services/tools.js:816 +#: app/scripts/services/tools.js:832 msgid "Installation completed" msgstr "Instal·lació completada" -#: app/scripts/services/tools.js:657 app/scripts/services/tools.js:692 +#: app/scripts/services/tools.js:673 app/scripts/services/tools.js:708 msgid "Installing toolchain" msgstr "Instal·lant la toolchain" -#: app/scripts/services/drivers.js:118 app/scripts/services/tools.js:731 +#: app/scripts/services/drivers.js:117 app/scripts/services/tools.js:747 msgid "Internet connection required" msgstr "És necessari connexió a Internet" @@ -446,7 +454,7 @@ msgstr "" msgid "Invalid block connection:
    Pull up already connected" msgstr "Connexió de blocs no vàlida:
    Pull up connectada" -#: app/scripts/services/tools.js:926 +#: app/scripts/services/tools.js:949 msgid "Invalid collection {{name}}" msgstr "Col·lecció {{name}} invàlida" @@ -467,7 +475,7 @@ msgstr "Connexions d'entrada múltiple no vàlides" msgid "Invalid project format" msgstr "" -#: app/scripts/services/drivers.js:196 +#: app/scripts/services/drivers.js:195 msgid "It is recommended to use USB 2.0 ports" msgstr "" @@ -483,7 +491,7 @@ msgstr "" msgid "Local parameter" msgstr "Paràmetre local" -#: app/scripts/services/tools.js:755 +#: app/scripts/services/tools.js:771 msgid "Make virtual env..." msgstr "Crear entorn virtual" @@ -503,11 +511,11 @@ msgstr "Nou" msgid "New project {{name}} created" msgstr "Nou projecte {{name}} creat" -#: app/scripts/controllers/menu.js:594 +#: app/scripts/controllers/menu.js:606 msgid "No collections stored" msgstr "Cap col·lecció emmagatzemada" -#: app/scripts/controllers/main.js:15 app/scripts/controllers/menu.js:260 +#: app/scripts/controllers/main.js:15 app/scripts/controllers/menu.js:266 #: app/scripts/services/project.js:145 msgid "OK" msgstr "D'acord" @@ -528,7 +536,7 @@ msgstr "Obre SVG" msgid "Original file {{file}} does not exist" msgstr "El fitxer original {{file}} no existeix" -#: app/views/menu.html:341 +#: app/views/menu.html:347 msgid "Output" msgstr "Eixida" @@ -548,7 +556,7 @@ msgstr "Preferències" msgid "Project information" msgstr "Informació del projecte" -#: app/scripts/controllers/menu.js:326 app/scripts/controllers/menu.js:340 +#: app/scripts/controllers/menu.js:334 app/scripts/controllers/menu.js:348 msgid "Project information updated" msgstr "" @@ -560,7 +568,7 @@ msgstr "Projecte {{name}} carregat" msgid "Project {{name}} saved" msgstr "Projecte {{name}} desat" -#: app/scripts/services/tools.js:744 +#: app/scripts/services/tools.js:760 msgid "Python 2.7 is required" msgstr "És necessari Python 2.7" @@ -576,7 +584,7 @@ msgstr "Només lectura" msgid "Redo" msgstr "Refés" -#: app/scripts/services/tools.js:453 +#: app/scripts/services/tools.js:466 msgid "Remote host {{name}} not connected" msgstr "Host remot {{name}} no connectat" @@ -584,11 +592,11 @@ msgstr "Host remot {{name}} no connectat" msgid "Remote hostname" msgstr "Nom del host remot" -#: app/views/menu.html:241 app/views/menu.html:280 +#: app/views/menu.html:248 app/views/menu.html:287 msgid "Remove" msgstr "Suprimir" -#: app/views/menu.html:292 +#: app/views/menu.html:299 msgid "Remove all" msgstr "Suprimir tot" @@ -596,7 +604,7 @@ msgstr "Suprimir tot" msgid "Reset SVG" msgstr "Reseteja SVG" -#: app/views/menu.html:246 +#: app/views/menu.html:253 msgid "Reset default" msgstr "Resetejar els valors per defecte" @@ -612,7 +620,7 @@ msgstr "Desa SVG" msgid "Save as" msgstr "Anomena i desa" -#: app/views/menu.html:180 +#: app/views/menu.html:187 msgid "Select" msgstr "Selecciona" @@ -624,7 +632,7 @@ msgstr "Selecciona tot" msgid "Show clock" msgstr "Mostra rellotge" -#: app/views/menu.html:314 +#: app/views/menu.html:321 msgid "Source code" msgstr "Codi font" @@ -632,19 +640,19 @@ msgstr "Codi font" msgid "Spanish" msgstr "Espanyol" -#: app/scripts/controllers/menu.js:530 +#: app/scripts/controllers/menu.js:540 msgid "Start build" msgstr "Iniciar sintetitzat" -#: app/scripts/controllers/menu.js:542 +#: app/scripts/controllers/menu.js:553 msgid "Start upload" msgstr "Iniciar càrrega" -#: app/scripts/controllers/menu.js:518 +#: app/scripts/controllers/menu.js:530 msgid "Start verification" msgstr "Iniciar verificació" -#: app/scripts/services/tools.js:264 +#: app/scripts/services/tools.js:271 msgid "Synchronize remote files ..." msgstr "Sincronitza fitxers remots" @@ -652,11 +660,11 @@ msgstr "Sincronitza fitxers remots" msgid "Testbench" msgstr "Testbench" -#: app/scripts/services/tools.js:905 +#: app/scripts/services/tools.js:928 msgid "The collection {{name}} already exists." msgstr "La col·leccio {{name}} ja existeix" -#: app/scripts/controllers/menu.js:497 +#: app/scripts/controllers/menu.js:509 msgid "" "The current FPGA I/O configuration will be lost. Do you want to change to " "{{name}} board?" @@ -664,15 +672,15 @@ msgstr "" "La configuració actual d'E/S de la FPGA es perdrà. Vols canviar a la placa " "{{name}}?" -#: app/scripts/services/tools.js:631 +#: app/scripts/services/tools.js:647 msgid "The toolchain will be removed. Do you want to continue?" msgstr "La toolchain serà eliminada. Vols continuar?" -#: app/scripts/services/tools.js:619 +#: app/scripts/services/tools.js:632 msgid "The toolchain will be restored to default. Do you want to continue?" msgstr "La toolchain serà restaurada als valors per defecte. Vols continuar?" -#: app/scripts/services/tools.js:611 +#: app/scripts/services/tools.js:621 msgid "" "The toolchain will be updated. This operation requires Internet connection. " "Do you want to continue?" @@ -692,28 +700,28 @@ msgstr "" msgid "This project is designed for the {{name}} board." msgstr "Aquest projecte està dissenyat per a la placa {{name}}" -#: app/views/menu.html:229 +#: app/views/menu.html:236 msgid "Toolchain" msgstr "Toolchain" -#: app/scripts/services/tools.js:818 +#: app/scripts/services/tools.js:834 msgid "Toolchain installed" msgstr "Toolchain instal·lada" -#: app/scripts/services/drivers.js:203 app/scripts/services/drivers.js:225 -#: app/scripts/services/tools.js:132 app/scripts/services/tools.js:834 +#: app/scripts/services/drivers.js:202 app/scripts/services/drivers.js:224 +#: app/scripts/services/tools.js:139 app/scripts/services/tools.js:839 msgid "Toolchain not installed" msgstr "La toolchain no està instal·lada" -#: app/scripts/services/tools.js:636 +#: app/scripts/services/tools.js:652 msgid "Toolchain removed" msgstr "Toolchain eliminada" -#: app/scripts/services/tools.js:246 +#: app/scripts/services/tools.js:253 msgid "Toolchain version does not match" msgstr "" -#: app/views/menu.html:216 +#: app/views/menu.html:223 msgid "Tools" msgstr "Eines" @@ -721,7 +729,7 @@ msgstr "Eines" msgid "Undo" msgstr "Desfés" -#: app/scripts/services/tools.js:336 +#: app/scripts/services/tools.js:343 msgid "Unknown board" msgstr "Placa desconeguda" @@ -729,7 +737,7 @@ msgstr "Placa desconeguda" msgid "Untitled" msgstr "Sense títol" -#: app/views/menu.html:236 +#: app/views/menu.html:243 msgid "Update" msgstr "Actualitzar" @@ -738,23 +746,23 @@ msgstr "Actualitzar" msgid "Update the block name" msgstr "Actualitza el nom del bloc" -#: app/views/menu.html:225 +#: app/views/menu.html:232 msgid "Upload" msgstr "Carrega" -#: app/scripts/controllers/menu.js:543 +#: app/scripts/controllers/menu.js:554 msgid "Upload done" msgstr "Càrrega realitzada" -#: app/scripts/controllers/menu.js:519 +#: app/scripts/controllers/menu.js:531 msgid "Verification done" msgstr "Verificació realitzada" -#: app/views/menu.html:219 +#: app/views/menu.html:226 msgid "Verify" msgstr "Verifica" -#: app/scripts/services/utils.js:531 app/views/menu.html:307 +#: app/scripts/services/utils.js:531 app/views/menu.html:314 msgid "Version" msgstr "Versió" @@ -762,11 +770,11 @@ msgstr "Versió" msgid "View" msgstr "Visualitza" -#: app/views/menu.html:304 +#: app/views/menu.html:311 msgid "View license" msgstr "Visualitzar llicència" -#: app/scripts/services/tools.js:421 +#: app/scripts/services/tools.js:434 msgid "Warnings detected in the design" msgstr "" @@ -792,7 +800,7 @@ msgstr "Nom del port incorrecte" msgid "Wrong project format: {{name}}" msgstr "Format de projecte incorrecte: {{name}}" -#: app/scripts/services/tools.js:450 +#: app/scripts/services/tools.js:463 msgid "Wrong remote hostname {{name}}" msgstr "Nom del host remot incorrecte {{name}}" @@ -800,7 +808,7 @@ msgstr "Nom del host remot incorrecte {{name}}" msgid "You can load it as it is or convert it for the {{name}} board." msgstr "" -#: app/scripts/controllers/menu.js:251 +#: app/scripts/controllers/menu.js:257 msgid "Your changes will be lost if you don’t save them" msgstr "Els teus canvis es perdran si no els deses" @@ -808,23 +816,23 @@ msgstr "Els teus canvis es perdran si no els deses" msgid "back" msgstr "enrere" -#: app/scripts/services/drivers.js:109 app/scripts/services/utils.js:862 +#: app/scripts/services/drivers.js:108 app/scripts/services/utils.js:862 msgid "{{app}} is required." msgstr "" -#: app/scripts/controllers/menu.js:430 +#: app/scripts/controllers/menu.js:438 msgid "{{board}} datasheet not defined" msgstr "Full de dades de {{board}} no definit" -#: app/scripts/controllers/menu.js:420 +#: app/scripts/controllers/menu.js:428 msgid "{{board}} pinout not defined" msgstr "{{board}} pinout no definit" -#: app/scripts/controllers/menu.js:449 +#: app/scripts/controllers/menu.js:457 msgid "{{board}} rules not defined" msgstr "Regles de {{board}} no definides" -#: app/scripts/controllers/menu.js:201 app/scripts/controllers/menu.js:224 +#: app/scripts/controllers/menu.js:204 app/scripts/controllers/menu.js:228 msgid "{{name}} exported" msgstr "" diff --git a/app/resources/locale/en/en.po b/app/resources/locale/en/en.po index 87876ba53..177d0dac8 100644 --- a/app/resources/locale/en/en.po +++ b/app/resources/locale/en/en.po @@ -12,11 +12,11 @@ msgstr "" "X-Generator: Poedit 1.8.7.1\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app/scripts/services/drivers.js:211 app/scripts/services/drivers.js:87 +#: app/scripts/services/drivers.js:210 app/scripts/services/drivers.js:87 msgid "Unplug and reconnect the board" msgstr "Unplug and reconnect the board" -#: app/scripts/services/drivers.js:195 +#: app/scripts/services/drivers.js:194 msgid "" "

    FTDI driver installation instructions

    1. Connect the FPGA " "board
    2. Replace the (Interface 0) driver of the board by " @@ -26,7 +26,7 @@ msgstr "" "board
    3. Replace the (Interface 0) driver of the board by " "libusbK
    4. Unplug and reconnect the board
    " -#: app/scripts/services/drivers.js:218 +#: app/scripts/services/drivers.js:217 msgid "" "

    FTDI driver uninstallation instructions

    1. Find the FPGA USB " "Device
    2. Select the board interface and uninstall the driver
    " @@ -34,15 +34,15 @@ msgstr "" "

    FTDI driver uninstallation instructions

    1. Find the FPGA USB " "Device
    2. Select the board interface and uninstall the driver
    " -#: app/views/menu.html:322 +#: app/views/menu.html:329 msgid "About Icestudio" msgstr "About Icestudio" -#: app/views/menu.html:276 +#: app/views/menu.html:283 msgid "Add" msgstr "Add" -#: app/scripts/controllers/menu.js:562 +#: app/scripts/controllers/menu.js:574 msgid "Add a block to start" msgstr "Add a block to start" @@ -50,11 +50,11 @@ msgstr "Add a block to start" msgid "Add as block" msgstr "Add as block" -#: app/scripts/services/tools.js:1036 +#: app/scripts/services/tools.js:1059 msgid "All collections removed" msgstr "All collections removed" -#: app/scripts/controllers/menu.js:586 +#: app/scripts/controllers/menu.js:598 msgid "All stored collections will be lost. Do you want to continue?" msgstr "All stored collections will be lost. Do you want to continue?" @@ -62,7 +62,7 @@ msgstr "All stored collections will be lost. Do you want to continue?" msgid "Author" msgstr "Author" -#: app/views/menu.html:333 +#: app/views/menu.html:340 msgid "Basic" msgstr "Basic" @@ -85,7 +85,7 @@ msgstr "Block {{name}} imported" msgid "Blocks" msgstr "Blocks" -#: app/views/menu.html:183 +#: app/views/menu.html:190 msgid "Board" msgstr "Board" @@ -93,27 +93,27 @@ msgstr "Board" msgid "Board rules" msgstr "Board rules" -#: app/scripts/controllers/menu.js:371 +#: app/scripts/controllers/menu.js:379 msgid "Board rules disabled" msgstr "Board rules disabled" -#: app/scripts/controllers/menu.js:366 +#: app/scripts/controllers/menu.js:374 msgid "Board rules enabled" msgstr "Board rules enabled" -#: app/scripts/services/tools.js:333 +#: app/scripts/services/tools.js:340 msgid "Board {{name}} not detected" msgstr "Board {{name}} not detected" -#: app/scripts/controllers/menu.js:510 +#: app/scripts/controllers/menu.js:522 msgid "Board {{name}} selected" msgstr "Board {{name}} selected" -#: app/views/menu.html:222 +#: app/views/menu.html:229 msgid "Build" msgstr "Build" -#: app/scripts/controllers/menu.js:531 +#: app/scripts/controllers/menu.js:541 msgid "Build done" msgstr "Build done" @@ -125,37 +125,37 @@ msgstr "Cancel" msgid "Catalan" msgstr "Catalan" -#: app/scripts/services/tools.js:727 +#: app/scripts/services/tools.js:743 msgid "Check Internet connection..." msgstr "Check Internet connection..." -#: app/scripts/services/tools.js:737 +#: app/scripts/services/tools.js:753 msgid "Check Python..." msgstr "Check Python..." -#: app/scripts/services/tools.js:819 +#: app/scripts/services/tools.js:847 msgid "Click here to setup the drivers" msgstr "Click here to setup the drivers" -#: app/scripts/services/drivers.js:110 app/scripts/services/drivers.js:203 -#: app/scripts/services/drivers.js:225 app/scripts/services/tools.js:132 -#: app/scripts/services/tools.js:246 +#: app/scripts/services/drivers.js:109 app/scripts/services/drivers.js:202 +#: app/scripts/services/drivers.js:224 app/scripts/services/tools.js:139 +#: app/scripts/services/tools.js:253 msgid "Click here to install it" msgstr "Click here to install it" -#: app/scripts/controllers/menu.js:326 +#: app/scripts/controllers/menu.js:334 msgid "Click here to view" msgstr "Click here to view" -#: app/scripts/controllers/menu.js:247 +#: app/scripts/controllers/menu.js:252 msgid "Close" msgstr "Close" -#: app/views/menu.html:347 +#: app/views/menu.html:353 msgid "Code" msgstr "Code" -#: app/views/menu.html:194 +#: app/views/menu.html:201 msgid "Collection" msgstr "Collection" @@ -163,39 +163,43 @@ msgstr "Collection" msgid "Collection info" msgstr "Collection info" -#: app/scripts/controllers/menu.js:468 +#: app/scripts/controllers/menu.js:480 msgid "Collection {{collection}} info not defined" msgstr "Collection {{collection}} info not defined" -#: app/scripts/services/tools.js:920 +#: app/scripts/services/tools.js:943 msgid "Collection {{name}} added" msgstr "Collection {{name}} added" -#: app/scripts/services/tools.js:914 +#: app/scripts/services/tools.js:937 msgid "Collection {{name}} not replaced" msgstr "Collection {{name}} not replaced" -#: app/scripts/services/tools.js:1030 +#: app/scripts/services/tools.js:1053 msgid "Collection {{name}} removed" msgstr "Collection {{name}} removed" -#: app/scripts/services/tools.js:910 +#: app/scripts/services/tools.js:933 msgid "Collection {{name}} replaced" msgstr "Collection {{name}} replaced" -#: app/scripts/controllers/menu.js:476 +#: app/scripts/controllers/menu.js:488 msgid "Collection {{name}} selected" msgstr "Collection {{name}} selected" -#: app/views/menu.html:272 +#: app/views/menu.html:279 msgid "Collections" msgstr "Collections" -#: app/views/menu.html:318 +#: app/views/menu.html:325 msgid "Community forum" msgstr "Community forum" -#: app/views/menu.html:344 +#: app/scripts/services/tools.js:348 +msgid "Configuration not completed" +msgstr "Configuration not completed" + +#: app/views/menu.html:350 msgid "Constant" msgstr "Constant" @@ -215,11 +219,11 @@ msgstr "Cut" msgid "Datasheet" msgstr "Datasheet" -#: app/views/menu.html:199 +#: app/views/menu.html:206 msgid "Default" msgstr "Default" -#: app/scripts/services/tools.js:603 +#: app/scripts/services/tools.js:610 msgid "" "Default toolchain not found. Toolchain will be downloaded. This operation " "requires Internet connection. Do you want to continue?" @@ -231,39 +235,39 @@ msgstr "" msgid "Description" msgstr "Description" -#: app/views/menu.html:138 app/views/menu.html:265 +#: app/views/menu.html:138 app/views/menu.html:272 msgid "Disable" msgstr "Disable" -#: app/scripts/controllers/menu.js:250 +#: app/scripts/controllers/menu.js:256 msgid "Do you want to close the application?" msgstr "Do you want to close the application?" -#: app/scripts/controllers/menu.js:576 +#: app/scripts/controllers/menu.js:588 msgid "Do you want to remove the {{name}} collection?" msgstr "Do you want to remove the {{name}} collection?" -#: app/scripts/services/tools.js:906 +#: app/scripts/services/tools.js:929 msgid "Do you want to replace it?" msgstr "Do you want to replace it?" -#: app/views/menu.html:311 +#: app/views/menu.html:318 msgid "Documentation" msgstr "Documentation" -#: app/views/menu.html:256 +#: app/views/menu.html:263 msgid "Drivers" msgstr "Drivers" -#: app/scripts/services/drivers.js:134 app/scripts/services/drivers.js:72 +#: app/scripts/services/drivers.js:133 app/scripts/services/drivers.js:72 msgid "Drivers disabled" msgstr "Drivers disabled" -#: app/scripts/services/drivers.js:126 app/scripts/services/drivers.js:63 +#: app/scripts/services/drivers.js:125 app/scripts/services/drivers.js:63 msgid "Drivers enabled" msgstr "Drivers enabled" -#: app/scripts/services/tools.js:344 +#: app/scripts/services/tools.js:357 msgid "Duplicated FPGA I/O ports" msgstr "Duplicated FPGA I/O ports" @@ -275,11 +279,11 @@ msgstr "Duplicated block attributes" msgid "Edit" msgstr "Edit" -#: app/scripts/services/tools.js:895 +#: app/scripts/services/tools.js:918 msgid "Edit the collection name" msgstr "Edit the collection name" -#: app/views/menu.html:133 app/views/menu.html:260 +#: app/views/menu.html:133 app/views/menu.html:267 msgid "Enable" msgstr "Enable" @@ -311,11 +315,11 @@ msgstr "Enter the output ports" msgid "Enter the parameters" msgstr "Enter the parameters" -#: app/scripts/controllers/menu.js:358 +#: app/scripts/controllers/menu.js:366 msgid "Enter the remote hostname user@host (experimental)" msgstr "Enter the remote hostname user@host (experimental)" -#: app/scripts/services/tools.js:626 +#: app/scripts/services/tools.js:639 msgid "Error: default toolchain not found in '{{dir}}'" msgstr "Error: default toolchain not found in '{{dir}}'" @@ -323,7 +327,7 @@ msgstr "Error: default toolchain not found in '{{dir}}'" msgid "Error: {{error}}" msgstr "Error: {{error}}" -#: app/scripts/services/tools.js:418 +#: app/scripts/services/tools.js:431 msgid "Errors detected in the design" msgstr "Errors detected in the design" @@ -331,7 +335,7 @@ msgstr "Errors detected in the design" msgid "Examples" msgstr "Examples" -#: app/scripts/services/tools.js:275 +#: app/scripts/services/tools.js:282 msgid "Execute remote {{label}} ..." msgstr "Execute remote {{label}} ..." @@ -339,19 +343,19 @@ msgstr "Execute remote {{label}} ..." msgid "Export" msgstr "Export" -#: app/scripts/services/tools.js:762 +#: app/scripts/services/tools.js:778 msgid "Extract default apio files..." msgstr "Extract default apio files..." -#: app/scripts/services/tools.js:772 +#: app/scripts/services/tools.js:788 msgid "Extract default apio packages..." msgstr "Extract default apio packages..." -#: app/scripts/services/tools.js:750 +#: app/scripts/services/tools.js:766 msgid "Extract virtual env files..." msgstr "Extract virtual env files..." -#: app/scripts/services/tools.js:341 +#: app/scripts/services/tools.js:354 msgid "FPGA I/O ports not defined" msgstr "FPGA I/O ports not defined" @@ -360,6 +364,10 @@ msgstr "FPGA I/O ports not defined" msgid "FPGA pin" msgstr "FPGA pin" +#: app/views/menu.html:179 +msgid "FPGA resources" +msgstr "FPGA resources" + #: app/views/menu.html:29 msgid "File" msgstr "File" @@ -370,7 +378,7 @@ msgid "" msgstr "" "File {{file}} already exists in the project path. Do you want to replace it?" -#: app/scripts/services/tools.js:214 +#: app/scripts/services/tools.js:221 msgid "File {{file}} does not exist" msgstr "File {{file}} does not exist" @@ -390,7 +398,7 @@ msgstr "French" msgid "Galician" msgstr "Galician" -#: app/views/menu.html:301 +#: app/views/menu.html:308 msgid "Help" msgstr "Help" @@ -398,35 +406,35 @@ msgstr "Help" msgid "Image" msgstr "Image" -#: app/scripts/controllers/menu.js:735 +#: app/scripts/controllers/menu.js:753 msgid "Image {{name}} saved" msgstr "Image {{name}} saved" -#: app/views/menu.html:350 +#: app/views/menu.html:356 msgid "Information" msgstr "Information" -#: app/views/menu.html:338 +#: app/views/menu.html:344 msgid "Input" msgstr "Input" -#: app/views/menu.html:233 +#: app/views/menu.html:240 msgid "Install" msgstr "Install" -#: app/scripts/services/tools.js:767 +#: app/scripts/services/tools.js:783 msgid "Install default apio..." msgstr "Install default apio..." -#: app/scripts/services/tools.js:816 +#: app/scripts/services/tools.js:832 msgid "Installation completed" msgstr "Installation completed" -#: app/scripts/services/tools.js:657 app/scripts/services/tools.js:692 +#: app/scripts/services/tools.js:673 app/scripts/services/tools.js:708 msgid "Installing toolchain" msgstr "Installing toolchain" -#: app/scripts/services/drivers.js:118 app/scripts/services/tools.js:731 +#: app/scripts/services/drivers.js:117 app/scripts/services/tools.js:747 msgid "Internet connection required" msgstr "Internet connection required" @@ -442,7 +450,7 @@ msgstr "Invalid Pull up connection:
    only Input blocks allowed" msgid "Invalid block connection:
    Pull up already connected" msgstr "Invalid block connection:
    Pull up already connected" -#: app/scripts/services/tools.js:926 +#: app/scripts/services/tools.js:949 msgid "Invalid collection {{name}}" msgstr "Invalid collection {{name}}" @@ -463,7 +471,7 @@ msgstr "Invalid multiple input connections" msgid "Invalid project format" msgstr "Invalid project format" -#: app/scripts/services/drivers.js:196 +#: app/scripts/services/drivers.js:195 msgid "It is recommended to use USB 2.0 ports" msgstr "It is recommended to use USB 2.0 ports" @@ -479,7 +487,7 @@ msgstr "Load" msgid "Local parameter" msgstr "Local parameter" -#: app/scripts/services/tools.js:755 +#: app/scripts/services/tools.js:771 msgid "Make virtual env..." msgstr "Make virtual env..." @@ -499,11 +507,11 @@ msgstr "New" msgid "New project {{name}} created" msgstr "New project {{name}} created" -#: app/scripts/controllers/menu.js:594 +#: app/scripts/controllers/menu.js:606 msgid "No collections stored" msgstr "No collections stored" -#: app/scripts/controllers/main.js:15 app/scripts/controllers/menu.js:260 +#: app/scripts/controllers/main.js:15 app/scripts/controllers/menu.js:266 #: app/scripts/services/project.js:145 msgid "OK" msgstr "OK" @@ -524,7 +532,7 @@ msgstr "Open SVG" msgid "Original file {{file}} does not exist" msgstr "Original file {{file}} does not exist" -#: app/views/menu.html:341 +#: app/views/menu.html:347 msgid "Output" msgstr "Output" @@ -544,7 +552,7 @@ msgstr "Preferences" msgid "Project information" msgstr "Project information" -#: app/scripts/controllers/menu.js:326 app/scripts/controllers/menu.js:340 +#: app/scripts/controllers/menu.js:334 app/scripts/controllers/menu.js:348 msgid "Project information updated" msgstr "Project information updated" @@ -556,7 +564,7 @@ msgstr "Project {{name}} loaded" msgid "Project {{name}} saved" msgstr "Project {{name}} saved" -#: app/scripts/services/tools.js:744 +#: app/scripts/services/tools.js:760 msgid "Python 2.7 is required" msgstr "Python 2.7 is required" @@ -572,7 +580,7 @@ msgstr "Read only" msgid "Redo" msgstr "Redo" -#: app/scripts/services/tools.js:453 +#: app/scripts/services/tools.js:466 msgid "Remote host {{name}} not connected" msgstr "Remote host {{name}} not connected" @@ -580,11 +588,11 @@ msgstr "Remote host {{name}} not connected" msgid "Remote hostname" msgstr "Remote hostname" -#: app/views/menu.html:241 app/views/menu.html:280 +#: app/views/menu.html:248 app/views/menu.html:287 msgid "Remove" msgstr "Remove" -#: app/views/menu.html:292 +#: app/views/menu.html:299 msgid "Remove all" msgstr "Remove all" @@ -592,7 +600,7 @@ msgstr "Remove all" msgid "Reset SVG" msgstr "Reset SVG" -#: app/views/menu.html:246 +#: app/views/menu.html:253 msgid "Reset default" msgstr "Reset default" @@ -608,7 +616,7 @@ msgstr "Save SVG" msgid "Save as" msgstr "Save as" -#: app/views/menu.html:180 +#: app/views/menu.html:187 msgid "Select" msgstr "Select" @@ -620,7 +628,7 @@ msgstr "Select all" msgid "Show clock" msgstr "Show clock" -#: app/views/menu.html:314 +#: app/views/menu.html:321 msgid "Source code" msgstr "Source code" @@ -628,19 +636,19 @@ msgstr "Source code" msgid "Spanish" msgstr "Spanish" -#: app/scripts/controllers/menu.js:530 +#: app/scripts/controllers/menu.js:540 msgid "Start build" msgstr "Start build" -#: app/scripts/controllers/menu.js:542 +#: app/scripts/controllers/menu.js:553 msgid "Start upload" msgstr "Start upload" -#: app/scripts/controllers/menu.js:518 +#: app/scripts/controllers/menu.js:530 msgid "Start verification" msgstr "Start verification" -#: app/scripts/services/tools.js:264 +#: app/scripts/services/tools.js:271 msgid "Synchronize remote files ..." msgstr "Synchronize remote files ..." @@ -648,11 +656,11 @@ msgstr "Synchronize remote files ..." msgid "Testbench" msgstr "Testbench" -#: app/scripts/services/tools.js:905 +#: app/scripts/services/tools.js:928 msgid "The collection {{name}} already exists." msgstr "The collection {{name}} already exists." -#: app/scripts/controllers/menu.js:497 +#: app/scripts/controllers/menu.js:509 msgid "" "The current FPGA I/O configuration will be lost. Do you want to change to " "{{name}} board?" @@ -660,15 +668,15 @@ msgstr "" "The current FPGA I/O configuration will be lost. Do you want to change to " "{{name}} board?" -#: app/scripts/services/tools.js:631 +#: app/scripts/services/tools.js:647 msgid "The toolchain will be removed. Do you want to continue?" msgstr "The toolchain will be removed. Do you want to continue?" -#: app/scripts/services/tools.js:619 +#: app/scripts/services/tools.js:632 msgid "The toolchain will be restored to default. Do you want to continue?" msgstr "The toolchain will be restored to default. Do you want to continue?" -#: app/scripts/services/tools.js:611 +#: app/scripts/services/tools.js:621 msgid "" "The toolchain will be updated. This operation requires Internet connection. " "Do you want to continue?" @@ -688,28 +696,28 @@ msgstr "" msgid "This project is designed for the {{name}} board." msgstr "This project is designed for the {{name}} board." -#: app/views/menu.html:229 +#: app/views/menu.html:236 msgid "Toolchain" msgstr "Toolchain" -#: app/scripts/services/tools.js:818 +#: app/scripts/services/tools.js:834 msgid "Toolchain installed" msgstr "Toolchain installed" -#: app/scripts/services/drivers.js:203 app/scripts/services/drivers.js:225 -#: app/scripts/services/tools.js:132 app/scripts/services/tools.js:834 +#: app/scripts/services/drivers.js:202 app/scripts/services/drivers.js:224 +#: app/scripts/services/tools.js:139 app/scripts/services/tools.js:839 msgid "Toolchain not installed" msgstr "Toolchain not installed" -#: app/scripts/services/tools.js:636 +#: app/scripts/services/tools.js:652 msgid "Toolchain removed" msgstr "Toolchain removed" -#: app/scripts/services/tools.js:246 +#: app/scripts/services/tools.js:253 msgid "Toolchain version does not match" msgstr "Toolchain version does not match" -#: app/views/menu.html:216 +#: app/views/menu.html:223 msgid "Tools" msgstr "Tools" @@ -717,7 +725,7 @@ msgstr "Tools" msgid "Undo" msgstr "Undo" -#: app/scripts/services/tools.js:336 +#: app/scripts/services/tools.js:343 msgid "Unknown board" msgstr "Unknown board" @@ -725,7 +733,7 @@ msgstr "Unknown board" msgid "Untitled" msgstr "Untitled" -#: app/views/menu.html:236 +#: app/views/menu.html:243 msgid "Update" msgstr "Update" @@ -734,23 +742,23 @@ msgstr "Update" msgid "Update the block name" msgstr "Update the block name" -#: app/views/menu.html:225 +#: app/views/menu.html:232 msgid "Upload" msgstr "Upload" -#: app/scripts/controllers/menu.js:543 +#: app/scripts/controllers/menu.js:554 msgid "Upload done" msgstr "Upload done" -#: app/scripts/controllers/menu.js:519 +#: app/scripts/controllers/menu.js:531 msgid "Verification done" msgstr "Verification done" -#: app/views/menu.html:219 +#: app/views/menu.html:226 msgid "Verify" msgstr "Verify" -#: app/scripts/services/utils.js:531 app/views/menu.html:307 +#: app/scripts/services/utils.js:531 app/views/menu.html:314 msgid "Version" msgstr "Version" @@ -758,11 +766,11 @@ msgstr "Version" msgid "View" msgstr "View" -#: app/views/menu.html:304 +#: app/views/menu.html:311 msgid "View license" msgstr "View license" -#: app/scripts/services/tools.js:421 +#: app/scripts/services/tools.js:434 msgid "Warnings detected in the design" msgstr "Warnings detected in the design" @@ -788,7 +796,7 @@ msgstr "Wrong port name {{name}}" msgid "Wrong project format: {{name}}" msgstr "Wrong project format: {{name}}" -#: app/scripts/services/tools.js:450 +#: app/scripts/services/tools.js:463 msgid "Wrong remote hostname {{name}}" msgstr "Wrong remote hostname {{name}}" @@ -796,7 +804,7 @@ msgstr "Wrong remote hostname {{name}}" msgid "You can load it as it is or convert it for the {{name}} board." msgstr "You can load it as it is or convert it for the {{name}} board." -#: app/scripts/controllers/menu.js:251 +#: app/scripts/controllers/menu.js:257 msgid "Your changes will be lost if you don’t save them" msgstr "Your changes will be lost if you don’t save them" @@ -804,23 +812,23 @@ msgstr "Your changes will be lost if you don’t save them" msgid "back" msgstr "back" -#: app/scripts/services/drivers.js:109 app/scripts/services/utils.js:862 +#: app/scripts/services/drivers.js:108 app/scripts/services/utils.js:862 msgid "{{app}} is required." msgstr "{{app}} is required." -#: app/scripts/controllers/menu.js:430 +#: app/scripts/controllers/menu.js:438 msgid "{{board}} datasheet not defined" msgstr "{{board}} datasheet not defined" -#: app/scripts/controllers/menu.js:420 +#: app/scripts/controllers/menu.js:428 msgid "{{board}} pinout not defined" msgstr "{{board}} pinout not defined" -#: app/scripts/controllers/menu.js:449 +#: app/scripts/controllers/menu.js:457 msgid "{{board}} rules not defined" msgstr "{{board}} rules not defined" -#: app/scripts/controllers/menu.js:201 app/scripts/controllers/menu.js:224 +#: app/scripts/controllers/menu.js:204 app/scripts/controllers/menu.js:228 msgid "{{name}} exported" msgstr "{{name}} exported" diff --git a/app/resources/locale/es_ES/es_ES.po b/app/resources/locale/es_ES/es_ES.po index 41cf483e5..ceb836119 100644 --- a/app/resources/locale/es_ES/es_ES.po +++ b/app/resources/locale/es_ES/es_ES.po @@ -12,11 +12,11 @@ msgstr "" "X-Generator: Poedit 1.8.7.1\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app/scripts/services/drivers.js:211 app/scripts/services/drivers.js:87 +#: app/scripts/services/drivers.js:210 app/scripts/services/drivers.js:87 msgid "Unplug and reconnect the board" msgstr "Desconecta y conecta la placa" -#: app/scripts/services/drivers.js:195 +#: app/scripts/services/drivers.js:194 msgid "" "

    FTDI driver installation instructions

    1. Connect the FPGA " "board
    2. Replace the (Interface 0) driver of the board by " @@ -26,7 +26,7 @@ msgstr "" "placa FPGA
    3. Reemplaza el driver de la (Interface 0) de la " "placa por libusbK
    4. Desconecta y conecta la placa
    " -#: app/scripts/services/drivers.js:218 +#: app/scripts/services/drivers.js:217 msgid "" "

    FTDI driver uninstallation instructions

    1. Find the FPGA USB " "Device
    2. Select the board interface and uninstall the driver
    " @@ -35,15 +35,15 @@ msgstr "" "dispositivo USB FPGA
  • Selecciona la interfaz de la placa y desinstala " "el driver
  • " -#: app/views/menu.html:322 +#: app/views/menu.html:329 msgid "About Icestudio" msgstr "Sobre Icestudio" -#: app/views/menu.html:276 +#: app/views/menu.html:283 msgid "Add" msgstr "Añadir" -#: app/scripts/controllers/menu.js:562 +#: app/scripts/controllers/menu.js:574 msgid "Add a block to start" msgstr "Añade un bloque para comenzar" @@ -51,11 +51,11 @@ msgstr "Añade un bloque para comenzar" msgid "Add as block" msgstr "Añadir como bloque" -#: app/scripts/services/tools.js:1036 +#: app/scripts/services/tools.js:1059 msgid "All collections removed" msgstr "Colecciones eliminadas" -#: app/scripts/controllers/menu.js:586 +#: app/scripts/controllers/menu.js:598 msgid "All stored collections will be lost. Do you want to continue?" msgstr "Todas las colecciones almacenadas se perderán. ¿Deseas continuar?" @@ -63,7 +63,7 @@ msgstr "Todas las colecciones almacenadas se perderán. ¿Deseas continuar?" msgid "Author" msgstr "Autor" -#: app/views/menu.html:333 +#: app/views/menu.html:340 msgid "Basic" msgstr "Básico" @@ -86,7 +86,7 @@ msgstr "Bloque {{name}} importado" msgid "Blocks" msgstr "Bloques" -#: app/views/menu.html:183 +#: app/views/menu.html:190 msgid "Board" msgstr "Placa" @@ -94,27 +94,27 @@ msgstr "Placa" msgid "Board rules" msgstr "Reglas de la placa" -#: app/scripts/controllers/menu.js:371 +#: app/scripts/controllers/menu.js:379 msgid "Board rules disabled" msgstr "Reglas de la placa deshabilitadas" -#: app/scripts/controllers/menu.js:366 +#: app/scripts/controllers/menu.js:374 msgid "Board rules enabled" msgstr "Reglas de la placa habilitadas" -#: app/scripts/services/tools.js:333 +#: app/scripts/services/tools.js:340 msgid "Board {{name}} not detected" msgstr "Placa {{name}} no detectada" -#: app/scripts/controllers/menu.js:510 +#: app/scripts/controllers/menu.js:522 msgid "Board {{name}} selected" msgstr "Placa {{name}} seleccionada" -#: app/views/menu.html:222 +#: app/views/menu.html:229 msgid "Build" msgstr "Sintetizar" -#: app/scripts/controllers/menu.js:531 +#: app/scripts/controllers/menu.js:541 msgid "Build done" msgstr "Sintetizado realizado" @@ -126,37 +126,37 @@ msgstr "Cancelar" msgid "Catalan" msgstr "Catalán" -#: app/scripts/services/tools.js:727 +#: app/scripts/services/tools.js:743 msgid "Check Internet connection..." msgstr "Comprobando conexión a Internet..." -#: app/scripts/services/tools.js:737 +#: app/scripts/services/tools.js:753 msgid "Check Python..." msgstr "Comprobando Python..." -#: app/scripts/services/tools.js:819 +#: app/scripts/services/tools.js:847 msgid "Click here to setup the drivers" msgstr "Haz clic aquí para configurar los drivers" -#: app/scripts/services/drivers.js:110 app/scripts/services/drivers.js:203 -#: app/scripts/services/drivers.js:225 app/scripts/services/tools.js:132 -#: app/scripts/services/tools.js:246 +#: app/scripts/services/drivers.js:109 app/scripts/services/drivers.js:202 +#: app/scripts/services/drivers.js:224 app/scripts/services/tools.js:139 +#: app/scripts/services/tools.js:253 msgid "Click here to install it" msgstr "Haz clic aquí para instalarlo" -#: app/scripts/controllers/menu.js:326 +#: app/scripts/controllers/menu.js:334 msgid "Click here to view" msgstr "Haz clic aquí para ver" -#: app/scripts/controllers/menu.js:247 +#: app/scripts/controllers/menu.js:252 msgid "Close" msgstr "Cerrar" -#: app/views/menu.html:347 +#: app/views/menu.html:353 msgid "Code" msgstr "Código" -#: app/views/menu.html:194 +#: app/views/menu.html:201 msgid "Collection" msgstr "Colección" @@ -164,39 +164,43 @@ msgstr "Colección" msgid "Collection info" msgstr "Información de la colección" -#: app/scripts/controllers/menu.js:468 +#: app/scripts/controllers/menu.js:480 msgid "Collection {{collection}} info not defined" msgstr "Información de la colección {{collection}} no definida" -#: app/scripts/services/tools.js:920 +#: app/scripts/services/tools.js:943 msgid "Collection {{name}} added" msgstr "Colección {{name}} añadida" -#: app/scripts/services/tools.js:914 +#: app/scripts/services/tools.js:937 msgid "Collection {{name}} not replaced" msgstr "Colección {{name}} no reemplazada" -#: app/scripts/services/tools.js:1030 +#: app/scripts/services/tools.js:1053 msgid "Collection {{name}} removed" msgstr "Colección {{name}} eliminada" -#: app/scripts/services/tools.js:910 +#: app/scripts/services/tools.js:933 msgid "Collection {{name}} replaced" msgstr "Colección {{name}} reemplazada" -#: app/scripts/controllers/menu.js:476 +#: app/scripts/controllers/menu.js:488 msgid "Collection {{name}} selected" msgstr "Colección {{name}} seleccionada" -#: app/views/menu.html:272 +#: app/views/menu.html:279 msgid "Collections" msgstr "Colecciones" -#: app/views/menu.html:318 +#: app/views/menu.html:325 msgid "Community forum" msgstr "Foro de la comunidad" -#: app/views/menu.html:344 +#: app/scripts/services/tools.js:348 +msgid "Configuration not completed" +msgstr "Configuración no completada" + +#: app/views/menu.html:350 msgid "Constant" msgstr "Constante" @@ -216,11 +220,11 @@ msgstr "Cortar" msgid "Datasheet" msgstr "Datasheet" -#: app/views/menu.html:199 +#: app/views/menu.html:206 msgid "Default" msgstr "Por defecto" -#: app/scripts/services/tools.js:603 +#: app/scripts/services/tools.js:610 msgid "" "Default toolchain not found. Toolchain will be downloaded. This operation " "requires Internet connection. Do you want to continue?" @@ -232,39 +236,39 @@ msgstr "" msgid "Description" msgstr "Descripción" -#: app/views/menu.html:138 app/views/menu.html:265 +#: app/views/menu.html:138 app/views/menu.html:272 msgid "Disable" msgstr "Deshabilitar" -#: app/scripts/controllers/menu.js:250 +#: app/scripts/controllers/menu.js:256 msgid "Do you want to close the application?" msgstr "¿Deseas cerrar la aplicación?" -#: app/scripts/controllers/menu.js:576 +#: app/scripts/controllers/menu.js:588 msgid "Do you want to remove the {{name}} collection?" msgstr "¿Deseas eliminar la colección {{name}}?" -#: app/scripts/services/tools.js:906 +#: app/scripts/services/tools.js:929 msgid "Do you want to replace it?" msgstr "¿Deseas reemplazarla?" -#: app/views/menu.html:311 +#: app/views/menu.html:318 msgid "Documentation" msgstr "Documentación" -#: app/views/menu.html:256 +#: app/views/menu.html:263 msgid "Drivers" msgstr "Drivers" -#: app/scripts/services/drivers.js:134 app/scripts/services/drivers.js:72 +#: app/scripts/services/drivers.js:133 app/scripts/services/drivers.js:72 msgid "Drivers disabled" msgstr "Drivers deshabilitados" -#: app/scripts/services/drivers.js:126 app/scripts/services/drivers.js:63 +#: app/scripts/services/drivers.js:125 app/scripts/services/drivers.js:63 msgid "Drivers enabled" msgstr "Drivers habilitados" -#: app/scripts/services/tools.js:344 +#: app/scripts/services/tools.js:357 msgid "Duplicated FPGA I/O ports" msgstr "Puertos E/S de la FPGA duplicados" @@ -276,11 +280,11 @@ msgstr "Atributos del bloque duplicados" msgid "Edit" msgstr "Editar" -#: app/scripts/services/tools.js:895 +#: app/scripts/services/tools.js:918 msgid "Edit the collection name" msgstr "Edita el nombre de la colección" -#: app/views/menu.html:133 app/views/menu.html:260 +#: app/views/menu.html:133 app/views/menu.html:267 msgid "Enable" msgstr "Habilitar" @@ -312,11 +316,11 @@ msgstr "Introduce los puertos de salida" msgid "Enter the parameters" msgstr "Introduce los parámetros" -#: app/scripts/controllers/menu.js:358 +#: app/scripts/controllers/menu.js:366 msgid "Enter the remote hostname user@host (experimental)" msgstr "Introduce el nombre del host remoto usuario@host (experimental)" -#: app/scripts/services/tools.js:626 +#: app/scripts/services/tools.js:639 msgid "Error: default toolchain not found in '{{dir}}'" msgstr "Error: toolchain por defecto no encontrada en '{{dir}}'" @@ -324,7 +328,7 @@ msgstr "Error: toolchain por defecto no encontrada en '{{dir}}'" msgid "Error: {{error}}" msgstr "Error: {{error}}" -#: app/scripts/services/tools.js:418 +#: app/scripts/services/tools.js:431 msgid "Errors detected in the design" msgstr "Errores detectados en el diseño" @@ -332,7 +336,7 @@ msgstr "Errores detectados en el diseño" msgid "Examples" msgstr "Ejemplos" -#: app/scripts/services/tools.js:275 +#: app/scripts/services/tools.js:282 msgid "Execute remote {{label}} ..." msgstr "Ejecutar {{label}} remoto ..." @@ -340,19 +344,19 @@ msgstr "Ejecutar {{label}} remoto ..." msgid "Export" msgstr "Exportar" -#: app/scripts/services/tools.js:762 +#: app/scripts/services/tools.js:778 msgid "Extract default apio files..." msgstr "Extraer ficheros de apio..." -#: app/scripts/services/tools.js:772 +#: app/scripts/services/tools.js:788 msgid "Extract default apio packages..." msgstr "Extraer paquetes de apio..." -#: app/scripts/services/tools.js:750 +#: app/scripts/services/tools.js:766 msgid "Extract virtual env files..." msgstr "Extraer ficheros del virtual env" -#: app/scripts/services/tools.js:341 +#: app/scripts/services/tools.js:354 msgid "FPGA I/O ports not defined" msgstr "Puertos E/S de la FPGA no definidos" @@ -361,6 +365,10 @@ msgstr "Puertos E/S de la FPGA no definidos" msgid "FPGA pin" msgstr "FPGA pin" +#: app/views/menu.html:179 +msgid "FPGA resources" +msgstr "Recursos de la FPGA" + #: app/views/menu.html:29 msgid "File" msgstr "Archivo" @@ -372,7 +380,7 @@ msgstr "" "El archivo {{file}} ya existe en el directorio del proyecto. ¿Deseas " "reemplazarlo?" -#: app/scripts/services/tools.js:214 +#: app/scripts/services/tools.js:221 msgid "File {{file}} does not exist" msgstr "El archivo {{file}} no existe" @@ -392,7 +400,7 @@ msgstr "Francés" msgid "Galician" msgstr "Gallego" -#: app/views/menu.html:301 +#: app/views/menu.html:308 msgid "Help" msgstr "Ayuda" @@ -400,35 +408,35 @@ msgstr "Ayuda" msgid "Image" msgstr "Imagen" -#: app/scripts/controllers/menu.js:735 +#: app/scripts/controllers/menu.js:753 msgid "Image {{name}} saved" msgstr "Imagen {{name}} guardada" -#: app/views/menu.html:350 +#: app/views/menu.html:356 msgid "Information" msgstr "Información" -#: app/views/menu.html:338 +#: app/views/menu.html:344 msgid "Input" msgstr "Entrada" -#: app/views/menu.html:233 +#: app/views/menu.html:240 msgid "Install" msgstr "Instalar" -#: app/scripts/services/tools.js:767 +#: app/scripts/services/tools.js:783 msgid "Install default apio..." msgstr "Instalar apio..." -#: app/scripts/services/tools.js:816 +#: app/scripts/services/tools.js:832 msgid "Installation completed" msgstr "Instalación completada" -#: app/scripts/services/tools.js:657 app/scripts/services/tools.js:692 +#: app/scripts/services/tools.js:673 app/scripts/services/tools.js:708 msgid "Installing toolchain" msgstr "Instalando la toolchain" -#: app/scripts/services/drivers.js:118 app/scripts/services/tools.js:731 +#: app/scripts/services/drivers.js:117 app/scripts/services/tools.js:747 msgid "Internet connection required" msgstr "Es necesario conexión a Internet" @@ -446,7 +454,7 @@ msgstr "" msgid "Invalid block connection:
    Pull up already connected" msgstr "Conexión de bloque no válida:
    hay un Pull up conectado" -#: app/scripts/services/tools.js:926 +#: app/scripts/services/tools.js:949 msgid "Invalid collection {{name}}" msgstr "Colección {{name}} no válida" @@ -467,7 +475,7 @@ msgstr "Conexiones de entrada múltiple no válidas" msgid "Invalid project format" msgstr "Formato de proyecto no válido" -#: app/scripts/services/drivers.js:196 +#: app/scripts/services/drivers.js:195 msgid "It is recommended to use USB 2.0 ports" msgstr "Se recomienda utilizar puertos USB 2.0" @@ -483,7 +491,7 @@ msgstr "Cargar" msgid "Local parameter" msgstr "Parámetro local" -#: app/scripts/services/tools.js:755 +#: app/scripts/services/tools.js:771 msgid "Make virtual env..." msgstr "Crear virtual env..." @@ -503,11 +511,11 @@ msgstr "Nuevo" msgid "New project {{name}} created" msgstr "Nuevo proyecto {{name}} creado" -#: app/scripts/controllers/menu.js:594 +#: app/scripts/controllers/menu.js:606 msgid "No collections stored" msgstr "Ninguna colección almacenada" -#: app/scripts/controllers/main.js:15 app/scripts/controllers/menu.js:260 +#: app/scripts/controllers/main.js:15 app/scripts/controllers/menu.js:266 #: app/scripts/services/project.js:145 msgid "OK" msgstr "OK" @@ -528,7 +536,7 @@ msgstr "Abrir SVG" msgid "Original file {{file}} does not exist" msgstr "El archivo original {{file}} no existe" -#: app/views/menu.html:341 +#: app/views/menu.html:347 msgid "Output" msgstr "Salida" @@ -548,7 +556,7 @@ msgstr "Preferencias" msgid "Project information" msgstr "Información del proyecto" -#: app/scripts/controllers/menu.js:326 app/scripts/controllers/menu.js:340 +#: app/scripts/controllers/menu.js:334 app/scripts/controllers/menu.js:348 msgid "Project information updated" msgstr "Información del proyecto actualizada" @@ -560,7 +568,7 @@ msgstr "Proyecto {{name}} cargado" msgid "Project {{name}} saved" msgstr "Proyecto {{name}} guardado" -#: app/scripts/services/tools.js:744 +#: app/scripts/services/tools.js:760 msgid "Python 2.7 is required" msgstr "Es necesario Python 2.7" @@ -576,7 +584,7 @@ msgstr "Solo lectura" msgid "Redo" msgstr "Rehacer" -#: app/scripts/services/tools.js:453 +#: app/scripts/services/tools.js:466 msgid "Remote host {{name}} not connected" msgstr "Host remoto {{name}} no conectado" @@ -584,11 +592,11 @@ msgstr "Host remoto {{name}} no conectado" msgid "Remote hostname" msgstr "Nombre del host remoto" -#: app/views/menu.html:241 app/views/menu.html:280 +#: app/views/menu.html:248 app/views/menu.html:287 msgid "Remove" msgstr "Eliminar" -#: app/views/menu.html:292 +#: app/views/menu.html:299 msgid "Remove all" msgstr "Eliminar todo" @@ -596,7 +604,7 @@ msgstr "Eliminar todo" msgid "Reset SVG" msgstr "Resetear SVG" -#: app/views/menu.html:246 +#: app/views/menu.html:253 msgid "Reset default" msgstr "Reset default" @@ -612,7 +620,7 @@ msgstr "Guardar SVG" msgid "Save as" msgstr "Guardar como" -#: app/views/menu.html:180 +#: app/views/menu.html:187 msgid "Select" msgstr "Seleccionar" @@ -624,7 +632,7 @@ msgstr "Seleccionar todo" msgid "Show clock" msgstr "Mostrar reloj" -#: app/views/menu.html:314 +#: app/views/menu.html:321 msgid "Source code" msgstr "Código fuente" @@ -632,19 +640,19 @@ msgstr "Código fuente" msgid "Spanish" msgstr "Español" -#: app/scripts/controllers/menu.js:530 +#: app/scripts/controllers/menu.js:540 msgid "Start build" msgstr "Comenzar sintetizado" -#: app/scripts/controllers/menu.js:542 +#: app/scripts/controllers/menu.js:553 msgid "Start upload" msgstr "Comenzar carga" -#: app/scripts/controllers/menu.js:518 +#: app/scripts/controllers/menu.js:530 msgid "Start verification" msgstr "Comenzar verificación" -#: app/scripts/services/tools.js:264 +#: app/scripts/services/tools.js:271 msgid "Synchronize remote files ..." msgstr "Sincronizando ficheros remotos ..." @@ -652,11 +660,11 @@ msgstr "Sincronizando ficheros remotos ..." msgid "Testbench" msgstr "Testbench" -#: app/scripts/services/tools.js:905 +#: app/scripts/services/tools.js:928 msgid "The collection {{name}} already exists." msgstr "La colección {{name}} ya existe." -#: app/scripts/controllers/menu.js:497 +#: app/scripts/controllers/menu.js:509 msgid "" "The current FPGA I/O configuration will be lost. Do you want to change to " "{{name}} board?" @@ -664,16 +672,16 @@ msgstr "" "La configuración actual de E/S de la FPGA se perderá. ¿Deseas cambiar a la " "placa {{name}}?" -#: app/scripts/services/tools.js:631 +#: app/scripts/services/tools.js:647 msgid "The toolchain will be removed. Do you want to continue?" msgstr "La toolchain será eliminada. ¿Deseas continuar?" -#: app/scripts/services/tools.js:619 +#: app/scripts/services/tools.js:632 msgid "The toolchain will be restored to default. Do you want to continue?" msgstr "" "La toolchain será restaurada a los valores por defecto: ¿Deseas continuar?" -#: app/scripts/services/tools.js:611 +#: app/scripts/services/tools.js:621 msgid "" "The toolchain will be updated. This operation requires Internet connection. " "Do you want to continue?" @@ -693,28 +701,28 @@ msgstr "" msgid "This project is designed for the {{name}} board." msgstr "Este proyecto está diseñado para la placa {{name}}." -#: app/views/menu.html:229 +#: app/views/menu.html:236 msgid "Toolchain" msgstr "Toolchain" -#: app/scripts/services/tools.js:818 +#: app/scripts/services/tools.js:834 msgid "Toolchain installed" msgstr "Toolchain instalada" -#: app/scripts/services/drivers.js:203 app/scripts/services/drivers.js:225 -#: app/scripts/services/tools.js:132 app/scripts/services/tools.js:834 +#: app/scripts/services/drivers.js:202 app/scripts/services/drivers.js:224 +#: app/scripts/services/tools.js:139 app/scripts/services/tools.js:839 msgid "Toolchain not installed" msgstr "La toolchain no está instalada" -#: app/scripts/services/tools.js:636 +#: app/scripts/services/tools.js:652 msgid "Toolchain removed" msgstr "Toolchain eliminada" -#: app/scripts/services/tools.js:246 +#: app/scripts/services/tools.js:253 msgid "Toolchain version does not match" msgstr "La versión de la toolchain no coincide" -#: app/views/menu.html:216 +#: app/views/menu.html:223 msgid "Tools" msgstr "Herramientas" @@ -722,7 +730,7 @@ msgstr "Herramientas" msgid "Undo" msgstr "Deshacer" -#: app/scripts/services/tools.js:336 +#: app/scripts/services/tools.js:343 msgid "Unknown board" msgstr "Placa desconocida" @@ -730,7 +738,7 @@ msgstr "Placa desconocida" msgid "Untitled" msgstr "Sin título" -#: app/views/menu.html:236 +#: app/views/menu.html:243 msgid "Update" msgstr "Actualizar" @@ -739,23 +747,23 @@ msgstr "Actualizar" msgid "Update the block name" msgstr "Actualiza el nombre del bloque" -#: app/views/menu.html:225 +#: app/views/menu.html:232 msgid "Upload" msgstr "Cargar" -#: app/scripts/controllers/menu.js:543 +#: app/scripts/controllers/menu.js:554 msgid "Upload done" msgstr "Carga realizada" -#: app/scripts/controllers/menu.js:519 +#: app/scripts/controllers/menu.js:531 msgid "Verification done" msgstr "Verificación realizada" -#: app/views/menu.html:219 +#: app/views/menu.html:226 msgid "Verify" msgstr "Verificar" -#: app/scripts/services/utils.js:531 app/views/menu.html:307 +#: app/scripts/services/utils.js:531 app/views/menu.html:314 msgid "Version" msgstr "Versión" @@ -763,11 +771,11 @@ msgstr "Versión" msgid "View" msgstr "Ver" -#: app/views/menu.html:304 +#: app/views/menu.html:311 msgid "View license" msgstr "Ver licencia" -#: app/scripts/services/tools.js:421 +#: app/scripts/services/tools.js:434 msgid "Warnings detected in the design" msgstr "Advertencias detectadas en el diseño" @@ -793,7 +801,7 @@ msgstr "Nombre del puerto {{name}} incorrecto" msgid "Wrong project format: {{name}}" msgstr "Formato de proyecto incorrecto: {{name}}" -#: app/scripts/services/tools.js:450 +#: app/scripts/services/tools.js:463 msgid "Wrong remote hostname {{name}}" msgstr "Nombre del host remoto incorrecto {{name}}" @@ -801,7 +809,7 @@ msgstr "Nombre del host remoto incorrecto {{name}}" msgid "You can load it as it is or convert it for the {{name}} board." msgstr "Puedes cargarlo como está o convertirlo para la placa {{name}}." -#: app/scripts/controllers/menu.js:251 +#: app/scripts/controllers/menu.js:257 msgid "Your changes will be lost if you don’t save them" msgstr "Tus cambios se perderán si no los guardas" @@ -809,23 +817,23 @@ msgstr "Tus cambios se perderán si no los guardas" msgid "back" msgstr "volver" -#: app/scripts/services/drivers.js:109 app/scripts/services/utils.js:862 +#: app/scripts/services/drivers.js:108 app/scripts/services/utils.js:862 msgid "{{app}} is required." msgstr "Es necesario {{app}}." -#: app/scripts/controllers/menu.js:430 +#: app/scripts/controllers/menu.js:438 msgid "{{board}} datasheet not defined" msgstr "{{board}} datasheet no definido" -#: app/scripts/controllers/menu.js:420 +#: app/scripts/controllers/menu.js:428 msgid "{{board}} pinout not defined" msgstr "{{board}} pinout no definido" -#: app/scripts/controllers/menu.js:449 +#: app/scripts/controllers/menu.js:457 msgid "{{board}} rules not defined" msgstr "Reglas de {{board}} no definidas" -#: app/scripts/controllers/menu.js:201 app/scripts/controllers/menu.js:224 +#: app/scripts/controllers/menu.js:204 app/scripts/controllers/menu.js:228 msgid "{{name}} exported" msgstr "{{name}} exportado" diff --git a/app/resources/locale/eu_ES/eu_ES.po b/app/resources/locale/eu_ES/eu_ES.po index 4ae19a1f1..d8aec9f55 100644 --- a/app/resources/locale/eu_ES/eu_ES.po +++ b/app/resources/locale/eu_ES/eu_ES.po @@ -9,14 +9,14 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.1\n" +"X-Generator: Poedit 1.8.7.1\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app/scripts/services/drivers.js:211 app/scripts/services/drivers.js:87 +#: app/scripts/services/drivers.js:210 app/scripts/services/drivers.js:87 msgid "Unplug and reconnect the board" msgstr "Txartela deskonektatu eta konekta ezazu berriro" -#: app/scripts/services/drivers.js:195 +#: app/scripts/services/drivers.js:194 msgid "" "

    FTDI driver installation instructions

    1. Connect the FPGA " "board
    2. Replace the (Interface 0) driver of the board by " @@ -27,7 +27,7 @@ msgstr "" "jar ezazu honakoa: libusbK
    3. Txartela deskonektatu eta konekta " "ezazu berriro
    " -#: app/scripts/services/drivers.js:218 +#: app/scripts/services/drivers.js:217 msgid "" "

    FTDI driver uninstallation instructions

    1. Find the FPGA USB " "Device
    2. Select the board interface and uninstall the driver
    " @@ -36,15 +36,15 @@ msgstr "" "gailua bila ezazu
  • Txartelaren interfazea hauta ezazu eta driver-a " "desinstalatu
  • " -#: app/views/menu.html:322 +#: app/views/menu.html:329 msgid "About Icestudio" msgstr "Icestudio-ri buruz..." -#: app/views/menu.html:276 +#: app/views/menu.html:283 msgid "Add" msgstr "Gehitu" -#: app/scripts/controllers/menu.js:562 +#: app/scripts/controllers/menu.js:574 msgid "Add a block to start" msgstr "Gehi ezazu bloke bat hasteko" @@ -52,11 +52,11 @@ msgstr "Gehi ezazu bloke bat hasteko" msgid "Add as block" msgstr "Blokea sortu" -#: app/scripts/services/tools.js:1036 +#: app/scripts/services/tools.js:1059 msgid "All collections removed" msgstr "Bildumak ezabatu dira" -#: app/scripts/controllers/menu.js:586 +#: app/scripts/controllers/menu.js:598 msgid "All stored collections will be lost. Do you want to continue?" msgstr "Gordetako bildumak galduko dira. Jarraitu nahi al duzu?" @@ -64,7 +64,7 @@ msgstr "Gordetako bildumak galduko dira. Jarraitu nahi al duzu?" msgid "Author" msgstr "Egilea" -#: app/views/menu.html:333 +#: app/views/menu.html:340 msgid "Basic" msgstr "Oinarrizkoa" @@ -87,7 +87,7 @@ msgstr "{{name}} blokea inportatu duzu" msgid "Blocks" msgstr "Blokeak" -#: app/views/menu.html:183 +#: app/views/menu.html:190 msgid "Board" msgstr "Txartela" @@ -95,27 +95,27 @@ msgstr "Txartela" msgid "Board rules" msgstr "Txartelaren arauak" -#: app/scripts/controllers/menu.js:371 +#: app/scripts/controllers/menu.js:379 msgid "Board rules disabled" msgstr "Txartelaren arauak desgaituta" -#: app/scripts/controllers/menu.js:366 +#: app/scripts/controllers/menu.js:374 msgid "Board rules enabled" msgstr "Txartelaren arauak gaituta" -#: app/scripts/services/tools.js:333 +#: app/scripts/services/tools.js:340 msgid "Board {{name}} not detected" msgstr "{{name}} txartela ez da aurkitu" -#: app/scripts/controllers/menu.js:510 +#: app/scripts/controllers/menu.js:522 msgid "Board {{name}} selected" msgstr "{{name}} txartela hautatu duzu" -#: app/views/menu.html:222 +#: app/views/menu.html:229 msgid "Build" msgstr "Sintetizatu" -#: app/scripts/controllers/menu.js:531 +#: app/scripts/controllers/menu.js:541 msgid "Build done" msgstr "Sintetizatua egin da" @@ -127,37 +127,37 @@ msgstr "Utzi" msgid "Catalan" msgstr "Katalan" -#: app/scripts/services/tools.js:727 +#: app/scripts/services/tools.js:743 msgid "Check Internet connection..." msgstr "Interneteko sarbidea egiaztatu..." -#: app/scripts/services/tools.js:737 +#: app/scripts/services/tools.js:753 msgid "Check Python..." msgstr "Python egiaztatu..." -#: app/scripts/services/tools.js:819 +#: app/scripts/services/tools.js:847 msgid "Click here to setup the drivers" msgstr "Klik egizu hemen driverrak eguneratzeko" -#: app/scripts/services/drivers.js:110 app/scripts/services/drivers.js:203 -#: app/scripts/services/drivers.js:225 app/scripts/services/tools.js:132 -#: app/scripts/services/tools.js:246 +#: app/scripts/services/drivers.js:109 app/scripts/services/drivers.js:202 +#: app/scripts/services/drivers.js:224 app/scripts/services/tools.js:139 +#: app/scripts/services/tools.js:253 msgid "Click here to install it" msgstr "Instalatzeko hemen klik egin" -#: app/scripts/controllers/menu.js:326 +#: app/scripts/controllers/menu.js:334 msgid "Click here to view" msgstr "Klik egizu ikusteko" -#: app/scripts/controllers/menu.js:247 +#: app/scripts/controllers/menu.js:252 msgid "Close" msgstr "Itxi" -#: app/views/menu.html:347 +#: app/views/menu.html:353 msgid "Code" msgstr "Kodea" -#: app/views/menu.html:194 +#: app/views/menu.html:201 msgid "Collection" msgstr "Bilduma" @@ -165,39 +165,43 @@ msgstr "Bilduma" msgid "Collection info" msgstr "Bildumaren informazioa" -#: app/scripts/controllers/menu.js:468 +#: app/scripts/controllers/menu.js:480 msgid "Collection {{collection}} info not defined" msgstr "{{collection}} bildumaren informazioa zehaztuta gabe dago" -#: app/scripts/services/tools.js:920 +#: app/scripts/services/tools.js:943 msgid "Collection {{name}} added" msgstr "{{name}} bilduma gehitu da" -#: app/scripts/services/tools.js:914 +#: app/scripts/services/tools.js:937 msgid "Collection {{name}} not replaced" msgstr "{{name}} bilduma ez da ordeztu" -#: app/scripts/services/tools.js:1030 +#: app/scripts/services/tools.js:1053 msgid "Collection {{name}} removed" msgstr "{{name}} bilduma ezabatu da" -#: app/scripts/services/tools.js:910 +#: app/scripts/services/tools.js:933 msgid "Collection {{name}} replaced" msgstr "{{name}} bilduma ordeztu da" -#: app/scripts/controllers/menu.js:476 +#: app/scripts/controllers/menu.js:488 msgid "Collection {{name}} selected" msgstr "{{name}} bilduma hautatu da" -#: app/views/menu.html:272 +#: app/views/menu.html:279 msgid "Collections" msgstr "Bildumak" -#: app/views/menu.html:318 +#: app/views/menu.html:325 msgid "Community forum" msgstr "Komunitatearen foroa" -#: app/views/menu.html:344 +#: app/scripts/services/tools.js:348 +msgid "Configuration not completed" +msgstr "" + +#: app/views/menu.html:350 msgid "Constant" msgstr "Konstantea" @@ -217,11 +221,11 @@ msgstr "Ebaki" msgid "Datasheet" msgstr "Datu-fitxa" -#: app/views/menu.html:199 +#: app/views/menu.html:206 msgid "Default" msgstr "Lehenetsia" -#: app/scripts/services/tools.js:603 +#: app/scripts/services/tools.js:610 msgid "" "Default toolchain not found. Toolchain will be downloaded. This operation " "requires Internet connection. Do you want to continue?" @@ -233,39 +237,39 @@ msgstr "" msgid "Description" msgstr "Azalpena" -#: app/views/menu.html:138 app/views/menu.html:265 +#: app/views/menu.html:138 app/views/menu.html:272 msgid "Disable" msgstr "Desgaitu" -#: app/scripts/controllers/menu.js:250 +#: app/scripts/controllers/menu.js:256 msgid "Do you want to close the application?" msgstr "Aplikazioa itxi nahi al duzu?" -#: app/scripts/controllers/menu.js:576 +#: app/scripts/controllers/menu.js:588 msgid "Do you want to remove the {{name}} collection?" msgstr "{{name}} bilduma ezabatu nahi al duzu?" -#: app/scripts/services/tools.js:906 +#: app/scripts/services/tools.js:929 msgid "Do you want to replace it?" msgstr "Ordeztu nahi al duzu?" -#: app/views/menu.html:311 +#: app/views/menu.html:318 msgid "Documentation" msgstr "Dokumentazioa" -#: app/views/menu.html:256 +#: app/views/menu.html:263 msgid "Drivers" msgstr "Driverrak" -#: app/scripts/services/drivers.js:134 app/scripts/services/drivers.js:72 +#: app/scripts/services/drivers.js:133 app/scripts/services/drivers.js:72 msgid "Drivers disabled" msgstr "Driverrak desgaitu dira" -#: app/scripts/services/drivers.js:126 app/scripts/services/drivers.js:63 +#: app/scripts/services/drivers.js:125 app/scripts/services/drivers.js:63 msgid "Drivers enabled" msgstr "Driverrak gaitu dira" -#: app/scripts/services/tools.js:344 +#: app/scripts/services/tools.js:357 msgid "Duplicated FPGA I/O ports" msgstr "FPGAren E/S portuak bikoiztu dira" @@ -277,11 +281,11 @@ msgstr "Blokearen ezaugarriak bikoiztu dira" msgid "Edit" msgstr "Aldatu" -#: app/scripts/services/tools.js:895 +#: app/scripts/services/tools.js:918 msgid "Edit the collection name" msgstr "Bildumaren izena aldatu" -#: app/views/menu.html:133 app/views/menu.html:260 +#: app/views/menu.html:133 app/views/menu.html:267 msgid "Enable" msgstr "Onartu" @@ -313,12 +317,12 @@ msgstr "Irteerako portuak sar itzazu" msgid "Enter the parameters" msgstr "Parametroak sar itzazu" -#: app/scripts/controllers/menu.js:358 +#: app/scripts/controllers/menu.js:366 msgid "Enter the remote hostname user@host (experimental)" msgstr "" "Urrutiko ostalariaren izena sar ezazu erabiltzailea@host (esperimentala)" -#: app/scripts/services/tools.js:626 +#: app/scripts/services/tools.js:639 msgid "Error: default toolchain not found in '{{dir}}'" msgstr "Errorea: Toolchain lehenetsia ez da '{{dir}}'-en aurkitu" @@ -326,7 +330,7 @@ msgstr "Errorea: Toolchain lehenetsia ez da '{{dir}}'-en aurkitu" msgid "Error: {{error}}" msgstr "Errorea: {{error}}" -#: app/scripts/services/tools.js:418 +#: app/scripts/services/tools.js:431 msgid "Errors detected in the design" msgstr "Akatsak daude diseinuan" @@ -334,7 +338,7 @@ msgstr "Akatsak daude diseinuan" msgid "Examples" msgstr "Adibideak" -#: app/scripts/services/tools.js:275 +#: app/scripts/services/tools.js:282 msgid "Execute remote {{label}} ..." msgstr "Exekutatu urrutiko {{label}} ..." @@ -342,19 +346,19 @@ msgstr "Exekutatu urrutiko {{label}} ..." msgid "Export" msgstr "Esportatu" -#: app/scripts/services/tools.js:762 +#: app/scripts/services/tools.js:778 msgid "Extract default apio files..." msgstr "Apio fitxategiak atera..." -#: app/scripts/services/tools.js:772 +#: app/scripts/services/tools.js:788 msgid "Extract default apio packages..." msgstr "Apio pakete lehenetsiak atera..." -#: app/scripts/services/tools.js:750 +#: app/scripts/services/tools.js:766 msgid "Extract virtual env files..." msgstr "Env birtualaren fitxategiak atera..." -#: app/scripts/services/tools.js:341 +#: app/scripts/services/tools.js:354 msgid "FPGA I/O ports not defined" msgstr "FPGAren E/S portuak definitu gabe daude" @@ -363,6 +367,10 @@ msgstr "FPGAren E/S portuak definitu gabe daude" msgid "FPGA pin" msgstr "FPGA pina" +#: app/views/menu.html:179 +msgid "FPGA resources" +msgstr "" + #: app/views/menu.html:29 msgid "File" msgstr "Fitxategia" @@ -374,7 +382,7 @@ msgstr "" "Proiektuaren direktorioan {{file}} fitxategia dagoeneko bada. Fitxategia " "ordeztu nahi al duzu?" -#: app/scripts/services/tools.js:214 +#: app/scripts/services/tools.js:221 msgid "File {{file}} does not exist" msgstr "Ez dago {{file}} izeneko fitxategirik" @@ -394,7 +402,7 @@ msgstr "Frantsesa" msgid "Galician" msgstr "Galegoa" -#: app/views/menu.html:301 +#: app/views/menu.html:308 msgid "Help" msgstr "Laguntza" @@ -402,35 +410,35 @@ msgstr "Laguntza" msgid "Image" msgstr "Irudia" -#: app/scripts/controllers/menu.js:735 +#: app/scripts/controllers/menu.js:753 msgid "Image {{name}} saved" msgstr "{{name}} izeneko irudia gorde da" -#: app/views/menu.html:350 +#: app/views/menu.html:356 msgid "Information" msgstr "Informazioa" -#: app/views/menu.html:338 +#: app/views/menu.html:344 msgid "Input" msgstr "Sarrera" -#: app/views/menu.html:233 +#: app/views/menu.html:240 msgid "Install" msgstr "Instalatu" -#: app/scripts/services/tools.js:767 +#: app/scripts/services/tools.js:783 msgid "Install default apio..." msgstr "Apio lehenetsia instalatu..." -#: app/scripts/services/tools.js:816 +#: app/scripts/services/tools.js:832 msgid "Installation completed" msgstr "Instalazioa amaitu da" -#: app/scripts/services/tools.js:657 app/scripts/services/tools.js:692 +#: app/scripts/services/tools.js:673 app/scripts/services/tools.js:708 msgid "Installing toolchain" msgstr "Toolchain-a instalatzen ari da" -#: app/scripts/services/drivers.js:118 app/scripts/services/tools.js:731 +#: app/scripts/services/drivers.js:117 app/scripts/services/tools.js:747 msgid "Internet connection required" msgstr "Interneteko sarbidea behar da" @@ -449,7 +457,7 @@ msgid "Invalid block connection:
    Pull up already connected" msgstr "" "Bloke konexio baliogabeak:
    Pull up -a dagoeneko konektatua dago" -#: app/scripts/services/tools.js:926 +#: app/scripts/services/tools.js:949 msgid "Invalid collection {{name}}" msgstr "{{name}} bilduma baliogabea" @@ -470,7 +478,7 @@ msgstr "Sarrerako konexio anitzak baliogabeak" msgid "Invalid project format" msgstr "Proiektuaren formatua baliogabea da" -#: app/scripts/services/drivers.js:196 +#: app/scripts/services/drivers.js:195 msgid "It is recommended to use USB 2.0 ports" msgstr "USB 2.0 atakak erabiltzea gomendatzen da" @@ -486,7 +494,7 @@ msgstr "Kargatu" msgid "Local parameter" msgstr "Parametro lokala" -#: app/scripts/services/tools.js:755 +#: app/scripts/services/tools.js:771 msgid "Make virtual env..." msgstr "Env birtuala sortu..." @@ -506,11 +514,11 @@ msgstr "Berria" msgid "New project {{name}} created" msgstr "{{name}} proiektua sortu da" -#: app/scripts/controllers/menu.js:594 +#: app/scripts/controllers/menu.js:606 msgid "No collections stored" msgstr "Ez dago gordeta bildumarik" -#: app/scripts/controllers/main.js:15 app/scripts/controllers/menu.js:260 +#: app/scripts/controllers/main.js:15 app/scripts/controllers/menu.js:266 #: app/scripts/services/project.js:145 msgid "OK" msgstr "Ok" @@ -531,7 +539,7 @@ msgstr "SVGa ireki" msgid "Original file {{file}} does not exist" msgstr "Jatorrizko {{file}} fitxategia ez dago" -#: app/views/menu.html:341 +#: app/views/menu.html:347 msgid "Output" msgstr "Irteera" @@ -551,7 +559,7 @@ msgstr "Lehentasunak" msgid "Project information" msgstr "Proiektuaren informazioa" -#: app/scripts/controllers/menu.js:326 app/scripts/controllers/menu.js:340 +#: app/scripts/controllers/menu.js:334 app/scripts/controllers/menu.js:348 msgid "Project information updated" msgstr "Proiektuaren informazioa eguneratu da" @@ -563,7 +571,7 @@ msgstr "{{name}} proiektua kargatu da" msgid "Project {{name}} saved" msgstr "{{name}} proiektua gorde da" -#: app/scripts/services/tools.js:744 +#: app/scripts/services/tools.js:760 msgid "Python 2.7 is required" msgstr "Python 2.7 behar da" @@ -579,7 +587,7 @@ msgstr "Irakurtzeko soilik" msgid "Redo" msgstr "Berregin" -#: app/scripts/services/tools.js:453 +#: app/scripts/services/tools.js:466 msgid "Remote host {{name}} not connected" msgstr "{{name}} urrutiko ostalaria ez dago konektatua" @@ -587,11 +595,11 @@ msgstr "{{name}} urrutiko ostalaria ez dago konektatua" msgid "Remote hostname" msgstr "Urrutiko ostalariaren izena" -#: app/views/menu.html:241 app/views/menu.html:280 +#: app/views/menu.html:248 app/views/menu.html:287 msgid "Remove" msgstr "Ezabatu" -#: app/views/menu.html:292 +#: app/views/menu.html:299 msgid "Remove all" msgstr "Dena ezabatu" @@ -599,7 +607,7 @@ msgstr "Dena ezabatu" msgid "Reset SVG" msgstr "SVGa berrezarri" -#: app/views/menu.html:246 +#: app/views/menu.html:253 msgid "Reset default" msgstr "Jatorrizkoa berrezarri" @@ -615,7 +623,7 @@ msgstr "SVGa gorde" msgid "Save as" msgstr "Gorde honela" -#: app/views/menu.html:180 +#: app/views/menu.html:187 msgid "Select" msgstr "Hautatu" @@ -627,7 +635,7 @@ msgstr "Dena hautatu" msgid "Show clock" msgstr "Ordularia erakutsi" -#: app/views/menu.html:314 +#: app/views/menu.html:321 msgid "Source code" msgstr "Iturburu kodea" @@ -635,19 +643,19 @@ msgstr "Iturburu kodea" msgid "Spanish" msgstr "Gaztelera" -#: app/scripts/controllers/menu.js:530 +#: app/scripts/controllers/menu.js:540 msgid "Start build" msgstr "Sintetizatua hasi" -#: app/scripts/controllers/menu.js:542 +#: app/scripts/controllers/menu.js:553 msgid "Start upload" msgstr "Karga hasi" -#: app/scripts/controllers/menu.js:518 +#: app/scripts/controllers/menu.js:530 msgid "Start verification" msgstr "Egiaztapena hasi" -#: app/scripts/services/tools.js:264 +#: app/scripts/services/tools.js:271 msgid "Synchronize remote files ..." msgstr "Urrutiko fitxategiak sinkronizatu..." @@ -655,27 +663,27 @@ msgstr "Urrutiko fitxategiak sinkronizatu..." msgid "Testbench" msgstr "Testbench " -#: app/scripts/services/tools.js:905 +#: app/scripts/services/tools.js:928 msgid "The collection {{name}} already exists." msgstr "{{name}} bilduma badago" -#: app/scripts/controllers/menu.js:497 +#: app/scripts/controllers/menu.js:509 msgid "" "The current FPGA I/O configuration will be lost. Do you want to change to " "{{name}} board?" msgstr "" "FPGAaren E/S konfigurazioa galduko da. {{name}} txartela aldatu nahi al duzu?" -#: app/scripts/services/tools.js:631 +#: app/scripts/services/tools.js:647 msgid "The toolchain will be removed. Do you want to continue?" msgstr "Toolchain-a ezabatuko da. Jarraitu nahi al duzu?" -#: app/scripts/services/tools.js:619 +#: app/scripts/services/tools.js:632 msgid "The toolchain will be restored to default. Do you want to continue?" msgstr "" "Toolchain-aren jatorrizko balioak berrezarriko dira. Jarraitu nahi al duzu?" -#: app/scripts/services/tools.js:611 +#: app/scripts/services/tools.js:621 msgid "" "The toolchain will be updated. This operation requires Internet connection. " "Do you want to continue?" @@ -695,28 +703,28 @@ msgstr "" msgid "This project is designed for the {{name}} board." msgstr "Proiektua {{name}} txartelarentzat diseinatu da." -#: app/views/menu.html:229 +#: app/views/menu.html:236 msgid "Toolchain" msgstr "Toolchain" -#: app/scripts/services/tools.js:818 +#: app/scripts/services/tools.js:834 msgid "Toolchain installed" msgstr "Toolchain-a instalatu da" -#: app/scripts/services/drivers.js:203 app/scripts/services/drivers.js:225 -#: app/scripts/services/tools.js:132 app/scripts/services/tools.js:834 +#: app/scripts/services/drivers.js:202 app/scripts/services/drivers.js:224 +#: app/scripts/services/tools.js:139 app/scripts/services/tools.js:839 msgid "Toolchain not installed" msgstr "Toolchain-a ez da instalatu" -#: app/scripts/services/tools.js:636 +#: app/scripts/services/tools.js:652 msgid "Toolchain removed" msgstr "Toolchain-a ezabatu da" -#: app/scripts/services/tools.js:246 +#: app/scripts/services/tools.js:253 msgid "Toolchain version does not match" msgstr "Toolchainaren bertsioa ez dator bat" -#: app/views/menu.html:216 +#: app/views/menu.html:223 msgid "Tools" msgstr "Tresnak" @@ -724,7 +732,7 @@ msgstr "Tresnak" msgid "Undo" msgstr "Desegin" -#: app/scripts/services/tools.js:336 +#: app/scripts/services/tools.js:343 msgid "Unknown board" msgstr "Txartel ezezaguna" @@ -732,7 +740,7 @@ msgstr "Txartel ezezaguna" msgid "Untitled" msgstr "Izenik gabe" -#: app/views/menu.html:236 +#: app/views/menu.html:243 msgid "Update" msgstr "Eguneratu" @@ -741,23 +749,23 @@ msgstr "Eguneratu" msgid "Update the block name" msgstr "Blokearen izena egunera ezazu" -#: app/views/menu.html:225 +#: app/views/menu.html:232 msgid "Upload" msgstr "Kargatu" -#: app/scripts/controllers/menu.js:543 +#: app/scripts/controllers/menu.js:554 msgid "Upload done" msgstr "Karga egin da" -#: app/scripts/controllers/menu.js:519 +#: app/scripts/controllers/menu.js:531 msgid "Verification done" msgstr "Egiaztapena egin da" -#: app/views/menu.html:219 +#: app/views/menu.html:226 msgid "Verify" msgstr "Egiaztatu" -#: app/scripts/services/utils.js:531 app/views/menu.html:307 +#: app/scripts/services/utils.js:531 app/views/menu.html:314 msgid "Version" msgstr "Bertsioa" @@ -765,11 +773,11 @@ msgstr "Bertsioa" msgid "View" msgstr "Ikusi" -#: app/views/menu.html:304 +#: app/views/menu.html:311 msgid "View license" msgstr "Lizentzia ikusi" -#: app/scripts/services/tools.js:421 +#: app/scripts/services/tools.js:434 msgid "Warnings detected in the design" msgstr "Diseinuan abisuak detektatu dira" @@ -795,7 +803,7 @@ msgstr "Portuaren izena okerra da: {{name}}" msgid "Wrong project format: {{name}}" msgstr "Proiektuaren formatua okerra da: {{name}}" -#: app/scripts/services/tools.js:450 +#: app/scripts/services/tools.js:463 msgid "Wrong remote hostname {{name}}" msgstr "Urrutiko ostalariaren {{name}} izena okerra da" @@ -803,7 +811,7 @@ msgstr "Urrutiko ostalariaren {{name}} izena okerra da" msgid "You can load it as it is or convert it for the {{name}} board." msgstr "Dagoen moduan karga dezakezu edo {{name}} plakarako bihurtu" -#: app/scripts/controllers/menu.js:251 +#: app/scripts/controllers/menu.js:257 msgid "Your changes will be lost if you don’t save them" msgstr "Aldaketak galduko dituzu gordetzen ez badituzu" @@ -811,23 +819,23 @@ msgstr "Aldaketak galduko dituzu gordetzen ez badituzu" msgid "back" msgstr "atzera" -#: app/scripts/services/drivers.js:109 app/scripts/services/utils.js:862 +#: app/scripts/services/drivers.js:108 app/scripts/services/utils.js:862 msgid "{{app}} is required." msgstr "{{app}} behar da" -#: app/scripts/controllers/menu.js:430 +#: app/scripts/controllers/menu.js:438 msgid "{{board}} datasheet not defined" msgstr "{{board}} ez zehaztua" -#: app/scripts/controllers/menu.js:420 +#: app/scripts/controllers/menu.js:428 msgid "{{board}} pinout not defined" msgstr "{{board}} pinout ez zehaztua" -#: app/scripts/controllers/menu.js:449 +#: app/scripts/controllers/menu.js:457 msgid "{{board}} rules not defined" msgstr "{{board}} txartelaren arauak ez daude definituta" -#: app/scripts/controllers/menu.js:201 app/scripts/controllers/menu.js:224 +#: app/scripts/controllers/menu.js:204 app/scripts/controllers/menu.js:228 msgid "{{name}} exported" msgstr "{{name}} esportatu da" diff --git a/app/resources/locale/fr_FR/fr_FR.po b/app/resources/locale/fr_FR/fr_FR.po index b9c854e51..0a0dfc97e 100644 --- a/app/resources/locale/fr_FR/fr_FR.po +++ b/app/resources/locale/fr_FR/fr_FR.po @@ -12,11 +12,11 @@ msgstr "" "X-Generator: Poedit 1.8.7.1\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: app/scripts/services/drivers.js:211 app/scripts/services/drivers.js:87 +#: app/scripts/services/drivers.js:210 app/scripts/services/drivers.js:87 msgid "Unplug and reconnect the board" msgstr "Débrancher et reconnecter la carte" -#: app/scripts/services/drivers.js:195 +#: app/scripts/services/drivers.js:194 msgid "" "

    FTDI driver installation instructions

    1. Connect the FPGA " "board
    2. Replace the (Interface 0) driver of the board by " @@ -26,7 +26,7 @@ msgstr "" "carte FPGA
    3. Remplacer le pilote (Interface 0) de la carte par " "libusbK
    4. Débrancher puis rebrancher la carte
    " -#: app/scripts/services/drivers.js:218 +#: app/scripts/services/drivers.js:217 msgid "" "

    FTDI driver uninstallation instructions

    1. Find the FPGA USB " "Device
    2. Select the board interface and uninstall the driver
    " @@ -35,15 +35,15 @@ msgstr "" "périphérique USB FPGA
  • Sélectionner la carte interface et " "désinstaller le pilote
  • " -#: app/views/menu.html:322 +#: app/views/menu.html:329 msgid "About Icestudio" msgstr "À propos d'Icestudio" -#: app/views/menu.html:276 +#: app/views/menu.html:283 msgid "Add" msgstr "Ajouter" -#: app/scripts/controllers/menu.js:562 +#: app/scripts/controllers/menu.js:574 msgid "Add a block to start" msgstr "Ajouter un bloc pour commencer" @@ -51,11 +51,11 @@ msgstr "Ajouter un bloc pour commencer" msgid "Add as block" msgstr "Ajouter un bloc" -#: app/scripts/services/tools.js:1036 +#: app/scripts/services/tools.js:1059 msgid "All collections removed" msgstr "Toutes les collections ont été supprimées" -#: app/scripts/controllers/menu.js:586 +#: app/scripts/controllers/menu.js:598 msgid "All stored collections will be lost. Do you want to continue?" msgstr "" "Toutes les collections enregistrées seront perdues. Voulez-vous continuer ?" @@ -64,7 +64,7 @@ msgstr "" msgid "Author" msgstr "Auteur" -#: app/views/menu.html:333 +#: app/views/menu.html:340 msgid "Basic" msgstr "Basique" @@ -87,7 +87,7 @@ msgstr "Bloc {{name}} importé" msgid "Blocks" msgstr "Blocs" -#: app/views/menu.html:183 +#: app/views/menu.html:190 msgid "Board" msgstr "Carte" @@ -95,27 +95,27 @@ msgstr "Carte" msgid "Board rules" msgstr "Règles de la carte" -#: app/scripts/controllers/menu.js:371 +#: app/scripts/controllers/menu.js:379 msgid "Board rules disabled" msgstr "Règles de la carte désactivées" -#: app/scripts/controllers/menu.js:366 +#: app/scripts/controllers/menu.js:374 msgid "Board rules enabled" msgstr "Règles de la carte activées" -#: app/scripts/services/tools.js:333 +#: app/scripts/services/tools.js:340 msgid "Board {{name}} not detected" msgstr "Carte {{name}} non détectée" -#: app/scripts/controllers/menu.js:510 +#: app/scripts/controllers/menu.js:522 msgid "Board {{name}} selected" msgstr "Carte {{name}} séléctionnée" -#: app/views/menu.html:222 +#: app/views/menu.html:229 msgid "Build" msgstr "Construire" -#: app/scripts/controllers/menu.js:531 +#: app/scripts/controllers/menu.js:541 msgid "Build done" msgstr "Construction terminée" @@ -127,37 +127,37 @@ msgstr "Annuler" msgid "Catalan" msgstr "Catalan" -#: app/scripts/services/tools.js:727 +#: app/scripts/services/tools.js:743 msgid "Check Internet connection..." msgstr "Vérifier la connexion Internet..." -#: app/scripts/services/tools.js:737 +#: app/scripts/services/tools.js:753 msgid "Check Python..." msgstr "Vérifier Python..." -#: app/scripts/services/tools.js:819 +#: app/scripts/services/tools.js:847 msgid "Click here to setup the drivers" msgstr "" -#: app/scripts/services/drivers.js:110 app/scripts/services/drivers.js:203 -#: app/scripts/services/drivers.js:225 app/scripts/services/tools.js:132 -#: app/scripts/services/tools.js:246 +#: app/scripts/services/drivers.js:109 app/scripts/services/drivers.js:202 +#: app/scripts/services/drivers.js:224 app/scripts/services/tools.js:139 +#: app/scripts/services/tools.js:253 msgid "Click here to install it" msgstr "Cliquer ici pour l'installer" -#: app/scripts/controllers/menu.js:326 +#: app/scripts/controllers/menu.js:334 msgid "Click here to view" msgstr "" -#: app/scripts/controllers/menu.js:247 +#: app/scripts/controllers/menu.js:252 msgid "Close" msgstr "" -#: app/views/menu.html:347 +#: app/views/menu.html:353 msgid "Code" msgstr "Code" -#: app/views/menu.html:194 +#: app/views/menu.html:201 msgid "Collection" msgstr "Collection" @@ -165,39 +165,43 @@ msgstr "Collection" msgid "Collection info" msgstr "Informations sur la collection" -#: app/scripts/controllers/menu.js:468 +#: app/scripts/controllers/menu.js:480 msgid "Collection {{collection}} info not defined" msgstr "Informations sur la collection {{name}} non définies" -#: app/scripts/services/tools.js:920 +#: app/scripts/services/tools.js:943 msgid "Collection {{name}} added" msgstr "Collection {{name}} ajoutée" -#: app/scripts/services/tools.js:914 +#: app/scripts/services/tools.js:937 msgid "Collection {{name}} not replaced" msgstr "Collection {{name}} non remplacée" -#: app/scripts/services/tools.js:1030 +#: app/scripts/services/tools.js:1053 msgid "Collection {{name}} removed" msgstr "Collection {{name}} supprimée" -#: app/scripts/services/tools.js:910 +#: app/scripts/services/tools.js:933 msgid "Collection {{name}} replaced" msgstr "Collection {{name}} remplacée" -#: app/scripts/controllers/menu.js:476 +#: app/scripts/controllers/menu.js:488 msgid "Collection {{name}} selected" msgstr "Collection {{name}} sélectionée" -#: app/views/menu.html:272 +#: app/views/menu.html:279 msgid "Collections" msgstr "Collections" -#: app/views/menu.html:318 +#: app/views/menu.html:325 msgid "Community forum" msgstr "Forum communautaire" -#: app/views/menu.html:344 +#: app/scripts/services/tools.js:348 +msgid "Configuration not completed" +msgstr "" + +#: app/views/menu.html:350 msgid "Constant" msgstr "Constante" @@ -217,11 +221,11 @@ msgstr "Couper" msgid "Datasheet" msgstr "Documentation" -#: app/views/menu.html:199 +#: app/views/menu.html:206 msgid "Default" msgstr "Défaut" -#: app/scripts/services/tools.js:603 +#: app/scripts/services/tools.js:610 msgid "" "Default toolchain not found. Toolchain will be downloaded. This operation " "requires Internet connection. Do you want to continue?" @@ -234,39 +238,39 @@ msgstr "" msgid "Description" msgstr "Description" -#: app/views/menu.html:138 app/views/menu.html:265 +#: app/views/menu.html:138 app/views/menu.html:272 msgid "Disable" msgstr "Désactiver" -#: app/scripts/controllers/menu.js:250 +#: app/scripts/controllers/menu.js:256 msgid "Do you want to close the application?" msgstr "Voulez-vous fermer l'application ?" -#: app/scripts/controllers/menu.js:576 +#: app/scripts/controllers/menu.js:588 msgid "Do you want to remove the {{name}} collection?" msgstr "Voulez-vous supprimer la collection {{name}} ?" -#: app/scripts/services/tools.js:906 +#: app/scripts/services/tools.js:929 msgid "Do you want to replace it?" msgstr "Voulez-vous le remplacer ?" -#: app/views/menu.html:311 +#: app/views/menu.html:318 msgid "Documentation" msgstr "Documentation" -#: app/views/menu.html:256 +#: app/views/menu.html:263 msgid "Drivers" msgstr "Pilote" -#: app/scripts/services/drivers.js:134 app/scripts/services/drivers.js:72 +#: app/scripts/services/drivers.js:133 app/scripts/services/drivers.js:72 msgid "Drivers disabled" msgstr "Pilote désactivé" -#: app/scripts/services/drivers.js:126 app/scripts/services/drivers.js:63 +#: app/scripts/services/drivers.js:125 app/scripts/services/drivers.js:63 msgid "Drivers enabled" msgstr "Pilote activé" -#: app/scripts/services/tools.js:344 +#: app/scripts/services/tools.js:357 msgid "Duplicated FPGA I/O ports" msgstr "Ports d'entrée/sortie FPGA dupliqués" @@ -278,11 +282,11 @@ msgstr "Attributs de bloc dupliqués" msgid "Edit" msgstr "Édition" -#: app/scripts/services/tools.js:895 +#: app/scripts/services/tools.js:918 msgid "Edit the collection name" msgstr "Éditer le nom de la collection" -#: app/views/menu.html:133 app/views/menu.html:260 +#: app/views/menu.html:133 app/views/menu.html:267 msgid "Enable" msgstr "Activer" @@ -314,11 +318,11 @@ msgstr "Entrer les ports de sortie" msgid "Enter the parameters" msgstr "Entrer les paramètres" -#: app/scripts/controllers/menu.js:358 +#: app/scripts/controllers/menu.js:366 msgid "Enter the remote hostname user@host (experimental)" msgstr "Entrer le nom d'hôte distant user@host (expérimental)" -#: app/scripts/services/tools.js:626 +#: app/scripts/services/tools.js:639 msgid "Error: default toolchain not found in '{{dir}}'" msgstr "Erreur: La toolchain par défaut n'a pas été trouvée dans '{{dir}}'" @@ -326,7 +330,7 @@ msgstr "Erreur: La toolchain par défaut n'a pas été trouvée dans '{{dir}}'" msgid "Error: {{error}}" msgstr "Erreur : {{error}}" -#: app/scripts/services/tools.js:418 +#: app/scripts/services/tools.js:431 msgid "Errors detected in the design" msgstr "" @@ -334,7 +338,7 @@ msgstr "" msgid "Examples" msgstr "Exemples" -#: app/scripts/services/tools.js:275 +#: app/scripts/services/tools.js:282 msgid "Execute remote {{label}} ..." msgstr "Exécuter à distance {{label}} ..." @@ -342,19 +346,19 @@ msgstr "Exécuter à distance {{label}} ..." msgid "Export" msgstr "Exporter" -#: app/scripts/services/tools.js:762 +#: app/scripts/services/tools.js:778 msgid "Extract default apio files..." msgstr "Extraction des fichiers apio par défaut..." -#: app/scripts/services/tools.js:772 +#: app/scripts/services/tools.js:788 msgid "Extract default apio packages..." msgstr "Extraction des paquets apio par défaut..." -#: app/scripts/services/tools.js:750 +#: app/scripts/services/tools.js:766 msgid "Extract virtual env files..." msgstr "Extraction des fichiers d'environnement virtuels..." -#: app/scripts/services/tools.js:341 +#: app/scripts/services/tools.js:354 msgid "FPGA I/O ports not defined" msgstr "Ports d'entrée/sortie FPGA non définis" @@ -363,6 +367,10 @@ msgstr "Ports d'entrée/sortie FPGA non définis" msgid "FPGA pin" msgstr "Pin FPGA" +#: app/views/menu.html:179 +msgid "FPGA resources" +msgstr "" + #: app/views/menu.html:29 msgid "File" msgstr "Fichier" @@ -374,7 +382,7 @@ msgstr "" "Le fichier {{file}} existe déjà dans le chemin du projet. Voulez vous le " "remplacer ?" -#: app/scripts/services/tools.js:214 +#: app/scripts/services/tools.js:221 msgid "File {{file}} does not exist" msgstr "Le fichier {{file}} n'existe pas" @@ -394,7 +402,7 @@ msgstr "Français" msgid "Galician" msgstr "Galicien" -#: app/views/menu.html:301 +#: app/views/menu.html:308 msgid "Help" msgstr "Aide" @@ -402,35 +410,35 @@ msgstr "Aide" msgid "Image" msgstr "Image" -#: app/scripts/controllers/menu.js:735 +#: app/scripts/controllers/menu.js:753 msgid "Image {{name}} saved" msgstr "Image {{name}} sauvegardée" -#: app/views/menu.html:350 +#: app/views/menu.html:356 msgid "Information" msgstr "Information" -#: app/views/menu.html:338 +#: app/views/menu.html:344 msgid "Input" msgstr "Entrée" -#: app/views/menu.html:233 +#: app/views/menu.html:240 msgid "Install" msgstr "Installation" -#: app/scripts/services/tools.js:767 +#: app/scripts/services/tools.js:783 msgid "Install default apio..." msgstr "Installer l'apio par défaut..." -#: app/scripts/services/tools.js:816 +#: app/scripts/services/tools.js:832 msgid "Installation completed" msgstr "Installation terminée" -#: app/scripts/services/tools.js:657 app/scripts/services/tools.js:692 +#: app/scripts/services/tools.js:673 app/scripts/services/tools.js:708 msgid "Installing toolchain" msgstr "Installation de la toolchain" -#: app/scripts/services/drivers.js:118 app/scripts/services/tools.js:731 +#: app/scripts/services/drivers.js:117 app/scripts/services/tools.js:747 msgid "Internet connection required" msgstr "Une connexion Internet est requise" @@ -448,7 +456,7 @@ msgstr "" msgid "Invalid block connection:
    Pull up already connected" msgstr "Connexion de bloc invalide:
    Pull up déjà connectée" -#: app/scripts/services/tools.js:926 +#: app/scripts/services/tools.js:949 msgid "Invalid collection {{name}}" msgstr "Collection {{name}} invalide" @@ -469,7 +477,7 @@ msgstr "Connexions de multiples entrées invalides" msgid "Invalid project format" msgstr "" -#: app/scripts/services/drivers.js:196 +#: app/scripts/services/drivers.js:195 msgid "It is recommended to use USB 2.0 ports" msgstr "Des ports USB 2.0 sont recommandés" @@ -485,7 +493,7 @@ msgstr "Charger" msgid "Local parameter" msgstr "Paramètre local" -#: app/scripts/services/tools.js:755 +#: app/scripts/services/tools.js:771 msgid "Make virtual env..." msgstr "Créer l'environnement virtuel..." @@ -505,11 +513,11 @@ msgstr "Nouveau" msgid "New project {{name}} created" msgstr "Nouveau projet {{name}} créé" -#: app/scripts/controllers/menu.js:594 +#: app/scripts/controllers/menu.js:606 msgid "No collections stored" msgstr "Pas de collections sauvegardées" -#: app/scripts/controllers/main.js:15 app/scripts/controllers/menu.js:260 +#: app/scripts/controllers/main.js:15 app/scripts/controllers/menu.js:266 #: app/scripts/services/project.js:145 msgid "OK" msgstr "OK" @@ -530,7 +538,7 @@ msgstr "Ouvrir SVG" msgid "Original file {{file}} does not exist" msgstr "Le fichier original {{file}} n'existe pas" -#: app/views/menu.html:341 +#: app/views/menu.html:347 msgid "Output" msgstr "Sortie" @@ -550,7 +558,7 @@ msgstr "Préférences" msgid "Project information" msgstr "Informations du projet" -#: app/scripts/controllers/menu.js:326 app/scripts/controllers/menu.js:340 +#: app/scripts/controllers/menu.js:334 app/scripts/controllers/menu.js:348 msgid "Project information updated" msgstr "" @@ -562,7 +570,7 @@ msgstr "Projet {{name}} chargé" msgid "Project {{name}} saved" msgstr "Projet {{name}} sauvegardé" -#: app/scripts/services/tools.js:744 +#: app/scripts/services/tools.js:760 msgid "Python 2.7 is required" msgstr "Python 2.7 est requis" @@ -578,7 +586,7 @@ msgstr "Lecture seule" msgid "Redo" msgstr "Refaire" -#: app/scripts/services/tools.js:453 +#: app/scripts/services/tools.js:466 msgid "Remote host {{name}} not connected" msgstr "Hôte distant {{name}} non connecté" @@ -586,11 +594,11 @@ msgstr "Hôte distant {{name}} non connecté" msgid "Remote hostname" msgstr "Nom d'hôte distant" -#: app/views/menu.html:241 app/views/menu.html:280 +#: app/views/menu.html:248 app/views/menu.html:287 msgid "Remove" msgstr "Supprimer" -#: app/views/menu.html:292 +#: app/views/menu.html:299 msgid "Remove all" msgstr "Supprimer tout" @@ -598,7 +606,7 @@ msgstr "Supprimer tout" msgid "Reset SVG" msgstr "Réinitialiser le SVG" -#: app/views/menu.html:246 +#: app/views/menu.html:253 msgid "Reset default" msgstr "Réinitialiser avec les paramètres par défaut" @@ -614,7 +622,7 @@ msgstr "Sauvegarder le SVG" msgid "Save as" msgstr "Sauvegarder sous" -#: app/views/menu.html:180 +#: app/views/menu.html:187 msgid "Select" msgstr "Sélectionner" @@ -626,7 +634,7 @@ msgstr "Sélectionner tout" msgid "Show clock" msgstr "Montrer l'horloge" -#: app/views/menu.html:314 +#: app/views/menu.html:321 msgid "Source code" msgstr "Code source" @@ -634,19 +642,19 @@ msgstr "Code source" msgid "Spanish" msgstr "Espagnol" -#: app/scripts/controllers/menu.js:530 +#: app/scripts/controllers/menu.js:540 msgid "Start build" msgstr "Début de la construction" -#: app/scripts/controllers/menu.js:542 +#: app/scripts/controllers/menu.js:553 msgid "Start upload" msgstr "Début du téléchargement" -#: app/scripts/controllers/menu.js:518 +#: app/scripts/controllers/menu.js:530 msgid "Start verification" msgstr "Début de la vérification" -#: app/scripts/services/tools.js:264 +#: app/scripts/services/tools.js:271 msgid "Synchronize remote files ..." msgstr "Synchroniser les fichiers distants ..." @@ -654,11 +662,11 @@ msgstr "Synchroniser les fichiers distants ..." msgid "Testbench" msgstr "Testbench" -#: app/scripts/services/tools.js:905 +#: app/scripts/services/tools.js:928 msgid "The collection {{name}} already exists." msgstr "La collection {{name}} existe déjà." -#: app/scripts/controllers/menu.js:497 +#: app/scripts/controllers/menu.js:509 msgid "" "The current FPGA I/O configuration will be lost. Do you want to change to " "{{name}} board?" @@ -666,15 +674,15 @@ msgstr "" "La configuration actuelle des entrées/sorties du FPGA va être perdue. Voulez-" "vous changer pour la carte {{name}}?" -#: app/scripts/services/tools.js:631 +#: app/scripts/services/tools.js:647 msgid "The toolchain will be removed. Do you want to continue?" msgstr "La toolchain va être supprimée. Voulez-vous continuer ?" -#: app/scripts/services/tools.js:619 +#: app/scripts/services/tools.js:632 msgid "The toolchain will be restored to default. Do you want to continue?" msgstr "La toolchain par défaut va être restaurée. Voulez vous continuer ?" -#: app/scripts/services/tools.js:611 +#: app/scripts/services/tools.js:621 msgid "" "The toolchain will be updated. This operation requires Internet connection. " "Do you want to continue?" @@ -694,28 +702,28 @@ msgstr "" msgid "This project is designed for the {{name}} board." msgstr "Ce projet est conçu pour la carte {{name}}" -#: app/views/menu.html:229 +#: app/views/menu.html:236 msgid "Toolchain" msgstr "Toolchain" -#: app/scripts/services/tools.js:818 +#: app/scripts/services/tools.js:834 msgid "Toolchain installed" msgstr "La toolchain est installée" -#: app/scripts/services/drivers.js:203 app/scripts/services/drivers.js:225 -#: app/scripts/services/tools.js:132 app/scripts/services/tools.js:834 +#: app/scripts/services/drivers.js:202 app/scripts/services/drivers.js:224 +#: app/scripts/services/tools.js:139 app/scripts/services/tools.js:839 msgid "Toolchain not installed" msgstr "La toolchain n'est pas installée" -#: app/scripts/services/tools.js:636 +#: app/scripts/services/tools.js:652 msgid "Toolchain removed" msgstr "Toolchain supprimée" -#: app/scripts/services/tools.js:246 +#: app/scripts/services/tools.js:253 msgid "Toolchain version does not match" msgstr "" -#: app/views/menu.html:216 +#: app/views/menu.html:223 msgid "Tools" msgstr "Outils" @@ -723,7 +731,7 @@ msgstr "Outils" msgid "Undo" msgstr "Revenir en arrière" -#: app/scripts/services/tools.js:336 +#: app/scripts/services/tools.js:343 msgid "Unknown board" msgstr "Carte inconnue" @@ -731,7 +739,7 @@ msgstr "Carte inconnue" msgid "Untitled" msgstr "Sans titre" -#: app/views/menu.html:236 +#: app/views/menu.html:243 msgid "Update" msgstr "Mettre à jour" @@ -740,23 +748,23 @@ msgstr "Mettre à jour" msgid "Update the block name" msgstr "Mettre le nom du bloc à jour" -#: app/views/menu.html:225 +#: app/views/menu.html:232 msgid "Upload" msgstr "Télécharger" -#: app/scripts/controllers/menu.js:543 +#: app/scripts/controllers/menu.js:554 msgid "Upload done" msgstr "Téléchargement terminé" -#: app/scripts/controllers/menu.js:519 +#: app/scripts/controllers/menu.js:531 msgid "Verification done" msgstr "Vérification faite" -#: app/views/menu.html:219 +#: app/views/menu.html:226 msgid "Verify" msgstr "Vérifier" -#: app/scripts/services/utils.js:531 app/views/menu.html:307 +#: app/scripts/services/utils.js:531 app/views/menu.html:314 msgid "Version" msgstr "Version" @@ -764,11 +772,11 @@ msgstr "Version" msgid "View" msgstr "Vue" -#: app/views/menu.html:304 +#: app/views/menu.html:311 msgid "View license" msgstr "Voir la licence" -#: app/scripts/services/tools.js:421 +#: app/scripts/services/tools.js:434 msgid "Warnings detected in the design" msgstr "" @@ -794,7 +802,7 @@ msgstr "Mauvais nom de port {{name}}" msgid "Wrong project format: {{name}}" msgstr "Mauvais format de projet: {{name}}" -#: app/scripts/services/tools.js:450 +#: app/scripts/services/tools.js:463 msgid "Wrong remote hostname {{name}}" msgstr "Mauvais nom d'hôte distant {{name}}" @@ -803,7 +811,7 @@ msgid "You can load it as it is or convert it for the {{name}} board." msgstr "" "Vous pouvez le charger tel quel ou le convertir pour la carte {{name}}." -#: app/scripts/controllers/menu.js:251 +#: app/scripts/controllers/menu.js:257 msgid "Your changes will be lost if you don’t save them" msgstr "Vos modifications seront perdues si vous ne les sauvegardez pas" @@ -811,23 +819,23 @@ msgstr "Vos modifications seront perdues si vous ne les sauvegardez pas" msgid "back" msgstr "retour" -#: app/scripts/services/drivers.js:109 app/scripts/services/utils.js:862 +#: app/scripts/services/drivers.js:108 app/scripts/services/utils.js:862 msgid "{{app}} is required." msgstr "{{app}} est requis." -#: app/scripts/controllers/menu.js:430 +#: app/scripts/controllers/menu.js:438 msgid "{{board}} datasheet not defined" msgstr "Documentation {{board}} non définie" -#: app/scripts/controllers/menu.js:420 +#: app/scripts/controllers/menu.js:428 msgid "{{board}} pinout not defined" msgstr "Pinout {{board}} non défini" -#: app/scripts/controllers/menu.js:449 +#: app/scripts/controllers/menu.js:457 msgid "{{board}} rules not defined" msgstr "Règles {{board}} non définies" -#: app/scripts/controllers/menu.js:201 app/scripts/controllers/menu.js:224 +#: app/scripts/controllers/menu.js:204 app/scripts/controllers/menu.js:228 msgid "{{name}} exported" msgstr "" diff --git a/app/resources/locale/gl_ES/gl_ES.po b/app/resources/locale/gl_ES/gl_ES.po index baae30386..54cea2cb7 100644 --- a/app/resources/locale/gl_ES/gl_ES.po +++ b/app/resources/locale/gl_ES/gl_ES.po @@ -12,11 +12,11 @@ msgstr "" "X-Generator: Poedit 1.8.7.1\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app/scripts/services/drivers.js:211 app/scripts/services/drivers.js:87 +#: app/scripts/services/drivers.js:210 app/scripts/services/drivers.js:87 msgid "Unplug and reconnect the board" msgstr "Desconecta e conecta de novo a placa" -#: app/scripts/services/drivers.js:195 +#: app/scripts/services/drivers.js:194 msgid "" "

    FTDI driver installation instructions

    1. Connect the FPGA " "board
    2. Replace the (Interface 0) driver of the board by " @@ -26,7 +26,7 @@ msgstr "" "a placa FPGA
    3. Troca o controlador (Interface 0) da placa por " "libusbK
    4. Desconecta e conecta de novo a placa
    " -#: app/scripts/services/drivers.js:218 +#: app/scripts/services/drivers.js:217 msgid "" "

    FTDI driver uninstallation instructions

    1. Find the FPGA USB " "Device
    2. Select the board interface and uninstall the driver
    " @@ -35,15 +35,15 @@ msgstr "" "o dispositivo USB da placa FPGA
  • Selecciona a interfaz da placa e " "desinstala o controlador
  • " -#: app/views/menu.html:322 +#: app/views/menu.html:329 msgid "About Icestudio" msgstr "Acerca de Icestudio" -#: app/views/menu.html:276 +#: app/views/menu.html:283 msgid "Add" msgstr "Engadir" -#: app/scripts/controllers/menu.js:562 +#: app/scripts/controllers/menu.js:574 msgid "Add a block to start" msgstr "Engada un bloque para comezar" @@ -51,11 +51,11 @@ msgstr "Engada un bloque para comezar" msgid "Add as block" msgstr "Engadir como bloque" -#: app/scripts/services/tools.js:1036 +#: app/scripts/services/tools.js:1059 msgid "All collections removed" msgstr "Elimináronse todas as coleccións" -#: app/scripts/controllers/menu.js:586 +#: app/scripts/controllers/menu.js:598 msgid "All stored collections will be lost. Do you want to continue?" msgstr "Perderanse todas as coleccións gardadas. Desexa continuar?" @@ -63,7 +63,7 @@ msgstr "Perderanse todas as coleccións gardadas. Desexa continuar?" msgid "Author" msgstr "Autor" -#: app/views/menu.html:333 +#: app/views/menu.html:340 msgid "Basic" msgstr "Básico" @@ -86,7 +86,7 @@ msgstr "Importouse o bloque {{name}}" msgid "Blocks" msgstr "Bloques" -#: app/views/menu.html:183 +#: app/views/menu.html:190 msgid "Board" msgstr "Placa" @@ -94,27 +94,27 @@ msgstr "Placa" msgid "Board rules" msgstr "Regras da placa" -#: app/scripts/controllers/menu.js:371 +#: app/scripts/controllers/menu.js:379 msgid "Board rules disabled" msgstr "Deshabilitáronse as regras da placa" -#: app/scripts/controllers/menu.js:366 +#: app/scripts/controllers/menu.js:374 msgid "Board rules enabled" msgstr "Habilitáronse as regras da placa" -#: app/scripts/services/tools.js:333 +#: app/scripts/services/tools.js:340 msgid "Board {{name}} not detected" msgstr "Non se detectou a placa {{name}}" -#: app/scripts/controllers/menu.js:510 +#: app/scripts/controllers/menu.js:522 msgid "Board {{name}} selected" msgstr "Seleccionouse a placa {{name}}" -#: app/views/menu.html:222 +#: app/views/menu.html:229 msgid "Build" msgstr "Sintetizar" -#: app/scripts/controllers/menu.js:531 +#: app/scripts/controllers/menu.js:541 msgid "Build done" msgstr "Sintetizado realizado" @@ -126,37 +126,37 @@ msgstr "Cancelar" msgid "Catalan" msgstr "Catalán" -#: app/scripts/services/tools.js:727 +#: app/scripts/services/tools.js:743 msgid "Check Internet connection..." msgstr "Comprobando a conexión a Internet..." -#: app/scripts/services/tools.js:737 +#: app/scripts/services/tools.js:753 msgid "Check Python..." msgstr "Comprobando Python..." -#: app/scripts/services/tools.js:819 +#: app/scripts/services/tools.js:847 msgid "Click here to setup the drivers" msgstr "" -#: app/scripts/services/drivers.js:110 app/scripts/services/drivers.js:203 -#: app/scripts/services/drivers.js:225 app/scripts/services/tools.js:132 -#: app/scripts/services/tools.js:246 +#: app/scripts/services/drivers.js:109 app/scripts/services/drivers.js:202 +#: app/scripts/services/drivers.js:224 app/scripts/services/tools.js:139 +#: app/scripts/services/tools.js:253 msgid "Click here to install it" msgstr "" -#: app/scripts/controllers/menu.js:326 +#: app/scripts/controllers/menu.js:334 msgid "Click here to view" msgstr "" -#: app/scripts/controllers/menu.js:247 +#: app/scripts/controllers/menu.js:252 msgid "Close" msgstr "" -#: app/views/menu.html:347 +#: app/views/menu.html:353 msgid "Code" msgstr "Código" -#: app/views/menu.html:194 +#: app/views/menu.html:201 msgid "Collection" msgstr "Colección" @@ -164,39 +164,43 @@ msgstr "Colección" msgid "Collection info" msgstr "" -#: app/scripts/controllers/menu.js:468 +#: app/scripts/controllers/menu.js:480 msgid "Collection {{collection}} info not defined" msgstr "" -#: app/scripts/services/tools.js:920 +#: app/scripts/services/tools.js:943 msgid "Collection {{name}} added" msgstr "Engadiuse a coleción {{name}}" -#: app/scripts/services/tools.js:914 +#: app/scripts/services/tools.js:937 msgid "Collection {{name}} not replaced" msgstr "Non se trocou a colección {{name}}" -#: app/scripts/services/tools.js:1030 +#: app/scripts/services/tools.js:1053 msgid "Collection {{name}} removed" msgstr "Eliminouse a colección {{name}}" -#: app/scripts/services/tools.js:910 +#: app/scripts/services/tools.js:933 msgid "Collection {{name}} replaced" msgstr "Trocouse a colección {{name}}" -#: app/scripts/controllers/menu.js:476 +#: app/scripts/controllers/menu.js:488 msgid "Collection {{name}} selected" msgstr "Seleccionouse a colección {{name}}" -#: app/views/menu.html:272 +#: app/views/menu.html:279 msgid "Collections" msgstr "Coleccións" -#: app/views/menu.html:318 +#: app/views/menu.html:325 msgid "Community forum" msgstr "Foro da comunidade" -#: app/views/menu.html:344 +#: app/scripts/services/tools.js:348 +msgid "Configuration not completed" +msgstr "" + +#: app/views/menu.html:350 msgid "Constant" msgstr "Constante" @@ -216,11 +220,11 @@ msgstr "Cortar" msgid "Datasheet" msgstr "Folla de datos" -#: app/views/menu.html:199 +#: app/views/menu.html:206 msgid "Default" msgstr "Predeterminado" -#: app/scripts/services/tools.js:603 +#: app/scripts/services/tools.js:610 msgid "" "Default toolchain not found. Toolchain will be downloaded. This operation " "requires Internet connection. Do you want to continue?" @@ -232,39 +236,39 @@ msgstr "" msgid "Description" msgstr "Descripción" -#: app/views/menu.html:138 app/views/menu.html:265 +#: app/views/menu.html:138 app/views/menu.html:272 msgid "Disable" msgstr "Deshabilitar" -#: app/scripts/controllers/menu.js:250 +#: app/scripts/controllers/menu.js:256 msgid "Do you want to close the application?" msgstr "Desexa pechar a aplicación?" -#: app/scripts/controllers/menu.js:576 +#: app/scripts/controllers/menu.js:588 msgid "Do you want to remove the {{name}} collection?" msgstr "Desexa eliminar a colección {{name}}?" -#: app/scripts/services/tools.js:906 +#: app/scripts/services/tools.js:929 msgid "Do you want to replace it?" msgstr "Desexa trocalo?" -#: app/views/menu.html:311 +#: app/views/menu.html:318 msgid "Documentation" msgstr "Documentación" -#: app/views/menu.html:256 +#: app/views/menu.html:263 msgid "Drivers" msgstr "Controladores" -#: app/scripts/services/drivers.js:134 app/scripts/services/drivers.js:72 +#: app/scripts/services/drivers.js:133 app/scripts/services/drivers.js:72 msgid "Drivers disabled" msgstr "Deshabilitáronse os controladores" -#: app/scripts/services/drivers.js:126 app/scripts/services/drivers.js:63 +#: app/scripts/services/drivers.js:125 app/scripts/services/drivers.js:63 msgid "Drivers enabled" msgstr "Habilitáronse os controladores" -#: app/scripts/services/tools.js:344 +#: app/scripts/services/tools.js:357 msgid "Duplicated FPGA I/O ports" msgstr "Os portos E/S da FPGA están duplicados" @@ -276,11 +280,11 @@ msgstr "Os atributos do bloque están duplicados" msgid "Edit" msgstr "Editar" -#: app/scripts/services/tools.js:895 +#: app/scripts/services/tools.js:918 msgid "Edit the collection name" msgstr "" -#: app/views/menu.html:133 app/views/menu.html:260 +#: app/views/menu.html:133 app/views/menu.html:267 msgid "Enable" msgstr "Habilitar" @@ -312,11 +316,11 @@ msgstr "Introduza os portos de saída" msgid "Enter the parameters" msgstr "Introduza os parámetros" -#: app/scripts/controllers/menu.js:358 +#: app/scripts/controllers/menu.js:366 msgid "Enter the remote hostname user@host (experimental)" msgstr "Introduza o nome do equipo remoto: usuario@equipo (experimental)" -#: app/scripts/services/tools.js:626 +#: app/scripts/services/tools.js:639 msgid "Error: default toolchain not found in '{{dir}}'" msgstr "Erro: non se atopou a cadea de ferramentas predeterminada en '{{dir}}'" @@ -324,7 +328,7 @@ msgstr "Erro: non se atopou a cadea de ferramentas predeterminada en '{{dir}}'" msgid "Error: {{error}}" msgstr "Erro: {{error}}" -#: app/scripts/services/tools.js:418 +#: app/scripts/services/tools.js:431 msgid "Errors detected in the design" msgstr "" @@ -332,7 +336,7 @@ msgstr "" msgid "Examples" msgstr "Exemplos" -#: app/scripts/services/tools.js:275 +#: app/scripts/services/tools.js:282 msgid "Execute remote {{label}} ..." msgstr "Executando {{label}} remoto..." @@ -340,19 +344,19 @@ msgstr "Executando {{label}} remoto..." msgid "Export" msgstr "Exportar" -#: app/scripts/services/tools.js:762 +#: app/scripts/services/tools.js:778 msgid "Extract default apio files..." msgstr "Extraíndo os ficheiros de apio..." -#: app/scripts/services/tools.js:772 +#: app/scripts/services/tools.js:788 msgid "Extract default apio packages..." msgstr "Extraíndo os paquetes de apio..." -#: app/scripts/services/tools.js:750 +#: app/scripts/services/tools.js:766 msgid "Extract virtual env files..." msgstr "Extraíndo ficheiros do contorno virtual..." -#: app/scripts/services/tools.js:341 +#: app/scripts/services/tools.js:354 msgid "FPGA I/O ports not defined" msgstr "Portos E/S da FPGA non definidos" @@ -361,6 +365,10 @@ msgstr "Portos E/S da FPGA non definidos" msgid "FPGA pin" msgstr "Pin da FPGA" +#: app/views/menu.html:179 +msgid "FPGA resources" +msgstr "" + #: app/views/menu.html:29 msgid "File" msgstr "Ficheiro" @@ -370,7 +378,7 @@ msgid "" "File {{file}} already exists in the project path. Do you want to replace it?" msgstr "Xa existe o ficheiro {{file}} no cartafol do proxecto. Desexa trocalo?" -#: app/scripts/services/tools.js:214 +#: app/scripts/services/tools.js:221 msgid "File {{file}} does not exist" msgstr "O ficheiro {{file}} non existe" @@ -390,7 +398,7 @@ msgstr "Francés" msgid "Galician" msgstr "Galego" -#: app/views/menu.html:301 +#: app/views/menu.html:308 msgid "Help" msgstr "Axuda" @@ -398,35 +406,35 @@ msgstr "Axuda" msgid "Image" msgstr "Imaxe" -#: app/scripts/controllers/menu.js:735 +#: app/scripts/controllers/menu.js:753 msgid "Image {{name}} saved" msgstr "Gardouse a imaxe {{name}}" -#: app/views/menu.html:350 +#: app/views/menu.html:356 msgid "Information" msgstr "Información" -#: app/views/menu.html:338 +#: app/views/menu.html:344 msgid "Input" msgstr "Entrada" -#: app/views/menu.html:233 +#: app/views/menu.html:240 msgid "Install" msgstr "Instalar" -#: app/scripts/services/tools.js:767 +#: app/scripts/services/tools.js:783 msgid "Install default apio..." msgstr "Instalando apio..." -#: app/scripts/services/tools.js:816 +#: app/scripts/services/tools.js:832 msgid "Installation completed" msgstr "Instalación completada" -#: app/scripts/services/tools.js:657 app/scripts/services/tools.js:692 +#: app/scripts/services/tools.js:673 app/scripts/services/tools.js:708 msgid "Installing toolchain" msgstr "Instalando a cadea de ferramentas..." -#: app/scripts/services/drivers.js:118 app/scripts/services/tools.js:731 +#: app/scripts/services/drivers.js:117 app/scripts/services/tools.js:747 msgid "Internet connection required" msgstr "Requírese dunha conexión a Internet" @@ -446,7 +454,7 @@ msgid "Invalid block connection:
    Pull up already connected" msgstr "" "A conexión do bloque non é válida:
    xa existe unha conexión pull-up" -#: app/scripts/services/tools.js:926 +#: app/scripts/services/tools.js:949 msgid "Invalid collection {{name}}" msgstr "A colección {{name}} non é válida" @@ -467,7 +475,7 @@ msgstr "Conexións de entrada múltiple non válida" msgid "Invalid project format" msgstr "" -#: app/scripts/services/drivers.js:196 +#: app/scripts/services/drivers.js:195 msgid "It is recommended to use USB 2.0 ports" msgstr "" @@ -483,7 +491,7 @@ msgstr "" msgid "Local parameter" msgstr "Parámetro local" -#: app/scripts/services/tools.js:755 +#: app/scripts/services/tools.js:771 msgid "Make virtual env..." msgstr "Creando o contorno virtual..." @@ -503,11 +511,11 @@ msgstr "Novo" msgid "New project {{name}} created" msgstr "Novo proxecto {{name}} creado" -#: app/scripts/controllers/menu.js:594 +#: app/scripts/controllers/menu.js:606 msgid "No collections stored" msgstr "Non hay coleccións gardadas" -#: app/scripts/controllers/main.js:15 app/scripts/controllers/menu.js:260 +#: app/scripts/controllers/main.js:15 app/scripts/controllers/menu.js:266 #: app/scripts/services/project.js:145 msgid "OK" msgstr "Aceptar" @@ -528,7 +536,7 @@ msgstr "Abrir SVG" msgid "Original file {{file}} does not exist" msgstr "Non existe o ficheiro {{name}} orixinal" -#: app/views/menu.html:341 +#: app/views/menu.html:347 msgid "Output" msgstr "Saída" @@ -548,7 +556,7 @@ msgstr "Preferencias" msgid "Project information" msgstr "Información do proxecto" -#: app/scripts/controllers/menu.js:326 app/scripts/controllers/menu.js:340 +#: app/scripts/controllers/menu.js:334 app/scripts/controllers/menu.js:348 msgid "Project information updated" msgstr "" @@ -560,7 +568,7 @@ msgstr "Proxecto {{name}} cargado" msgid "Project {{name}} saved" msgstr "Proxecto {{name}} gardado" -#: app/scripts/services/tools.js:744 +#: app/scripts/services/tools.js:760 msgid "Python 2.7 is required" msgstr "Requírese Python 2.7" @@ -576,7 +584,7 @@ msgstr "Só lectura" msgid "Redo" msgstr "Refacer" -#: app/scripts/services/tools.js:453 +#: app/scripts/services/tools.js:466 msgid "Remote host {{name}} not connected" msgstr "Non se puido conectar ó equipo remoto {{name}}" @@ -584,11 +592,11 @@ msgstr "Non se puido conectar ó equipo remoto {{name}}" msgid "Remote hostname" msgstr "Nome do equipo remoto" -#: app/views/menu.html:241 app/views/menu.html:280 +#: app/views/menu.html:248 app/views/menu.html:287 msgid "Remove" msgstr "Eliminar" -#: app/views/menu.html:292 +#: app/views/menu.html:299 msgid "Remove all" msgstr "Eliminar todo" @@ -596,7 +604,7 @@ msgstr "Eliminar todo" msgid "Reset SVG" msgstr "Restablecer SVG" -#: app/views/menu.html:246 +#: app/views/menu.html:253 msgid "Reset default" msgstr "Restablecer predeterminado" @@ -612,7 +620,7 @@ msgstr "Gardar SVG" msgid "Save as" msgstr "Gardar como" -#: app/views/menu.html:180 +#: app/views/menu.html:187 msgid "Select" msgstr "Seleccionar" @@ -624,7 +632,7 @@ msgstr "Seleccionar todo" msgid "Show clock" msgstr "Mostrar reloxo" -#: app/views/menu.html:314 +#: app/views/menu.html:321 msgid "Source code" msgstr "Código fonte" @@ -632,19 +640,19 @@ msgstr "Código fonte" msgid "Spanish" msgstr "Castelán" -#: app/scripts/controllers/menu.js:530 +#: app/scripts/controllers/menu.js:540 msgid "Start build" msgstr "Iniciando o sintetizado" -#: app/scripts/controllers/menu.js:542 +#: app/scripts/controllers/menu.js:553 msgid "Start upload" msgstr "Iniciando a carga" -#: app/scripts/controllers/menu.js:518 +#: app/scripts/controllers/menu.js:530 msgid "Start verification" msgstr "Iniciando a verificación" -#: app/scripts/services/tools.js:264 +#: app/scripts/services/tools.js:271 msgid "Synchronize remote files ..." msgstr "Sincronizando ficheiros remotos..." @@ -652,11 +660,11 @@ msgstr "Sincronizando ficheiros remotos..." msgid "Testbench" msgstr "Testbench" -#: app/scripts/services/tools.js:905 +#: app/scripts/services/tools.js:928 msgid "The collection {{name}} already exists." msgstr "A colección {{name}} xa existe." -#: app/scripts/controllers/menu.js:497 +#: app/scripts/controllers/menu.js:509 msgid "" "The current FPGA I/O configuration will be lost. Do you want to change to " "{{name}} board?" @@ -664,17 +672,17 @@ msgstr "" "Perderase a configuración actual de E/S da FPGA. Desexa cambiar á placa " "{{name}}?" -#: app/scripts/services/tools.js:631 +#: app/scripts/services/tools.js:647 msgid "The toolchain will be removed. Do you want to continue?" msgstr "Vaise eliminar a cadea de ferramentas. Desexa continuar?" -#: app/scripts/services/tools.js:619 +#: app/scripts/services/tools.js:632 msgid "The toolchain will be restored to default. Do you want to continue?" msgstr "" "Vaise restaurar a cadea de ferramentas coa configuración predeterminada. " "Desexa continuar?" -#: app/scripts/services/tools.js:611 +#: app/scripts/services/tools.js:621 msgid "" "The toolchain will be updated. This operation requires Internet connection. " "Do you want to continue?" @@ -694,28 +702,28 @@ msgstr "" msgid "This project is designed for the {{name}} board." msgstr "Este proxecto está deseñado para a placa {{name}}" -#: app/views/menu.html:229 +#: app/views/menu.html:236 msgid "Toolchain" msgstr "Cadea de ferramentas" -#: app/scripts/services/tools.js:818 +#: app/scripts/services/tools.js:834 msgid "Toolchain installed" msgstr "Instalouse a cadea de ferramentas" -#: app/scripts/services/drivers.js:203 app/scripts/services/drivers.js:225 -#: app/scripts/services/tools.js:132 app/scripts/services/tools.js:834 +#: app/scripts/services/drivers.js:202 app/scripts/services/drivers.js:224 +#: app/scripts/services/tools.js:139 app/scripts/services/tools.js:839 msgid "Toolchain not installed" msgstr "Non se instalou a cadea de ferramentas" -#: app/scripts/services/tools.js:636 +#: app/scripts/services/tools.js:652 msgid "Toolchain removed" msgstr "Eliminouse a cadea de ferramentas" -#: app/scripts/services/tools.js:246 +#: app/scripts/services/tools.js:253 msgid "Toolchain version does not match" msgstr "" -#: app/views/menu.html:216 +#: app/views/menu.html:223 msgid "Tools" msgstr "Ferramentas" @@ -723,7 +731,7 @@ msgstr "Ferramentas" msgid "Undo" msgstr "Desfacer" -#: app/scripts/services/tools.js:336 +#: app/scripts/services/tools.js:343 msgid "Unknown board" msgstr "Placa desconocida" @@ -731,7 +739,7 @@ msgstr "Placa desconocida" msgid "Untitled" msgstr "Sen título" -#: app/views/menu.html:236 +#: app/views/menu.html:243 msgid "Update" msgstr "Actualizar" @@ -740,23 +748,23 @@ msgstr "Actualizar" msgid "Update the block name" msgstr "Actualizar o nome do bloque" -#: app/views/menu.html:225 +#: app/views/menu.html:232 msgid "Upload" msgstr "Cargar" -#: app/scripts/controllers/menu.js:543 +#: app/scripts/controllers/menu.js:554 msgid "Upload done" msgstr "Carga realizada" -#: app/scripts/controllers/menu.js:519 +#: app/scripts/controllers/menu.js:531 msgid "Verification done" msgstr "Verificación realizada" -#: app/views/menu.html:219 +#: app/views/menu.html:226 msgid "Verify" msgstr "Verificar" -#: app/scripts/services/utils.js:531 app/views/menu.html:307 +#: app/scripts/services/utils.js:531 app/views/menu.html:314 msgid "Version" msgstr "Versión" @@ -764,11 +772,11 @@ msgstr "Versión" msgid "View" msgstr "Ver" -#: app/views/menu.html:304 +#: app/views/menu.html:311 msgid "View license" msgstr "Ver licenza" -#: app/scripts/services/tools.js:421 +#: app/scripts/services/tools.js:434 msgid "Warnings detected in the design" msgstr "" @@ -794,7 +802,7 @@ msgstr "O nome do porto {{name}} non é correcto" msgid "Wrong project format: {{name}}" msgstr "O formato do proxecto {{name}} non é correcto" -#: app/scripts/services/tools.js:450 +#: app/scripts/services/tools.js:463 msgid "Wrong remote hostname {{name}}" msgstr "O nome do equipo remoto {{name}} non é correcto" @@ -802,7 +810,7 @@ msgstr "O nome do equipo remoto {{name}} non é correcto" msgid "You can load it as it is or convert it for the {{name}} board." msgstr "" -#: app/scripts/controllers/menu.js:251 +#: app/scripts/controllers/menu.js:257 msgid "Your changes will be lost if you don’t save them" msgstr "Os cambios realizados perderanse se non se gardan" @@ -810,23 +818,23 @@ msgstr "Os cambios realizados perderanse se non se gardan" msgid "back" msgstr "Atrás" -#: app/scripts/services/drivers.js:109 app/scripts/services/utils.js:862 +#: app/scripts/services/drivers.js:108 app/scripts/services/utils.js:862 msgid "{{app}} is required." msgstr "" -#: app/scripts/controllers/menu.js:430 +#: app/scripts/controllers/menu.js:438 msgid "{{board}} datasheet not defined" msgstr "Non se definiu a folla de datos para a placa {{board}}" -#: app/scripts/controllers/menu.js:420 +#: app/scripts/controllers/menu.js:428 msgid "{{board}} pinout not defined" msgstr "Non se definiu o pinout para a placa {{board}}" -#: app/scripts/controllers/menu.js:449 +#: app/scripts/controllers/menu.js:457 msgid "{{board}} rules not defined" msgstr "Non se definiron as regras para a placa {{board}}" -#: app/scripts/controllers/menu.js:201 app/scripts/controllers/menu.js:224 +#: app/scripts/controllers/menu.js:204 app/scripts/controllers/menu.js:228 msgid "{{name}} exported" msgstr "" diff --git a/app/resources/locale/template.pot b/app/resources/locale/template.pot index ea1f22885..260c4e8ea 100644 --- a/app/resources/locale/template.pot +++ b/app/resources/locale/template.pot @@ -4,28 +4,28 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Project-Id-Version: \n" -#: app/scripts/services/drivers.js:211 +#: app/scripts/services/drivers.js:210 #: app/scripts/services/drivers.js:87 msgid "Unplug and reconnect the board" msgstr "" -#: app/scripts/services/drivers.js:195 +#: app/scripts/services/drivers.js:194 msgid "

    FTDI driver installation instructions

    1. Connect the FPGA board
    2. Replace the (Interface 0) driver of the board by libusbK
    3. Unplug and reconnect the board
    " msgstr "" -#: app/scripts/services/drivers.js:218 +#: app/scripts/services/drivers.js:217 msgid "

    FTDI driver uninstallation instructions

    1. Find the FPGA USB Device
    2. Select the board interface and uninstall the driver
    " msgstr "" -#: app/views/menu.html:322 +#: app/views/menu.html:329 msgid "About Icestudio" msgstr "" -#: app/views/menu.html:276 +#: app/views/menu.html:283 msgid "Add" msgstr "" -#: app/scripts/controllers/menu.js:562 +#: app/scripts/controllers/menu.js:574 msgid "Add a block to start" msgstr "" @@ -33,11 +33,11 @@ msgstr "" msgid "Add as block" msgstr "" -#: app/scripts/services/tools.js:1036 +#: app/scripts/services/tools.js:1059 msgid "All collections removed" msgstr "" -#: app/scripts/controllers/menu.js:586 +#: app/scripts/controllers/menu.js:598 msgid "All stored collections will be lost. Do you want to continue?" msgstr "" @@ -45,7 +45,7 @@ msgstr "" msgid "Author" msgstr "" -#: app/views/menu.html:333 +#: app/views/menu.html:340 msgid "Basic" msgstr "" @@ -71,7 +71,7 @@ msgstr "" msgid "Blocks" msgstr "" -#: app/views/menu.html:183 +#: app/views/menu.html:190 msgid "Board" msgstr "" @@ -80,27 +80,27 @@ msgstr "" msgid "Board rules" msgstr "" -#: app/scripts/controllers/menu.js:371 +#: app/scripts/controllers/menu.js:379 msgid "Board rules disabled" msgstr "" -#: app/scripts/controllers/menu.js:366 +#: app/scripts/controllers/menu.js:374 msgid "Board rules enabled" msgstr "" -#: app/scripts/services/tools.js:333 +#: app/scripts/services/tools.js:340 msgid "Board {{name}} not detected" msgstr "" -#: app/scripts/controllers/menu.js:510 +#: app/scripts/controllers/menu.js:522 msgid "Board {{name}} selected" msgstr "" -#: app/views/menu.html:222 +#: app/views/menu.html:229 msgid "Build" msgstr "" -#: app/scripts/controllers/menu.js:531 +#: app/scripts/controllers/menu.js:541 msgid "Build done" msgstr "" @@ -113,39 +113,39 @@ msgstr "" msgid "Catalan" msgstr "" -#: app/scripts/services/tools.js:727 +#: app/scripts/services/tools.js:743 msgid "Check Internet connection..." msgstr "" -#: app/scripts/services/tools.js:737 +#: app/scripts/services/tools.js:753 msgid "Check Python..." msgstr "" -#: app/scripts/services/tools.js:819 +#: app/scripts/services/tools.js:847 msgid "Click here to setup the drivers" msgstr "" -#: app/scripts/services/drivers.js:110 -#: app/scripts/services/drivers.js:203 -#: app/scripts/services/drivers.js:225 -#: app/scripts/services/tools.js:132 -#: app/scripts/services/tools.js:246 +#: app/scripts/services/drivers.js:109 +#: app/scripts/services/drivers.js:202 +#: app/scripts/services/drivers.js:224 +#: app/scripts/services/tools.js:139 +#: app/scripts/services/tools.js:253 msgid "Click here to install it" msgstr "" -#: app/scripts/controllers/menu.js:326 +#: app/scripts/controllers/menu.js:334 msgid "Click here to view" msgstr "" -#: app/scripts/controllers/menu.js:247 +#: app/scripts/controllers/menu.js:252 msgid "Close" msgstr "" -#: app/views/menu.html:347 +#: app/views/menu.html:353 msgid "Code" msgstr "" -#: app/views/menu.html:194 +#: app/views/menu.html:201 msgid "Collection" msgstr "" @@ -153,39 +153,43 @@ msgstr "" msgid "Collection info" msgstr "" -#: app/scripts/controllers/menu.js:468 +#: app/scripts/controllers/menu.js:480 msgid "Collection {{collection}} info not defined" msgstr "" -#: app/scripts/services/tools.js:920 +#: app/scripts/services/tools.js:943 msgid "Collection {{name}} added" msgstr "" -#: app/scripts/services/tools.js:914 +#: app/scripts/services/tools.js:937 msgid "Collection {{name}} not replaced" msgstr "" -#: app/scripts/services/tools.js:1030 +#: app/scripts/services/tools.js:1053 msgid "Collection {{name}} removed" msgstr "" -#: app/scripts/services/tools.js:910 +#: app/scripts/services/tools.js:933 msgid "Collection {{name}} replaced" msgstr "" -#: app/scripts/controllers/menu.js:476 +#: app/scripts/controllers/menu.js:488 msgid "Collection {{name}} selected" msgstr "" -#: app/views/menu.html:272 +#: app/views/menu.html:279 msgid "Collections" msgstr "" -#: app/views/menu.html:318 +#: app/views/menu.html:325 msgid "Community forum" msgstr "" -#: app/views/menu.html:344 +#: app/scripts/services/tools.js:348 +msgid "Configuration not completed" +msgstr "" + +#: app/views/menu.html:350 msgid "Constant" msgstr "" @@ -205,11 +209,11 @@ msgstr "" msgid "Datasheet" msgstr "" -#: app/views/menu.html:199 +#: app/views/menu.html:206 msgid "Default" msgstr "" -#: app/scripts/services/tools.js:603 +#: app/scripts/services/tools.js:610 msgid "Default toolchain not found. Toolchain will be downloaded. This operation requires Internet connection. Do you want to continue?" msgstr "" @@ -218,41 +222,41 @@ msgid "Description" msgstr "" #: app/views/menu.html:138 -#: app/views/menu.html:265 +#: app/views/menu.html:272 msgid "Disable" msgstr "" -#: app/scripts/controllers/menu.js:250 +#: app/scripts/controllers/menu.js:256 msgid "Do you want to close the application?" msgstr "" -#: app/scripts/controllers/menu.js:576 +#: app/scripts/controllers/menu.js:588 msgid "Do you want to remove the {{name}} collection?" msgstr "" -#: app/scripts/services/tools.js:906 +#: app/scripts/services/tools.js:929 msgid "Do you want to replace it?" msgstr "" -#: app/views/menu.html:311 +#: app/views/menu.html:318 msgid "Documentation" msgstr "" -#: app/views/menu.html:256 +#: app/views/menu.html:263 msgid "Drivers" msgstr "" -#: app/scripts/services/drivers.js:134 +#: app/scripts/services/drivers.js:133 #: app/scripts/services/drivers.js:72 msgid "Drivers disabled" msgstr "" -#: app/scripts/services/drivers.js:126 +#: app/scripts/services/drivers.js:125 #: app/scripts/services/drivers.js:63 msgid "Drivers enabled" msgstr "" -#: app/scripts/services/tools.js:344 +#: app/scripts/services/tools.js:357 msgid "Duplicated FPGA I/O ports" msgstr "" @@ -264,12 +268,12 @@ msgstr "" msgid "Edit" msgstr "" -#: app/scripts/services/tools.js:895 +#: app/scripts/services/tools.js:918 msgid "Edit the collection name" msgstr "" #: app/views/menu.html:133 -#: app/views/menu.html:260 +#: app/views/menu.html:267 msgid "Enable" msgstr "" @@ -301,11 +305,11 @@ msgstr "" msgid "Enter the parameters" msgstr "" -#: app/scripts/controllers/menu.js:358 +#: app/scripts/controllers/menu.js:366 msgid "Enter the remote hostname user@host (experimental)" msgstr "" -#: app/scripts/services/tools.js:626 +#: app/scripts/services/tools.js:639 msgid "Error: default toolchain not found in '{{dir}}'" msgstr "" @@ -313,7 +317,7 @@ msgstr "" msgid "Error: {{error}}" msgstr "" -#: app/scripts/services/tools.js:418 +#: app/scripts/services/tools.js:431 msgid "Errors detected in the design" msgstr "" @@ -321,7 +325,7 @@ msgstr "" msgid "Examples" msgstr "" -#: app/scripts/services/tools.js:275 +#: app/scripts/services/tools.js:282 msgid "Execute remote {{label}} ..." msgstr "" @@ -329,19 +333,19 @@ msgstr "" msgid "Export" msgstr "" -#: app/scripts/services/tools.js:762 +#: app/scripts/services/tools.js:778 msgid "Extract default apio files..." msgstr "" -#: app/scripts/services/tools.js:772 +#: app/scripts/services/tools.js:788 msgid "Extract default apio packages..." msgstr "" -#: app/scripts/services/tools.js:750 +#: app/scripts/services/tools.js:766 msgid "Extract virtual env files..." msgstr "" -#: app/scripts/services/tools.js:341 +#: app/scripts/services/tools.js:354 msgid "FPGA I/O ports not defined" msgstr "" @@ -352,6 +356,10 @@ msgstr "" msgid "FPGA pin" msgstr "" +#: app/views/menu.html:179 +msgid "FPGA resources" +msgstr "" + #: app/views/menu.html:29 msgid "File" msgstr "" @@ -360,7 +368,7 @@ msgstr "" msgid "File {{file}} already exists in the project path. Do you want to replace it?" msgstr "" -#: app/scripts/services/tools.js:214 +#: app/scripts/services/tools.js:221 msgid "File {{file}} does not exist" msgstr "" @@ -380,7 +388,7 @@ msgstr "" msgid "Galician" msgstr "" -#: app/views/menu.html:301 +#: app/views/menu.html:308 msgid "Help" msgstr "" @@ -388,37 +396,37 @@ msgstr "" msgid "Image" msgstr "" -#: app/scripts/controllers/menu.js:735 +#: app/scripts/controllers/menu.js:753 msgid "Image {{name}} saved" msgstr "" -#: app/views/menu.html:350 +#: app/views/menu.html:356 msgid "Information" msgstr "" -#: app/views/menu.html:338 +#: app/views/menu.html:344 msgid "Input" msgstr "" -#: app/views/menu.html:233 +#: app/views/menu.html:240 msgid "Install" msgstr "" -#: app/scripts/services/tools.js:767 +#: app/scripts/services/tools.js:783 msgid "Install default apio..." msgstr "" -#: app/scripts/services/tools.js:816 +#: app/scripts/services/tools.js:832 msgid "Installation completed" msgstr "" -#: app/scripts/services/tools.js:657 -#: app/scripts/services/tools.js:692 +#: app/scripts/services/tools.js:673 +#: app/scripts/services/tools.js:708 msgid "Installing toolchain" msgstr "" -#: app/scripts/services/drivers.js:118 -#: app/scripts/services/tools.js:731 +#: app/scripts/services/drivers.js:117 +#: app/scripts/services/tools.js:747 msgid "Internet connection required" msgstr "" @@ -434,7 +442,7 @@ msgstr "" msgid "Invalid block connection:
    Pull up already connected" msgstr "" -#: app/scripts/services/tools.js:926 +#: app/scripts/services/tools.js:949 msgid "Invalid collection {{name}}" msgstr "" @@ -456,7 +464,7 @@ msgstr "" msgid "Invalid project format" msgstr "" -#: app/scripts/services/drivers.js:196 +#: app/scripts/services/drivers.js:195 msgid "It is recommended to use USB 2.0 ports" msgstr "" @@ -473,7 +481,7 @@ msgstr "" msgid "Local parameter" msgstr "" -#: app/scripts/services/tools.js:755 +#: app/scripts/services/tools.js:771 msgid "Make virtual env..." msgstr "" @@ -493,12 +501,12 @@ msgstr "" msgid "New project {{name}} created" msgstr "" -#: app/scripts/controllers/menu.js:594 +#: app/scripts/controllers/menu.js:606 msgid "No collections stored" msgstr "" #: app/scripts/controllers/main.js:15 -#: app/scripts/controllers/menu.js:260 +#: app/scripts/controllers/menu.js:266 #: app/scripts/services/project.js:145 msgid "OK" msgstr "" @@ -520,7 +528,7 @@ msgstr "" msgid "Original file {{file}} does not exist" msgstr "" -#: app/views/menu.html:341 +#: app/views/menu.html:347 msgid "Output" msgstr "" @@ -540,8 +548,8 @@ msgstr "" msgid "Project information" msgstr "" -#: app/scripts/controllers/menu.js:326 -#: app/scripts/controllers/menu.js:340 +#: app/scripts/controllers/menu.js:334 +#: app/scripts/controllers/menu.js:348 msgid "Project information updated" msgstr "" @@ -553,7 +561,7 @@ msgstr "" msgid "Project {{name}} saved" msgstr "" -#: app/scripts/services/tools.js:744 +#: app/scripts/services/tools.js:760 msgid "Python 2.7 is required" msgstr "" @@ -570,7 +578,7 @@ msgstr "" msgid "Redo" msgstr "" -#: app/scripts/services/tools.js:453 +#: app/scripts/services/tools.js:466 msgid "Remote host {{name}} not connected" msgstr "" @@ -578,12 +586,12 @@ msgstr "" msgid "Remote hostname" msgstr "" -#: app/views/menu.html:241 -#: app/views/menu.html:280 +#: app/views/menu.html:248 +#: app/views/menu.html:287 msgid "Remove" msgstr "" -#: app/views/menu.html:292 +#: app/views/menu.html:299 msgid "Remove all" msgstr "" @@ -591,7 +599,7 @@ msgstr "" msgid "Reset SVG" msgstr "" -#: app/views/menu.html:246 +#: app/views/menu.html:253 msgid "Reset default" msgstr "" @@ -607,7 +615,7 @@ msgstr "" msgid "Save as" msgstr "" -#: app/views/menu.html:180 +#: app/views/menu.html:187 msgid "Select" msgstr "" @@ -620,7 +628,7 @@ msgstr "" msgid "Show clock" msgstr "" -#: app/views/menu.html:314 +#: app/views/menu.html:321 msgid "Source code" msgstr "" @@ -628,19 +636,19 @@ msgstr "" msgid "Spanish" msgstr "" -#: app/scripts/controllers/menu.js:530 +#: app/scripts/controllers/menu.js:540 msgid "Start build" msgstr "" -#: app/scripts/controllers/menu.js:542 +#: app/scripts/controllers/menu.js:553 msgid "Start upload" msgstr "" -#: app/scripts/controllers/menu.js:518 +#: app/scripts/controllers/menu.js:530 msgid "Start verification" msgstr "" -#: app/scripts/services/tools.js:264 +#: app/scripts/services/tools.js:271 msgid "Synchronize remote files ..." msgstr "" @@ -648,23 +656,23 @@ msgstr "" msgid "Testbench" msgstr "" -#: app/scripts/services/tools.js:905 +#: app/scripts/services/tools.js:928 msgid "The collection {{name}} already exists." msgstr "" -#: app/scripts/controllers/menu.js:497 +#: app/scripts/controllers/menu.js:509 msgid "The current FPGA I/O configuration will be lost. Do you want to change to {{name}} board?" msgstr "" -#: app/scripts/services/tools.js:631 +#: app/scripts/services/tools.js:647 msgid "The toolchain will be removed. Do you want to continue?" msgstr "" -#: app/scripts/services/tools.js:619 +#: app/scripts/services/tools.js:632 msgid "The toolchain will be restored to default. Do you want to continue?" msgstr "" -#: app/scripts/services/tools.js:611 +#: app/scripts/services/tools.js:621 msgid "The toolchain will be updated. This operation requires Internet connection. Do you want to continue?" msgstr "" @@ -676,30 +684,30 @@ msgstr "" msgid "This project is designed for the {{name}} board." msgstr "" -#: app/views/menu.html:229 +#: app/views/menu.html:236 msgid "Toolchain" msgstr "" -#: app/scripts/services/tools.js:818 +#: app/scripts/services/tools.js:834 msgid "Toolchain installed" msgstr "" -#: app/scripts/services/drivers.js:203 -#: app/scripts/services/drivers.js:225 -#: app/scripts/services/tools.js:132 -#: app/scripts/services/tools.js:834 +#: app/scripts/services/drivers.js:202 +#: app/scripts/services/drivers.js:224 +#: app/scripts/services/tools.js:139 +#: app/scripts/services/tools.js:839 msgid "Toolchain not installed" msgstr "" -#: app/scripts/services/tools.js:636 +#: app/scripts/services/tools.js:652 msgid "Toolchain removed" msgstr "" -#: app/scripts/services/tools.js:246 +#: app/scripts/services/tools.js:253 msgid "Toolchain version does not match" msgstr "" -#: app/views/menu.html:216 +#: app/views/menu.html:223 msgid "Tools" msgstr "" @@ -707,7 +715,7 @@ msgstr "" msgid "Undo" msgstr "" -#: app/scripts/services/tools.js:336 +#: app/scripts/services/tools.js:343 msgid "Unknown board" msgstr "" @@ -715,7 +723,7 @@ msgstr "" msgid "Untitled" msgstr "" -#: app/views/menu.html:236 +#: app/views/menu.html:243 msgid "Update" msgstr "" @@ -725,24 +733,24 @@ msgstr "" msgid "Update the block name" msgstr "" -#: app/views/menu.html:225 +#: app/views/menu.html:232 msgid "Upload" msgstr "" -#: app/scripts/controllers/menu.js:543 +#: app/scripts/controllers/menu.js:554 msgid "Upload done" msgstr "" -#: app/scripts/controllers/menu.js:519 +#: app/scripts/controllers/menu.js:531 msgid "Verification done" msgstr "" -#: app/views/menu.html:219 +#: app/views/menu.html:226 msgid "Verify" msgstr "" #: app/scripts/services/utils.js:531 -#: app/views/menu.html:307 +#: app/views/menu.html:314 msgid "Version" msgstr "" @@ -750,11 +758,11 @@ msgstr "" msgid "View" msgstr "" -#: app/views/menu.html:304 +#: app/views/menu.html:311 msgid "View license" msgstr "" -#: app/scripts/services/tools.js:421 +#: app/scripts/services/tools.js:434 msgid "Warnings detected in the design" msgstr "" @@ -784,7 +792,7 @@ msgstr "" msgid "Wrong project format: {{name}}" msgstr "" -#: app/scripts/services/tools.js:450 +#: app/scripts/services/tools.js:463 msgid "Wrong remote hostname {{name}}" msgstr "" @@ -792,7 +800,7 @@ msgstr "" msgid "You can load it as it is or convert it for the {{name}} board." msgstr "" -#: app/scripts/controllers/menu.js:251 +#: app/scripts/controllers/menu.js:257 msgid "Your changes will be lost if you don’t save them" msgstr "" @@ -800,24 +808,24 @@ msgstr "" msgid "back" msgstr "" -#: app/scripts/services/drivers.js:109 +#: app/scripts/services/drivers.js:108 #: app/scripts/services/utils.js:862 msgid "{{app}} is required." msgstr "" -#: app/scripts/controllers/menu.js:430 +#: app/scripts/controllers/menu.js:438 msgid "{{board}} datasheet not defined" msgstr "" -#: app/scripts/controllers/menu.js:420 +#: app/scripts/controllers/menu.js:428 msgid "{{board}} pinout not defined" msgstr "" -#: app/scripts/controllers/menu.js:449 +#: app/scripts/controllers/menu.js:457 msgid "{{board}} rules not defined" msgstr "" -#: app/scripts/controllers/menu.js:201 -#: app/scripts/controllers/menu.js:224 +#: app/scripts/controllers/menu.js:204 +#: app/scripts/controllers/menu.js:228 msgid "{{name}} exported" msgstr "" From bab1dd5448ef97f22ddf36f53576d14242fa215f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Wed, 1 Nov 2017 11:05:07 +0100 Subject: [PATCH 32/33] Update doc images --- README.md | 2 +- doc/images/main-1.png | Bin 49163 -> 53563 bytes doc/images/main.png | Bin 42075 -> 41947 bytes 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 80d009d88..c69e48c68 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ | [Nandland Go board](https://www.nandland.com/goboard/introduction.html) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [iCE40-HX8K Breakout Board](http://www.latticesemi.com/Products/DevelopmentBoardsAndKits/iCE40HX8KBreakoutBoard.aspx) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [iCEstick Evaluation Kit](http://www.pighixxx.com/test/portfolio-items/icestick/) | :white_check_mark: | :white_check_mark: | :white_check_mark: | -| [icoBOARD 1.0](http://icoboard.org/about-icoboard.html) |   :white_check_mark: **\*** | - | - | +| [icoBOARD 1.0](http://icoboard.org/about-icoboard.html) |   :white_check_mark: **\*** |   :white_check_mark: **\*** |   :white_check_mark: **\*** | **\*** Use with Raspberry Pi diff --git a/doc/images/main-1.png b/doc/images/main-1.png index 0581374dd86a6eaba253a55231066bd0746b84d1..c083153d33efa2efc5282910e591bf1b1e8b0775 100644 GIT binary patch literal 53563 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 z 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 literal 49163 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�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 Z^vWdsWdK&b0&s8)X-RpBBC#)i{|gwvgq8pR diff --git a/doc/images/main.png b/doc/images/main.png index d4cfb30f9af430cf78202daab680c21eb750a3cc..7cd30f7edd5d0ee4649c80434e35cc16db1a2e89 100644 GIT binary patch literal 41947 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 KA;tF}zWf)wYb#Lz literal 42075 zcmb@u1ymf}vNlY@OGwZVNU#72Ns!>~k^mvNyG(F*XRw42971r{!6i6@O@h0-1{>UE zV37G6-gEAEu6+02f32?Lkr{Q~6ieEXue`PHHOG84+>*4%UX*QV}HSpuv zU$Q&3hRJm$Lo{b-wndO1k9KKHmb2U{ zT%#K37o1z?H`}`yNaR3Fr3kpm19bTfK*-+!|Iyfpf!z!EEeCD7z|JoL8`wW~x(9I7 zhXEY&GtYt?jY8YsV*r=zTc@X{s$BYP=x3gI+@5D=*{oQ5ct_P%v(-w4RBJNg>X4zR zfXB|?NY%a^)pi%}LY>xe9<<_%Tpf%mh@=XEYiepH9Pdfp5(;BonVFiJnwgoIo<7~1Z?Icz zwyf4>PMx+f8L2Kvk7{!4uz6VL;^HD1Nm-JgPr_;by|S`Wx!`K8$R8lrkA`5(m_3!( zVYw^n6*Dt4`U9Meg(mRI#r%Z$5JUUiH;-wj^?`A-xi4S7=-5KrTU%G=Fr3kW7u(j^ z5)%;-k%V`=6#F(tJO2#>M?BT3b~$HZd{L+S+Q(UC9o-1&t>;JUsk;CLJB! z&+2LyH#fT!=Q1*<20gx&i83`_x4jhoGSptf{sSD6Pwa_Zb+@8GKP@6|Y;0^s-GH0) zLFqE&hFh_AR^ai58coLP>gu(%wY0P}fG^|QF{*;h%xL4|M}~xiPzrg{5rwGxV3+8~ zY^swnY2+6b6_u8{+S|Wa0md{VT#NA;CT3t^VIfj?<^Z>xL2}eqqj?kwE+{Dx@Io?hy-H8)wf?AmQtO(fwTDyMZ}-)am3 z_FOu22?{_}iaNKOj03>+kp32-#dQ|OMF8lXm1eSzZ(iT6R{bI~+ye%bOg>}whw056 z?*Mm-VsU9{#PVI2oPW*H7@U$B+P2z|nd$l*-~in1=D&=Ypq&Q+G~BC%-UHv)#K{C_NMLt_H7!9;@#N`!G>)X~}-0Dw5Yw zOXbubeA(~rE_dF=7L7VztW;NzCI4vzD`rQtcX`$Mmk?$3L0-B~A?jM7dBh0V7n&z&Gw!?SZL=$ah<{$TJ3cvV{@8&iRFm=9H6*scqSTW+Obl(3 z$C}v>FK4f)|50xZc~OykjIZ|z zW^}%!0!3j>lnOO9EuNRqr@n;m_d1*1pw${ShqJ?j#i)+Gh+qPki;(w=6)N%-tX_~N z%-TF#fFrIL42R+_BCwNA&ne(nRc@0vnf2>&U!}aQWEMgqe6|y^P#c?(i_>|R3MP<| zhCCbmbV)8q{Ti`?1Pbfk@MY)f}TXTX#h^Q<7E97fD@$-qDF5=lcV!u>NqqOJo@ zSp*KfoVYxwH?g}}r;U%o7v8dPJGyj?ZK$k}9PD*1&g-XT64X6JZkR1HSHf0q0;x`_ z$}W!lI|4YfaM;EKuMfAZWcof!E15x%L8J9~L1sQHy`^ ziwhr_o-I~Vf~O%%r8pPlHD0vdK9$CY)(WvEb0wXo!iet628R7~<+C%mQ5GpVVn!LI zL)H%}+$SZh^Sz$E;I75RPjil+f1@!sfKC&D&aj*!dDuQ@lhATrJ z6X=9*Q@rx`xlWWw|$eKg-b)<;6*&k zzh}=~$^1Z~21SYms;4N8x3SXgE#s#E7ZI~uj#atExuq}R6Qpk=$R#3B#|3|U^<{_GXyx*Jc@2m*_qR(ePR&l{cP{5$ zKrkyic|GjN@sZ~7f(IfMj!T0@H#I9|p>9`dQYfd^VH8|YAL;aAU}RkuB3SzY}u@@ z6I#c}+ZIyhAq#U>X9puva4yvLZR3R_!o!0g6Gy%B!cLiQ3^##3cZ{m5>}sBouVr8w z-aI>+8op|xDh6Lu+1(tbtjCGW&o^~POw*0KQXe^0XAUfz8}Y$NrbbH4sLWzxo{L<~ zCkD$4B^A5X=oZTk#uZMcPTm9NA{;t}3~S(bhz(*4(|0Z|X7oJ#acUJkD+0eSDw%nf zO2PJNu|Cy-tp~I7Ou(D&)wR{8&{Fv)jae3E{Z2deDVs~4U1^WjtL-KK%V~0jGzYvS zuDawNL{#8BqB-%nWu-S){$$)$;6iQ_I*jeRKH1w*gD7c|@VQzIhtWh1PrDxD;2yi} z-C!dsFFHp!VRqbk$I;K4J*&#%5xWEHg@Y3zCsiuWgi!0wTs)E)4XmDp8`#s%z^Uf~ z2i=bdAVK;2p6Bo8X~}Ck+q+K6DQng)@kzy>mt}f}F``YD)#bDq{rUA(q;pbXu~c67 z>9MYL_atbsQPP;3STu0Ry}1T5J@=vVhcrUVS84}(X159EF6Jw-cceP(N~iR7cV{6N zyIy2^7Am1yJ1C_&e%TL$)uOU%Z$@|He6BGgNs7xFpq3hx5z`0%Q7*;a?KdZ$YP{S zt$%WVR@CRkp2U-tNT>@J(gZWuFm$F@kbqUatYkH zX45uTUku7Mx3;$WOpm84%@opwZCFVhot&t=4&He_6z#<8&AT}svs3rlEPru*O7G2Q zg@)!#r&DA7=;1@fqH!VcSyg4F3LVjWgIjHRxy5GS5N{v)2LD#!u~RdF(&^@Gv_BP^ zv+MKCd(Mg9b)Yug*i_p#4+c_P%oKX=p`}uQ=+K7LocE8nY167wn%uHr>fQT*2g`<_ zZU&=e7*#?|HpUe3%+Q7;ewyFW?8OSFHWZAjyjD~b*t;&x|K-C9) z&ARki$sjpG%_b5jCC#fC9Z$_j!d3aC_`9Fd=X=>-at9+77{)**f6;t>(6{K)FONpser6la`n%{*_puJ~`RZxKW-B-yPwZAAfYH!TU_pLdS30 z6OX7gVd{LEf>Y@2=1Rymucofoe0d>!Hxha>^_23uBVe-4sN3LPlunVjcp(;t8%1T3 zcUeygA**fo%N3TLDeS|Jq)qJ6Ww;y_F~A_}r{$D4-F#0qtX#l(NuZ9i+=T`s#ho9I zJ454RnfYUThQ(DEhIrFeHQCfHM~9d=<5kt|mM?Q---d$hQ|nuCRj)JK_t!xfMrpGcwPBn5c6L#YnA`i970Tq!Kr% zBW?@`m=~l8Rx-JUgOPRRD|7rx>4jCq%i*VmA9XlI3LM?1zL@xE$7a3;t4Qyp^n5+x zMa3cN=T*YFI&~p|wJ?;4Kd=3S*EUPoNVnDbL)ZkB@Epy6$fBYOc)z~GtuUS4bvsW@ zMJ$y}d2eFQGLr8dbJmZci!=(m6f&8SN?iTn;Bvz4WX`w0bST4QWmxb+4|lAW6jnCZ zK_X2VZbXpi&I5v*Rh^7VB``Alpe#M)05KUGAeXE>B_tuJ>#J~h~=Mc{_u_vGdSLoN(YMH&0YfJ}J zla4`LE*tU|m(|ez!L4n4n~?B?TNP04>YFO^em*}CT;y&wm+~n4K03{SR-BS+^W~tg zyXvWfs=IPx45SY$0ai3mmU)OvUdq_rS5!~(gu@YsQUzUCoQy@ARo$4jFO>|?Df^u< zj3TGEVW;VI{nACK6WMejmQSivxybD;r>st{TI=lo1y{OQWj*ETgY&n8U20MctyP8C z-W81OuRp1N`c?OHW3{nYSl1#Ka+)k6udRrh?nhUWqSE*%(Q(DMuO>5mGz7ZZ9GA;t zk=1c*h7b%F;8MLJ4dqxF-F3DLqF_W$< zXJzRGy@bco1^HuWbrvtZp+V{I6N|p{GcPTRwR;vCVg~D-c6PiAsyo_TB7klA^b3%H zO1vPe12E|zhq-UdUXBaSY`E^u6H7x#-ZJ14M|+4`_mH#sY{mUZXm%(p;IA^?soS_F z)_;fSd@x>?Te;PGBo_gF5WV28)Vt3z@~oq{2rumVGWP`5iPXqr)U0p1PS2r<9(KPN z*hZ9vNq0>SfSTxCB=RjJP1hj%gOVjPL=eK=MwjXCm6?5i>~Oa!dl#jSfI2hA?k+a> z0E~KFvV@~2>r8`AiP16jCMwI%UCu@>qyj$Je1{pCxMu2$hrOA8Lmf*+tTqm!Q$@;+ zRZmuB^%xC2FY7t+h^Ee3iLQkcsc%RC8oZlJKu|FA^zuB(NFQ67I~P*=Fc#nNnQnbh z<#b#K3HGFTyUz<14QuJegvW+GL3&9vncejGydj-GP9oKjT1!Nh?GqaTRuLYInw1VJ zJx^eTG5HwXonh2!(+!w#CLNc7NLM?ugj(*;i;JTU zd-8Lh?C0~0jMTpF#4Q`pOgt#pU)4nZXnQ}n;j*d2-5y9^snKDguFLQ3JUv{THJ_}p z$nV{riTL3p+u9lkN?}s<{7?dVnxTppiJ~)#QuBS0ClbReVjC!{SHpa||EO||?=Z5{ zTlbA2qmR+jk*tYk%OVei(Y{xvyTq1%$-{ayE5Rl9rrcLSMo*}d-p#~0#HGz6FXO^! z+@m*7nANwtaBTN7v?%N?v7Ma)t(uIK>?rTJu0d1wDP^49URFTQ7+ z4-?+8d?NRzJ|D3j>G*`8Hb4fxDwvX_$L65!%{Y5AEa`i5+(T0f^=^-SGLZtm2P9==RAoiEwLcE2A)f^^YN+DR>ubx5c{yoo2Lzv>wMoJ z9kR}Z1hrb_*cDbs4JAj;wejZ?n699K!{ zYIO1nOpak6!%OTe`lQ7SG<%Rg_>MzVoMH)oth6+$QKucR7>2g2s0gQ~uMV>&6fxjR zmt?DNFK0OhYprn(I~ye0HB^_r_L-?Wm*FXB(%vg}pMRq<{*4LuST#8R3NDUe+?ETM zY`-ijE~@k^qLT^6k%IE(im78jgM$({Z=4L*1HzqDg6rzUzn0EMX_-FG&MelBvDGdK z4efYCZ5yru$u`O!{1GnEPuVX%?xPTr6>G4KLu@0-_v4Ep6gdTb)K*A?!PE z>yN59*ZNFG;GjbQ;$^bbvkibTb7hY(z{9m(rHBg}sjI^!itQYK4t!)7maq*YTce>~ zD(@}iQA?7gEe*a{@nXjT$|9|{+Q#Fh6Kw}B0U{`##->; z!bw>M6Lu48V7{uAOMhIqs=6lAn@6Mf3CV;ouo%LZvz`zn@>=`|;$)Uf#&Ijdkiu>P z?!;=B1gR3MCsZxf9}`xS&D)n$oWFG&W4+NGXnwaMPR`Id`Y131UMR$4FoW zY=*^jebcGU%qDC19i$_VO9WNvV+#nfmC32zGsrGGuEnV{M3O$g7GiD`a3QT_l@{vyRmvH`z!AD9gdX(J4 zO6%k#Bu~gFvn=)}HmTLyBa}gXOS2jsrl8Eq)gK8(V;6eohD9Civ%@hS#oAYTcM8xX zD6d%~*d`_3rmB_#6}A}mS|d+><{@wq@U75^ec>a^TLuAjT~%dzZMNW^SJWd6?3;(d z-4Xhq@4b6z@N%K>16wUp(@C<@)jMLFdO7==i`tM~HO5*&J`pBbN&hCxg(0|PJy;hN zvhT3uS8()jOll!>OIoG;9r=dGl7!m!T8X;;6C2ss_Hk(iJDb**?ly!wk4<+%vwhlIGu6TEfKCKFe?N(JW5&HcMDMA=vH9 zX;a*7r=c5X&Qf~dL86Qwd%mW+_5R9BLMK&UGiz3@02?u0r4t&~o*Y*e&F4@ls79UT zct}aSv|GZ6r<1N_dcu_?E|@i0b^tRzH_zGWVd65WJsY0Qyeu`zsaf8>C;z#8-#D0*R*qQ{znMV<8lw`{F*&cJ;#As{s-0 z>nkBSiOLDcGl_PqN+Z+u_3it#=a&J01xON=Y65s$mLs;p0;Og`baY}9gPYtA=4Pgy zwRTSB@~ecI*156rUvqK`jJ%N zm6757RB>@m+Z#e+Pd+vI(CIYL)0}4QCssAWJ?hWnW^2uCN|vTeT~w0so-*iljEk%> z)G+I)JRzdskap3sz+0oTT%2T*wBs@H)DIS(lXyklQK7&f$0Uf6v^&E+cPso1PoIvw ziy5y&(DE$jT4B|Kb~hs%Z~a*MmAEe*y-$&hv2{X6H_yl91SnVb%<$xFx6~B{VQsEi zjD=WInoN$3j;dNrGW2G2==>KpE*n{)Y?iZXNKgBql5!|cgvxfjyV_bC?dti5_6K?p z2!0)uz6iS)N7=VBqzW3jF6;g3cjdHEvKo#EBs6d$CRu}ieUV?C_^Eo)yzcXAAMNg5 z295{gFs7oneMLkiZrOwvYF;TR`V^dYmK#?Dna8Jm!rMIHvQ4xL>TnFVC#4e=7J2zElAUR7?@|+k4%;< z%@4v8Y(Cb*@Vfj%!3PMZ8uPkw<_fE*pL^p}Q2c%VJVPaa%=^<94 z`WC{@vcIylrIaSWTZ^K8J3m$)ajg6UOYSDPImwjfocjKcxQ_PR4$1IwGGRIWBmL$@ ztP*K)-79p8$sBl*7~Dd_I3}Lm#Vy!17ZzFtip&=@V#QDBrfyT%*Q<$m z2hng&$dfkSc@8^eh-X4*3bPEAvkMq_z{?+HMvSoDn|d#!)}uvOb^K&ybWG{lQ64c*Lst75dd-YP|dAx*s5yNqXjO@%~p70=->b;)Uqmk*k ztrHWg#yClL^>#GitZamdWp(y#)WTt<>g9MF+YIwW1d>F5v>!c zZ3@boOn3KI;%1E}i_@F%?dPc0zZSd;w)|LCZs#`&iZH!xv9~DDyO3kTf6%gW5pr|md`v9?^59X5Q(gu|n zm&r`8J=s!@N~|iCWv0m}qKum@0<6aJ#U8hn%NHLL<&l+2oUAeAw{{k*6Zz~^B1l_@ zZoNe9i``UK;(d&6hbQq>_Ub>B$$4p8jJ)NeCoNz<(N24~${F5x>($ACYed&b$yU$x z3k}{|SGLL#lEhcMc94+nOCchtmQ-|B-nl4H-pyZ%D4^Q7@A8&l7{jA$j~yjyBhZ_sr+bc9PVv4+CVa~`3!eE^wi}@RQ{0I+<5xr5`nRj zBHre7vt{xP63hmZA=o|mxmo{%LQb8vzF#{w1C$7`q8iQXDfH92UvQgOzMzq~Icled z#$yySczQnwpixx3bQkC2!I8Z3Gk}|D7>XB#zf86tDhZf=;^#$@{_eC3qi1%5Z>|>{& zs~L-bg?t0tf5+{@Q}fZ*BLIuLfB*iNrORNN(C*F-5tamEZ{EiGc1vpV;pt!iP&kG} ztVyOMs$|a%O^Nn$F^fm^CNt$X+C7G;*7N{2D9XSWzz9;Wu$EI52cm~ZgUvX-M zI-~Y2hKKnp>o#xxcOv~?V7;K*T;{*z+y8C=d;i(vpS1x02?_j{NB$#V=ttgKbEifi~O4yTJgIi{(lQ8-ctK7Z~7N-@v+k_zyFt;|4Rn{ z|1kBxL_z)FQ_A-3qB4{azDkS1FEHWxe+ z6k$Q+j49i9zAxT$A8kW4q5oDl{zv8EXB|k!cK$?LI2iL>z@)U=c|)Df+D35BlTTn~ zH1n1$w2Pa-QORbuMJEM6e}Az++mCW`{buRj@D=*kdT76J+p;h+viX%g9ZxofDTG!+ zg8cnkH-@ueg34m)cPxn4pDMnMP0gm4hA7vcX2{&Th2gUl>CEx|0m$Euf}Y5pjF)o{ z@SxEz1zXg5F6gtfnNRD`0BemeOz`5E0GTCMIIh8sXn^J+=qVC>G?Jo zciUkWh^xwr&2b{_aN_MUrP0u~J3XB4>AoLFH4mSn7zRC0MUv?0uhp(Ed8XgTqM=Ph zPV1uev-%txoHSPVm_4D~U0i^m^Z(1X25)rY1O)M<+be}h)>7UqNx!h~#`>eG@F5tl zjc3~Z0(e0&h1LHl(D~=o6`eHUPNu(q%de=cnJ;^yY-$b@O*CYW(;MrykMFnEFd>3Bf?rO9kC4Y)L#hvr8fL>O|9LJig|6dS^Uy53oY&p1)kzr>og6;2~FlLRA) zZpHM1dU?lOf&VYG46Qrka;ry|d{#A(^4o%;&jTI3y;g1mOQl02^L&AUxa1#z+2ZpE zF5`#yikH{DH;$=b-`jCfh%&V<@lu$fT*bs&t1{VlrH~uyY zKcZe$Y)$c7Anf(rt`9`kyhm;+XJR`7N&CnslNVKFP15*pg;cMts=4kWYYu_opaz)l__J?9=DZW%JO{O3AI9KI3KQ=XV|NT>_?BXur8EKR@UnkN!3v4G{L>vnkE) zyt5gp;U&rv1ph9-_dl-D|Me0kYE%=0R)@C_Ln)9aJJCcR_Gkb_RQ{NkIAokbfQbfX zOtGHj)*|w(x~`rdv9aX5W<@D*W@Eb-D1y4GOi!nBLBExRW|{BxHi((ICi{a&Exf08 zVQXX4!)vls!A`aBy8LPu1YP*R0+iaR0XkjU4|Sr!#FX1ETLfI7dj8OE>$U(=h6ez204jQdT(9j)zZL@jM@>coeK3QEV*U+SG$Wx z{kZX5X@tI)fpqD@Jmo}rH`i@Plg$(rS5!`ou^P~=Lj=f^dd+?RFtRM-Y=hpAzwxkK zWEBD4Ymd#|B~?cAOZK1E&3JVYyKRHdaxpsmWv~{OYAASoY~s7m_uBBc-TDBzz>&K5 z;aTksQmI;P_gX=Krv$Z()ASI{oDe7wqX_G1?)3K!>R+fZuSDiHY(2Kx$%Ac_|&kFwc( zllP=}?xWfAn*ypwzwvuo4823QMs>0nRe)6O$6xfVzb;A__r#wVE2E)9l`5P&Rl;SX zPs|qQjgG)b7A2Wimsc#ic4a#S!bxX)lA!4au=Aa5UvKlemBbeGPC4b&(<>b+Zvzp2 zBw}!Y{A!ezv@G{p@mOsD279uP0gLoy8=F-;Q*!)$7#isbA4;mWqxhM8(%Bi0I&4nE zWY^bKanu$U_qi$TaJnhZTVKq6N-!LjlCLu6bu{VHDWAOg4((Tehc&bP==k{f?m|-o z7_nCZ3sx>@+^U^;u;{&CrfWB!bQRK^>uLVUFDU5hr+_Pb4=KVhhn}7^rqTR_z#-Ms z_rP58;w<}=i<&FF@o0zkbn@aRqj{ZGBjEYP#znjch2YTT0GK9xKd)H$WM4VTAlfvX zYEI<=j87^?njrD!Diq{hzh6|0-r39(nqb9Dqc(adggFobwcf_Ivo2XYI*m$iQxi9~ zKPW!*5t4}TWuUHUq7~vqG{l2un}w^(bQnT@T1}SH=%~IO2Z{1&Ij9o^0-3MZYYn8WopbE%j;7UdlIwjF|J*BG*IvO6Vxtf!e2sag95N=kmWFpm zO-)l7bV5RPYFd@7JTOLLO)-WQ1ua`VTU$uIxBz)I(e8GorFN<}u`7zV>82YEdZET0 zHfQtJiMNSqeC96~en}zbUx8wGp{q*$)YRUzr9J}r=?Mztmf*tOcKeUwM0iOuu#$CN z8c$?e=fZqtbH-D-OXPN0vbBSwBNC`2AXVa-{sXB!%zcaiksaZ-+Lwd%9*aD6?Uf93@b&HQl}>{bkv>Azi=W+4 z71c9{$k05B^Vv{=H}2iV(C9s2Y+&BTyvLRPvm|cxH`GSEm(_>_VV#DXpfJ?+{Z_Wh zlSdILM2zVrtUa9{qR=&Gm>X@`PXhey&Qoaj zot#OY^KS+sgguwmBE^ZkG3E50Y?bV+T`y-ZqWE4hn2hR|yEO5f6nOYwqFB2TMPXx$ zBJmS$8E&8`s%F%}kUi|IH9I}%qZi_u%lA@tM|U6B+chm&SzEAMEd3C_fBs^`3N$tn z3Ye;HIG_%4+(1QaXgg34X~vxl#DHMriG}~~@5#vmZhN|07}m3AgZI$u@yS+4kjaf_ zGo1>8NX@FfP1@_UkF&Kv|8J z=+s(WOK}8bU4|o{R+V&@>1u`n{(2DfSGbDKY)O5+wD|1S_M{~z&knIonFAY8GXgj) zB^+Mo2lyghlM6Rpe)q1eZOSUfFO! zUss1i!uqM}`^!^eK60X42hsJ>=H}-Aaad9-KL3la(kMIu6pBA~5`d-(xTS5G@>sV_ z4b02t`P46?UshC9bVO1q0N#q9Yun5mx3a40st3YbFB6jHwy5!UV2NgE8~>?l^F85u zUcbu;@9hh-D$CUh=>WgoFR%ut}8DYfE>*(ojN;vS#J z(JD}5&dOYDn-T|sRsH66Jml19PaNqB-}G2BYn%8D?%Da7i8msFS=iJhgpLkSYM$64 zWNnaB;veLL`gX#;50#N@n27U9sCqf??U3WvTC_1Jf=W3!0tJRWx;Q;3Ppu;ndCny7 zeo@9Yc=b8Q%4KEDq$OG*MEj)~)+mqHk|6j{*KPJlsI1J}47S%zKwY`E z!f=1_mva;Uybm8a8Q(s#6bE_!YY(+d(fbtSCchgS z67S%-pyN&;l}}gQ&w2;#@|EgI*HqTzUc5NVE6MuVP&(bfaM#i3IR z(@euHcka{npHCXTzXzsE)j=xY!!pSb86bCV{_rtyK!QK9Rh*eSF|c&yNhT29ab^u& z=)04?eUoacbK6N?4EP=uMH7 zPq6{6!_;Hqhl^7k3!k;WEABm7b1S&RAD>2O;Q3U zkA*bCfz~-LRSdt=C0XoL#kD}TGC1k@%A~EPK);gsYWo$$D9wjP} z)l~k{wYB~!7^rCQmw{vwLeO(o+w( z3Fxz1%}TlzN#_)=wrNQN#d1N=4Zkp2IqH$3c;rZbkA7_sNfF;7FsC-iG?PP<4JS+W z0Lv`L{gwzTx?9{qTdY7eso!+V@67Sw&+n0ukqO<(ZjO1waz!CP3Fe*`>cmhxZpFN7 zD<3u;Er_Om+o^9;Mcm&kdbTybz1kh^tYmevH7-*&se)OBEg}K~DjtE&s=w~nQ_e<= zxBnI*6J?V7%juw*u>;?&l}DIgVs9njLtU=?#%~Q zR#bfP_uo7@Yu6a!r_vK$^`?Gf*K}|bpzvG)4m-;8BG7BgPT?d5zWM+@Lg|QT%4Vo? z-kA~rPBso*JFRVLb5egCjDd~x=lKws!TXV?4eg3m0z9a?If7H&*CL-EpqcZyx>oDu zm2-2OZ8#V*+un~|KdD8Pc&{ngHN`_$C_xsk9A?ryX2LWtj z3a0r?RC1Qv6wnomCO02BO}i<%Eb_R%9?+kj1$LM+KprU6?h&&GA+zuhV)P7@m&%$I-GlV20xmswwm0t z_c6t~mqkJEJW6dA0=*K8(tcnm)+O|#*)~#EhlEGfsFbhH;k5olIMl43Lw>d`l00q> zx^#t#6* zmex3g9QCi`KOZ6XXQP^-2Jqq=F9jYWxa<=Dm=^FcL;;G^4eWIBTgZeA(QR3u_Sw<| zU2VxLuasM;_M?bXeuwUHdm1X(_JLK`XFLKYrf1mg_lr4%##odaY3!Pg;?O z8R<_xZMRE;Vp8s|v@}fH9INnb0Dw>zWus%aRb1)a<46YqL)+v7-xjFR{fN5A8-~W{tF)$t%~ItQ&rUAN@pGfLNQlfjY>`ByYF+{{@VvH>DMnz%|4(; zJP4{M;qLDK?%i(y$nNd!6)-{9)6?sWJOR=hA7_o{ii?Z0B_mxYhO>svaUO_C&K+x@ zPOhqb=meK)@h4DKYJ@;cY*W!bJX~H_7~&tSR$g9ikio84cKO0}xh?U>4;53V&NNab zI%`2e0HQyR6*IJ*^m%h|2c>3`@rYYk6a>{ZxDBM2DHW*FL>F{-BxOa|YdeK@;d-WX zeEQ`_qqDQK<9WK=xn3f)!mdb~&qUGIe1kj&;!@PjNz^Mic<+(D{l*mROj$+cc-k!e z;{2ghd;<0y>)zhp@87@m@|sY)4>y+zM4H{R2Sz!4uG}AZ1R9lVlH{9PSaSwLB_mP* z?>20F@nts`_ZeH8@G$&Kj-Rf(In|=j}Ks{l_b$6goUqLkTBh zx(c4=eN3f$eHy^zy^nJ3VqR4|mO2t{p!DP)2( zw0SoL-1=dHjubo=)NW?C#skpI*u~i3pfZ%V!u4Wk^Q*n%gJoUnPZ`VKRPc1`=sk|! z1XpY4tfwAY1S9AqWMjdgNIimMq|J8PkWaJcII+O$8#tjVVfR&tXg*Uuwa5g@&*Ak&R+h~#K3;YbQF?5v`kgIjx z@fUUFMTH1}Tl-$EP=$*y?2i{s=14_vkldQFm7|NFlElo0w8qoY5iU|#{C5cn3Oi~Wdbwd)DRIC*8y7pf7py^D4H z+H2DcUQxz69dnpEu{&H5Lx=569pNr{n>3PA4h-Mi00e_>#pZjJ_45IWt{ zEUQ&7>*=2v@FF3}|H%$7Th7%x$2AF*lG^^DU(c=4_LA3PbYEQFmq4K4#xtbZO6bFk$-B;54TZAqBFZm?S&GW+*{?viaz$M8( zj8F5fId-OZ@*zD<;1cNMoUU=a9Ox}`mpmHi?w|j>(v=r2DeUd!Y76g6d>b1gPYu6+ zF41SQ-&mzZc+p2RnS2nw==bM4;LX5W4|+Q{5BuULC%!VJZTfIDCk}`PRKHw#0x%@t zh)$A!iyGMSdK)0W*+3q!CAa?uZ|zw4b2{c)55iC8jyP^DGS4gPzd*L4U;!26QpZUa z8C!CH(mNH?KwOu{P8T;PCwdT1g7Qg>uL0o`ht&6P0kQi|7il(<&s&~}Y?kt>APtb~ zCdhYtCdoWrdz4V#5w(}d7TluA{UITa&(fKC<6bvQ?-GByA1VUtPuhu)q~$lfQM>tb zs>`1n>+`#7vYVGu4#<13as$50LJgn8>F;;7;CVjJnHQMAyIyf|RqwyP zF7ruAD;SR%4- z&L<7+Ee6Krg7u#%s;i!REZv+?B>KaJIb^NJ#mrcQQRG{uP0i}rQS5I6Tq*LrKZroB zHK$Qn*r6dc&CRVQ9W4&juC;?f5zmc%4S+9Ka=u9~dE!#efdSO(m1G1^MPU|b+qF5G z2NXaExU-VRC(H%_U-tuFxyQuC0oga_o(BL1QrFOcPs*NS)q$Mgh;Kq2nLY|ldd6y! zUwa(f=FjCaAf`9i4BHNMz{hv`z5*?y-F5N(B7tpg)`=+A2XXHOPrrKK*raFm#4VLo z0N*9vr2#Ll0kiI{C7!MBb>@6ny8)gm)?^U~mL|QHh`K>6njS+VuG18U`#U99cB~cB z0ojyRRaNa5Dx4yqz0;c$^3%Vxql)LQ|B=i`#Nq|jJ4D+p9t_B^gp>p|*|vlUaFMl# z1@?~Cmg+}YFc|t?t_IT9y-nzsxZGM1SsOq>XgiwhtQgKpvs2~rY~y;>_bRi|ndMqvhNkDKqZKRjNDpxX zQIa5#q++NV12R^(A(I1|D52Tl%!nocAHB?$BPQGX8v@FB#KKZG-+=EH5VyDB?LPI> z;KaRQrR0HaOTO}vP7s=3E)b>FT2KE-LUwy2Je-$J_hvN=&GK;Z@NznXp`ye`XR~&| zS3HG@I3?;jT3XY_+5WvHV~=e;fXGO%E0M$O>gsB*`EqYU_u^>92pKqA@N&j)*gS>P;zv=@wo90DX#3GZjjUx5 zL)bH_yAA6;klUT+<>keB&ikGJ7m&uR*IyJ}OPNM1#ss~){auCsv9{pWeh6pZybj0k zmNWuzlg|UD-}5BZE@}bnELJiU)5CLU1xNM4+q*2XY$7}46XL8VyFFEy|M_$SxF?4G zgcp4riMa)Y=9><`EDw!fsfwq*3!W@icEg$eZvtUlLFVf_3kQ-^Z(KIdcXoHPQ3oeA zHnTUCZne@*GI`e7O1_T38&9axYHDlqI!W^Q)KOkj|4|K|fn?G3LT!L$V=vh+)FHpuQ{U8Ey`ua*W+ z&&hWU+vQ{j1tsJIAnQiqe=51y{Zb9BqmN_Ma=iF(H;5kSRPD2~$;#+x2PojTLsG`a zQbi8z#1mSN-$BIRJ<53V;^SG~gsS4Jr{VZ8vU=vPwi;p@Y&AOMliEfN^ZK=Ar3NmO zMY|J0&bY3%xijgx_?BOpI-YW>&V7q}uSxY#_)~tVsk>mSKLXL2`q`t7qwg15YainJ z2%jbzEI+`5h)4(TK_9gwghr$#+twF&>Se-#uc#4c>;^4=F><|s`0^_&JS*Gm>ip2g zi23$(NXg&IiQx9=afj~L$F~O&n04lv#4|Sym_FxrR&MA!K5k5Ct1_rPD&g}nG{2Ye zUh8&c0_fZRx2?mV8+BEe{p&3tnCqW)guebECEBm=^~orBJ;#GjpYJ+kBc_OyuV)S` zZDoG}ydqzrwHkW+!uJpVrs45>l7El@5PtW>ztO@9r@kX9>>m#p^hx~pPqM-dAKi7K zxbH+AhnAUbadEWP8_&|of8qd?sJShA^Gw{kl>+scjIQtXDUc!-p2&=x1rj72gM$7p zqPHwPJf-x1fSbf>aR0XLV}2}qn>%4W2I#|6(=%bgd-gZ^wssr<2s^0(n032kQgetvcJRbBoYSo#^`iFV|CdYD^STZSs7 zZ+ZPwOkdfE?+Cl);qKr+$ZLr0EAd?0{{tc4j*5^zrRE1dlg=w%&E*aC1gh?+ZzjEr zw8fa?HyWX zW$~CCR?}o-e@c8bD*vrPo)@D$97ZZb@&9r5mO*i~+uCj;NeBrRAUFgIE(s6_t|7R) zyVJql5}e=~+}+(Z!QHKKcXztaB=6d5ul=2>UEevssOsvPJ$dFM_Zasz#{5MEjF5!u zXIjo)cfA+~3u{M)u8S-7KKZhX_AY^GJN=_bZn8LzT+x)64{<$4v3&kAoC;3r?_J2u z6AO_Mbt3=HtPJbUeLZa~mxs#=gEr!Ak;s5Mj6goawG=UJED<@Z0y<3U%H%|wj^KJ> zEh&aPQL}21HJ);cugKHvGLESm-*Znu{M25rF^wXHZHmxd(&!ET`8$q8W*TwS zG2aNW+3G$-Y($m>bIZ_Rvr!$T%ESky$7(UqH640>)oJT~^Kuo5iM>Qyw}R&M=_^=G zoS1|1GVwRvbNX2+bF0PlHhIH3&&oG__y~G!2&o#>F4>uei92ivmnYRRJ}1)4mWs0) zJeU1#q_y@rY~6Y8q!7CgUIGKD$3|H3(2-MWz}x{x01K(-v@q$@)w}UM@{~RD^Y$2; z9vj7bwMQuHY^_3^>lX)1QN+XcYWpO90@dKJFGUgmAfM$HnvKkqeH0O=DdRY7snQK9 zlHgwDpxvFC=+u{3E1G!xUJ0YmP9=TCof8u;)#ggr0H!6A;SfYxttroUskD{B-tZ&% z#31J^UXbpJhvoBLRy;8!GEvBTa6(ud3AobUQ0hlDwG3fi^W#`q6e|6fvSlg-iXh#8 z=Da)X@!D+@SBB?u(q_F|3OFb3$a`#5x0lqndBKy5%;(sFR$^=j4C5UvKZVh%WGP(I zCH%8;!e)1;XZ`&?9>aq$4ykMXw!~BveLE%aCR6(ec!$K^Nc4Iru@aFpNci?zM>T;W z?h6fFjP*~040>!Ms6N8!zBZS6dDeIjf1Gqq+*{_+TPF-Jyg~X5gzMHNM7dP=mXTG9 zyyg$trB{Xd#P0?jc1mK~h-dP?{;nF-klURJ`Bja&p&27eId`iogaiM8)akDq39r}` zhCFf{Mty@&d{#q5+)KBQa+9%*g9n?jUm*>~|g;tB6Buv^e7d~XO>^D{stvf(;D zcCuk}6-X|KnAYwp$`s#9OlyAIUN3#^(w*)2eu+hfU67`i%uggPb65KfUS-loVt@Pv z>!n>0K?ot(nx9GNL>(1>D4jqCdtDm*Vc@q z;7SXN>J=ea|2716_XBID>vxm^o;%h&8W;qMt3Hgu`_77ys zya!Jam#^|8TVC3h?o4Y2%W5q2F>D5hMcFNVbaX5$7XlMcKMlP<^BVy9k9cre_jme& z+gN?$%j)3^;mQlZ+Npgyiv*M*$Vn#ZXHpR+-mK1 z!6pN+jnDF3QUavgV5Eq+tsHLX!0F@K2DAuEaai*6(91SSaawJ3*avRAX*i#fmOy?_ zRa;%_Rg%+8eEnIz;q%FAP8fu|+Z(;rX1M%RP9$#Y9ku`Z{im0US2(DcsbxPH^yV(P z>kb^Q^xp`xPI9UmXh@@r=&jt*kbf_f^1Vw_t0nj%x6>piYK1ZPQYi0~{4Qe~S7nlo z8?0tD^5JlsV6T*!iC0JAOULt`N*=z!y@f-p;NFTwM2aESG9uKZ%z5(kC{m+M+XRG- z4259|q0AJbg3_qbQ~Brgm&pwZ2CH#z{sw*UE86=ah3O(+q@XJj=X~|xQnd}iK2=#<#}^zTM(nzt z{EhWlnpuA8d||G{_#M*=R0r&Sl$e3Zm;Ir0?mzNQ3E2fvaw<)b_&02K`Xfod5%$Q< zS#O7mlte3)nDl|%7Wu=F5@&9PK9H$V(zMzliVD*)0>k)y)1~8^>ox8g@9jpkauT3f zbL8jhz{>yxf(wLpM~i^$55}f@ORwsEDHxE|+6pz{bF-Yx?{K>!G?X)dL8%^gWfr!F zlK2dJBf5^ARuTAO%BJqWMy~7JEH_^k^=uT$scuWVo)58;xNKnb*tj0-ST3~g<|e(D zOz`%qk(KEd^sBpM{cyX!oj@0h?CEg%jb6RlwEHKXPyi|st0_8ZwigWgcz0Q(?Uua- zt^b5WM5$3{?Qyr;)B3RaiW3$Ay9w{v8fvm>_l8sDc@nJ-*o^A@qJ8^iZM^!w(;0a- zHlklR&LH=)F){Qgc%uupyp+pYt556~!L^esWBaz!jwy36-+a*OvAELlqbcXw-r*sM z%5%Kjf+`j1Ut+l>z*t?j01+*|&hvs)86jgGUZUS0yY>cI?yyN7E=0=btKtujrlj#;sUZ{(8U)Q#d=TJ3XyuJYX9wlPS0nxk? zFQB^4FnDUog4Pz>?d&zNC}db@LY(S%UCP%W zRm+pi6nM}^Ye69QDxkb)Ix|y9|1AddI1SW=!)VdN$iHuachjT(rLWj(mF==?3{z=O zxMf~4;c0iz(=ZLVXPs)sPM5D&ylcoqKGV7nmqNoUpN(-oyuDM({YtZmP4#DH-WcP%XB@?dj)x6Ko9{$)>9;CuyJpIY|?0Uwuzs|10sv=Py!7r zLYuvWEk0DPU96$%RE@I}u;uhFv4W^PRUvkwrlya zQ^)7@1+fih9D{~@GH8o@WMD4Dlh@>9UG!LD#5+-|re-vC7awWzu(f*Km1t|?cl9Oc zuygX6eFvuuhoa(nw&qbfkXR6a2O^P3wBIV9)jT*cB#d${>^~b9d&5B=xOg?o z?-;GAa2u7{{d{;se^7+T^{kJ|>ChEcm6q}@ILmDxSI5QZ_U>|jd+?V+=w(2GPMfES zj>l!f2LoW0V@h*m91_W-K1@}W)HXLB{3;=NJXY!+dSUf#u#JcN%E#@M%Uxp64@M&H zP!;KQ~{h&ptiAv{ZNqMaR3qq5NBVMCP&_; z4LwxdBdg^?0_T(c8&BukSOb#!_-;C?C7XSJHR0q|s?Dv^&6=Qxe4dHo%g^OZWjp#ibEU-U4CE*l>{L#o>Il6Wemj{GIzKs? zeOD*MZS-Hh2;+L$xQ@hyZ+1jrTCjqqpqRjhhq1U-idD0EvuBidQiE?*`#^nrWdrH-8y^xpluHoTzuaJWe{r~ zr-Ma*vNmihGD)qk@$AW_vB2SZ4gwcz5b)k|DAGb6NCZ77Mz;Ry1?%Mg9QdK=Vvz3r z1jeRWd=XS#B?sQp)!-{NV6z67a`wsHV#yVY(7IE+oOFcVJ&YztM0(wBY{^wX(yPu zr*Fc-ZSWeYWH=-WHJrgN`JKrNuNSt-IEX|#-#%SalNy4T@#uRF_k2WSOFcL1B+_mN zH&sHm9jv5z+N_r%94tin8h7MC`={v()Mv74fRA%heoFUx6}__^_3|?j`j1se*9c zGvZ&=NO~Zj9-{8od-qmkK9n^?7Ks&-QnYp>p!d;=?Zrx!Ox5qfD-E=kCXunD`G9T294g|4brl4Ts$x7c1nrxKZ2|FbWNLjw(=Tj zUME994qbV8MD&ci1SR(2e-hwXJ%B)kEcH_f7OKnK$0V&h z9*-n&EArm*6NQV9_k@0HJ#8m#F8eBIuzRlnWs_U=mT>Mqw7g+(>+KeKIQJTdbU0Cp z)dD-je!}-9=823Gw!zfMrP^ArxuUpGC_F#LeNGe+oq*wbq4cC!toUZagU1ouTLyJj zgYKUhfP4XJ9?-|zykMS>cQ%AG+DbNK@SNg~$4ihhof%$}?fU*OBCf`qYc%#YuIpMb zk!|-g@0_g?7>ns>kjDPgx(5DO9I@Q~*_`^>w7T?yoO=`L^3AWjv+UD;W!pKc#8E>L zQgsYtOg3#e6o{vAKS_tiH8?8~^7)>fDM zMkUF0HJ)+z??A=L_E$^$TOCAoR~=Okt6NT}+bzQDT$wj_7F#@ZO+R?LVGx71v6-RN zH3~Mb%S#r}lIKp<3~YkH%G0CtaY2?Sh)Hyk@;lxp8zWC|QEt#5fv4Oe2$M>hkkfuN z-0NW@;X~Km_3`rQu-nyv%l%=A&P}I|ytvyi`lp%5nh@foPcm7j{h}IB^WH|jhXGhN z2uSGfhA_4D?-ZGQ{x-m}{V;VyGrr3DQTJ!-N|K33bWy83Bad%uM0NNe0#B&3Cxjb>+vs%so6DN061*H>(8J@r z$>wp3Ws!?rzX{Yc9J5rF@?I!+YdSy}?wMk`J)5li&aQbce=&J&hcGAyD}%xIcY_+O zELD)XxkeV)8P}_mB1%A|0C`yr4cIx!Fl_Jckq?z)bCAh>f4ZscXtJjWWgkc9b_x!5 zw|E(iDrtc&qvcivs|iT0xBS)<{ay&_ej17%^K(??9&S);cIm( z`{8!6IWv@XI*EbXO=&H^T09F# zT7FziZrj^XS^%VT202{Y_vs(6aUXBDKXJF}b*&S8qIWscxWK#b$P2r9ta9|KH-~5} zfI#?58s`gjj_YbWKQCHInvp;tlV$fVHkkWJ!$K{5yH(m-KJ;!qo4x0#iEayZd%f)| zt53i6xwD1M{o-iO}vI8vU{%Y zmhoIf4?IV}0tVuKqK@wd(`>>+=kc`a_|X43$7ZGrY)zBnO}gIxK41N*MVpq+vMjrD z+x8V$=QZdg6}D0XtKaSNhh{M~L3NIJy$sJr2itP^)Of+%{6c4=l1b1TC{HbH)$L@2 z9rdQ|L86FnvHqx=;KhUKsYxB9&7nvc7{OcNJuK8)rsHxkRoa#QrO z`?1IP(6aprldlNQPUA5h`!mw2Ey$oxi}x#gY4-{zzZN#^?8;>zq+2%HyMQ_~f$m12{RoQcIt3SPMw@Z7kcACPyw)?%@Z~a4<5NE4uRv*&1on~(Q zXO5HB9}X2v9diNmda%otWRb^|_7=;HBd4@G zAIJ6Z9;P;8-EB7%9461The(vU>#~O>kG?;Ajp;IZe()<0CZ+`Eo)S=bLn&jMHSxpZ zF=@|LFL`)1WVQvzf*S}UVb@-;x^<7==e%zHW(M$e&4=sZxmv8}y+1E6Mwai1%wSxl zjd~`MrWJ3lCC@vUq?g)qta~>mUJ%}Ll3e&SIUaVl**qr|7jRfEV@!2m@ zJnDcOEOEJ~jO+ApG`XQ9Uf(v8&2T)7=aqDtplcsS%ZYU_ShX@i%<}kLXOTk-_@KS# zTHhv2dS>7zQ*uVKpc6^8OG^b=&iiu?4)Jq1p@`ma2Bpvk5!k~@75EVP`hvvkaw8HX zE1IKlRXkVwB3-6O^QCU*b*sYTwHXQu)kXF|Kq!IJ?-^;pz56y>K0QN!;|%e~uQ=`{ z?#;`VFm^h@W`#!0v4qd6jG9k3j5j1PKRH7;IA~Aa#}z5U7cVHzz;;ctEkoj?+eqzm zkay#$3Qxsd=Ot5#=WdRQ#0)Rv5^Uu$E8~cNhY(cm6=YSl?>Hqu1Zq$9f9}oc?Vo}& z+GpW#IJYdg|LOipd39SS`K;ff*`Imagt- z;B5^09Lnya=mJ6i>qm65ViK%jFkm)7Yd3S z{`vmV9fVo;LCJ*eVVgVawC$_s1@tIu^V80v7r|LzOm@u1Si{pUr^TD15Y||Y1 z+a}9-Bs1y`VQcqBwBv?jWJmRWU>|mwXOKy< z*)?Hod#*DH400F)ARuH-q!uf(T+RF#yh_~|ylR|gPufVlrjG=EjNGiq=-fMunn+;P zZ;lMz(hdH7GVsYmBKZpb9w&LC(`C<|;tt83FmSX6KVK>$d%owri)grsL66 z`&GXzF_sbqX|5KHB#Jb(GiybId+N(ww8<+H$8Lr);kuOxz}>rJeYz$l_(k2c&iTmo zYe*gVpV(k}$@*A2^=w^D1s()D?+N8q%Rd@^x{D{zGK}JsK!>2gZ2ijf5tvqsT$au+ z+)5L;jW)BZ;8x^7_+`JxNqte3{u*aP>=oITs(NEts4VA_6C+{DQcpJ7w+-5MeT8>X zkjevD;aW0TK_u+UcgL0rL0KAlVKRnK=A@wsw5v`=`-%{>cx7gDzftf4;&r;IGNtp4 z6qM|7jQ0Wz2=D_`Q4NT|ey{cOpfc4XZA>gn^j@}&1 z@j5!w;Q}S|r-M0qYXO&7QN)3%v6HB9oTxxdd03}5yQ8?Ul!B5EVTGNHv&e*!UsRkB zGtXZ3&kAnFB6kzf!~ngR)q$6Qtl^oVkw`1iR@eLGvcHGAZIh(Yv{S+Mv@7u4ZxNLH zBN6GSS`zrI82`i;!H>Zr_LlWV5D0_IKm-MvKEo?I2p(!Sbmd_f!4ku&ON{pA4vzXx zw21(4B?V888&N~TtMA%Z$;xt{WNZZ#oI&qms6XtDV<=kmQD2kYKhw({*UZDKVa}fO} z=P_wG@0?V|(-?X20#o5oyYK(D18FKN*(ihFgk?poniM-)JmqsbQIg`QxpNd{TVAVL ziZ@@mKhi2>$DC#2v4DDi?EPfLz$&`abKf!}qx1zFMTfdawRtjIMW1hk7_43c&;*kr zvJnMwk)fbhrezb;O-fXPl)&>v%BYMM#K4~l=nbZjr3Id~Nczi|H(}9>#cD1_sc$-M zd{q*ak;*4o41Mxq&TQ9RgXcG`JWAhaY|(6T6aweJ;{YkO^!%_{DVu!0jzN&`H{WXD10TGl+4)Ge92kxYtj2BKa0VoL8A zGWlOhb=?`8Txnh&Ep#TZWX2IZV#6Tj?DwrCv)7Nhu<+}L4;oE1#Gp*+5jb++uw?3B z~r*!Td@j>P4d=hx%Tx6<0}3Qg02Tt=}_ zLIGtTs@)J$<##_?a2++cpUcb|xuHzVSWHHXrlRJfL$qcFy^Z12>q%KDi@3VWU-8Kt zPV%CPQN|ew45#9emFPziTh!# zp18M%#OqNB>N&4XJ>-=(|f;1P_G31LXOG1XDKaojl%gQ z7|??GFT;!R0{{Na*l0m+(IBgoQ1taSjUdSTYog>24inC2@3J|&=>N%fAqA*M{U1i! zY_WphbFty{!=4Lz6f#+EDG*3IAKDt&vdvBzL>mWqF3+exBUB6tSsVjIaZK%8(i!5% z=P^{pSyLcHkh2ITGLs4Y_~}|z?WP^=lqLYZaBt%Uuj2S2 zKQ`Ogl{{pFCgj0ey>#oBXJ@_u2=q}#Vc`YRf z7YwEoVgU8z2_k{>1d5#ZdYFH+V3~0(`KO%)uv+(!-g++Mu*S)3+3#7463Me z7k8aGl0Vnt`(%%}I=^UOB+JxWuLQjI288Qtf<-zR{Y-!vC>~wy3V6}caipM1A$F<% zoPNai3pJde8OC#A6$&LPfnH~EknKqMD?0m{AJ5)*R~Cb)^=F2JwK9FhBGc+8E0YZKH8~BdSRi&n6G)uwIsKw;K>UsEU9s_ z^ic{1z$xX8;*d=%dd(tR$GsA{kVwb7S@iD3r98kr;UEOK7;`KUn&3?8;4mEEodOtc zah;fgNJ`utr?26Vn9$$jBcnAJhP)O|<&V5!vQ|@yDq6N!Gs=4`v#>g0OHe}1k0JM!pTiUn8<$?m&Wuo7=Lo|bR6O_iQ8tGU0+q$S zF7H9v2uydGI+nudW9*Ck^nE?h^v^RS|Koxn8rx*u?80p)&qsvF0iQ0nexxu0XEWKu z81{!zc+n>U1LGoBLZFL9xfA$*V`_04mbxv6vTHZPdg8U`ZFY0wuM)>vPC8%VXt6rO z!b5OiGehjlOIdFjdS~`LHh#T@b;7nvba>wX>EXP_ueDmXpOC_QFWJrq2?+N?2Jf5c zpQ*k=1m2_Jy1yKnWiXa0!eTs#%W1!pF7N}1^zr`sc&3b`$L3H8+r-W-F`XKwOYg=H`P6SQ+C|$w)hwu3zW{kd_K&BGhd56ruD9Liz|F9BQM$JKoLrqJnhWXD z0a#{nhjhn}(7l&V5BETUaNOfPQMB^%Jw#`lD#dO|Ohen#gdN1+YWpa*oeY(}FkY7d zqjGF>6R%{k$v}+aw3jOHBY>g(tX-i;0BSF-TfZsMa>fTxu_Sah+HbTtPdpRI5xk80 zV+7aX4X9mgqLc}8>i1H}JB|0{bQuf@bT(D=LbFtd#r*LV_~`kK>0{zyG$W5e`w@E_ zZw>T;3-Fv*g!b$f8c$~0JTH9GTCaL^81CfIx$CwJxY3^E8^CroPKm{PYLT4H#+TiV z&m1*6otDkCS4&W#_`v1SVb+#uwh{5FpLZVF4JSD+UBI>J{OY=5&kCoa#(duH&2rh) z_ULCuMYI-6;4gh&RFtrXS=7rBN5MhWkYRG^82i{U?{7 zg6nW+;hMe{Yv{Ohvq#PH6NLOQfrd;2gPPPg*fqk*Hv2`S%ljpv*Ls6I(AOLaZQDUB z%Mvqmd0?H}h})b6uM~vWztWRiH#gb&)JZ(J_3rQxZqA42TJEmFZB=I}82#C#kOkP% zCk=dje9yayG~T7bC)AA!nRL=(6JV|)Y9vFRkJ$KrT4I>~Pv*)TMsV(eF02;Po&VNQ zgjjQI5BkAZg;h(*G$3A)A&O$Zv+i7N%`Y8K|K4f~5RRfBpI80<@E^i(-X_ZhOZcUB z*el@HTP=0YvyPdx+uYj4Oj5o4tRd@5c2F*v$2%+U==V}2XT$yR@vU}un}5fWF{S#^ zFJ9+sfF|c*cGt1}0*TjI)=3J+HuO*Pt1q7A=3{Mt7;qRSr>3M*I4=+1123ca40|{a zFRPqZy1Gi)9{oT_KaF>3{+ID;d9SwDj~Gm!XRKLH#we$vFtDq4{cgu-M6SsWk4d5# zeKJg*5zw4@qO43?VvMH9XdqxPWJ~TvgMqDUy*&bhs^xaFh0k^M@DNmff2abyO~`FB zI~uf-Z8tnebh|IA#jA$|dY$m}6lTVN>9Ok{^Gb-XWVqEBssdeGG^=W>TuHPjO`bL$ z>wE(EB!9_2UT^bWH^_MGDfFnQQ2~Y$fDhhxV(wf{F+D}<0RE(9GC8qU_AiD^n(;rx zWD2+W0Cx_d=%p!)_*Y&~40@-H;-m)K$VVAWVe;M#GdWNWcTV#-w{@LlgO$?&k5UAV z^=!59DoxJ!JtGhhUaYyK%F|LiDuVd;0u@g~y4SH>c=Uw8<;18Y zS8sg{>BaKfbM@yQeby(93;J(M)75A0-^%nA@1-o&%8;j99LvRh>*Lrp$ww2|IC!89qBl4>|*5+gQSE!<2! zUvHHTeId&HR^3qX*c{;Mgsz3zX^Xh|iDwz3|AApRq~FPQ;q)KT1{lwD)v^49+?FFUs>IuqO;KAYXCKwa)s<}Hbt4;MNr zjoq|Pe;BD$&#ynYeJ5{BSP9X2(AUy}*r-o`w%aP!YI0of4ozYQAH|L&O-OTDO<%mq zmHcIES%m|v0c~In$gLf~9@<`|onw+AVSx-Mur&E-Bz+uLD?t1dQW*kKEa@P62P{8a zxi!}J3fdoHqjF4xj1n7Nb$#F^AjULx5QsV*Sx*X@~D$*o! zCE?PeOB@^%q7LH)Py01~-_I5{SU8_>Lx}Qz#Z5*Jz1oB3U4X;k^fdy$@J|6-yi zOYd;lT2J@%n$=sR85YWA&F9~%0k6i;aYmLYFwAj9pVxN_lE(UILD*yS{g*jl&k4r@ z_M8Y{&jGsT50u%A-wZ%+rVe*HQG8Dl2^uElLf-|D(H6k>V2D3sQAsghEX~!dQoAT^ z&@f25s`mjROr~d<97b$xhyVua{ER7L&sx!jzL7Sb!OwA0-K2)lYzzNWm4`%j=I;Co zt~D~?&b{S0Lke3DOn1Wr{fBVk7si-jNdNKwTl6q!HQH|tB7_XRWrCI^fm>UEa9ePv z-eBQMiXFoG#IgT54W^9C$M&oO#}Sosvtnx?=@WEq>H+TF4PQ@Jh3Oa&PaD4`0*s$@ z0pAEHAa?d=!q@As3WKW}db*Dwe}K1Bx(%p0s?c(sB$N5d%7`@-;FNFCy+swp*n_8x z8ain2{2B5DrBoXTVVPlxOymK%Z|4&mo(Li?$70O}c`TY#1z+?%(m=)Gvm^7Lg`O(b z&Hg|Fh}HFC1rEXS@!G4c++>8R=aT>Knondz}SS|82`d{5$aJmqraJEFt>xr#?8&{zlPqtN8}sPT7)K;Q)1V)peFr|wFnBfd|DC;m!oqiO`w<4H^NMfZ$Hkz~(YsFS z8K;`v&5acX{iTr%T;Kjf_wP6l#b@Lo#h{D3^dZ>-0P29}(uIc3)>L_-o9dn!cbTXt z#WQRh-1j2;qu9b~d9DK<3QkeVq;q3~M`3~V;oqsvU=fXV3V*?)4W!fuWrrdMpczG< zQK2t`i~u)GF^s$#K&F8l!q!Vt-;*fqFl6^zAmjNogjjDEzPzi)GZ2Ya8W*fiBPpc7@zu1JA{Aib zFa#<(2|=p*FTck!gLEr8LL8An^q2NQ;N%UK#P^rA^m5byHf?ULaG`G@{)UoJl(K6? z^>F(CAg%wC3j*XlDB?vNnS3X3?eB!3cjv5;Zv;8Qf*Tj0^i~+33;6-)FtN?ZE4@Z3 za+@Y6bL;oB>KU_rNTEV&6aeb`%Fc;pAcgJ;8H&82j{OPj6{CpaFMGtSr;D3E%Di0V z=wy$>0TNyRK;Q&33X_cBB;lo6>zWb4P*OtA2kh#~BBM>z;IMyc5v)YySoMDgVvv6k zma~tjCygJl%?}RV{ZxwfE=FFL-hqO)iN=5*QQR9Tm~8xqqb3EO&Jy6yS61TgG{(CDkgr{J~*PXS6+Oy85j5a zV`SuP@P!os%PX6yW@ObIi1^85SHOwTEg=0+hN8 zO-}RTosY1hFIk6Q`#)6)rK7ARcLJwCwI5m~9mZ?E0eA%@DY3~%LT@BQ)wjOFaD0Qf zvZ;Hqn z@V0>x3Kz?en@;X=>ECbCwaerSK<)E2765a01HC`K?*EYLx>xX|P(B)oUy6pU1B7tR zaK1)r{tFRG2&$qSrWMnaRBB}}TK=Ya>Mqq!{D20I82Ivix!6jl_W0N>U-@Ey1FS`&KS(anL>Q(L*}GHqKq{zkt_tcmruNF%qUkanK9k{OX{Zk2 zzWc*89?|!ANUTyt(DipsZ^h&Tqxiiy)rOHM`KcK?`M(i~>HV%mhU|&I(W4(gULkda zNU~Cj2M*%YrZKDWmao~T3D5zm;yX7P5q0cQq}2wy}l zI8!0*1gFB}7r^R+XwAa_xHo}6!IYZ&q>!<)vKJE+H(R-udwGeHeikVomK0}OThTFb zIQc3PVCoRJ4BG#A$4ne!O{-DtYqg-Le z7h!tT?UGF2g?EwJf`=mr>#>&D2gZwRKivYOZwQt8SELl(Cej8 zWZ6&snXj+_Oz_ZDt4_Vi-V^DP$y^FAq1XD2Imoh0FvzKB0g*gd(uaxA?;6;vuzl+z zGTdy^+|R^{q@EzW(_o?`V)-(>Meb{YsR`;aP{PBoyzLbf zXd?={`*6!lw7+OETkA0)#V(b=3fW* zv@~bIy2sxBK9yABq!!PoZyq}?tp+2l22*U)c)(^J{vCijcmNCA^}*&iJNo(2tWCtG z4!{CwHk`5RK+ja9IpCO{kN=6k@aCk42ciT*0L{f7@CJ_N$s(ZV*_t@Z%7kSc0)6&zgQ2t07iR{?K z$IuE6h)?G07Jv1SpqPqGBz6Ey9O8H-V(*hET)avQ;?9$xe6vE=uLxx}mH}h)&>h0( z5PKYe13>{aLO$hCb-MgZVn*=ej!^M)!5!I;rdX8E_Ddn=J#6Ii9?J(l*Drb}e)g-g z37$tk(q1<@CaC!4A#rP1dHFZ;FYspf6a z8P9RcEuSj7uWXa*-tHUVfQSkHq6qqb9qKNH?dRN-&4$i+7T`MW%72~S_RKl)w>e*J z#fKPo``@U<1J;z{IK&qY6vFT;4=|5bvFR+mJot(KRpe!^`KA4hXf&cYAW-_H-EexX z7R-(czPr!(OG#h>xqux~3m*ARehWnhas3^8vt2<9Q}`U;bqe+cFWeLYvrvPgDfKPd z<_(J1-jrb!rk>h7BmVR!K=t0IN1#!%Q7fq&@cXnSdWWq<9}2fslqr1V`v8>Mp=eG$ zR2lXI~QjI7t(_3B}-uMBdVx z@r>uYSTvg>6{Okg@y7qxK|h_vLSABHS)-0Axs0tfbb+AZBr-GMqFVvfS4rx$1DziK z=?f6O0aO;MTmBM&`<0gzgufLl{uUQ=!Q=Y|jlvK5$zV;CD*m6z%)m~JUs7>XI)_%h zhxIho7JjCl?0%ls+AS(uk=OE-l@eyP-`g)-y|F<(^g0@nUseF-5RqW22Kam%KH4ES9-gYWPi1{P|Sixk{Dh}4_~DzdWw*F(Rjt8Hum z*j3&#X)oqD0wj7JQ0b>kAezjXdmG**%_+iCvK`0$kd(&b7^_FTfn8bSd2+{hlmJkH zdR&Icgz}2!2l`qRtBg@Db+gmx~jqywy_5jt<#m!14Q`Wy0;1_^X2}` zG2poovlvTmlh}5?q^fT5x{Pjft(}TfiRY=h%!0M_*Wae2gx%H!^zeQIlgj9vJI6yo z@c)wz?};Xpz+9O2 z;ctnLX?HIt@X66J9Afjs;`?(WT%^BF%2JFL^zqT+$#2C7l@tr^#IW?mQS+Pd5|=^D zaJr1%7&g-qCB!q53CWXFN;VtshglHT{FipPC|@qBHVws!%xTEP3HTlNnnluGX;LXu zHHX?Bi&!-hVY9&Ut6Ja7>dI~s`?G|T#C^DOpzD0;7l?C)ltuQJJY44wTUW?HNBJ!K z8JyOWxh0;#({;WYAcD=2h#yX5+dt7*=is=UROksOSq>GQEw|XNk|5p!Z7p4u0J|e< zBP<|Z=QF_3n>E`445W4ab%*rTM?(n7aO>@JP=4ErAZWI=2D%;2xOZiq_IdXJFJ8xw ziP5(aXFyYdp-r{@o1k;UWX#b2lnf$HhoccLNpPSObpvLLs-%CT#gKf7Wa>)uvfyW9 z)rftL6ZJMP$l?)tn6X?3-hQ+x#f&k6PkGqTW_D*9lZssU{Y6XPwUyM~@uY_HFmaI1 zuUX0b!&hEx_7bAbyq}&w(*s{3Ma;pb` zuIl|f1Oj?MXV3xQa=9+t^nOI_z-HTR(yRMkU9X$2_%`TeS)ICNxizFQlt8CxEjTCz zy#32$S}K+MvAAlOb8!91@7%O-0Ns2$=Ne&DV}%~r8M{N7IAPy_QI%<4R|X}Z0TqqJ zPuTL3>U97?S?Zi~90^*Kv(ZU=3lr!oi0i$S*n{qI`6__V-*(ST?q67kHALrChc=ut zJ%E?)rn+=K*m5`=y$aJy35Q>(1vl>IzQlaLl6I6uSdJ;G%uN|M&|`5$qpu-H&J%p_ zh;y#5wliP*DyMhGnY#y&RdrAZ2j~ArF#kiolenJ${=X#Oy+2wTUe+ztS;sQgmmk17 z$IGl<^JmGV-7Ilkg20Q{D^To~hlB}~{iGW~ek6wzKIA^sN6jj6o5f4DNn(r%3FGV= zAIRGG8u}MQp$>Q^3}YX>Kj1jDH8w(d4kMHw&id-6OB;Zt9y1}$=Nr&=dc6$3=}J5; zQb_@b91CKv#vkBVNd3iJ&~Xa_2%rCDo4Y^y9=GvIJHPlFVlyQ)Dl>YRSl{4nBW*JCU~6bP)lt9K0^J*Y3kPzhG@GZfGHUjn{n8 z&Dx#;e)|Z+laCbea*W8lU&LZpaXS=8k;TXbD3wEdbY0)|3EV4i)68;<55pxPm1Lfd zQ>Ws7eLb(ptrSR=k8Kc=3xCQl+5U=R4>v`w>P74_2{{t-^W%5NGhOQ}RVG98RWtMJ z=Xw=a^Wa526!YsNFgJiy&&1AG3e^q_l%7vER2fu$6gI32U(UgK-?!*1Jv)#mP1q8> zOleu{mKT;518xxug2F0F-{l^BhSi}}-;7&4kKEhjOS;pEWpC!TUuv~7fZTAx15Hcn z-I`lk4iEQLO6J!N54ToUzMXdhX*6Ejjmg=Hwu71D(iu@CUyl|% zmCU(=nW@!CWMdH;2}&xl!6@r)U~4E-P~c9_2tK5)k6r+Wi3z7Q%AoA=ZCQuHB6FkFt#P)pASlnYPY)g zuLu1+IZbH@$y(DM8F0N;96DV!=!SSQc#vx+KG$<>7?EvEdNW)ifyFs=+4R&&<# zP{2DgzK)hehWV+RY2@X;=lON&Vud@@=Y((AMbpl*haiN~Moo3u%_RZA6o3ZI`~gP= z^EmG>XPdSw!r4(1l1>bCegrn3d+C@BZPTNodWA~V%erNJ7s@#>*URa3Wx1SqoAKji;??(=sYSiXcx`15#f7JVVp5vuWMsDP246PT3Ka?! z(#i|kbT|eN+t0>eO9mdR*-)}QpUtf8OVvkdNONdj*g({;ex?hNdl?UfPjNd zo2oEsp3wo!G>gx~`o}0vo@WgV>||7UBt>-Bbxscbc33blE0uHZubGtdP4{Rg_qu4b z=TPk$){Ncw;%NeW8;%FhyYh4E-_fz7@})csG={!WP~{jDdAxdbxxEhy#ib(KB3XnU zmOKjZgn678->mVpA>)zCJ4qAO@_KoC)sXSr9eOQqv_SonwrF`jfP36eEiBdwpM^`D z@?BHh7pr4$ow!fuP&r>S)32Ol0IJ{ z&yPenY$(B~iEI94XzrDt*x6XOfHTBjTtZ^?JV`qDB8)tsuhslW6%(#$?mw_)2NXe{yh^>!P zn2X2~tp#9rRZx74P^ZCcVgkMb&iL6}85={3U+*nb$E1W~TG!v>#v57!<|(7}W6y14 zP++d8Zdv1xEzU@3B0B^T?q%1BtNOaa`MSK#E}#)i>PX7Yd`(fvz@^38WE!qT!Goqc zl8v!;AkuyxpS}y*Y#6&fcvJm$;dV8!0kA!Vfz-k+A71@_{RGp8x^wwE$yrT~g4>9F zG%4blUrHDlQn0|}NAmuVD;#W($Tzng?M@$;cF7YhG88b(lJyrhtPSzU0s|)t3Io3g zx1@^`#AlaS6tCWKavjcWEzZ@Dg>4U~UZ2A56$D84RrdMrbOpW29M4WWJ3EPcVc9TK zV!O6^Se=#zFLFy=^jl5?E(Fkgpv36>XDS?=&)V+t*m47Hvlm0pFg{n>F72?>y88JI zsV79>Qiz5cf1s+UI0YQY3s|i^8|4(D*9o1CU?qOyeyTE`H z5fQ-wl%|MC7nJ}40s;aOLNQbmLJLi4j*J*7B2uOIl8^wBKth!+(m@g_0SOpDno1At zZk+GC>s$BEy6c`lvU2v>XZN%ByVrTo?=j~79-*=Bbu#9ej^tK?P`0P*vFk9u(wXu? zGEJBY)c9TYPIaNCs{~`=tUVS!CPRs`@!P4x*S%o5A)OyF*2(c>QJtdW>$Ca-Lu zU~O^!F7!u$-yU^9 zwRvDGhM_(glEHGEIzH$Y?aN#>N^3=X?<^WPWr+jAR>PY))>6iQ<~6-HEPB- zVwfX=)5Sfh1M^+-$Bzqk7?IT1+AY_&SL0WYSZ(-zYGjT)b#hZx8(8xgTI8}&+?DhM z-@y#M?69Pjj)ts@N2?0$=m@V^R+~WbBklw|c9>k#l%i2~T))Kvg@+pTJ&lk}c!7Ep zm?v4f)aqXvdQOD+s@Wpg-i5a09?ZlaO4V?;f=*Q1wr&?~>LjURB z4xLpU&QX`C@zBs}sU5@l)mK9u6DO90M}`{L+FFCXyjg2CKm)E>M(F{7au1rY@ z3>44yFEJ@`qhIFgN7{@a)bN#0)hYQufj&f2n|iCyRqD2oF@LYj7QbGj1lv{D=Alfk zpNmS>8C?D^KM8INh9&iGBpH0Ey6l5JgEr3;6`~jYCRZEUdB#|3)Z(<8t6#1xgt0WR>ePvk< zID?J{Z!P!;22`!r#;SzOBgwUjHlm;Rn|i^OL-@KX;vR6M6xzA*cx_%8@v$&Xwesaz zx->ICKYvUqc`I{!x?jWN1K`&Uc^n-M?OzaiPreqOjq%RW`DI^MjxjaWJOLEu{snJx zJM6@QTf$wN!6(+OkY;h&5fryv&}sg7@`$LYDD?-iP|lv9ZpEW+Z%-nvh4eGBbF#rP zIZj7qvx5XNl!Zt~zv1kibaXk;jHpu&AoT1Kr;Lz3p&9)_mD7c0kX&CsiknA$j%s}! zYaZ$N%`~}(4^KFoksh0vSg!QBgGj^)kQcrh&eMH9NsD@wJzg3+&p!)XPj7U#&>czl zbE_xh(l8iVJH&_4X?0Sz@a*|7U&OhJ==HXbt~qVnf5`|!@yf*u6F1cCXBGvPhmkoa z!ZGk8GX<&2_O+y-lPEN?-t^7V_=H4rl@lg^cs=so~49Ry;3yEjV}> zYs9JdPX0R7m=*PdI4@g?nf>fcZ7@2hreLz^<%hptH} zrM@1wNL`yf^Q|9ezhzn1XrTvPPpGyj&~66|ax zViISm-#VwRv%2NhLlbwL7U($@nw{7{UActQF+aPY{6QyRH7empRC{~KYHG?ZdM9mu zub&-|oOgh;aEk2HIR@j3+o%%j7#kbWIg(i+l@Qv&hnK9BR4I9&5&cMALCWV-pFxIs z#7v+zB6@LbnU=GYzIqQLr#5N7>DuFL`!M5ZY1C-4Z-Lk!OKX;|5@&H^CL3IiE zS~nI~F<*{|z}&~xZxoNRlA;YE-l2!B{M@8N<}Hozm<#DStf2K-!@185DqLmegyeGK z+UAOw`~hNRx#_e-+jYfY7VhNpLu%_^i@#4c9dJt`UUum{7ZMUOGTGbPt0Nplv{%5D zl(@I-s;5o-hW%9UJky&+TyCOwvpu;6@4vML$LQMHL5XUMlolUR`c@Ril5Cf24&iCK zZ8Rrg8@*D-PDKQ1uWl1YzeV2UDhn*zZpv|XnC+NM2*+Ti=T|Lz#`~KO7K~|zqN1zT zI62%Xoj~BBZf`drv;h<)lY@o@pY^u4w{LD$)U+Me=;b5xhBLPX1)oE%Oe zl@;J$nyTc<$Wn8EyuPUJhSup7Y8(BpIUA(Ut%{~ywR{5N=k4^nI z|HPXc=<8km2}HS7OcgFRpKJ1xrm|SeD;M`8-8#fEUxuFUUY=GBR8b4r-3IK~!yNNB z0YmbM@3VNmvys<>s-!-&0OjEFswycV){WHE`NQm9zUVnU5C>>TLLj4~Rj)a~1HZ^6 zE(3A~oj$TU8U6B%G&qr4e=s>WXLbMnn7~V7X=xznmVHo*f9WZoY9k=y5*r&^{-9}G zJM!CO3@5rL{e!IaO3!s@ z1)PY1{^xO3RaLI<>+4H@T_wL5cI#Y^Vn0asCBVy;TqmA2d7nMP>s9$-~XElR?*N zC?9yn1frrsQuFj38 zY2gM&zgoVjKX*|=O%;xj8ovw5WlK3Eb3ZwF__54$K55;q%8f^}kYd!M5X;~<%AGT# z--y0#vIAYWR{tC|(JHt%%{0^MS<75qLU#^6K6vn;!c^Bejf-!{4(K9f>1GQ1(x5-2 znQjlQ!=5M=Z8KYMm{o(#!UT=5t%5&E!T&-6lQz+r)QgBi@G)B(T^_KZ?V;Vb~s#KlJ>RM6=8oG%p;ccscm7yE$X^AY{th)3-matU`b*qSCyG*>f^m9-H@A z%hh9)LtdR7Jg}+IDAnf93hpyis>DMUvXxBQ1Z&(C8Fnw1VzZ+jJoQz-BzV z!r**|;->avDLjvcb)0GbhSurxPkr)Hlz15K;7;Cn#!(UP`#*U05cYhOGvZ(eMbs;>}_M}CKOD9svMNOH%E1?{y-S} zF0xiU=9sw$l@;(|v4@ziBPoK|T83%Cc;h)7Rq;a)v}P3n$6xGL+|*({w7Li@N22pK zv{_ZBZ$+u-8yi|iOa{aY9wU}LL{epw3+eH1YV!0Th-(sEmdGpO&eOq3wW4Dh*hDR3Y-$ZCP<-+y9>+ouF(_HVTE9E}cWHjO{ zwvh@8!>&J{1LVbdTF6EAZ0?Pr*o#>sraovWhE?2TLc zcYiSM=aggorJ*nutTEYIK_o}8hwxTmqj%QOd{GwuuYA!B zVF#EZt%9u^E2gifA^sT518omC6J5MYi>7zh(dDSVn~S21>j00sKnRE8HeO&ZGVkjfcpj!`zBXV>XPo9)2Whj9>wu|+mW0JhSDh;fyJ@ywO5=tg zyr3r}5QRAHDes$ldReFV^B`nJ{OuUQl5+FQ|j=qh!gqhvK%2_hwi&mFDN z`<|u&u#Q)4j2nixQOYd^QHn5T$?|}8&{VNm@t`>lQ!S@L^wu$K4eS4k#eR6J7wd0X z63l_OaZVA|$H_ymyPD zkMeYE`iq6L(&8-O6@$GMTdFx4pFCL-@v$dyUj$s$|8Sdo8&Y{n^#PFx$rY?gYgdENB ziIs$haNUqnUv4`))7-7b!&V3C3^-`#_r4?9=ObffN-w!o&}3D}cbiY^Ydm?@Zv zDIYgIR@`JCN>AbMHIvnaLhl-znwI(KnozIDJ|DB36cSi4OCw#LTMkdg_SdX*9?-LU z1;lYhIA2=Mo z&ZoE=cP~k+`8*=LB+sK;>Z0YNgQ~t$&X*pex}9Pz=6On(%6&e!bF)}Eym_qmndYW$ z!8h^TSH%J`m2GBYtpcVeOemDhuM(U(p0w~HGMPaff|;h)dg#7@rM&J_$)_VWytjp9b=%cSdd>(Q_~=+GJdrEO^H7e5_abVHQz}*Pj4~V#jh?EXa;n9 z5o`ms!*d-vqq=_A5>}E^ml?Khu6^c_y@)U7i^=ZH&300_&`QJ?-8?KDy359PpjsDl z^WN$8_ba@wDc+iHkF(4meUAiACP<9=$0Tok^9Xg2oWSS7NN{v8o=Ud!FaHi-?=uaQ zH$`8wfSh&@RyrHAJgLt|NZN(vUr-q@8<-5Va7g@!jS0J^5SA@}h?-k_3W_p5kuxcO zvI$mVk@*3ScIUeg8#_jhXivari3UBDM8Jm}%qP?e%it@2ix zwfpIn@1o640@F$*Z+>+Sh}Ea1rBwq*pFDkj2?>eAhYtf|S5>u|uVbWgPxFdJ{Gt?= zH|_b$edy(r3QyPdj8Z474^nU9S$*vjcT_<-?=(-M=@JCGLd;8G*1f}*7W^N8N@ zc}Uv`;bl1(lWGnPM>tI-hAZ>51yAo=)SQ=@Vyy7{raUDp^WSOc*( zxPE0tI}!E9XzmldHfn<8NxpB)Gh#Z@4Ky4;*&Vqko|jL7e90#(c#tXCcE>YLM`;`L zfQrr$1ghIV9&AgY+1T1H&CGnd`a?xoc_?4%a@^01ay@U*5;RcdJg&O5x`r;K$9DS# zdXhJ)sS1?7B2sGf;C`E|i%$-RJw$m@uVIiK*{IaAb22th#SIoWTm|3O_NSsce8j*E z`J|c`jpB5T7#UWiwJNmCLsMWQS7)#7RL&le1x{oj8E__BbB?_nF+z4D&HXfA2_yHut!H#T|MNUdVyVY`R*85W+3Hr~d`SC4SQY From 7af43982fa3379007462ea597356301090f38856 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Wed, 1 Nov 2017 11:08:56 +0100 Subject: [PATCH 33/33] Bump version to 0.3.1 --- README.md | 4 ++-- app/package.json | 2 +- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index c69e48c68..6314c08fe 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -[![Build Status](https://travis-ci.org/FPGAwars/icestudio.svg?branch=0.3.1-rc)](https://travis-ci.org/FPGAwars/icestudio) -[![Version](https://img.shields.io/badge/version-v0.3.1--rc-orange.svg)](https://github.com/FPGAwars/icestudio/releases) +[![Build Status](https://travis-ci.org/FPGAwars/icestudio.svg?branch=0.3.1)](https://travis-ci.org/FPGAwars/icestudio) +[![Version](https://img.shields.io/badge/version-v0.3.1-orange.svg)](https://github.com/FPGAwars/icestudio/releases) [![License](http://img.shields.io/:license-gpl-blue.svg)](http://opensource.org/licenses/GPL-2.0) [![Documentation Status](https://readthedocs.org/projects/icestudio/badge/?version=latest)](http://icestudio.readthedocs.io/en/latest) diff --git a/app/package.json b/app/package.json index a5bb5a28f..702db1d19 100644 --- a/app/package.json +++ b/app/package.json @@ -1,6 +1,6 @@ { "name": "icestudio", - "version": "0.3.1-rc", + "version": "0.3.1", "description": "Experimental graphic editor for open FPGAs", "author": "Jesús Arroyo Torrens ", "repository": "https://github.com/FPGAwars/icestudio", diff --git a/package.json b/package.json index 09538d4a3..7d7e52f3c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "icestudio", - "version": "0.3.1-rc", + "version": "0.3.1", "description": "Experimental graphic editor for open FPGAs", "author": "Jesús Arroyo Torrens ", "repository": "https://github.com/FPGAwars/icestudio",