Python Parameter Types
From gem5
The information below came from src/python/m5/params.py and src/python/m5/util/convert.py. Reference those files for the most up to date information.
Python Type Name | C++ Type | Format | Notes |
---|---|---|---|
String | std::string | ||
Int | int | 32 bits | |
Unsigned | unsigned | 32 bits | |
Int8 | int8_t | ||
UInt8 | uint8_t | ||
Int16 | int16_t | ||
UInt16 | uint16_t | ||
Int32 | int32_t | ||
UInt32 | uint32_t | ||
Int64 | int64_t | ||
UInt64 | uint64_t | ||
Counter | Counter | ||
Tick | Tick | ||
TcpPort | uint16_t | ||
UdpPort | uint16_t | ||
Percent | int | Between 0 and 100. | |
Float | double | ||
MemorySize | uint64_t | A string formatted as [value][unit] where value is a base 10 number and unit is one of the following:
* PB => pebibytes * TB => tebibytes * GB => gibibytes * MB => mebibytes * kB => kibibytes * B => bytes |
kibi, mebi, etc. are true powers of 2. |
MemorySize32 | uint32_t | See "MemorySize" above. | See "MemorySize" above. |
Addr | Addr | See "MemorySize" above | See "MemorySize" above. Also, an addr may be specified as a string with units, or a raw integer value. |
Range | Range<[type]>, type is int by default | Defined as a "start" and "end" or "size" value. Exactly one of "end" or "size" is recognized as a keyword argument. A positional argument will be treated as "end", and "size" arguments are convected to "end" internally by adding to "start" and subtracting one. | |
AddrRange | Range<Addr> | See "Range" above. | |
TickRange | Range<Tick> | See "Range" above. | |
Bool | bool | ||
EthernetAddr | Net::EthAddr | Six pairs of 2 digit hex values seperated by ":"s, for instance "01:23:45:67:89:AB" | May be set to NextEthernetAddr. All EthernetAddrs set to NextEthernetAddr will be assigned to incremental ethernet addresses starting with 00:90:00:00:00:01. |
Time | tm | May be a Python struct_time, int, long, datetime, or date, the string "Now" or "Today", or a string parseable by Python's strptime with one of the following formats:
* "%a %b %d %H:%M:%S %Z %Y" * "%a %b %d %H:%M:%S %Z %Y" * "%Y/%m/%d %H:%M:%S" * "%Y/%m/%d %H:%M" * "%Y/%m/%d" * "%m/%d/%Y %H:%M:%S" * "%m/%d/%Y %H:%M" * "%m/%d/%Y" * "%m/%d/%y %H:%M:%S" * "%m/%d/%y %H:%M" * "%m/%d/%y" |
|
subclasses of Enum | enum named after the parameter type | A string defined as part of the enum | This description applies to all enum parameter types which are defined as subclasses of Enum. The possible string values and optionally their mappings are specified in a dict called "map" or a list called "vals" defined as members of the Enum subclass itself. |
Latency | Tick | Can be assigned an existing Clock or Frequency parameter, or a string with the format [value][unit] where value is a base 10 number and unit is one of the following:
* t => Ticks * ps => picoseconds * ns => nanoseconds * us => microseconds * ms => milliseconds * s => seconds |
|
Frequency | Tick | Can be assigned an existing Latency or Clock parameter, or a string with the format [value][unit] where value is a base 10 number and unit is one of the following:
* THz => terahertz * GHz => gigahertz * MHz => megahertz * kHz => kilohertz * Hz => hertz |
The frequency value is converted into a period in units of Ticks when transfered to C++. |
Clock | Tick | Can be assigned an existing Latency or Frequency parameter, or a string with the format [value][unit] where value is a base 10 number and unit is one of the following:
* t => Ticks * ps => picoseconds * ns => nanoseconds * us => microseconds * ms => milliseconds * s => seconds * THz => terahertz * GHz => gigahertz * MHz => megahertz * kHz => kilohertz * Hz => hertz |
This type is like a combination of the Frequency and Latency types described above. |
NetworkBandwidth | float | A floating point value specifying bits per second, or a string formatted as [value][unit] where value is a base 10 number and unit is one of the following:
* Tbps => terabits per second * Gbps => gigabits per second * Mbps => megabits per second * kbps => kilobits per second * bps => bits per second |
The network bandwidth value is converted to Ticks per byte before being transfered to C++. |
MemoryBandwidth | float | A string formatted as [value][unit] where value is a base 10 number and unit is one of the following:
* PB/s => pebibytes per second * TB/s => tebibytes per second * GB/s => gibibytes per second * MB/s => mebibytes per second * kB/s => kibibytes per second * B/s => bytes per second |
The memory bandwidth value is converted to Ticks per byte before being transferred to C++. kibi, mebi, etc. are true powers of 2. |
subclass of SimObject | defined in subclass | These parameter types are for assigning one simobject to another as a parameter. The may be set to nothing using the special "NULL" python object. |