2.1 Related Work
Efficient cross toolkit development process requires automation to minimize time and
effort necessary to update the toolkit to match new requirements. Such automation is
built around a machine-readable definition of the target hardware platform. There are
three groups of languages suitable for this task:
– Hardware Definition Languages (HDL, [10]) used for detailed definition of the
hardware;
– Architecture Description Languages (ADL, [9] and [13]) used for high-level de-
scription of the hardware;
– and general purpose programming languages (such as C/C++).
HDL specifications define CPU operations with very high level of detail. All three
major modern HDL – VHDL [5], Verilog [6], and SystemC [7] – have execution en-
vironments that can serve as a simulator to run any assembly language programs for
the target CPU: Synopsys VCS, Mentor Graphics ModelSim, Cadence NC-Sim and
other. Still, low performance of HDL-based simulators is one of the major obstacles
for HDL application in cross toolkit development. Another issue is the late moment of
HDL description availability: it appears after completing the instruction set design and
functional decomposition. Furthermore, HDL does not contain an explicit instruction
set definition that makes automated assembler/disassembler development impossible.
These issues prevent from using HDL to automate cross toolkit development.
Architecture Description Languages (such as nML[1], ISDL[2], EXPRESSION[3])
are under active development during the recent decade. There are tools created for rapid
hardware prototyping at the high level including cross toolkit generation. Correspond-
ing approaches are really good for early design phase since they help to explore key
design decisions. Unfortunately, at the later design stages details in an ADL description
become smaller, the size of the description grows and sooner or later it comes across the
limitations of the language. As a result, is breaks the efficiency of the simulator gener-
ated from the ADL description and makes the profiler to give only rough performance
estimates without clear picture of bottlenecks. Cross toolkits completely generated from
an ADL description are not applicable for industrial-grade software development yet.
Manual coding with C or C++ language gives full control over all possible details
and allows creation of cross toolkits of industrial quality and efficiency. Many compa-
nies offer services on cross toolkit development in C/C++ (e.g. TASKING, Raisonance,
Signum Systems, ICE Technology, etc.). Still it requires significant efforts and (what
is more important) time to develop the toolkit from scratch and maintain it aligned
with the requirements. Long development cycle makes it almost impossible to use cross
toolkits developed in C/C++ for hardware prototyping and design space exploration.
3 ISE Language
We developed ISE (Instruction Set Extension) language to specify hardware design ele-
ments that are subject to most frequent changes: memory architecture and CPI instruc-
tion set. ISE description is used to generate assembler and disassembler tools com-
pletely and to generate components of the linker, debugger and simulator tool.
111