Skip to main content

GINGER

Ginger Is Not a GAL EmulatoR

Image

So what is this then?

This is a tool that reads GAL .pld files and uses .vec files to solve equation. Some may call this an emulator, but it is not: it's just an equation solver that feels like it's "emulating" a real GAL.

Quick start

pip install ginger-emulator
ginger ./sample/addr.pld ./sample/addr.vec

Please see sample GAL code and corresponding vector file.

Rules on writing .vec files:

  • Lines that start with @ are test case names.

    E.g. @ Test various stuff

  • Lines that start with < list signals that you want to input (each following line needs to set those signals high or low).

    E.g. < A15 A14 A13 A12 /RD /WR

  • Lines that start with > list signals that you want to display after every step.

    E.g. > /ROM /RAM /IO

  • Lines that start with ? are test case assertions, they should contain key-value pairs for your tests. Ginger will exit with non-zero code if any test fails.

    E.g. ? /ROM=1 /RAM=0 /IO=1

  • Comments start with #. If a comment is added after a vector, it will be printed during run.

  • Empty lines are ignored.

  • All other non-empty lines are vectors. Whitespaces are ignored and can be added only for visual clarity.

    E.g. 0101 1 1 (equivalent to 0 1 0 1 11 or 010111)

Requirements

Features

Supported:

  • Combinatorial logic
  • Registered logic
  • Tri-states
  • Automated test-case assertions
  • Arbitrary inversion of signals in inputs/outputs/assertions (e. g. ? /RAM=1 is equivalent to ? RAM=0)
  • Timing diagram generation

Not supported (yet?):

  • Output enable (ignored)
  • Validation of inputs/outputs

Perks:

  • Vim syntax highlight file can be found here.

Disclaimer & some technical warnings

This tool does not guarantee that the assembled .pld code will behave in the same way on a real GAL. Additionally, it does not guarantee that the .pld file is a valid assembly (e. g. it does not validate if user is trying to use input pins as outputs, term limit, etc, and and will allow the user to do all sorts of silly stuff).

Ginger is using Lark for parsing .pld grammar and only validates the syntax, not the semantics.

So please use, say, galasm to assembled the .pld file first in order to see if it can be used to program a GAL in the first place, and then feel free to use Ginger!

Metadata

Release files for ginger-emulator 0.2.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ginger-emulator 0.2.7
File Size Uploaded
ginger-emulator-0.2.7.tar.gz 6.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ginger-emulator 0.2.7
File Interpreter ABI Platform
ginger_emulator-0.2.7-py3-none-any.whl Python 3 none any Details

Total release size: 13.8 kB

Release files / ginger-emulator-0.2.7.tar.gz

Download URL ginger-emulator-0.2.7.tar.gz
Size 6.8 kB
Tags Source
SHA-256 checksum
How to use checksums
7b0b0120d75cab4c4d3d4e6189336be09adcfaa905d968c19a686b75774341fa
BLAKE2b-256 checksum
How to use checksums
0efc877791746de8f6bbce029c004f8e9fbbfd4c35815c8df2f5ad1b4767eb36
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.5

Release files / ginger_emulator-0.2.7-py3-none-any.whl

Download URL ginger_emulator-0.2.7-py3-none-any.whl
Size 7.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2c8eeb1840053a496e51df390780c2e79d8e65a9babbeadf0231f07d102a48be
BLAKE2b-256 checksum
How to use checksums
70a4f2d2e08482ddfc69263804805ae0a0a2e45060cd555055119d28abb75080
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.5

Release history Release notifications | RSS feed

This release

0.2.7 This release

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page