对Verilog仿真过程的理解.pdfVIP

  • 5
  • 0
  • 约1万字
  • 约 5页
  • 2023-10-27 发布于湖北
  • 举报
对对Verilog仿仿真真过过程程的的理理解解 前前⾔⾔ 顺顺序序执执⾏⾏的的仿仿真真器器如如何何仿仿真真并并⾏⾏的的Verilog语语⾔⾔??仿仿真真器器中中Verilog的的并并⾏⾏性性是是通通过过其其语语义义 ((Verilog的的语语⾔⾔含含义义))仿仿真真出出 来来的的 Verilog语语⾔⾔的的语语义义是是专专门门为为仿仿真真定定义义的的。。如如果果设设计计的的Verilog源源代代码码不不符符合合Verilog仿仿真真语语义义 对对Verilog代代码码的的仿仿 真真可可能能出出现现仿仿真真歧歧义义 也也就就是是代代码码仿仿真真结结果果会会与与综综合合后后时时间间的的门门级级⽹⽹表表功功能能不不⼀⼀致致。。 ⼀⼀、、概概念念理理解解:: 1、、仿仿真真时时间间 仿真时间是指由仿真器维护的时间值 ⽤来对仿仿真真电电路路所所⽤⽤的的真真实实时时间间进进⾏⾏建建模模。仿真时间由硬件电路的延时参数决定 也是硬件电 路的实际⼯作时间 所有仿真⼯作都是严格按仿真时间向前推进的 在什么时间执⾏什么操作。仿真时间与仿真软件在计算机上的运⾏时 间没有任何关系。 如果在当前仿真时间有多个事件需要执⾏ 那么⾸先要根据它们的优先级 (在事件队列中的优先级)来判定谁先谁后。若若优优先先级级相相同同 则则执执⾏⾏顺顺序序随随机机 ((不不同同仿仿真真器器的的⾏⾏为为可可能能不不同同))。 2、、事事件件驱驱动动 功能仿真是⼀种事事件件驱驱动动类类型型的的仿仿真真。Verilog语⾔⽤来对数字系统的功能和时序进⾏建模 模型的仿真过程是围绕时间来组织的。 事事件件是指在特定时刻 模型中值的变化。⼀个更新事件被执⾏后 所有对改事件敏感的进程都将以随机的顺序计算。⽐如 在被仿真电 路中 线⽹或寄存器的值的任何改变被认为是⼀个更新事件。 进进程程对更新事件敏感 进程 (门或⾏为模型)的计算也是⼀个事件 叫做计计算算事事件。计计算算事事件件和和更更新新事事件件之之间间循循环环往往复复的的互互相相触触发发 推推动动了了仿仿真真时时间间向向前前推推进进。 3、、进进程程 进程是Verilog语⾔中的独⽴执⾏单元 ⽤Verilog描述的数字系统正式由⼀个个进程组成的。 进程包括原原语语、、模模块块 ((module))、、initial过过程程块块、、always过过程程块块、、连连续续赋赋值值语语句句、、异异步步任任务务、、过过程程赋赋值值语语句句等。 进程可以被激活或被挂起。仿真器 总是在处理被激活的⼀个进程 ⽽其他的所有进程则处在挂起状态。 在仿真时 所所有有进进程程都都是是并并⾏⾏执执⾏⾏的的 它们之间的顺序随机 仿真⼯具可根据⾃⾝原则安排它们的执⾏顺序。⽐如在下⾯例⼦中 0仿 真时刻的所有进程都是按它们在代码中出现的先后顺序执⾏的。但仿真器的这种⾏为并并不不违违背背Verilog语语⾔⾔的的并并⾏⾏性性 因为在执执⾏⾏完完所所 有有进进程程前前 仿仿真真时时间间是是不不会会向向前前推推进进的的 仿仿真真时时刻刻仍仍然然是是0时时刻刻。 在执⾏⼀个进程时 如果遇到⼀个事事件件语语句句 ((“@”))、延延时时预预计计 ((“#”))、、其表达式为FALSE的等等待待语语句句 ((wait)) 则进进程程将将被被挂挂 起起 直到发发⽣⽣该该事事件件、已已经经过过延延时时中中的的时时间间单单位位数数、等等待待语语句句表表达达式式变变为为真真时时 进程才会重重新新被被激激活活。 在Verilog语⾔中 进程之间是并⾏独⽴执⾏的 但它们在执⾏的过程中右交织在⼀起。⼀个进程被挂起 另⼀个进程被激活;改进程被 挂起 另⼀个进程⼜开始执⾏ 这就是Verilog语⾔在仿真时的⼀⼤特点。 Verilog也会出现进进程程锁锁死死的现象。⽐如若将下⾯代码中forever语句改为“forever sclk_ i = ~sclk_ i;”仿真时间会⼀直停留在0仿真时刻⽽不 会向前推进。这是由于该initial进程已经被锁死 永远在执⾏“sclk_ i = ~sclk_ i;”语句。该进程永远不会挂起 其他进程就永远⽆法执⾏ 仿 真时刻就⽆法向前推进。 4、、调调度度 调度实际上就是安排事件的执⾏顺序。 在Verilog 中 同⼀仿真时刻也许有很多事件需要执⾏ 不同的事件之间有⼀个先后的优先级关系 事件的执⾏也会产⽣新的当前

文档评论(0)

1亿VIP精品文档

相关文档