推荐答案
测试一下
题目
哪些Verilog的写法是不能综合的__________
A.输入为变量的除法
B.循环边界未在编译时指定的for循环
C.含有时序电路的function函数
D.输入为变量的乘法
参考答案与知识点
参考答案
正确选项:A、B、C。
A. 输入为变量的除法:综合工具通常无法将变量除法直接映射为硬件除法器,因为除法器面积大、延迟高,且需要特殊处理(如流水线或迭代算法)。如果除数和被除数均为变量,综合时通常会报错或提示不可综合,因此属于不可综合写法。
B. 循环边界未在编译时指定的for循环:for循环用于综合时,循环上界和下界必须在编译时(即综合前)确定为常数,否则综合工具无法展开循环,从而无法确定生成的硬件规模。如果边界为变量,则视为不可综合。
C. 含有时序电路的function函数:function在Verilog中用于描述组合逻辑,必须是无延迟、无时序依赖的纯组合电路。若function内部包含触发沿(如posedge clk)或非阻塞赋值等时序逻辑,则违反function定义,综合工具无法处理,属于不可综合。
D. 输入为变量的乘法:乘法运算中,若两个乘数均为变量,综合工具可以直接生成组合逻辑乘法器(如Wallace树等),尽管面积和延迟可能较大,但属于可综合结构。因此该写法可综合。
易错点:注意区分乘法和除法在可综合性上的差异;循环边界必须为常数;function只能用于组合逻辑。
涉及知识点
- Verilog可综合语法要求
- 除法运算硬件实现限制
- for循环边界必须为常数
- function不能包含时序逻辑
- 乘法器可综合但除法器需特殊处理