Contents
  1. 1. 概念
    1. 1.1. 模拟的限制
    2. 1.2. 非入侵的观察和调试
    3. 1.3. 模拟的时间
  2. 2. 命令行工具
    1. 2.1. 模拟模式
      1. 2.1.1. 命令行指定模式
      2. 2.1.2. GUI方式指定模式
      3. 2.1.3. normal mode
      4. 2.1.4. stall模式
    2. 2.2. 命令选项
    3. 2.3. 高级选项
    4. 2.4. 环境变量

概念

  以下介绍一些关于模拟的基本概念。

模拟的限制

  Simics是系统层指令集模拟器,也就是说:

指令级的模拟,一次执行一个指令
模拟硬件的二进制接口,任何硬件上运行的软件在target上也能运行

  包括firmawre,硬件驱动,操作系统和用户程序在内的任何软件都能在target上运行。

  simics的时间系统非常简单,例如它默认所有指令的执行时间是一样的,利用这点将可以编写简单程序来区别模拟与真实系统。

非入侵的观察和调试

  Simics有强大的调试和观察功能:

观察和设置**register,memory和硬件状态**
设置断点和观察点
以脚本实现上述功能

  有了上述支持,无须在target上安装任何调试程序,因此调试行为也对target及之上的软件是完全透明的。

模拟的时间

可以在target无察觉的情况下暂停系统
也可以保存和恢复状态(checkpoint)
可反向执行,对定位bug和调试非常有用

  以上对任何target系统适用,无论是简单系统还是计算网络。

命令行工具

  本节介绍simics的命令行选项及环境变量。

  从命令行启动simics,在工程目录下运行:

1
[project]$ ./simics targets/mpc8641-simple/mpc8641d-simple-linux.simics

  simics也可以在目录下启动,以无项目状态运行,但是并不推荐。

  以上命令将运行指定脚本,它将以缺省配置启动MPC8641-Simple机器。

模拟模式

  模拟模式(simulation mode)用来控制可获得的特性:instruction and data profiling, memory timing。最佳性能模式无以上特性的,simics以独立处理器形式实现,这也是simics的缺省模式。

命令行指定模式

fast / stall

1
2
3
simics.bat -stall ...
simics.bat -fast ...

  不能在运行时改变模式,可以先保存再更换模式加载

1
2
3
4
simics> write-configuration at-workload-start.ckpt
simics> quit
$ ./simics -stall -c at-workload-start.ckpt

GUI方式指定模式

Simics Control窗口中,选择EditPreferences
Startup

  更改此处将导致默认模式更改。如果需要在运行中更改模式,同时可以先保存checkpoint再load

1
2
File → Save Checkpoint As. . .
File → Open Checkpoint

normal mode

  快速模式,为模拟器风格的使用而优化,以下特性将不可用:

Instruction and data profiling 

Attaching timing-models and snoop devices to memory spaces,意味着tracing and cache模块未正常工作,无法stall。

stall模式

  内存计时模式,支持stalling和Instruction and data profiling

注意:不是所有的处理器模型都完全支持以上功能

命令选项

  以下是simics启动时可用的常用选项:

-h 
    简短help

-obscure
    打印高级命令行flags的概要并退出

-no-win
    禁用外部窗口。这将阻止target控制台窗口和任何外部窗口打开
    只是将窗口隐藏,并不改变模拟行为,通常在批处理时使用,通常也会更快

-gui
    以CLI形式运行,但允许gui打开窗口

-no-gui
    CLI形式运行,不打开窗口,除非用CLI命令指定

-no-log
    <deprecated>不记录CLI命令到log文件

-log
    <deprecated>记录CLI命令到log文件`˜/.simics/4.8/log`
    默认开启,可被用户偏好关闭

-log-file FILE
    指定log文件位置

-v, -version, --version, -v-short
    打印版本号,build时使用的编译器和编译计时参数            

-license-file FILE
    指定许可文件,会覆盖环境变量`SIMICS_LICENSE_FILE `

-readme
    打印README信息

-license
    打印默认license信息

-batch-mode
    批处理模式。在命令执行完成或者错误会退出,返回相应的返回码(0/1)。
    此模式下的命令不会被记录到log中

-verbose
    打印执行过程中的详细信息
    相反的参数是-quiet,缺省为二者之中

-fast
    缺省模式,会覆盖偏好中的设置

-stall
    打开stall模式

-q,-quiet
    打印较少的信息,在批处理时有用。如果想更安静,可以指定-no-copyright
    simics缺省输出就很少,所以这个参数作用并不是很大

-c FILE
    加载配置文件,相当于在启动后执行read-configuration命令
    如果是命令的最后一个选项,-c可省略

-x
    历史兼容原因保留,无作用

-p FILE
    运行python文件中代码

-e COMMAND
    执行CLI命令,相当在命令提示符中输入命令

高级选项

……略……//or TODO

环境变量

  可以改变simics运行行为,都是可选项,一般不需要手动设置。

SIMICS_HOST
    覆盖simics检测到的host类型,值必须是包含host-specific files的目录或simics安装目录,典型格式为arch-os,例如linux32
Contents
  1. 1. 概念
    1. 1.1. 模拟的限制
    2. 1.2. 非入侵的观察和调试
    3. 1.3. 模拟的时间
  2. 2. 命令行工具
    1. 2.1. 模拟模式
      1. 2.1.1. 命令行指定模式
      2. 2.1.2. GUI方式指定模式
      3. 2.1.3. normal mode
      4. 2.1.4. stall模式
    2. 2.2. 命令选项
    3. 2.3. 高级选项
    4. 2.4. 环境变量