首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >填补Verilog/System Verilog的空白

填补Verilog/System Verilog的空白
EN

Stack Overflow用户
提问于 2013-06-05 14:16:59
回答 2查看 885关注 0票数 0

我复习了几次Verilog教程,并复习了几次这些主题,自从这些概念第一次被引入以来,有几个问题一直萦绕在我的脑海中,如果有人能把它们弄清楚,那将是非常有帮助的。

  1. 网上力量的目的是什么?
  2. 在示例中,经常使用参数的确切名称来描述寄存器。例如: 模x (…)、in1、…);…输入in1;reg 7:0 in1;…端模 这是将输入端口声明为一种数据类型,还是它们是分开的?如果前者是正确的,那么我还能用其他类型的量(整数、标量等)来完成这个任务吗?如果后者是正确的,那么当我在模块中说“in1”时,我指的是哪一项?
  3. 模拟开始时的初始块都是以“并行”方式执行的,但是当您在块内时,指令将被串行执行。您所使用的模拟工具是否确定串行执行指令的顺序?例如,您有两个初始块,我们是先执行所有的一个,还是来回跳?

4 .Why是模拟X中的初始值?如果Verilog的工作是代表现实生活,为什么它没有一个伪随机引擎,并在开始时为所有的值选择相同的随机位序?您遇到了许多独特的case语句警告问题,这似乎是一个设计缺陷,或者至少是系统Verilog和Verilog之间的不一致。

EN

回答 2

Stack Overflow用户

发布于 2013-06-05 15:03:06

  1. 允许网络上有多个驱动程序,并确定结果信号的值;参见LRM中的7.10
  2. 它们都是相同的in1 -非常冗长。在V-2001中,您可以在端口列表中编写一个input reg[7:0] in1。通过端口连接的任何东西都可以这样做。
  3. 请注意,在任何情况下都不会保证执行initial's,并且在设计中的任何初始/始终块之间也没有保证的执行顺序。在实践中,模拟器选择一个块,并执行它,直到到达挂起点(一个定时控制),在这一点上sim调度另一个初始或始终,并执行它直到挂起,以此类推。
  4. 这本质上是哲学,但你为什么要给任何东西分配初始随机值呢?这基本上是什么‘未知’(X)的意思(或Z网)。如果在时间开始时一切都是X或Z,那么你就知道它是未初始化的,直到你对它做了什么为止。如果该工具给出所有初始随机有效值,您将永远不会知道这一点。
票数 0
EN

Stack Overflow用户

发布于 2013-07-31 21:22:59

  1. 在竞争的情况下,强度有助于解析到已知的值。上一次我在设计中看到这样的东西是十年前的事。即使如此,它也被认为是一种糟糕的设计实践。
  2. 正如EML所说。
  3. 不和不。任何过程块(如初始块)中的语句都在同一时隙内顺序执行。初始块在时间0开始执行。仿真器按照它们出现在初始块中的顺序执行所有语句,如verilog事件队列。根据事件队列指示的计划更新变量。所有这些都是标准(LRM 8.10)的一部分。如果您不熟悉verilog事件队列以及时隙和模拟时间的概念,那么克里夫·库明论文是一个很好的参考。模拟器是否执行来自不同初始块、交错或任何其他方式的语句并不重要。仿真时间没有提前,只根据事件更新变量,queue.What是不标准的,模拟器应该从哪个初始块开始。这变得非常重要,因为如果变量在一个初始块中分配,而在同一事件队列中的另一个过程块中使用,则会创建模拟器上的依赖关系。上面提到的Cumming的论文很好地解释了这个场景。
  4. 这不仅仅是关于网络的未解决的状态。也是关于从一个可预测的状态开始模拟。因此,随机选取设计输入的解析状态并不能提供每次从同一点启动模拟器的可预见性。除了EML的建议外,您还可以使用SystemVerilog中提供的2状态数据类型。当然,这些是不可合成的。因为,为了准确地建模硬件,如果输入未知,则希望输出状态未知。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16942355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档