基本上,我想知道ARM模拟器是什么?它是否像汇编语言模拟器?如果是这样,与Verilog Simulators相比有什么不同?
答案 0 :(得分:3)
你的问题非常广泛/模糊。但是这里。
根据您的要求,一个手臂模拟器很可能是一个指令集模拟器。软件就像处理器一样解码指令,跟踪寄存器,并模拟执行(如果一条指令说加1到r1,那么你在软件中有一个代表r1的变量,你就加一个)。
verilog模拟器,与其他语言并没有什么不同。 verilog是一种硬件设计语言,在你可以模拟它之前,你需要编译它。就像任何其他高级语言一样,它需要编译成与目标相关的东西。模拟器将拥有自己的目标逻辑块。将verilog编译成这些块,然后模拟该逻辑,与臂模拟器不同。对于每个时钟周期,您将根据先前周期中连接块的输出更新每个逻辑元件的输入,然后评估每个逻辑元件并确定输出。永远重复。对于每个verilog模拟器,你的核心都有不同的目标,部分原因是你(可以)从每个模拟器获得相同代码的不同结果。同样,当您为实际目标,fpga,asic等编译时,它的编译方式与模拟器不同(或者可能取决于环境,模拟器等)。
任何这些模拟器都没有任何魔力,指令集模拟器通常很容易编写,对于想要获得对指令集的良好知识或计算机如何工作的任何人来说都是一项有价值的任务(从一些小的东西开始像lc-3,应该不到半小时)。一个FAST模拟器,这是另一个故事,但是一个FUNCTIONAL模拟器相当容易编写。一旦编译成简单逻辑组件的网表,verilog模拟器很容易实现,但最重要的任务是评估和解析代码的信号和项目的数量,以获得信号和逻辑功能列表以及谁与之相关联。不像指令集模拟器那么容易,但是它是如何工作的以及任务将是可以理解的... Verilator非常酷,因为它将它变成C ++代码行,许多行和一个大型项目可能需要很长时间甚至在尖叫的机器上编译的日子。 (提示关闭波形以缩短编译时间)。但是当你看看发生了什么时,这个任务是可以理解的。