= Platform Compilation = == Prerequisites == We'll assume your [SoclibCc/SoclibConf configuration file] is valid. In order to compile a platform with soclib-cc, you need: * Your ''top-cell'' SystemC netlist, * A platform description file, listing all used components and their parameters. Your ''top-cell'' file should * Include all soclib component definitions * Paths are relative to systemc/include * Define a sc_main, * Create the components, signals, ... * Connect them * Run simulation. Your platform description should be a python-parseable file, defining variable `todo`, instance of type `Platform`. Arguments passed to `Platform` are the used components, and you custom files (You may want to link in more than one custom .cc file). == Example == I will only use a mapping table, instanciate it, and compile a platform: File `top.cc`: {{{ #include #include #include "mapping_table.h" int sc_main(int argc, char **argv) { using soclib::common::IntTab; using soclib::common::MappingTable; using soclib::common::Segment; MappingTable mt(32, IntTab(2), IntTab(2), 0x300000); mt.add( Segment("reset", 0xbfc00000, 0x800, IntTab(0), true) ); mt.add( Segment("excep", 0x80000080, 0x100, IntTab(0), true) ); mt.add( Segment("data", 0x40000000, 0x4000, IntTab(1), true) ); mt.add( Segment("code", 0x04000000, 0x4000, IntTab(2), true) ); std::cout << "Mapping table is:" << std::endl << mt << std::endl; return 0; } }}} File `platform_desc`: {{{ todo = Platform('caba', 'top.cc', uses = [ Uses('common:mapping_table'), ]) }}} Now the compilation: {{{ $ soclib-cc -p platform_desc soclib-cc: Entering directory `/Users/nipo/labo/soclib/rose/soclib' CxxSource gen repos/release/soclib::common::MappingTable_mapping_table.cc CreateDir gen repos/release CxxSource gen repos/release/soclib::common::AddressDecodingTable_input_t=unsigned_int,output_t=bool_address_decoding_table.cc CxxSource gen repos/release/soclib::common::AddressDecodingTable_input_t=unsigned_int,output_t=int_address_decoding_table.cc CxxSource gen repos/release/soclib::common::AddressMaskingTable_data_t=unsigned_int_address_masking_table.cc CxxSource gen repos/release/soclib::common::Segment_segment.cc CxxCompile compile repos/release/soclib::common::MappingTable_mapping_table.o CxxCompile compile repos/release/soclib::common::AddressDecodingTable_input_t=unsigned_int,output_t=bool_address_decoding_table.o CxxCompile compile repos/release/soclib::common::AddressDecodingTable_input_t=unsigned_int,output_t=int_address_decoding_table.o CxxCompile compile repos/release/soclib::common::AddressMaskingTable_data_t=unsigned_int_address_masking_table.o CxxCompile compile repos/release/soclib::common::Segment_segment.o CxxCompile compile top.o CxxLink link system.x $ }}} And running: {{{ $ ./system.x SystemC 2.2.05jun06_beta --- Aug 29 2006 16:42:34 Copyright (c) 1996-2006 by all Contributors ALL RIGHTS RESERVED Mapping table is: Mapping table: ad:(2) $ }}} For complete examples, watch in `/path/to/soclib/platforms/`.