括号在用于包裹参数时有什么特殊意义吗?

发布于 2024-12-08 21:48:53 字数 517 浏览 1 评论 0原文

我有一段 Verilog 代码,由不再在我工作的公司工作的程序员编写。下面给出了摘录:(

parameter mstrobe = 10;
.
.
.
assign #(mstrobe) sclk=iclk;

sclk 是一条电线,iclk 被分配系统时钟的值)

我还有一个单独的 Perl 脚本,用于对现有 Verilog 进行一些操作文件。该脚本在解析 #(mstrobe) 时出现阻塞,因为 mstrobe 包含在括号内。虽然我可以轻松解决这个问题,但我想知道上面的 assign 语句之间是否存在根本区别,并且

assign #mstrobe sclk=iclk;

我想确定这两个语句是否等效,或者是否存在任何差异Verilog 版本(Verilog-2001、Verilog-2005、SystemVerilog)之间在这方面的语法差异。

I have a piece of Verilog code worked upon by a programmer no longer in the company I work for. An extract is given below:

parameter mstrobe = 10;
.
.
.
assign #(mstrobe) sclk=iclk;

(sclk is a wire, iclk is assigned the value of system clock)

I also have a separate Perl script for carrying out some manipulations on existing Verilog files. This script chokes in parsing #(mstrobe) because mstrobe is enclosed within parenthesis. While I can fix that easily, what I want to know is whether there is a fundamental difference between the assign statement above and

assign #mstrobe sclk=iclk;

I want to be sure whether the two statements are equivalent, or perhaps whether there are any differences in syntax in this regard between Verilog versions (Verilog-2001, Verilog-2005, SystemVerilog).

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

ぺ禁宫浮华殁 2024-12-15 21:48:53

在您的简单情况下,括号是可选的;无论 Verilog 版本如何,这两种情况都是有效的语法。

如果您有更复杂的表达式,则需要括号,例如:

assign #(mstrobe/2) sclk=iclk;

顺便说一句,由于您正在使用 Perl 解析 Verilog,您是否知道 Verilog-Perl

In your simple case, the parentheses are optional; both cases are valid syntax, regardless of Verilog version.

The parentheses would be required if you had a more complex expression, such as:

assign #(mstrobe/2) sclk=iclk;

On a side note, since you are parsing Verilog using Perl, are you aware of Verilog-Perl?

远山浅 2024-12-15 21:48:53

在该上下文中使用括号的另一次是当延迟指定时间步长时。您的示例将延迟 10 个(或 mstrobe 设置为的任何值)由您的时间刻度确定的时间单位。但是,您可以执行#(10ps),其中 mstrobe = 10ps,这将保证您延迟 10ps,与您的时间尺度无关。我不确定在指定时间尺度时是否需要它们,但这是很好的编码实践。

The other time that parenthesis are used in that context is when the delay specifies the timestep. Your example will delay 10 (or whatever mstrobe is set to) timeunits determined by your timescale. You could however do #(10ps) where mstrobe = 10ps this would guarantee you delay 10ps independent of your timescale. I'm not sure if they are required when specifying timescale, but it is good coding practice.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文