我在获取ASIC综合的预布局和布线时序分析报告时遇到了一些问题
要获得时间,我们应该在流动步骤中使用ABC :
1- strash - 将当前网络转换为 AIG(带有两个逻辑门“AND/OR”的图)
[*结构散列是一种纯粹的组合变换]
2- scorr - 我不知道这个命令是做什么的。所以第一个问题是:这个命令是做什么的?
2.1 当我使用这个命令时,我得到了一些错误:
如果我使用组合电路
module combinational(a, b, sel, out);
input a, b;
input sel;
output out;
reg out;
always @ (a or b or sel)
begin
if (sel) out = a;
else out = b;
end
endmodule
iget error ABC:错误:网络是组合的(运行“fraig”或“fraig_sweep”)。
来自yosys的synth.log输出:
2.1.1. Executing ABC.
Running ABC command: <yosys-exe-dir>/berkeley-abc -s -f <abc-temp-dir>/abc.script 2>&1
ABC: ABC command line: "source <abc-temp-dir>/abc.script".
ABC:
ABC: + read_blif <abc-temp-dir>/input.blif
ABC: + read_lib -w /usr/local/share/qflow/tech/osu035/osu035_stdcells.lib
ABC: Parsing finished successfully. Parsing time = 0.00 sec
ABC: Scl_LibertyReadGenlib() skipped sequential cell "DFFNEGX1".
ABC: Scl_LibertyReadGenlib() skipped sequential cell "DFFPOSX1".
ABC: Scl_LibertyReadGenlib() skipped sequential cell "DFFSR".
ABC: Scl_LibertyReadGenlib() skipped sequential cell "LATCH".
ABC: Scl_LibertyReadGenlib() skipped three-state cell "PADINOUT".
ABC: Scl_LibertyReadGenlib() skipped three-state cell "TBUFX1".
ABC: Scl_LibertyReadGenlib() skipped three-state cell "TBUFX2".
ABC: Scl_LibertyReadGenlib() skipped cell "PADFC" without logic function.
ABC: Scl_LibertyReadGenlib() skipped cell "PADNC" without logic function.
ABC: Scl_LibertyReadGenlib() skipped cell "PADVDD" without logic function.
ABC: Scl_LibertyReadGenlib() skipped cell "PADGND" without logic function.
ABC: Library "osu035_stdcells" from "/usr/local/share/qflow/tech/osu035/osu035_stdcells.lib" has 28 cells (11 skipped: 4 seq; 3 tri-state; 4 no func). Time = 0.01 sec
ABC: Memory = 0.38 MB. Time = 0.01 sec
ABC: Warning: Detected 2 multi-output gates (for example, "FAX1").
ABC: + strash
ABC: + scorr
ABC: Error: The network is combinational (run "fraig" or "fraig_sweep").
ABC: + ifraig
ABC: + retime
ABC: + strash
ABC: + dch -f
ABC: + map
ABC: + write_blif <abc-temp-dir>/output.blif
12.1.2. Re-integrating ABC results.
ABC RESULTS: INVX1 cells: 1
ABC RESULTS: NAND2X1 cells: 3
ABC RESULTS: internal signals: 0
ABC RESULTS: input signals: 3
ABC RESULTS: output signals: 1
Removing temp directory.
如果我给顺序喜欢
module sequential(a, b, sel,
clk, out);
input a, b;
input sel, clk;
output out;
reg out;
always @ (posedge clk)
begin
if (sel) out <= a;
else out <= b;
end
endmodule
我们也有同样的错误
for this module:
module blocking(in, clk, out);
input in, clk;
output out;
reg q1, q2, out;
always @ (posedge clk)
begin
q1 = in;
q2 = q1;
out = q2;
end
endmodule
iget
12. Executing ABC pass (technology mapping using ABC).
12.1. Extracting gate netlist of module `\blocking' to `<abctempdir>/input.blif'..
Extracted 0 gates and 0 wires to a netlist network with 0 inputs and 0 outputs.
Don't call ABC as there is nothing to map.
Removing temp directory.
3-从错误中我们知道我们应该运行“fraig”或“fraig_sweep”
3.1脆弱-
将当前网络转变为功能简化的 AIG
3.2 fraig_sweep检测逻辑网络中功能等效的节点。与 fraig 不同,此命令保留了网络结构并仅合并功能等效的节点
4- ifraig我不知道它做什么,这个命令也做什么?
5-在 retime /map 命令中您在 {d} 中的意思
在:
**
> for liberty with constr: strash; scorr; ifraig; retime {D};
> strash; dch -f; map {D}; buffer;
upsize {D}; dnsize {D}; stime p
**
在dch -f我们应该给它一个脚本文件**?** dch命令应该做什么?
为什么它无法映射?
**
*一言以蔽之,我们如何获取和打印 ASIC 的预布局和布线时序分析报告?
它是否适用于所有并行,顺序的电路......或者它不适用于所有verilog文件?
我想知道ABC的每一步应该做什么?
**