-
Notifications
You must be signed in to change notification settings - Fork 23
SpyDrNet Feature Road Map
thunder-hammer edited this page Jun 3, 2021
·
46 revisions
- 1.0.0: 12/19/2019
- 1.1.0: 1/20/2020
- 1.2.0: 2/7/2020
- 1.3.0: 4/20/2020
- 1.4.0: 4/21/2020
- 1.5.0: 9/1/2020
- 1.6.0: 9/24/2020
- 1.7.0: 1/21/2021
- 1.8.0: 4/23/2021
Documentation:
- Added an example to build the diagram in API Reference called minimal.py
- Incorporated the example in the documentation
API:
- Edif parser combines nets into a cable when they have sequential numbering in using vivado style naming.
- Edif composer will split multi bit cables into individual nets that attempt to follow vivado style naming syntax.
- Most Intermediate representation elements have a better print function.
Known issues:
- Documentation number is currently unspecified. Will fix in 1.8.1
- Verilog support is alpha. Issues are known to exist. Will improve in 1.8.1
- some features may not work in Python 3.5 please use 1.7 planned fix in 1.8.1
Documentation:
- add additional examples to the documentation including some examples of visualization
- add a link in the documentation to a graph-viz plugin that leverages SpyDrNet to visualize smaller netlists.
- correct some spelling and minor issues
API
- Fix bugs with the Verilog Parser and composer
- Many additional tests related to Verilog
Documentation
- Diagrams and examples for every part of the IR,
- More Documentation in the examples
- Vivado examples.
- how to generate an edif file
- Add comments to inner and outer pins information on the minimal.py
- Piece out the reference section in the documentation
- move the api summary to it's own section.
- combine installation sections
- move the metadata introduction to
- Add better section on metadata
- add a section on how the metadata is used
- include Name and edif identifier and properties.
- Document how to use the get_cable functions
- better documentation for the hierarchical references (used in TMR)
- Documentation on the namespace manager
- Document the callbacks features.
Development
- add a shortcut to get the higher index on a cable and port
- create a shortcut to get a cable or pin by real index instead of just indexing in the pin or wire list. (adjust for the lower index)
- Shortcut for the width.
- add a shortcut to get the properties of the object
- these are currently stored in the metadata as something like "edif.properties" and "verilog.parameters" or something. Look into this.
- make a shortcut to cable.wire be cable.wires[0] and port.pin to port.pins[0]
- add the examples to the tests.
Verilog to VQM
- VQM Composer
- Edif to Verilog?
- Verilog to EDIF?
- Get input from dr. Wirthlin to polish for shrec
- Some form of accelerators for parsing
- GUIs for visualization
require a 2.0 release before they can be included.
- Rename some components
- hierarchical instance simplifications
- remove return lists instead of generators
- Pin simplifications
- remove href port and cable layers, have the parent of all things be instances #89
- improve the Pretty print
- Connectivity graph, sequential graph, graph analysis (NetworkX support). <- SHREC?
- vendor primitive library support <- SHREC?
- DRC check. for example no pointers crossing netlist boundries.
- connectors / inverters (useful for VQM support and Verilog support);
- assign wire1 = wire2; u0 module_def(.clk(!clkn)) or module_def(.clk(~clkn))
- resource utilization tracker (budget for partial TMR/DWC). <-SHREC related?
- device support (bad cuts, resource tracking). <-SHREC?
- factories for parameterizable primitives. <- May be important for VQM support.
- Pyeda support.
- FOSS EDA ecosystem support? <- Really interesting to look into: Proprietary Vivado, Verific, (Mentor Graphics TMR?, Synopsis TMR?); FOSS - LiveHD, Yosis, BYU EDIF Tools, ABC, MyHDL, PyMTL
- C++ implementation?
- more languages
- TMR across hierarchy (targeting microblaze). <- SHREC?
- DWC across hierarchy <- SHREC?
- Flattening a design. (done? What about doing it to only a part of the design though?)
- Make non-leaf definitions unique. (Done? What about doing it to only a part of the design though?)
- Translation from one netlist format into another.
- Report leaf-cell utilization
- Report how many nets a netlist has
- topological sort of libraries, definitions, cells, detect dependency loops (this library uses a definition in another library, but that definition instances a definition in the same library.
- clock domain analysis: <- SHREC
- Identify clock sources.
- Identify clock domain crossings.
- Identify synchronizers.
- Shortcuts on Hrefs:
- There are a lot of things we could shortcut when it comes to hrefs but in general if there were a way to pass through to the item's calls from the href it would be nice. Lets just start with the instance calls. example long ways:
- for an instance:
href.item.reference
href.item.parent
- could be shortened to
href.reference
href.parent
- Support Constraint files
- improve netlist comparator.
- Hello world, low level
- Hello world, parser
- Hello world, more advanced
- showing how to iterate though the netlist
- reports
- report all leaf cells and total instances of each
- report total nets
- report total instances
- Merge scalar cables into a single array cable.
- Naming, go with a single name, caching EDIF.identifier is fine, but'NAME' is where it is at.
- array to scalar
- reordering of pins
- ofuscations of netlist for security
- actually changing how a lut is wired without changing functionality
For the release: We need good API examples Complete API, object removal We need good documentation
Prerelease for before the holidays
- check the projects tab on github for some information on this.
- we need to define the documentation pre-release as well.
We need a release check
1.1.0 new formats merge netlists constraint handling
Serializer of the itermediate representation look into pickle (for now) and json Coordinate with other open source tools Properties and names need work callbacks property management
EDIF parser rework to use the creation API EDIF composer rework to use the analysis API
Add plugin capability. - this should probably be discussed more with nailed down details.