Verilog非阻塞赋值综合问题.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Verilog非阻塞赋值综合问题

FILENAME Verilog非阻塞赋值的仿真综合问题.doc PRELIMINARY 七八零一研究所 HYPERLINK mailto:btltz@ btltz@ Created on CREATEDATE 2004-3-30 21:24 Page PAGE 19 of NUMPAGES 19 Verilog非阻塞赋值的仿真/综合问题 源文件作者:Clifford E. Cummings (Sunburst Design, Inc.) 原标题:Nonblocking Assignments in Verilog Synthesis, Coding Styles That Kill! ATTN:所有括号内“外注”为理解方便或有疑问的地方,原文里并没有。所有翻译都是为遵循“共同进步”的理想但并没有去努力得到原作者的任何书面和其它方式许可,所以仅供大家参考。本人英文和设计水平都极有限,所以不能保证与原文的精确一致和正确(只能以“驽马十步”稍作安慰吧),惭愧之后还希望大家多指教! 在Verilog语言最难弄明白的结构中“非阻塞赋值”要算一个。甚至是一些很有经验的工程师也不完全明白“非阻塞赋值”在仿真器(符合IEEE标准的)里是怎样被设定执行的,以及什么时候该用“非阻塞赋值”。这篇文章将介绍怎样设定“非阻塞赋值”和“阻塞赋值”,给出了重要的使得编码可以被正确地综合的编码指导方针,和避免仿真竞争的编码风格细节。 1.0 介绍 众所周知的逻辑建模方针是: * 在always 块里用“阻塞赋值”产生组合逻辑。 * 在always 块里用“非阻塞赋值”产生时序逻辑。 但是为什么? (外注:在实现组合逻辑的assign结构中,当然采用阻塞赋值语句否则的话编译工具会提醒你进行修改的。) 普通的回答是:那只是关于仿真的,即使不遵照上面的规则也照样可以产生正确的综合结果。但问题是综合前的仿真结果也许会跟综合后的电路行为仿真不匹配。 要明白上述建模方针背后的原因,就必须明白“非阻塞赋值”和“阻塞赋值”它们的功能和时序安排(the functionality and scheduling of blocking and nonblocking assignments.)。这篇文章将详细描述有关问题。文章里将用到两个缩写形式:RHS(right-hand-side)和LHS(left-hand-side)。前者指等式右边的表达式或者变量(RHS expression or RHS variable),后者指指等式左边的表达式或者变量(RHS expression or RHS variable)。 2.0 Verilog 仿真竞争条件 IEEE Verilog Standard [2] 定义: “保证性的赋值描述”和“非保证性的赋值”描述分别用“非阻塞赋值”和“阻塞赋值”。(Determinism, section 5.4.1;Nondeterminism, section 5.4.2 Race conditions, section 5.5) IEEE Verilog 标准允许在同一仿真时间里赋值竞争的产生。当赋值陈述有所不同时,会产生不同的结果。(译注:即可以认为:“非阻塞赋值”有更高的优先权对变量进行赋值或者是指陈述的次序不同会产生不同结果?) 为了避免含竞争的描述(race condition),明白Verilog“非阻塞赋值”和“阻塞赋值”的时序安排是非常重要的。 3.0 阻塞赋值(blocking assignments) 阻塞赋值由等号“=”表示。“阻塞赋值”由它的赋值操作行为而得名:当没有其它的Verilog描述可以打断“阻塞赋值”时,操作将会估计RHS的值并完成赋值。“阻塞”即是说在当前的赋值完成前阻塞其它类型的赋值任务。一个例外是:对 阻塞操作的RHS 进行延时(delays)的阻塞赋值(在延时未完成前不会阻塞其它赋值任务),但是这被我们认为是不好的编码方式。 “阻塞赋值“可以看作一步进程(one-step process): 当没有其它可以打断赋值的描述时,估计等式右边(RHS)的指并赋予左边(LHS)。 在同一个always块里面,阻塞赋值结果将一直持续下去直到赋值结束。 阻塞赋值的一个问题是:当一个程序块(比如always块) 阻塞赋值描述里面的 “RHS变

您可能关注的文档

文档评论(0)

erterye + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档