Code Monkey home page Code Monkey logo

fabulator's Introduction

FABulator is the graphical frontend of FABulous. It can be used to explore fabrics generated by FABulous and provides several features:

  • Exploration and Searching
  • Easy Navigation and a High Detail View of the Fabric
  • Displaying user designs (experimental)
  • Viewing HDL code of Bels, Switch Matrices

Additional features are planned, including:

  • Interactive architecture editing
  • User design editing

For infos on planned features, refer to Planned Features

Disclaimer

FABulator is in its alpha stage and several features are still experimental. Known bugs can be found in Known Bugs.

Getting Started

Prerequisites

FABulator uses Java 17. On linux, the jdk can be installed with

sudo apt install openjdk-17-jdk

To build and run FABulator, maven is required. On a linux machine, it can be installed with

sudo apt install maven

Setup

To set up FABulator:

git clone https://github.com/FPGA-Research-Manchester/FABulator
cd FABulator

To build and run:

mvn javafx:run

For information on how to use FABulator, see How To Use

Screenshots

View of a DSP tile with the HDL code of its bel

App Screenshot

Clicking on a port displays its programmable connections

App Screenshot

Displaying a user design

App Screenshot

Selecting nets

App Screenshot

Tiles can be color coded

App Screenshot

Documentation

Documentation both for the user and developer side can be found at Documentation

fabulator's People

Contributors

fpga-research avatar jakobternes avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

fabulator's Issues

Empty Net navigation faulty

Selecting a net in the Netlist Tab is supposed to center the viewport on the net. With empty nets however, this will result in faulty coordinate calculation of the (empty) net, thus centering on an area outside the fabric.
When selecting an empty net, there should be no changes in the Fabric view.

Feature request: Easier permanent colour change for wires

Right now it takes three clicks to change the colour of a wire: Right click for opening the dialog, left click on the dialog and another left click to select the colour. This could be reduced to two or even one click if a color was previously selected. One click: Press a key (I suggest ctrl or shift) while selecting a wire. This would need the implementation of #3 . Two clicks: Right click on wire, then the dialog should show an option for either selecting a colour or just using the last used color. Of course also both options could be implemented.

Feature Request: Hide unused wires after FASM is loaded

For a better overview, unused wires could be hidden after a *.fasm file was loaded. This should however also be configurable, prefereably through a button which can be reached directly without opening another menu. Maybe on the lower bar where also the search is placed? Also one could play around with also making the wires thicker automatically when the unused wires are hidden, but this could be also look bad if two adjacent wires are used and would then overlap.

Feature Request: Select object on click and temporarily highlight it

Hi, it would be nice if objects could be selected by clicking the left mouse button (LMB). They could then be temporarily highlighted (e.g. until something different is selected or the user just clicks somewhere else) so it is a few click less to see e.g. where the wire ends. IMHO it would also feel more responsive if you get some feedback when clicking the LMB. Maybe also the tooltip could be shown on click so it appears faster, but this should be considered after seeing it in action. Let me know what you think about it! ๐Ÿ˜ƒ

Custom colors cannot be selected and break the colouring functionality

When trying to set a custom color, a white "subwindow" opens for a short time and then disappears, so no colors can be selected. Additionally, after this I cannot set any color for a wire. Only the dialog opens with the last selected color (which can also not be selected). This can only be solved by reloading the geometry.

To replicate this:
Right click on a wire to view the color dialog. Click on the dialog. Select custom color. Try to set a color for a wire.

Maybe this feature is not yet implemented? However it should still not break the functionality, so if it is not implemented yet, it could just be deactivated, since it is not that important and I stumbled upon it when trying to reset the color.

I'm running Ubuntu 22.04 with i3 as a window manager if this is of any help (e.g. if the error cannot be reproduced on other systems).

If any additional information is needed, I can of course provide it.

Feature request: List ports of selected object

In addition to #3, if an object is selected, it would be nice to have a list of all its ports. This could be placed in another tab in the side panel (where world view etc. is located). Or is this already implemented and I did not find It?

Feature request: Unload FASM file

It would be nice if unloading a .fasm file was possible, so that all connections set in it are not longer visible. All user defined connections or colours should however be preserved. This might cause conflict if the user changed connections previously set by the .fasm file, so it has to be decided whether those connection should be kept or deleted.

Bug: Thick wires hide the ports and make hovering for the port tooltip impossible

We've previously talked about how the wire overlaps the port both visually and logically (so that the port tooltip is not shown while hovering over the overlap). This problem gets a bit worse if the wire width is increased. If It is set to the maximum, the port is completely covered by the wire and no information about the port can be obtained:
image

To solve this, changing the thickness of the wire should not change its length, so that at least half of the port is still visible and therefore hoverable and selectable. As also discussed before, it could be tried to let the wire end at 1/4 of the port instead of in the middle. I remember something like this was tried already but did not look good, but I can't remember exactly what was tried.

Maybe also somebody else has an idea what would be the best approach?

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.