You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何该VHDL代码片段无法完成逻辑综合?

这段VHDL代码无法逻辑综合的原因

先看这段目标代码:

LIBRARY ieee;       
USE ieee.std_logic_1164.ALL;    
ENTITY  simple_buffer   IS      
PORT    (   din :   IN  std_logic;  
                        dout    :   OUT std_logic
);      
END simple_buffer;  
ARCHITECTURE    behavioural1    OF  simple_buffer   IS      
BEGIN       
dout    <=  din AFTER   10  ns;     
END behavioural1;

无法被逻辑综合的核心原因在于代码中的AFTER 10 ns语句:

  • 逻辑综合工具的核心目标是将HDL代码转换为可物理实现的硬件电路(如门电路、导线等),它只关注功能逻辑本身,不处理用于仿真的行为级延时描述。硬件的实际信号传播延时由器件工艺、布线布局等物理因素决定,根本无法通过代码里的延时语句来定义。
  • AFTER是仿真专用语法,仅用于在仿真环境中模拟信号的传播延迟,没有对应的通用硬件单元可以直接映射。哪怕这段代码的核心逻辑只是输入直通输出,加上这个仿真延时后,综合工具找不到可实现的硬件结构,自然无法完成综合。

如果要让这段代码可综合,只需去掉延时描述,修改为:

dout <= din;

此时综合工具就能识别出这是一个直通缓冲器(或根据优化策略直接简化为导线)。

内容的提问来源于stack exchange,提问作者ijump

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 23:28:13