Giter Site home page Giter Site logo

jpt13653903 / alcha Goto Github PK

View Code? Open in Web Editor NEW
6.0 2.0 0.0 3.35 MB

A New Programming Language for FPGA Projects

Home Page: https://sourceforge.net/p/alcha/wiki

License: GNU General Public License v3.0

C++ 62.23% C 23.39% Verilog 9.78% HTML 2.29% VHDL 0.20% Batchfile 0.06% Vim Script 0.42% Makefile 0.88% Python 0.17% Tcl 0.58%
hardware-description-language fpga programming-language

alcha's People

Contributors

jpt13653903 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

alcha's Issues

Phoenix the Arthitecture

Once the thesis is complete, phoenix the compiler architecture so that the built-in data structures, data flow and overall concept follows the design presented in the thesis.

The thesis also introduces new features (nested attribute dictionaries, stream-lined translation phases, "this" reference within classes, etc.), all of which require major rework on the compiler.

MD5 Tags

For compiler: look at MD5 sum, not the modification date.

Nested Comments in Vim

When the comment closes as "+/+/", the comment region is not ended. Putting a space "+/ +/" hides the symptom.

Virtual Pins

Alcha must support the concept of "virtual" pins. If a pin does not specify a location, it's automatically marked as virtual (turned into a net in Xilinx (which does not support virtual pins), and marked as a virtual pin in the QSF in Altera).

Planning

  • Generate tasks based on the TOPLAS and SIPS 2018 articles, all sorted into the milestones
  • Assign due dates to the milestones (adding new milestones as required)

Bring the Wiki up to date

Once the thesis is complete, transfer the thesis version of the EBNF and language specification to the Wiki.

  • Scanner EBNF
  • Parser EBNF
  • Verification EBNF
  • Language Specification

Comments

The first comment of the file is associated with the file (it is the header).

Any other comment is associated with the next expression (or structure).

Make this part of the parser. The comments must follow all the way to the final output.

Update parser

There has been some major updates to the EBNF. The parser needs to be brought in line.

Compile message comments

Comments that start with !! must be printed out to the command-line while the compilation is in progress...

This can be used for To-Do messages, etc...

Scripts must be evaluated only when required

Scripts must be evaluated only when required:

  • Any translation unit that the script depends on have changed
  • Any translation unit that calls the script have changed
  • Any file that the script reads have changed

Auto Counters

Abstract the time between signals so that Alcha automatically generate the counters, etc. for something like the timing generator.

Location Constraints

Object attributs should allow location constraints, so that a module instance (class instance) can be constrained to a fixed region of the FPGA fabric.

Another application is to constrain a PLL to a specific resource, as is required for the MAX10 ADC PLL.

Numerical time-stamp

Instead of __DATE__ and __TIME__ strings, make them numerical instead...

Or perhaps have __YEAR__, __MONTH__, etc. as num type...

Invalid space characters

The current scanner assumes that U+200C and U+200D are spaces, where they are actually joiners and should not be handled as spaces.

The Unicode standard specifically states that U+2060 must be ignored for "word segmentation".

Similar with U+180E. The standard states that "MVS is not a suffix but an integral part of
the word stem"

Automated Reports

The compiler should produce LaTeX / HTML-based reports on:

  • Simulation report
  • State-machine interaction
  • Multi-cycle paths
  • Clocks
  • etc.

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.