模拟器与程序分析-4-一个简单的周期精确模拟器(CAS)的C语言实现

本文介绍了一个简单的周期精确模拟器(CAS)的C语言实现,通过逆序模拟解决并行操作问题,以一个组合逻辑和时序逻辑电路混合的电路为例,详细阐述了模拟过程和结果。同时,提出了模拟器设计中需要考虑的反馈模块处理和微clk粒度选择等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言

对于computer architecture也好,ASIC也好,模拟器是很重要的,这个前面也说过。一般情况下,simulator可分为两种,一种是解释型的,一种是翻译型的。解释型的,就是在主机的memory里面create一个目标机的structure,然后根据指令的功能,来操作虚拟的structure,来模拟实现真实环境的操作。翻译型的,就是把目标机的程序翻译成主机的程序,直接在主机上执行。

解释型的也叫ISS(instruction set simulator)。有的只是功能模拟(eg,or1ksim),这个可以通过创建虚拟体系结构来实现。

但是很多情况下需要cycle accurate simulation(eg,gem5,simplescaler)。肿么办呢?

需要解决两个主要问题:

1》怎么用串行语言模拟并行操作,即,同一周期内,前面的模拟不会影响后面的模拟。本例子采用逆序模拟。

2》怎么实现周期精确,尤其对于exception process。采用更小cycle操作。由于本例太简单,无法体现。

这一小节就以一个简单的例子来说明CAS的基本原理。

 

4.1 要模拟的电路

假如咱们想用C语言模拟下面的一个组合逻辑电路和时序逻辑电路混合的电路。

 

 

 

4.2 C语言实现

/*
*f
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值