This is the mail archive of the
sid@sources.redhat.com
mailing list for the SID project.
Re: Developing a new simulator
- To: Harshad R Joglekar <harshad dot joglekar at wipro dot com>
- Subject: Re: Developing a new simulator
- From: fche at redhat dot com (Frank Ch. Eigler)
- Date: 15 Sep 2001 10:16:13 -0400
- Cc: gdb at sources dot redhat dot com, sid at sources dot redhat dot com
- References: <3BA1FCB5.FC8CDA1C@wipro.com>
Harshad R Joglekar <harshad.joglekar@wipro.com> writes on gdb@sourceware:
: [...]
: I want to write a simulator for a processor. [...]
:
: 1. Develop the simulator from scratch
: All features have to be implemented manually, with a little help from
: sim/common/.
(IMHO, that'd be a waste.)
: 2. Use cgen
: Cgen provides a lot of options (for the simulator), and documentation.
: The approach is also very formal (it uses a RTL like language). But as
: of now, not many ports seem to be using it. I am not sure if cgen would
: support various kinds of instructions, registers, etc. I also don't know
: of it's reliability (since it is in version 1.0).
: [...]
CGEN is quite powerful, and is used almost universally for ports of
new embedded targets (some very complex) being developed by Red Hat.
Many of these ports have not yet been released, but the CGEN tool has
been. (Don't worry about the version number.)
: 3. Use igen or sid
: I could not find any documentation on igen
IGEN is an alternative to CGEN, if creating a CPU simulator is all you
want to do, and if you want to use the sim/common family. Like other
tools with limited/no documentation, IGEN can be learned by studying
examples.
: and sid is not yet released.
Yes, it is: <http://sources.redhat.com/sid>. It is an alternative to
sim/common, in that sid is more of a simulator framework rather than a
specific CPU simulator. It includes CPU models whose kernels are
generated by CGEN, but can also host hand-made or other-tool-made CPU
simulation kernels.
: Reliability is still a concern as in cgen.
That's hard to compare & quantify.
So, your choice tree looks like:
* choose framework: sim/common or sid
* choose kernel: igen or cgen or hand-made
sim/common ==> igen or cgen or hand-made?
sid ==> cgen or hand-made? (igen is not ported yet to generate
sid-compatible code)
- FChE