推荐答案
测试一下
题目
Which of the following keywords are synthesizable?
A. $display
B. for()
C. function
D. fork...join
参考答案与知识点
参考答案
正确选项为 B、C。
A. $display:这是一个系统任务,用于在仿真时将信息打印到终端,属于仿真控制语句,不映射到实际硬件电路,因此不可综合。
B. for():在 Verilog/SystemVerilog 中,for 循环是可综合的,但必须满足循环边界是常量或可静态确定的条件(例如使用 parameter 或 genvar),且循环体内不包含不可综合的语句。综合工具会将其展开为硬件逻辑。
C. function:函数是可综合的硬件描述结构,常用于组合逻辑计算。函数内不能包含时序控制语句(如延迟、事件等待),且必须返回一个值。综合工具能够将函数调用映射为组合逻辑单元。
D. fork...join:这是一个并发控制语句,用于创建并行运行的进程,属于仿真建模结构。由于硬件本质上并行执行,但 fork...join 的同步机制(如 join、join_any、join_none)无法直接映射为硬件,且内部可能包含不可综合的时序控制,因此不可综合。
注意:本题为多选题,必须同时选择 B 和 C。
涉及知识点
- 可综合与不可综合的区分
- 系统任务不可综合
- for循环可综合条件
- function可综合
- fork...join不可综合