Coder Social home page Coder Social logo

fpgawars / icestudio Goto Github PK

View Code? Open in Web Editor NEW
1.7K 84.0 245.0 121.28 MB

:snowflake: Visual editor for open FPGA boards

Home Page: https://icestudio.io

License: GNU General Public License v2.0

CSS 8.94% JavaScript 72.02% HTML 11.29% Python 5.19% Shell 1.71% NSIS 0.84% Nix 0.01%
editor fpga blocks icestorm lattice verilog ide icestudio javascript

icestudio's Issues

npm install errors

Icestudio version: 0.2.0-beta2-dev
Platform: Ubuntu 16.04

A info block is placed in a blank project. When the verify/build option is pressed, the following error messages appears: main.v:2:error: unkwnown module type: main_basic_info

info-error

info-test.ice.zip

Problema con atajos de teclado.

Cuando modificas una etiqueta de un bloque, si haces un CTRL+C (por ejemplo, para copiar esa etiqueta), además te hace un clonado del bloque ;)

Lo mismo sucede si estás en un bloque de código, al hacer un CTRL+C te hace un clonado del bloque.

También, cuando estás modificando una etiqueta, si presionas CTRL+SUPR, te muestra la ventana de verificación de borrado del bloque actual.

Add the `default_nettype none to begining of all verilog files generated

By default, al the unkwon labels in a verilog file are defined as wires. This bahaviour is very dangerous. Any typo on the signals name will be not detected.

To solve this, all the verilog files include this command in the beginning:
`default_nettype none

If the tools detect a signal that has not been previously declared, an error will be shown

It very import that icestudio add automatically that statement. It will prevent a lot of hours of debugging

This feature was suggested by Carlos Santiago Díaz in this thread in the FPGAwars group:

https://groups.google.com/d/msg/fpga-wars-explorando-el-lado-libre/lwcM-2Ufejs/I0e9mpHVCAAJ

[Feature] Change in the background color of the input-config block

The input-config block is a kind of special block, different than the rest. It only can be used near a input pad and it does not belongs to the digital electronic standard. So I propose to change the background to a different color, to avoid confusions or error (Yesterday I made a mistake joining two of this blocks by mistake, because one of them was inside another block. As they had the same color than standard blocks It took me a while to find the error).

After thinking about it, I realized that the config block are different, and should have a different blackground color.

I propose to use a color near to the yellow of the input pads: a kind of light orange or something similar

[Linux][Bug] Error when executed from nautilus

0.1-Beta-1

Ubuntu 15.10

When I execute icestudio directly from Nautilus, I get the error "Apio not installed". But if I execute from the command line (in the same directory when is located icestudio) it works ok

Basic bus specification

It would be great to have parcial implementation of the buses, only for connecting blocks.

Let's take this two blocks as an example, conected by a wire. It is done in icestudio like this:

two-blocks

If it was a bus (8 bits) instead of a wire, the generated code (in human readable verilog code) will be:

`default_nettype none

module main ();


 wire [7:0] w0;  //-- Bus de union

 bloque1 TEST1 (
  .out(w0)
 );

 bloque2 TEST2 (
  .in(w0)
 );
endmodule


//-- Bloque 1: Bus de salida de 8 bits
module bloque1 (output [7:0] out);
 assign out = 8'hFF;

endmodule

//-- Bloque 2: Bus de entrada de 8 bits
module bloque2 (input [7:0] in);
 wire [7:0] temp;

 assign temp = in;


endmodule

This is another example: the connection of 3 blocks:

three-blocks

If it was an 8 bits bus, the generated code should be like this:

`default_nettype none

module main ();

 wire [7:0] w0;
 wire [7:0] w1;

 assign w1 = w0;

 bloque1 v62df90 (
  .out(w0)
 );

 bloque2 v8cd364 (
  .in(w0)
 );

 bloque3 ve05eb2 (
  .in(w1)
 );

endmodule

module bloque1 (output [7:0] out);
 assign out = 8'hFF;

endmodule

module bloque2 (input [7:0] in);
 wire temp;

 assign temp = in;


endmodule

module bloque3 (input [7:0] in);
 wire temp;

 assign temp = in;
endmodule

Restrictions:

  • Only buses with the same width can be connected
  • Connection between output buses with input buses (no input/output buses yet)

This implementation will let us to include a lot of new circuit in icestudio

Memory file not found

I have implemented a 16x8 rom as a code block. Its content is loaded from an external file. When building the project, it does not find the file.

screenshot from 2016-08-06 19-35-17

The verilog code is (inside the block):

reg [7:0] rom [0:15];
reg [7:0] data;
wire [3:0] addr;

//-- Name of the file with the rom contents
parameter ROMFILE = "rom2.list";

assign addr = {a3,a2,a1,a0};

always @(negedge clk) begin
  data <= rom[addr];
end

assign {d7,d6,d5,d4,d3,d2,d1,d0} = data;

initial begin
  $readmemh(ROMFILE, rom);
end

This is the icestudio project:

rom16x8-master.ice.zip

Enable Drivers Hangs or Requires Internet Connection

On OS X 10.12.1 with Icestudio 0.2.3 Beta, enabling drivers caused a complaint that an internet connection is required. I don't have any internet connectivity problems. After reading the install instructions again I installed the most current Python 2.7. Now enabling drivers causes the app to hang.

[Feature] Block selection

It would be great if the user can select more than one modules using a box selecction. It will be very useful for moving many modules at the same time or deleting them

[Verilog][Code generation] Input not connected to a wire in the Verilog code generation

This bug was first observed by Eladio Delgado. He told me the problem and I started to do some test in order to determinate in which part of the stack was originated.

It seems that in some cases the generated Verilog connections are not working ok

I've isolated the problem in this example:

test2-nok

It is a D-flip-flop in which the negated output q_n is connected back to the d input to create a T Flip-flop

The generated verilog code is:

// Code generated by Icestudio 0.3.0-beta3-dev
// Wed, 08 Feb 2017 06:21:21 GMT

`default_nettype none

module main (
 input vd5501f,
 input vclk,
 output v834948,
 output [0:6] vinit
);
 wire w0;
 wire w1;
 wire w2;
 wire w3;
 assign w0 = vd5501f;
 assign v834948 = w1;
 assign w3 = vclk;
 main_v9ef512 v9ef512 (
  .clk(w0),
  .q(w1),
  .q_n(w2)
 );
 assign vinit = 7'b0000000;
endmodule

module main_v9ef512 (
 input d,
 input clk,
 output q,
 output q_n
);
 reg qi = 0;
 always @(posedge clk)
   qi <= d;
 assign q = qi;
 assign q_n = ~qi;
endmodule

We can observe that the d signal is not connected when the module ** main_v9ef512** is instantiated

It should have generated something like this:

main_v9ef512 v9ef512 (
  .clk(w0),
  .q(w1),
  .q_n(w2),
  .d(w2)
 );

(Or using any other temporal wire between q_n and d)

[Linux][Bug] Can't load external .json files

0.1-beta1

Platform: ubuntu 15.10

Examples works ok. But I cannot load external projects previously saves as .json files. It does not generate any error message, just the screen remains blank. No file is loaded

Add board Rules

Create a new concept in order to define default configurations in an FPGA board, using a file rules.json in a board directory that contains rules for undefined pins or connections. E.g. All unconnected "clk" ports are connected to CLK pin, if LED0 is not connected it is set to 0.

These smart rules will simplify the design and the setup of the designs.

[Windows 10][Bug] Freeze on open

When opening icestudio-0.3.0-beta-win64 by double clicking on icestudio.exe in Windows 10 x64 (Build 14986), Explorer hangs and icestudio doesn't open.

I have found a work around:
Go to the icestudio-0.3.0-beta-win64 folder open icestudio.exe through powershell

Shortcut from the icestudio-0.3.0-beta-win64 folder:
Alt then F then R
Type: ".\icestudio.exe"

A run command also seems to work:
Windows Key + R
type: "cmd /K C:\icestudio-0.3.0-beta-win64\icestudio.exe"
(replace with your path"

Drivers en Windows 8.1 64 bits

Estoy trabajando con la placa ICE40-HX8K en Windows 8.1 con 64 bits, y no consigo que Icestudio detecte la placa. Instalé los drivers libusbk, como adjunto en una captura, pero no hay forma. Lo he intentado en varios ordenadores con el mismo sistema operativo.

Sin embargo en Ubuntu funciona todo a la primera.

Por otro lado estaría genial que Icestudio aceptara etiquetas para los cables, de forma parecida a como se hace en Altium Designer a la hora de hacer esquemas. Simplificaría mucho todo.

Muchas gracias.

ftusb

[Projects] Different board notification

When a project is loaded, if its target board is different from the selected board the following options must be shown:

  • Load the complete project with its board
  • Load the project for the selected board without the FPGA information

Can't execute icestudio properlly after update.

Hi, thanks for the improvements :)
Just updated icestudio from git and when trying to execute it i got the following screen shoot.
icestudio

Just to ask if somebody have the same results.

Thanks in advance.

Disable multiple input config connections

If input is connected to a config block, it can not be connected to any other block.

If input is connected to a non config block, it can not be connected to a config block.

Use spawn|exec|fork to launch a new Window

Current method using gui.Window.open generates strange issues:

  • If parent windows is removed, new windows can not be properly loaded
  • Exploring a child's block changes the parent but not the child
  • ...

Then, new Windows must be created using spawn|exec|fork.

In order to open files in childs, Icestudio must capture its args, and load argv[0] as a project:
./icestudio /path/to/project.ice

I/O blocks multibit (bus)

Add multibit Input and Output blocks.

For example,

  1. Add an input block a[7:0].

  2. Expand the block to show its combo boxes.

  3. Edit the port values and connect the block to a [7:0] input pin.

[Upgrade] Visual improvement

Better wires
Paper pan
Zoom in/out
Multi-select
Edit code block ports
Block size adjustment
More CSS...
Bug z level html elements
Open other menus on hover
Message during Build, Upload until the end

Import block includes

When a block is imported, the //included files must be copied also (.v, .vh and .list)

  • If this file does not exist in the orig directory -> message(ok)
  • It this file already exists in the dest directory -> message(replace, cancel)

Add Constant block

Add an orange block with a pin connection at the bottom. This block contains the name and a textbox field:

 _________
|    x    |
|  _____  |
| |_____| |
|_________|
     |

Constant values on both counter blocks

If the counterAsc and counterDes blocks are used on the user project without the constant blocks they use a default value that i left on the component implementation, in case of using the constant blocks the latter constants are used.

It is better left the implementation like this or change the constants inside the blocks or warn the user that no constants are used at the project level?

New Project format

Update "ice" project format, version 1.0.0

package
 - name
 - version
 - description
 - author
 - image
design
 - board
 - state
    - pan
    - zoom
 - graph
    - blocks
    - wires
 - dependencies
version

Package section must be set in "Edit > Preferences > Project information".

Also, this project can be "Added as block" in other projects, instead of "Exporting" and "Importing" a block ".iceb". Therefore, ".iceb" format will be deprecated.

Is there a plan to support other FPGA than Lattice ?

The name of icestudio is oriented for ice40. But is there plan to support other platforms ?
I wonder if it's easy to port icestudio for armadeus platforms apf27 (xilinx spartan3a), apf51 (xilinx spartan6) and apf6_sp (Altera/intel CycloneV) ?
Of course, there is no open-source toolchain to synthetize for it, but maybe we can do somethings to drive close-source tools ?

[Feature] Context menu for blocks

Adding a context menu for every module. Tipically the context menus are activated by right clilcking. Then context menu should include at least two options:

  • delete block
  • duplicate block

Parameters in blocks

The idea is to generate graphic blocks with upper pins to connect "Constant" blocks

For example,

  1. Add a code block with parameters "N,B"

  2. Connect two constant blocks with values 22 and 0 to the code block N and B connections.

  3. Export the project as a block

Then all the code blocks are parsed and a "parameters" list generated and included in the block.iceb file.


"parameters": [
  {
    "name": "N",
    "value: "22",
    "default": "22"
  },
  {
    "name": "B",
    "value: "0",
    "default": "0"
  }
] 
  1. Import the block.iceb file in a new project

The block appears with the upper pins "N,B".

  1. Edit the parameters.

Add and connect two Constant blocks N and B and write the values 23, 1.

  1. Save the project

These new values are updated in the project.ice file ("parameters" list).

  1. Build the project

The verilog compiler adds the parameters into the corresponding modules.

modtype #(
     .N(23),
     .B(1)) modname (...)

ACC0 project does not build

I cannot upload the ACC0 project into the Icezum because it does not build on icestudio 0.2. The steps to reproduce the problem (in my computer) are:

  1. I am using icestudio 2.0 installed from the Released package. Execute it
  2. Download the ACC0.ice and rom.list files
  3. Open the project in Icestudio
  4. Click on Tools/Build

The Build start notification appears... and after some seconds, it desappears. No success notification is received.

If the project is exported as verilog (and also the .pcf), it is built correctly with apio build (and apio upload). It works ok in the icezum 1.0

I still do not know if this is a bug, or is something related to my computer. I am testing in ubuntu 16.04-64 bits. I need someone to reproduce it

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.