Metadata-Version: 2.1
Name: python-fpga-interchange
Version: 0.0.18
Summary: Python library for reading and writing FPGA interchange files
Home-page: https://github.com/chipsalliance/python-fpga-interchange
Author: F4PGA Authors
Author-email: f4pga-wg@lists.chipsalliance.org
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: ISC License
Classifier: Operating System :: OS Independent
Requires-Python: 
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pycapnp
Requires-Dist: python-sat

# FPGA Interchange

This python module is designed to read and write FPGA interchange files, and
provide some interoperability with other common formats.

## Capabilities

This library supports the following capabilities:
 - Generate FPGA interchange files using Pythonic object model
 - Read FPGA interchange files into Pythonic object model
 - Sanity check logical netlist for completeness and correctness.
 - Sanity check a logical and physical netlist for completeness and
   correctness, given a device database.
 - Read some common logical netlist formats into the Pythonic object model:
   - (Planned) eblif
   - Yosys Netlist JSON
 - Basic (incomplete) placer constraint solver

## Basic placer constraint solver

The placer constraint solver enforces the constraints per 

### Running basic placer constraint solver

First generate xc7a35tcpg236-1 database from RapidWright:
```
"$RAPIDWRIGHT_PATH/scripts/invoke_rapidwright.sh" \
    com.xilinx.rapidwright.interchange.DeviceResourcesExample \
    xc7a50tfgg484-1
```

Annotated the xc7a35tcpg236-1 database with constraints:
```
python3 -mfpga_interchange.patch \
    --schema_dir $RAPIDWRIGHT_PATH/interchange \
    --schema device \
    --patch_path constraints \
    --patch_format yaml \
    xc7a35tcpg236-1.device \
    test_data/series7_constraints.yaml \
    xc7a35tcpg236-1_constraints.device
```

Write out example physical netlist:
```
python3 tests/example_netlist.py \
    --schema_dir "$RAPIDWRIGHT_PATH/interchange" \
    --logical_netlist simple.netlist \
    --physical_netlist simple.phys \
    --xdc simple.xdc
```

```
python3 -mfpga_interchange.constraints.tool \
    --schema_dir "$RAPIDWRIGHT_PATH/interchange" \
    --allowed_sites IOB_X0Y0,IOB_X0Y1,IOB_X0Y2,SLICE_X0Y0,BUFGCTRL_X0Y0 \
    --filtered_cells VCC,GND \
    --verbose \
    xc7a35tcpg236-1_constraints.device \
    simple.netlist
```

This repository was moved to CHIPS Alliance as of commit `b13ee55ebce` As part of the CHIPS due diligence process for non-Apache 2.0 projects, all contributors for over 1% of the codebase signed the CHIPS CLA: Antmicro (corporate CLA), Google (corporate CLA), gatecat (individual CLA). Any further contributions require a CLA to comply with the CHIPS Alliance IP policy.
