DesignFormat
DesignFormat is a file format for storing fully expanded, hiearchical design data. It is uses JSON as a storage format as many languages offer native and relatively performant JSON parsers - making it easy to share data between different environments. DesignFormat is intended to be used as the interchange format between different tools, eliminating the need for multiple tools to parse the source data - which can introduce inconsistencies and errors.
Types
- DFBase: Base class, provides every other object with an ID, a description, and a map of arbitrary attributes (for passing options).
- DFDefine: Defines a named constant value related to the design.
- DFBlob: Can carry an arbitrary number of DesignFormat nodes of different types.
- DFProject: The root node exported to file. Provides interconnect and constant definitions, and holds the root blocks defined in the project.
- DFInterconnect & DFInterconnectComponent: Represents a connection type, comprised of components which can either be complex (other DFInterconnect instances) or simple (wire connections with a specified width and direction).
- DFBlock: Represents a block in the design hierarchy with ports, connections, and child blocks. It can also hold a register interface definition.
- DFPort: Represents a port on a block, with a specified direction (input or output) and a type (referencing a DFInterconnect type).
- DFConstantTie: A point that can be connected to an input port to hold it at a constant value.
- DFConnection: Defines a connection between two points (either two ports, or a contant tie and a port).
- DFRegister: Represents a register with an address, access modes, and a set of fields.
- DFRegisterField: Represents a single field within the register with a name, a width and a reset value.
Using the Javascript library
Loading a DFProject
const df_models = require('./javascript/df_models.js');
const fs = require('fs');
let data = JSON.parse(fs.readFileSync('./my_file.df_project').toString());
let project = (new df_models.DFProject()).loadObject(data);
Loading a DFBlob
const df_models = require('./javascript/df_models.js');
const fs = require('fs');
let data = JSON.parse(fs.readFileSync('./my_file.df_blob').toString());
let project = (new df_models.DFBlob()).loadObject(data);
Using the Python library
Loading a DFProject
from df_models import DFProject
import json
project = None
with open('./my_file.df_project', 'r') as fh:
project = DFProject().loadObject(json.load(fh))
Loading a DFBlob
from df_models import DFBlob
import json
project = None
with open('./my_file.df_blob', 'r') as fh:
project = DFBlob().loadObject(json.load(fh))
Generating Documentation
System Requirements
The following dependencies are not mandatory, but are required for building the documentation:
- Sphinx - Powerful documentation generation tool
- Recommonmark - Markdown convertor for Sphinx
- Sphinx Markdown Tables - Markdown table convertor for Sphinx
- Sphinx RTD Theme - Read The Docs theme for Sphinx HTML
- Sphinx JS - Integrates JSDoc output into Sphinx
- JSDoc - Javascript documentation generator
$> pip install sphinx recommonmark sphinx-markdown-tables sphinx-rtd-theme sphinx-js
$> npm install -g jsdoc
Building the Documentation
To build the documentation, open this directory in a terminal and execute:
$> make build
HTML documentation will be generated under documentation/build/html.
Metadata
Release files for designformat 1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| designformat-1.3.tar.gz | 28.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| designformat-1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 69.8 kB
Release files / designformat-1.3.tar.gz
| Download URL | designformat-1.3.tar.gz |
|---|---|
| Size | 28.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c231ca297f329f8da1f28a29eb2f717e066a1cfc4c7db59ac12c76ef7da586da
|
|
BLAKE2b-256 checksum How to use checksums |
f3d1348099536eb159400ad94b5be03fcff33dcb4ac198cd3cb1f6db5686475e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.40.2 CPython/3.7.4
|
Release files / designformat-1.3-py3-none-any.whl
| Download URL | designformat-1.3-py3-none-any.whl |
|---|---|
| Size | 41.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d42cb5e36fd73ea0e1e733f047fb1f00f7ee4bd464da8cad27991f90aa602515
|
|
BLAKE2b-256 checksum How to use checksums |
9a152db02ed5f1f10b93f829fa2e05c97897508a73ac43880080f4a3e8ed6ae7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.40.2 CPython/3.7.4
|
Security for designformat 1.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.