imicman的个人空间 https://blog.eetop.cn/1518355 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

仿真器的运行机制假想

已有 508 次阅读| 2016-4-26 21:48 |个人分类:验证杂谈


1 了解仿真器的工作机制的目的
   A 满足好奇心
   B 了解仿真器的核心算法,并对verilog/sverilog语言和仿真器有深入掌握

2 假想的概念(来源与ieee 1364)
   仿真时间:硬件执行的时间模拟,由仿真器控制
   时间槽:仿真器将所有的仿真时间($finish控制???臆测),划分为各个时间单元,在每个时间槽内执行仿真,并且在执行玩所有的仿真之后,进入到下一个时间槽,直至到仿真结束。
  事件:仿真器基于时间来管理仿真的调度,事件主要分为“更新事件“和”估值事件”
  事件region:仿真器在每个时间槽,把不同的事件放入到对应的事件region(队列)中,并安排先后执行顺序,每个region内的事件的调度顺序随机而定。

3.假想
  就verilong而言,定义了语法结构,包括module, initial ,always 以及assign(continous)等,以及层次结构。
  也定义了reg和wire等数据结构。
  仿真器要做的就是,在memory(计算机系统的物理内存)中,将所有的数据结构按照仿真时间进行类似照片一样的存储,即所有源代码中定义的reg和net进行内存分配,我们称为一帧,在仿真时间轴上,我们基于事件调度代码的先后执行,并在时间槽内完成数据帧的值更新,下一个时间槽,对应更新这帧数据。

  reg和net在不同的module中可以重名,因此我们要建立hierarcy结构,在此结构上可以唯一确定所有的reg和wire.
  然后将intitial always assign以及其中的赋值(blocking & nonblocking)对应到事件region上,并按照约定的事件调度顺序,完成数值的更新和估值。


总结,到目前也没找到具体的一个paper来讲述仿真器的具体执行过程。以上仅仅是猜想。

如果,针对每种verilog的语法结构(譬如initial)对应到仿真器都能推演一遍,如此遍历所有语法结构,则第一节中的目标可以实现了。 这个任务只能是后续找到资料,再研究,再补充了。

点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 8

    获赞
  • 34

    评论
  • 访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-25 15:55 , Processed in 0.016598 second(s), 11 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部