描述
此答复记录描述了Vivado Synthesis支持的SystemVerilog进程,并提供了它们的编码示例。这些编码示例附在此答复记录中。答案记录还包含与已知问题和良好编码实践相关的信息。
注意:每个编码示例都可用于直接创建Vivado项目。请参阅每个源文件中的标题,以获取每个示例中演示的SystemVerilog结构。
解
SystemVerilog Vivado Synthesis支持的进程
有关流程的编码示例,请参阅本答复记录末尾的表1-1 。
1.始终程序
Verilog-2001有一个始终声明,用于定义静态过程。 System Verilog为组合,锁存和顺序逻辑添加了专用模块。
Vivado Synthesis支持以下四个始终处理语句:
1.1。总是
该块具有与Verilog-2001标准中定义的语法和用法相同的语法和用法,而Vivado Synthesis没有任何单独的例外。
1.2。 always_comb
该块仅在System Verilog中定义,并且是用于对组合逻辑行为进行建模的过程。例如:
always_comb
a = b&c;
always_comb过程提供的功能与普通的always过程不同:
有一个推断的敏感性列表,包括表达式。
写在作业左侧的变量不应由任何其他过程写入。
在所有初始块和始终块已经开始之后,在零时刻自动触发该过程,以便过程的输出与输入一致。
1.3。 always_latch
该块仅在System Verilog中定义,并且是用于建模锁存逻辑行为的过程。例如:
always_latch
if(ck)q <= d;
always_latch过程确定其灵敏度并且与always_comb过程完全相同。
1.4。 always_ff
该块仅在System Verilog中定义,并且是可用于对可综合的顺序逻辑行为进行建模的过程。例如:
always_ff @(posedge clock或posedge reset)开始
r1 <=重置? 0:r2 + 1;
…
结束
2.阻止声明
System Verilog Block语句提供了一种将语句集合在一起的机制。命名块用于标识整个语句块。命名块会创建新的层次结构范围。该块可以声明自己的变量,这些变量特定于该块。 SystemVerilog允许在块的结束语句前面加冒号后指定匹配的块名称。当有嵌套块时,这可以帮助记录与相应的begin或fork相关联的“end”。
Vivado Synthesis支持使用块语句。
句法:
seq_block :: =
begin [:block_identifier] {block_item_declaration} {statement_or_null}
结束[:block_identifier]
例:
开始:my_block
逻辑温度;
temp = in1&in2;
out1 = temp;
结束:my_block
注意:结束语句后的块名称不是必需的,但它提高了代码的可读性。
Vivado综合不受支持:Vivado Synthesis不支持System Verilog并行块(或Fork.Join块)。
3.程序时间控制。
Vivado Synthesis支持系统Verilog标准中定义的程序时序控制:
3.1。延迟控制
句法:
delay_control :: =
#delay_value
例:
#10 q = p;
此构造指定语句与其执行之间的时间量。这对于综合没有用,Vivado综合忽略了时间语句,同时仍然为赋值创建逻辑。
3.2。事件控制
句法:
event_control :: =
@(event_expression)
| @ *
| @(*)
例:
永远@(posedge clk)
此构造使赋值与特定事件一起发生。这与Verilog相同,Vivado Synthesis支持System Verilog @ *事件控制,可消除由于不正确的灵敏度列表导致的仿真不匹配。
例:
逻辑总是@ *开始
此外,Vivado综合支持使用逻辑“或”运算符或逗号分隔灵敏度列表。
例:
总是@(a或b或c)
总是@(A,B,C)
进程的编码示例
编码示例名称 | 流程构造 |
---|---|
processes_example1.zip |
|
processes_example2.zip |
|
processes_example3.zip |
|
processes_example4.zip |
|
processes_example5.zip |
|
processes_example6.zip |
|
processes_example7.zip |
|
processes_example8.zip |
|
附件
相关附件
名称 | 文件大小 | 文件类型 |
---|---|---|
processes_example1.zip | 934字节 | 压缩 |
processes_example2.zip | 960字节 | 压缩 |
processes_example3.zip | 956字节 | 压缩 |
processes_example4.zip | 898字节 | 压缩 |
processes_example5.zip | 921字节 | 压缩 |
processes_example6.zip | 912字节 | 压缩 |
processes_example7.zip | 924字节 | 压缩 |
processes_example8.zip | 1 KB | 压缩 |
没有回复内容