使用 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
调用以将组合逻辑映射到库提供的标准单元,然后是 clean
和 write_verilog
调用。
我正在使用的单元库还提供了 TIELO
和 TIEHI
单元,但是合成的 Verilog 网表不包含这些单元的任何实例,而是仍然像示例中那样显示文字常量以上。
我可能会写一个脚本来 post 处理合成的网表,用库中的 TIE*
单元实例替换这些文字,但我想知道我是否可以让 Yosys 这样做对我来说,结果是
TIEHI tiehi_d_inst(.Y(d));
对于上面代码中的 assign d = 1'b1
行。
您要查找的命令是hilomap
。例如,要映射到具有 Y
输出的 TIEHI
和 TIELO
单元格,请使用类似:
hilomap -hicell TIEHI Y -locell TIELO Y
这将为设计中的每个常量位创建一个单独的 TIEHI
/TIELO
单元。使用选项 -singleton
仅创建具有更高扇出的单个 TIEHI
/TIELO
单元。
我正在使用 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
调用以将组合逻辑映射到库提供的标准单元,然后是 clean
和 write_verilog
调用。
我正在使用的单元库还提供了 TIELO
和 TIEHI
单元,但是合成的 Verilog 网表不包含这些单元的任何实例,而是仍然像示例中那样显示文字常量以上。
我可能会写一个脚本来 post 处理合成的网表,用库中的 TIE*
单元实例替换这些文字,但我想知道我是否可以让 Yosys 这样做对我来说,结果是
TIEHI tiehi_d_inst(.Y(d));
对于上面代码中的 assign d = 1'b1
行。
您要查找的命令是hilomap
。例如,要映射到具有 Y
输出的 TIEHI
和 TIELO
单元格,请使用类似:
hilomap -hicell TIEHI Y -locell TIELO Y
这将为设计中的每个常量位创建一个单独的 TIEHI
/TIELO
单元。使用选项 -singleton
仅创建具有更高扇出的单个 TIEHI
/TIELO
单元。