
基于面向综合的 RTL 的可预测硬件设计
构建能够可预测映射到硬件的可综合 Verilog RTL。掌握正确的组合逻辑、时序逻辑、锁存器和三态建模模式,并通过规范的赋值方式、复位编码、综合属性和构造限制,避免非预期推断以及仿真与综合不一致。
构建能够可预测映射到硬件的可综合 Verilog RTL。掌握正确的组合逻辑、时序逻辑、锁存器和三态建模模式,并通过规范的赋值方式、复位编码、综合属性和构造限制,避免非预期推断以及仿真与综合不一致。
This resource includes
Description
面向综合的 RTL 设计关注 Verilog 源代码与综合工具推断硬件之间的关系。过程块、连续赋值、敏感列表、事件控制、条件分支和赋值运算符都会被解释为具体电路结构。准确的 RTL 必须同时描述功能行为和硬件意图,使生成的网表与仿真模型保持一致。 组合逻辑建模依赖完整敏感和完整赋值。计算中使用的每个输入都必须能够触发重新求值,每个输出都必须在所有可能路径上获得赋值。正确的敏感列表、always @*、默认赋值、完整的 if 和 case 结构、阻塞赋值以及连续赋值,有助于描述纯组合行为。这些模式可以防止意外锁存器推断,并减少 RTL 仿真与综合逻辑之间的不一致。 时序逻辑建模需要精确的事件控制、复位处理和赋值规范。带边沿限定的时钟事件定义寄存器推断。同步复位和异步复位必须按照真实硬件行为和优先级书写。非阻塞赋值用于建模寄存器的同时更新,保持当前状态与下一状态之间的正确关系。局部临时变量可以简化计算,但其求值顺序必须受控,并且只用于中间逻辑。 锁存器和三态描述需要清晰的结构意图。锁存器只应在确实需要电平敏感存储时出现,而不应作为组合赋值不完整的副作用。其使能条件和值保持行为必须明确。三态逻辑使用高阻赋值描述受控总线驱动,并要求使能信号互斥以防止冲突。由于综合工具根据写出的模式推断硬件,而不是根据未说明的设计假设推断硬件,这些结构需要精确的 RTL 表达。 综合属性和 pragma 可以细化实现选择,例如状态编码、运算符映射、存储器推断、资源共享、寄存器保留、层次控制以及置位/复位映射。full_case 和 parallel_case 等指令可能改变综合假设,因此必须谨慎使用。清晰 RTL 应直接在代码中表达优先级、完整性和互斥性。仿真专用构造、时延、文件操作、force/release 行为、开关级原语和不支持的 Verilog 特性都应从可综合描述中排除,以保持硬件准确性和工具兼容性。 Catalogue: 组合逻辑建模基础要点 完整敏感列表 组合逻辑的正确敏感列表 避免组合逻辑的不完整赋值 确保组合逻辑的完整赋值 连续赋值的组合逻辑特性 组合逻辑建模指南 时序逻辑建模 识别时序逻辑 时序逻辑的复位行为 时序过程模板 时序逻辑中的不完整赋值 阻塞与非阻塞赋值 时序逻辑中的临时变量 时序逻辑建模总结 锁存器逻辑建模 三态逻辑建模 使用综合属性 full_case 编译指示 parallel_case 编译指示 implementation 编译指示 [a]sync_set_reset 编译指示 综合属性 不被支持与被忽略的 Verilog 构造
This resource includes
Description
面向综合的 RTL 设计关注 Verilog 源代码与综合工具推断硬件之间的关系。过程块、连续赋值、敏感列表、事件控制、条件分支和赋值运算符都会被解释为具体电路结构。准确的 RTL 必须同时描述功能行为和硬件意图,使生成的网表与仿真模型保持一致。 组合逻辑建模依赖完整敏感和完整赋值。计算中使用的每个输入都必须能够触发重新求值,每个输出都必须在所有可能路径上获得赋值。正确的敏感列表、always @*、默认赋值、完整的 if 和 case 结构、阻塞赋值以及连续赋值,有助于描述纯组合行为。这些模式可以防止意外锁存器推断,并减少 RTL 仿真与综合逻辑之间的不一致。 时序逻辑建模需要精确的事件控制、复位处理和赋值规范。带边沿限定的时钟事件定义寄存器推断。同步复位和异步复位必须按照真实硬件行为和优先级书写。非阻塞赋值用于建模寄存器的同时更新,保持当前状态与下一状态之间的正确关系。局部临时变量可以简化计算,但其求值顺序必须受控,并且只用于中间逻辑。 锁存器和三态描述需要清晰的结构意图。锁存器只应在确实需要电平敏感存储时出现,而不应作为组合赋值不完整的副作用。其使能条件和值保持行为必须明确。三态逻辑使用高阻赋值描述受控总线驱动,并要求使能信号互斥以防止冲突。由于综合工具根据写出的模式推断硬件,而不是根据未说明的设计假设推断硬件,这些结构需要精确的 RTL 表达。 综合属性和 pragma 可以细化实现选择,例如状态编码、运算符映射、存储器推断、资源共享、寄存器保留、层次控制以及置位/复位映射。full_case 和 parallel_case 等指令可能改变综合假设,因此必须谨慎使用。清晰 RTL 应直接在代码中表达优先级、完整性和互斥性。仿真专用构造、时延、文件操作、force/release 行为、开关级原语和不支持的 Verilog 特性都应从可综合描述中排除,以保持硬件准确性和工具兼容性。 Catalogue: 组合逻辑建模基础要点 完整敏感列表 组合逻辑的正确敏感列表 避免组合逻辑的不完整赋值 确保组合逻辑的完整赋值 连续赋值的组合逻辑特性 组合逻辑建模指南 时序逻辑建模 识别时序逻辑 时序逻辑的复位行为 时序过程模板 时序逻辑中的不完整赋值 阻塞与非阻塞赋值 时序逻辑中的临时变量 时序逻辑建模总结 锁存器逻辑建模 三态逻辑建模 使用综合属性 full_case 编译指示 parallel_case 编译指示 implementation 编译指示 [a]sync_set_reset 编译指示 综合属性 不被支持与被忽略的 Verilog 构造
Recommended

EDA Academy is a practical learning platform for engineers in the VLSI and semiconductor industry. We offer structured courses, technical resources, and career-focused training across all major areas of chip design and verification — from Verilog to Physical Design, from fundamentals to advanced topics. Learn at your own pace, explore member-exclusive content, or join as an instructor to share your expertise. Lear...
