Skip to main content

Logik is a light weight FPGA tool chain based on mature open source technologies.

Project description

Logik

Regression Lint


Logik is an open source FPGA tool chain with support for high level language parsing, synthesis, placement, routing, bit-stream generation, and analysis. Users enter design sources, constraints, and compile options through a simple SiliconCompiler Python API. Once setup is complete, automated compilation can be initiated with a single line run command.

Logik depends on the Logiklib which contains the architecture descriptions and device setup files needed to drive the Logik flow.

logik_flow

Logik supports most of the features you would expect in a commercial proprietary FPGA tool chain.

Feature Status
Design languages SystemVerilog, Verilog, VHDL
ALU synthesis Supported
RAM synthesis Supported
Timing constraints (SDC) Supported
Pin Constraints (PCF) Supported
Bitstream generation Supported
IP management Supported
Remote compilation Supported
Multi-clock designs Supported
Supported devices Logiklib devices

Getting Started

The Logik tool chain is available through PyPi and can be installed using pip.

python -m pip install --upgrade logik

All open source FPGA pre-requisites can be installed via the SiliconCompiler sc-install utility.

sc-install -group fpga

The following example illustrate some essential Logik features. For complete documentation of all options available, see the SiliconCompiler project.

from siliconcompiler import Chip
from logik.flows import logik_flow
from logiklib.demo.K4_N8_6x6 import K4_N8_6x6


def hello_adder():

    # Create compilation object
    chip = Chip('adder')
    chip.create_cmdline(switchlist=['-remote'])

    # Specify design sources
    chip.input('adder.v')

    # Specify pin constraints
    chip.input('adder.pcf')

    # Compiler options
    chip.set('option', 'quiet', True)

    # Select target fpga
    chip.set('fpga', 'partname', 'K4_N8_6x6')

    # Load target settings
    chip.set('option', 'flow', 'logik_flow')
    chip.use(logik_flow)
    chip.use(K4_N8_6x6)

    # Run compiler
    chip.run()

    # Display compiler results
    chip.summary()

if __name__ == "__main__":
    hello_adder()

Examples

  • Ethernet: Ethernet MAC compiled for z1000 architecture
  • Adder: Small adder example compiled for a virtual VPR architecture.

Documentation

Installation

Logik is available as wheel packages on PyPI for macOS, Windows and Linux platforms. For a Python 3.8-3.12 environment, just use pip to install.

python -m pip install --upgrade logik

Running natively on your local machine will require installing a number of prerequisites:

We recommend using the SiliconCompiler sc-install utility to automatically install the correct versions of all open source FPGA tool dependencies.

sc-install -group fpga

Detailed installation instructions can be found in the SiliconCompiler Installation Guide.

License

Apache License 2.0

Issues / Bugs

We use GitHub Issues for tracking requests and bugs.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

logik-0.1.0.tar.gz (18.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

logik-0.1.0-py3-none-any.whl (17.1 kB view details)

Uploaded Python 3

File details

Details for the file logik-0.1.0.tar.gz.

File metadata

  • Download URL: logik-0.1.0.tar.gz
  • Upload date:
  • Size: 18.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for logik-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b525dedb72cb3d8857abda08c355fa9bb48f5444e3b2b315f170ed8012f3ded4
MD5 fb802f11bdbccd140c0111ab9c7bd899
BLAKE2b-256 65b66049b9ce653a6f1230362991854bef4e790801318433895ce7cf669f2232

See more details on using hashes here.

Provenance

The following attestation bundles were made for logik-0.1.0.tar.gz:

Publisher: wheels.yml on siliconcompiler/logik

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file logik-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: logik-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 17.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for logik-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 72d36a5a2856abcdfc14f606f6b8f484b9f97fefb7d65c1168ba995293de2d80
MD5 e0acd98f8c44f54665bc55a9fb3d8025
BLAKE2b-256 76b3b1702b4f5ba5e3585a403964fac9b7e9622596c267843094054efc1c25c3

See more details on using hashes here.

Provenance

The following attestation bundles were made for logik-0.1.0-py3-none-any.whl:

Publisher: wheels.yml on siliconcompiler/logik

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page