返回介绍

7.11 静态前缀

发布于 2020-09-09 22:55:47 字数 907 浏览 1184 评论 0 收藏 0

对于一个选择片来讲,选择片的“最长静态前缀”被非正式地定义为一个分析工具能够在确立完成后确定其值的最长的那一部分。当描述隐式敏感列表(参见9.2节)以及为逻辑端口的驱动描述错误条件(参见5.6 线网、reg、与logic )的时候,我们使用这个概念。本节余下的部分定义由什么组成了一个选择片的最长静态前缀。

域选择被定义成一个层次化的名字,其中最后一个层次分割符(“.”)的右侧标识了类型为结构体或联合体的变量的一个域。域选择前缀被定义成域选择中最后一个层次分割符左侧的部分。

一个索引选择是一个单纯的索引操作。索引选择前缀或者是一个标识符或者是另外一个索引选择(在多维选择的情况下)。数组选择、位选择、部分选择、以及索引部分选择都是索引选择的例子。

静态前缀的定义是递归的并且具有如下的定义:

  1. 一个标识符是一个静态前缀
  2. 如果一个域选择前缀是一个静态前缀,那么这个域选择是一个静态前缀
  3. 如果一个索引选择前缀是一个静态前缀并且选择表达式是一个常量表达式,那么这个索引选择是一个静态前缀。

最长静态前缀的定义如下:

  1. 如果一个标识符不是一个静态前缀表达式的域选择前缀或索引选择前缀,那么它是一个最长静态前缀
  2. 如果一个域选择不是一个静态前缀表达式的域选择前缀或索引选择前缀,那么它是一个最长静态前缀
  3. 如果一个索引选择不是一个静态前缀表达式的域选择前缀或索引选择前缀,那么它是一个最长静态前缀

例子:

localparam p = 7;
reg [7:0] m[5:1][5:1];
integer i;
m[1][i] // 最长的静态前缀是m[1]
m[p][1] // 最长的静态前缀是m[p][1]
m[i][1] // 最长的静态前缀是m

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文