← 2022 · 华为海思 笔试

推荐答案 测试一下

下面哪些会导致代码不可综合?

A.在给寄存器赋值时,加了#delay B.使用了initial语句 C.代码中包括了运算符= = = D.使用了generate语句
多选题 中等 笔试真题多选

参考答案

正确答案:A、B、C。A选项:在给寄存器赋值时添加#delay(延时)是仿真专用的时间控制语句,无法映射到硬件逻辑,综合工具会报错或忽略,因此不可综合。B选项:initial语句用于仿真初始化,只在仿真开始时执行一次,通常不可综合;虽然有少数综合工具支持部分initial(如给寄存器赋初值),但标准Verilog认为initial不可综合,且笔试中默认不可综合。C选项:===是全等比较运算符,用于比较包含X或Z的状态,综合工具无法处理不确定态,因此不可综合;实际设计中应使用==。D选项:generate语句是Verilog中用于生成重复结构或条件生成的结构化语句,如genvar配合for循环或if-generate,是可综合的,常用于参数化设计。因此,A、B、C会导致代码不可综合。

涉及知识点

  • 不可综合语句的识别
  • 延时#delay不可综合
  • initial语句不可综合
  • 全等运算符===不可综合
  • generate语句可综合
← 上一题
登录后反馈错题
下一题 →