Design Philosophy
•        Scalability
Computer and chip design is more than a pure engineering job; it is sometimes an artistic
process. A good design can not only endure a harsh operational environment, but also can
anticipate the unexpected. A good design is definitely not just meeting specifications or making
ends meet. It has to consider many factors, including human errors; , unlike machine, humans
tend to make mistakes. The Teklium team believes a good design must incorporate three
important ingredients: scalability, testability, and maintainability.
A scalable design means all parameters, such as bus width, access latency, throughput,
operational frequency, and number of functional bits, must be able to be easily adjusted. The
computer system, or the computer chip, is a very crowded place accommodating a number of
various parts designed by different people with different tools. Only robust components can
make design integration possible and simple, while the rigid one requires constant
modification to be successfully blended in. There are bottoms and switches available in a
scalable design to adjust its behavior to be fitted into a large computer chip.

Today, the design cost of a computer chip is extremely expensive; recycling and reusing
developed parts is the only way to trim down skyrocketing design costs. Another consideration
is about timing; to fully validate a computer chip at least takes two years, if no major bugs are
found. The recycled core can help a development schedule greatly since reusing it does not
require a full scale validation. The computer industry is advancing at an extremely fast pace; to
reuse an old component is much easier said than done, unless it is a scalable design, and
can be tuned and adjusted by setting different parameters. Normally a scalable design can be
reused in a new design without any modification but a simple external patch.

The Teklium team has been involved in scalable designs over ten years. The “Cell Structured
Computer Chip” (CSCC) invented by the Teklium team is an extreme case and also a good
example. The CSCC technology only uses four to five types of scalable components repeatedly
to construct the complete computer chip. This simplifies the design process and shortens the
validation cycle greatly.

A real life example: A modern DRAM bus design always faces a difficult dilemma; there are
tradeoffs in designing a DRAM controller as a single or multiple-channeled bus, but the true
answer will not come until the real chip is tested in an actual computing environment.
Configuring a DRAM bus correctly is a difficult task.

The only practical solution come from the scalability in DRAM interface designs. A scalable
DRAM controller can easily be configured for the number of channels allowed in a DRAM bus.
Once the real chip is designed, the correct number of DRAM channels can be determined by
extensive performance evaluation by trying different configurations.
•       Testability
Test is the most important consideration in designing a complex system, especially designing a
computer chip. Most designers overlook the test issue until the design is fully done; they rely on
external tools and outside facilities to manage the complete test cases. Testability is
determined by how a design is structured and executed, not by those tools and facilities. A good
design must take into consideration how test procedures can be easily implemented, and if
errors occur,  how workarounds can be immediately patched. The Teklium team fully grasps the
awareness of building a design for tests. They are among very few in the industry who are
capable designing self-healing computer chips and systems. Those computer chips and
systems have the capability of detecting faults, finding cures automatically, and implementing
these by themselves.

Some people might think that adding diagnostic or testing circuit will increase the chip cost and
reduce the total yield rate, so we have to be careful before committing chip area to those
functions permanently. Calculating the chip cost is a complicated matter. It is never as simple
as just calculating chip area and related material costs. There are many hidden factors involved.
We can broaden our view: the product cost is consisting of three major portions, the material
cost, the development cost, and the operation cost. Eventually any chip needs to become a
profitable product; all cost factors must put into consideration. Adding testing circuit into a chip
definitely will increase its material cost, but if adding adequately, it might reduce development
and operation cost greatly.

A real life example: A computer chip generate a faulty write to DRAM memory occasionally while
running certain applications, how to locate the problem?

A testable design should be able to freeze the system under a specific condition, in this case,
the moment when the faulty write is generated. To make this happen, a set of test registers
should be designed and installed in computer chips in order to allow test engineers in the
future to write simple commands to freeze the system in a predefined circumstance. Those
registers should be able to handle various cases, in here, the read, write, refresh, or special
cycles with the sensibility of specific data content. A counter is also necessary in case the
problem is not happening at the first occasion.
•     Maintainability
A design is not written for a single engineer but a whole team to work on it. How to document the
design process and keep tracking all design materials is very crucial of making a design
maintainable. Especially, the number of bugs is always proportional to how much design been
done. The ease of debugging process is totally relies on how the design is documented and
maintained. Most engineers tend to say that his design work is already far behind schedule,
how it is possible to spend more time on documentation and make schedule even worst?
Actually, the design cycle only eats up at most 30% of the total time making a chip functioning. A
poor maintained design can make debugging process miserable. At worst case, it might cause
a chip unreliable or even being abandoned. To make a chip design completed in a foreseeable
schedule, the maintainability is only answer.

A well maintained design can also benefit the case that such design has to be modified or
updated in a newer chip. The new designers can immediate start on modification by reading
well documented instructions and design records. A well maintained design is just like a city
with detailed and accurate maps; it is very helpful for anyone visiting immediately finding right
directions. It can increase the reusability and make all development effort well invested.

A real life example: Occasionally an industrial standard might be modified or updated due to
technology evolving. In a communication system, a PCIX interface is more propriety today than a
PCI one before. How to modify a PCI Bus interface into PCIX one?

The answer is coming from how PCI design is documented. PCIX is a much more robust
peripheral bus standard comparing to PCI. It is a superset of PCI standard and allows multiple
long burst tenures active at the same time. A well maintained PCI bus interface can be a good
starting ground since PCIX still processes many similarities from PCI bus. Many PCI test cases
are still valid on PCIX. Starting from PCI controller can speed up design process greatly.