Changes between Initial Version and Version 1 of Component/ARM966


Ignore:
Timestamp:
Jun 13, 2008, 1:18:53 PM (16 years ago)
Author:
gracia
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Component/ARM966

    v1 v1  
     1[wiki:Component SocLib Components General Index]
     2
     3'''UNDER DEVELOPMENT'''
     4
     5= ARM966 Processor Functional Description =
     6
     7This hardware component is a ARM966 processor core. This is only an ISS, which should be wrapped with an [wiki:Component/IssWrapper IssWrapper].
     8
     9The simulation model is actually an instruction set simulator with an ARM966 pipeline.
     10
     11Currently it only exists in bigendian form.
     12
     13= IMPORTANT: steps to apply before using the ARM966 =
     14
     15Before compiling any SoClib simulator using the ARM966 you will need to download the UNISIM ([http:\\www.unisim.org]) library (well, just a piece of it, the unisim_lib).
     16
     17To do so just download it using svn from [https://unisim.org/svn/devel/unisim_lib] with the following command:
     18 * svn import https://unisim.org/svn/devel/unisim_lib
     19
     20You will have to enter a username and password. If you do not have access to the UNISIM development, you can simply use 'guest'/'guest' for username and password respectively.
     21Once you have downloaded UNISIM you will need to create a link in trunk/soclib/lib/arm966/include/iss/ and trunk/soclib/lib/arm966/src/iss/ to <your_path_to_unisim_lib>/unisim.
     22
     23If you wish you can download the full UNISIM library by downloading unisim_tools and unisim_simulators:
     24 * svn import https://unisim.org/svn/devel/unisim_tools
     25 * svn import https://unisim.org/svn/devel/unisim_simulators
     26
     27Finally you will have to set your soclib.conf (source:trunk/soclib/utils/conf/soclib.conf) file to compile correctly the ARM7TDMI component. Here you have an example of configuration that correctly sets the flags to compile ARM966:
     28{{{
     29# -*- python -*-
     30
     31def _platform():
     32        """
     33        Retrieves platform information and make it look-like systemc's
     34        lib-xxx thing.
     35
     36        Working so far with:
     37         * linux
     38         * darwin
     39        """
     40        import sys
     41        pf = sys.platform
     42        # Strip numeric suffix from platform name
     43        while pf[-1] in "0123456789":
     44                pf = pf[:-1]
     45
     46        remap_pf = {'darwin':'macosx'}
     47        if pf in remap_pf:
     48                pf = remap_pf[pf]
     49        return pf
     50
     51config.systemc = Config(
     52        base = config.systemc,
     53        dir = "${SYSTEMC}",
     54        os = _platform(),
     55        )
     56
     57config.my_toolchain = Config(
     58        base = config.toolchain,
     59        cflags = ['-ggdb', '-DSOCLIB', '-D__STDC_CONSTANT_MACROS', '-Wall', '-Wno-pmf-conversions'],
     60        )
     61
     62config.default = Config(
     63        base = config.build_env,
     64        systemc = config.systemc,
     65        toolchain = config.my_toolchain,
     66        repos = "/tmp/build/sc",
     67        )
     68}}}
     69The flags you will need to compile the ARM966 component are: -DSOCLID and -D!__STDC_CONSTANT_MACROS. In the previous example you can see that the default toolchain has been augmented to define those flags.
     70
     71= Component definition =
     72
     73Available in source:trunk/soclib/soclib/lib/arm966/metadata/arm966.sd
     74
     75== Usage ==
     76
     77ARM7TDMI has no parameters.
     78{{{
     79Uses('iss_wrapper', iss_t = 'common:arm966')
     80}}}
     81
     82= ARM966  Processor  ISS  Implementation =
     83
     84The implementation is in
     85 * source:trunk/soclib/lib/arm966/include/iss/arm966.h
     86 * source:trunk/soclib/lib/arm966/src/iss/arm966.cpp
     87
     88The previous files use the ARM966 implementation provided in the UNISIM library.
     89
     90== Template parameters ==
     91 
     92This component has no template parameters.
     93
     94== Constructor parameters ==
     95
     96{{{
     97ARM966Iss(
     98     sc_module_name name,   //  Instance Name
     99     int  ident);   // processor id
     100}}}
     101
     102== Visible registers ==
     103
     104'''UNDER DEVELOPMENT'''
     105
     106== Interrupts ==
     107
     108'''UNDER DEVELOPMENT'''
     109
     110The handling and prioritization of the interrupts is deferred to software.
     111
     112== Ports ==
     113
     114None, it is to the wrapper to provide them.