A mask programmable integrated circuit includes a read only memory (ROM),
a random access memory (RAM), and a controller. The controller couples to
the ROM and RAM. The controller senses a reset condition and, in
response, directs a clear of the RAM or a preload of contents of the ROM
to the RAM. The preload can be performed after a successful self-test of
the RAM is achieved. The RAM has a variable word length and depth size
and can be configured to operate in one of many modes. The integrated
circuit further includes a first and a second multiplexer (MUX). The
first MUX is interposed between the RAM and the ROM, and selectively
couples either the ROM data or the built-in self-test (BIST) data to the
first MUX output. The second MUX is interposed between the first MUX and
the RAM, and selectively couples either the output of the first MUX or a
(synchronous or asynchronous) data input to the RAM. With the preload
feature, the invention can emulate a ROM, a preloaded RAM, or look-up
table logic functions as well as conventional RAM. Further, BIST allows
for testing of the RAM without the needs for external support.