Roadmap

DISCLAIMER: This zamiaCAD project plan is subject to change. Dates given are estimates and developers are in no way committed to them.

This is very much work-in-progress. Right now we have an advanced TODO-List here, a road map needs to be decided on in the future.

zamiaCAD Core

Syntax Level / Language Support

  • Verilog
    • Add missing productions (e.g. UDP support)
    • Implement proper operator precedence in expressions
    • Test with more examples from opencores.org, opensparc.org
    • Compliance tests
  • VHDL
    • Fix PSL support
    • Fix NameExtension lookaheads / AST
    • Fix production end position recording in AST
    • Finish compliance tests
    • Use Identifier class instead of simple Strings
    • Sequential statements: get rid of label: lookahead
  • Additional languages
    • AHDL
    • SystemVerilog
    • VHDL-AMS
    • VHDLScript (Agile VHDL, similar to Scala vs Java)
  • Refactoring support

Intermediate Level / Elaboration

  • Built-in simulator
    • Add missing features / improve performance
    • Incremental/delta simulation
  • Elaboration
    • Fix signal parameter semantics
    • Implement missing features
    • Compliance tests
    • Verilog elaboration
  • Full index of paths (lucene?)
  • Check who is calling wrong IGM.findModule(signature) method
  • Check/fix incremental build
  • Do not store IGObjects separately?
  • Structural editing support
  • Analysis
    • Trace individual elements of arrays
    • Trace individual fields of records
    • Search for sourceless/sinkless nets
    • Advanced tracing
      • Cone
      • Path
      • Configure flipflop/latch recognition in BuildPath.txt, trace scanchains
  • Multithreading / on-demand IG build
    • ERManager
      • Locking
      • Listener interface
    • DUManager
      • Port to java concurrency framework

RT Level

  • Port synthesis code, implement RTL graph generator using IG tree visitor
  • Elaboration
    • Fix signal parameter semantics
    • Verilog elaboration
  • Built-in simulator
  • FSM Recognition

Netlist Level

  • Port old Signs code

Infrastructure / Misc

  • ZDB
    • Store in background thread(s)
    • Named objects -> data file
    • B+Trees for indices?
    • Free(): buddy alloc system, vacuum db
  • Graph layout engine
  • Command line / standalone version
  • Scripting support
    • Using an existing script engine, e.g. jython or jruby
    • Add Tcl support - would probably involve writing a GPL-compatible Tcl implementation in Java
  • Implement standard APIs (e.g. VPI), define and document own interfaces where necessary
  • Support other external tools
    • Bringup-tool integration
    • Log viewer
    • Formal verification?
    • Altera Quartus / QUIP
    • Xilinx ISE
  • Support other environments
    • Emacs
    • Vim
  • Remove old ZIL classes, rename IG classes to ZIL

zamiaCAD Eclipse Plugin

TODO

  • Structural editing
    • Source-code based
    • Graph viewer based
  • Waveform viewer
    • Derived signals
      • Mapped interface signals
      • User-defined
    • Waveform annotations ("panels")
      • "Panels" support
      • Testbench logfile viewer
      • Scripting
    • Load/save signal lists
  • New search results viewer
    • Graph-Viewer based
    • Multiple tabs
  • VHDL sketching/playground, incremental simulation
    • Agile development
    • VHDLScript
  • Editors
    • Waveform annotations: Profile / improve performance
    • Refactoring support
    • Folding support
    • Verilog editor
  • More structural editing features like e.g. VisualElite (Summit / Mentor)
  • Collect/show signal attributes (where?)
  • FSM Viewer / editor
  • Graph viewer user-directed layout
  • Timing annotations
  • Trace aliased signals
  • Hide implicit operators in navgiator
  • Completion for records
  • Review the "eclipse"-buttons in zamia, are there meaningless buttons?
  • Bug report button (dump information into file) - submit directly to bugzilla via xmlrpc interface?

Old Roadmap (outdated!)

0.9.6.beta7

  • Bug 130 - Add clipboard support to waveform viewer
  • Bug 137 - CTRL-Left doesn't work on individual record fields in waveform viewer
  • Bug 118 - Let user specify/modify signal name in search dialog

  • Bug 133 - add display mode for one-hot encoded signals
  • Bug 134 - add scroll wheel support to waveform viewer canvas
  • Bug 135 - Focus follows mouse for eclipse views?
  • Bug 61 - Annotate: let user choose generic parameters when annotating
  • Bug 87 - Add "Goto Signal Driven" from waveform
  • Bug 127 - annotate annotates default values for generics
  • Bug 128 - Investigate interface signal annotations
  • Bug 126 - Failed to map cursor location to IG Object
  • Bug 124 - Launch config: automatically select first available toplevel when project is selected
  • Bug 83 - Signals driven by a constant do not produce any result indicating where they're written
  • Bug 107 - pop up error dialog when ioexceptions terminate build
  • Bug 93 - Suspected bug in generics elaboration
  • Bug 27 - Improve PSL Support
  • Bug 104 - List of traced signals gets lost/disrupted when signal values fail to parse
  • cm build errors (from systemtest)
  • q7 build errors (from systemtest)



0.9.7

  • Bug 53 - Navigator filtering
  • Bug 121 - Improve annotation performance
  • Bug 117 - Take advantage of file naming convention in libraries
  • Bug 66 - Annotate signal transitions
  • Bug 91 - check array cardinality for static types in assignments
  • Bug 90 - QuickFix: add signal declaration
  • Bug 84 - Some search results on lower hierarchy levels are missing direction information
  • Bug 67 - waveform viewer: load/save signal lists (.io list data format)
  • Bug 12 - Fulltext (wildcard?) search on all signal/instance names in whole design
  • Bug 8 - Search references: trace aliased signals (also cones)

  • Bug 10 - Waveform viewer: display additional/external information (e.g. timing info)
  • Bug 69 - Annotation editor popup: watch/compute expressions, edit values, ...
  • Bug 68 - Find transition origin
  • Bug 73 - trace path between signals
  • Bug 78 - Operation.optimize() is broken for non-pure-constant expressions
  • Bug 4 - Completion Processor for record fields, subprograms, enum constants, ...
  • Bug 1 - Implement graphical search result browser

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer