class SoC(Module):
     mem_map = {}
     def __init__(self, platform, sys_clk_freq,
-
         bus_standard         = "wishbone",
         bus_data_width       = 32,
         bus_address_width    = 32,
                 colorer(self.bus_interconnect.__class__.__name__),
                 colorer(len(self.bus.masters)),
                 colorer(len(self.bus.slaves))))
+        self.add_constant("CONFIG_BUS_STANDARD",      self.bus.standard.upper())
+        self.add_constant("CONFIG_BUS_DATA_WIDTH",    self.bus.data_width)
+        self.add_constant("CONFIG_BUS_ADDRESS_WIDTH", self.bus.address_width)
 
         # SoC CSR Interconnect ---------------------------------------------------------------------
         self.submodules.csr_bankarray = csr_bus.CSRBankArray(self,
 
        printf("\e[1mCPU\e[0m:       %s @ %dMHz\n",
                CONFIG_CPU_HUMAN_NAME,
                CONFIG_CLOCK_FREQUENCY/1000000);
-       printf("\e[1mROM\e[0m:       %dKB\n", ROM_SIZE/1024);
-       printf("\e[1mSRAM\e[0m:      %dKB\n", SRAM_SIZE/1024);
+       printf("\e[1mBUS\e[0m:       %s %d-bit / %dGiB\n",
+               CONFIG_BUS_STANDARD,
+               CONFIG_BUS_DATA_WIDTH,
+               (1 << (CONFIG_BUS_ADDRESS_WIDTH - 30)));
+       printf("\e[1mCSR\e[0m:       %d-bit / %d-bit aligned\n",
+               CONFIG_CSR_DATA_WIDTH,
+               CONFIG_CSR_ALIGNMENT);
+       printf("\e[1mROM\e[0m:       %dKiB\n", ROM_SIZE/1024);
+       printf("\e[1mSRAM\e[0m:      %dKiB\n", SRAM_SIZE/1024);
 #ifdef CONFIG_L2_SIZE
-       printf("\e[1mL2\e[0m:        %dKB\n", CONFIG_L2_SIZE/1024);
+       printf("\e[1mL2\e[0m:        %dKiB\n", CONFIG_L2_SIZE/1024);
 #endif
 #ifdef MAIN_RAM_SIZE
-       printf("\e[1mMAIN-RAM\e[0m:  %dKB\n", MAIN_RAM_SIZE/1024);
+       printf("\e[1mMAIN-RAM\e[0m:  %dKiB\n", MAIN_RAM_SIZE/1024);
 #endif
        printf("\n");