使用 Yosys 生成 TIE 电池?

Generate TIE cells with Yosys?

我正在使用 Yosys 来综合我的 RTL 设计,其中包括几个文字常量,例如以下代码中的绑定输出端口:

module my_module (
    input a,
    input b,
    output c,
    output d);

    assign c = a & b;
    assign d = 1'b1;
endmodule

在这种情况下,输出 d 显然总是合乎逻辑的。我使用的流程包括 abc -liberty my_stdcells.lib 调用以将组合逻辑映射到库提供的标准单元,然后是 cleanwrite_verilog 调用。

我正在使用的单元库还提供了 TIELOTIEHI 单元,但是合成的 Verilog 网表不包含这些单元的任何实例,而是仍然像示例中那样显示文字常量以上。

我可能会写一个脚本来 post 处理合成的网表,用库中的 TIE* 单元实例替换这些文字,但我想知道我是否可以让 Yosys 这样做对我来说,结果是

TIEHI tiehi_d_inst(.Y(d));

对于上面代码中的 assign d = 1'b1 行。

您要查找的命令是hilomap。例如,要映射到具有 Y 输出的 TIEHITIELO 单元格,请使用类似:

hilomap -hicell TIEHI Y -locell TIELO Y

这将为设计中的每个常量位创建一个单独的 TIEHI/TIELO 单元。使用选项 -singleton 仅创建具有更高扇出的单个 TIEHI/TIELO 单元。