Programmable logic devices (PLDs) are gaining in acceptance, of late,
for designing systems of all complexities ranging from glue logic to s
pecial purpose parallel machines. Higher densities and integration lev
els are made possible by the new breed of complex PLDs and FPGAs. The
added complexities of these devices make automatic computer aided tool
s indispensable for achieving good performance and a high usable gate-
count. In this article, we attempt to present in an unified manner, th
e different tools and their underlying algorithms using an example of
a vending machine controller as an illustrative example. Topics covere
d include logic synthesis for PLDs and FPGAs along with an in-depth su
rvey of important technology mapping, partitioning and place and route
algorithms for different FPGA architectures.