TCL PLD Assembler

This is a very dirty PLD assembler written in TCL. My motivation for writing this lies in the fact that Linux seems to be lacking in (free) EDA tools.

There is still a lot of work to be done on this, but it may give you an idea or two. It would be appreciated if you email me any device files you may create. I will post them for everyone to use. There are lots of limitations as documented in file tclpld. The primary limitations are: only simple (combinational) modes are supported, and equations must be specified in active-high sum-of-product form. Active-low outputs are supported, but the declaration needs to occur in the Pin declaration.

The assembler works by first sourcing a device file that contains the fuse definitions and macrocell operating features. Virtual connections are made between declared logic blocks. There are four types of logic: AND arrays, OR arrays, Pins, and MacroCells. This file is written entirely in TCL, but no knowledge of TCL is required since the commands that a device file contains are the only routines required to interface with the interpreter. The name of the device file is generated from the source .pld file (an example, test.pld, is included in the file, below). The macrocell blocks are the most interesting. Their declarations contain embedded code that is executed only if the named operating mode is established. Signals (specified in the .pld file) are connected to the pins and then propagated into the device. Propagation continues until a fused array is encountered. Once all signals have been (recursively) propagated, the fuses are allocated. Finally, a JEDEC 3A file is written with the fuse information.

The device definition files are quite large, but they only need to be created once. I have documented the code, but some of it is disorganized.

This program comes with no guarantee and I will not be held responsible for damages that comes from its use.

The program has been tested (although not extensively) using TCL 8.1 on RedHat Linux 6.0. However, it should be platform-independent since it is written entirely in TCL.

TCL PLD Assembler (18740 Bytes)
Latest revision: 0.1
Date: Wed May 17 2000

To install, untar in /usr/local. It will create a directory /usr/local/tclpld and put everything in the right place. You may want to make a link tclpld in /usr/local/bin to /usr/local/tclpld.