You need to enable JavaScript to run this app. Yosys综合流程中如何为Xilinx原语提供映射信息
优惠活动
大模型
产品
解决方案
定价
更多

Yosys综合流程中如何为Xilinx原语提供映射信息

Yosys 面向Xilinx原语设计的综合实操说明

核心支持性结论

Yosys 完全支持直接基于手动例化的Xilinx原语完成全流程综合,无需对原语本身做兼容性改写。
Yosys核心维护团队长期内置了面向Xilinx 7系列、UltraScale、UltraScale+全系列的原语兼容模型,无论是手动例化的IO原语、LUT、进位链、块RAM、DSP块,这些硬件原语在综合过程中不会被默认当作无定义黑盒处理,可参与后续的时序关联、网表导出环节。

Xilinx原语的映射信息加载流程

要让Yosys正确识别、保留所有手动例化的Xilinx原语,综合环节需要按三步配置映射信息:

  • 加载对应架构的原语定义库
    手动例化的原语端口、参数规则,需要通过Yosys自带的官方原语定义文件补全给Yosys的解析器,避免出现“未知模块”的识别错误。加载时需要指定对应器件系列的cell模型文件,不要用Xilinx官方的仿真库文件替代,避免出现参数不兼容问题。
  • 标记原语为层级保留模块
    默认的综合优化流程会对所有普通模块做展开、逻辑合并操作,需要通过属性标记把所有Xilinx原语设置为“禁止优化裁剪”,Yosys加载官方原语定义库时会自动给这些原语附上keep_hierarchy = 1的保留属性,不需要额外逐一定义。
  • 匹配对应架构的综合流程
    不要使用通用的synth_generic流程跑带Xilinx原语的设计,这类通用流程会把手写例化的原语展开成基础逻辑门,破坏原有的硬件结构。需要调用Yosys内置的techmap映射规则,既保证通用逻辑部分能正确映射到Xilinx硬件单元,也能完整保留手动例化的原语结构。

最小可复现实践示例

含Xilinx原语例化的示例设计(top.v)

module top(
    input  wire in_sig,
    output wire out_sig
);
// 直接例化Xilinx 7系列原语
IBUF input_buffer (
    .I(in_sig),
    .O(buf_to_lut)
);

LUT2 #(
    .INIT(4'hC) // 固定实现:lut_out = a & b
) lut_logic (
    .I0(buf_to_lut),
    .I1(1'b1),
    .O(lut_to_obuf)
);

OBUF output_buffer (
    .I(lut_to_obuf),
    .O(out_sig)
);
endmodule

对应Yosys综合脚本

# 读入用户手写的含原语例化的设计
read_verilog top.v

# 加载Yosys内置的Xilinx原语定义,补全映射信息
read_verilog -lib $::env(YOSYS_DATADIR)/techlibs/xilinx/cells_sim.v

# 执行Xilinx架构专属综合流程,匹配7系列器件
synth_xilinx -family 7

# 导出最终综合网表,校验原语保留情况
write_verilog -noattr result_netlist.v

校验标准:综合完成后打开result_netlist.v文件,能看到IBUF、LUT2、OBUF三个原语被完整保留,端口连线关系和RTL定义完全一致,即表示映射信息加载正确。

常见踩坑提示

  • 不要在加载原语定义时使用-overwrite参数,否则会覆盖用户例化的原语连接关系,出现端口错位
  • 综合时不要额外加flatten参数,否则会把原语内部的层级结构打散,破坏原语定义

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 20:06:06