Single Assignment C was created by two professors at the University of Illinois. The creators, Douglas Reinhold and Robert Erikson, first came up with the idea for the software during their time as students at UIC. The software was initially developed for their undergraduate computer science project. After completing their project, they decided to turn their invention into a commercial product. The first version of Single Assignment C, which is known today, was released in 1993.
The original version of Single Assignment C was limited to the 6502 microprocessor. However, the second version was created with the IBM-PC (Microprocessor on Chip) in mind. As the product matured and became more popular, it became popular enough to include the VIC (Video Input/Output Circuit) and the SCM (Signal Controlled Memory). The result of these upgrades was an increased speed and reliability for the software.
Single Assignment C, like most programming languages, is composed of two parts. The first part is the specification, which describes the code or the program and the second part is the execution, which is the actual execution of the program. A typical single assignment C specification may consist of a header file and a few program files. The specification will specify which machine instructions are used, which functions and data structures are to be used and the data type and structure needed for each function.
The implementation of Single Assignment C will translate the specification into the execution code that actually performs the operations required by the program. These implementations can either be implemented using a high-level assembler or C compiler.
Single Assignment C can be integrated into an FPGA circuit in a number of different ways. The most common way is through a hardware design tool such as Eagle or VHDL. By using an FPGA programmer, the circuit design can be made ready for manufacturing.
When integrating SA-C into an FPGA circuit, it is imperative that the programmer uses a program that is compatible with the FPGA. The FPGA chip can only operate with the program that is compatible with it. Although, this limitation is not insurmountable, it does limit the types of programs that can be used to create a complete FPGA design.
A C compiler is also available for SA-C programming. This can be downloaded from an online source. If the compiler is an open source, it may not always be up to date or compatible with the latest version of the software. The compiler can usually be updated or fixed by downloading the latest release. The best option is to use an automated tool such as SICP (Software Interface Checker) to ensure the compatibility of the tool.
It is important to understand the difference between the SICP and the open source C compiler. The open source compiler is free for all users to use while the SICP compiler is proprietary. The former is a paid tool but provides a lot of support and is more user-friendly.
A C compiler can be used for designing and implementing the Single Assignment C Software. Once the C program has been written, it must be linked with the FPGA chip. There are many different linking methods. The most common method is the use of an HDL (High Level Library Interface) and then a linker or loader.
Another important tool to help in creating the Single Assignment C programming is an optimizing compiler, which allows the programmer to optimize the C program during its development. Optimizing a C program requires an optimizing compiler to be able to convert the C program into an optimized form and vice versa.
A virtual machine is also available for programming and executing the C programs. This makes it easier for programmers to write their programs for this virtual machine.