Skip to content

Icestudio development version

Juan Gonzalez-Gomez edited this page Mar 20, 2022 · 81 revisions

Contents

Introduction

The latest development icestudio can be found in the develop branch (it is the default branch when you clone it)

Running the development version

Ubuntu Linux 20.04

Follow these steps:

Installing dependencies

For running icestudio you need to install node 16.10.0. You can install it very easily with the Node Version manager tool (nvm)

  • Install nvm:
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash
  • Close the terminal and open it again. Nvm will be now ready
  • Install node 16.10.0:
nvm install 16.10.0
  • Print the node version for checking that everything is ok:
$ node -v
v16.10.0

Clone the icestudio repo

git clone https://github.com/FPGAwars/icestudio.git

Install the node dependencies

  • Enter into the icestudio folder
cd icestudio
  • Install the node dependencies:
npm install

Run icestudio develop

Just type this command and icestudio will show up:

npm start

Windows 10

Installing dependencies

For running icestudio you need to install node 16.10.0. In this link you will find the node 11.6.0 installers for different operating systems. Or, if you prefer, installing the Node Version Manager (nvm) for Windows is also a good option

Once installed, make sure it is the correct version. Open a command line console (cmd) and type node --version:

Also you need to install git

Clone the icestudio repo

git clone https://github.com/FPGAwars/icestudio.git

Install the node dependencies

  • Enter into the icestudio folder
cd icestudio
  • Install the node dependencies:
npm install

Run icestudio develop

Just type this command and icestudio will show up:

npm start

MAC

TODO

NPM targets

This is the list of implemented NPM commands. They all are implemented by calling the corresponding grunt task

Target Command Grunt task Grunt argument Description
install npm install -- -- Install the icestudio dependencies. The postinstall target is execute after the installation
postinstall npm run postinstall -- -- Download the default collection, install the platform dependencies and execute npm install on the Icestudio app folder
start npm start serve -- Start icestudio (in developer mode)
getcollection npm run getcollection getcollection -- Download the Default collection
clean npm run clean clean -- Clean the temporary folders
jshint npm run jshint jshint -- Check all the javascript (.js) files
gettext npm run gettext gettext -- Extract the English texts to the template.pot file
compiletext npm run compiletext compiletext -- Compile the po files into json format
buildLinux64 npm run buildLinux64 dist --platform=linux64 Build executable Icestudio package por Linux 64-bits
buildAarch64 npm run buildAarch64 dist --platform=aarch64 Build executable Icestudio package for ARM 64-bits
buildWindows npm run buildWindows dist --platform=win64 Build executable Icestudio package for Windows 64-bits
buildOSX npm run buildOSX dist --platform=darwin Build executable Icestudio package for MAC 64-bits

Install

Once you start from a fresh cloned Icestudio repo, you need to install the dependencies by running the npm install command. After the installation, the postinstall script is executed

The top level npm install install all the packages describe in the icestudio/package.json file. The main package is Grunt. It is used for automating purposes. It is not part of the final Icestudio distribution package. After the installation, the postinstall target is executed, where the rest of icestudio dependencies are installed. The Icestudio application is located in the folder app (see the next section)

Postinstall

The postinstall target is executed automatically after the command npm install in the Icestudio root repo folder. It performs the following actions:

  • Download the Icestudio default collection and install it under icestudio/app/resources/collection
  • Install the Platform dependencies. The tool npmpd from the npm-platform-dependencies package is installed. It installs all the packages needed for a specific platform (For example the package grunt-appdmg for MAC)
  • Enter into the icestudio/app folder
  • Install all the icestudio dependencies. The command npm install is executed in the folder icestudio/app. The Icestudio dependencies can be found on the icestudio/app/package.json file

Start: Run Icestudio

For launching icestudio in development mode, execute the following command: npm start

obijuan@Hoth:~/Develop/FPGAwars/icestudio$ npm start

> [email protected] start
> grunt serve

Executing Gruntfile.js...

------------ INFORMATION FOR DEBUGING -------------------
* Package name: icestudio-0.9.1w202203201003
* NW Version: 0.58.0
* APPIMAGE: dist/icestudio-0.9.1w202203201003-linux64.AppImage
* DMGIMAGE: dist/icestudio-0.9.1w202203201003-osx64.dmg
* Target platform: linux64
* SubTASK for the DIST task:
┌─────────┬─────────────────────┐
│ (index) │       Values        │
├─────────┼─────────────────────┤
│    0    │      'jshint'       │
│    1    │    'clean:dist'     │
│    2    │ 'nggettext_compile' │
│    3    │     'copy:dist'     │
│    4    │    'json-minify'    │
│    5    │       'nwjs'        │
│    6    │ 'compress:linux64'  │
│    7    │ 'appimage:linux64'  │
│    8    │     'clean:tmp'     │
└─────────┴─────────────────────┘

Running "nggettext_compile:all" (nggettext_compile) task

Running "watch:scripts" (watch) task
Waiting...

---------------------------------------------------------
Running "exec:stopNW" (exec) task

Running "exec:nw" (exec) task
>> Error: unrecognized flag --no-untrusted-code-mitigations
>> The remaining arguments were ignored: --allow_natives_syntax
>> Try --help for options
>> [13280:13365:0320/102817.096927:ERROR:chrome_browser_main_extra_parts_metrics.cc(230)] crbug.com/1216328: Checking Bluetooth availability started. Please report if there is no report that this ends.
>> [13280:13365:0320/102817.096965:ERROR:chrome_browser_main_extra_parts_metrics.cc(233)] crbug.com/1216328: Checking Bluetooth availability ended.
>> [13280:13365:0320/102817.096974:ERROR:chrome_browser_main_extra_parts_metrics.cc(236)] crbug.com/1216328: Checking default browser status started. Please report if there is no report that this ends.
>> [13280:13365:0320/102817.153762:ERROR:chrome_browser_main_extra_parts_metrics.cc(240)] crbug.com/1216328: Checking default browser status ended.
>> [13312:13321:0320/102913.143649:ERROR:cert_verify_proc_builtin.cc(600)] No net_fetcher for performing AIA chasing.
>> [13312:13582:0320/102913.144868:ERROR:cert_verify_proc_builtin.cc(600)] No net_fetcher for performing AIA chasing.

You will see many debug information on the console and then the ICestudio start window will show up

There are two grunt task executed before starting Icestudio:

  • nggettext_compile: It compiles all the .po files into JSON. These json files are read by Icestudio
  • watch: When any src file is modified, Icestudio is launched again automatically (you do not need to start manually on every change)

Getcollection: Download and install the default collection

TODO

jshint: Checking js files

The npm run jshint command should be executed before any commit to the develop branch. It gurantees that the javascript files have no errors and code style is correct

Here you can see the typical output:

obijuan@Hoth:~/Develop/FPGAwars/icestudio$ npm run jshint

> [email protected] jshint
> grunt jshint

Executing Gruntfile.js...
Icestudio package name: icestudio-0.9.1w202203141003
Running "jshint:all" (jshint) task
>> 28 files lint free.

Done.
obijuan@Hoth:~/Develop/FPGAwars/icestudio$

Getting started

Collections

  • Default: Icestudio Default Collection

Stable

Development

  • IceBoards: blocks and examples for the diferent FPGA boards
  • IceComp: Comparators
  • IceArith: Integer arithmetics
  • IceCounter: Counters
  • IceSignals: 1-bit signal managment
  • IcePLL: PLLs
  • IceLEDOscope: Measuring signals
  • IceLEDs: Displaying on LEDs
  • IceHearts: Timming signal generation
  • IceInputs: 1-bit inputs
  • IceRok: Block probes for Icestudio => Sigrok integration (with Pulseview GUI)
  • IceMachines: Working with Machines (simple state machines with a standar interface)
  • IceSerial: Serial Asynchronous communications
  • IceMem: Working with Memories
  • IceMeasure: Measuring cycles and time in your circuits, very easily
  • IceStack: Working with stacks
  • IceFlash: Read from spi serial flash memories
  • IceBus: Accesing and sharing simple buses
  • IceLCD: Components and controllers for LCDs
  • IceUnary: Working with unary numbers
  • IceCrystal: Drive displays from Open Source FPGAs
  • ice-chips-verilog: IceChips is a library of all common discrete logic devices in Verilog
  • ArithmeticBlocks: FPGA signed and unsigned integer operations, 16, 24 and 32 bits, + - * / sqrt min max compare etc.
  • iceSynth: Audio synthesis
  • icebreaker: Blocks and examples for the icebreaker OpenFPGA board
  • Jedi: blocks of the FPGA Jedi hardware Academy
  • LOVE-FPGA: Hardware elements and examples for the LOVE-FPGA project (Linking Of Virtual Electronics to FPGAs)
  • Stdio: Standard Input-Output in different devices
  • CT11: Ejemplos del cuaderno ténico 11: Señales del sistema y Medición con el LEDOscopio
  • Generic: Icestudio Generic Collection
  • Logic: Icestudio Logic Collection
  • IceInterface: Serial, SPI, I2C... (TODO)

Testbenches

Developers

Contribute

HELP

Release history

Clone this wiki locally