2

次の順次ゲート レベルのネット リストを解析したいと考えています。そして、出力によってゲートの順序 (ポートの順序) が得られるので、コードで他の計算を行うことができると期待しています。私はyosysコマンドを使ってそれをやろうとしましたread_verilog s27.v。コードをデバッグすることはできましたが、セル ライブラリや、ゲートの順序付けを行うためのものを取得できませんでした。

PS: 私は abc コンパイラを使用してそれを試みましたが、ゲートではなく主要な入力と出力の順序しか得られませんでした。以前に yosys がそれを実行できるかどうかを尋ねたところ、肯定的なフィードバックが得られました。

module s27 ( GND, VDD, CK, R, G0, G1, G17, G2, G3 );
  input  GND, VDD, CK, R, G0, G1, G2, G3;
  output G17;
  wire   G5, G10, G6, G7, G13, n1, n2, n3, n4, n5, n6, n7, n8, n9, n11,    
         n12,n13, n14;
  DFFSR \DFF_2/Q_reg  ( .D(G13), .CLK(CK), .R(R), .Q(G7) );
  DFFSR \DFF_0/Q_reg  ( .D(G10), .CLK(CK), .R(R), .Q(G5) );
  DFFSR \DFF_1/Q_reg  ( .D(n1), .CLK(CK), .R(R), .Q(G6) );
  INVX1 U1 ( .A(G17), .Y(n1) );
  INVX1 U2 ( .A(G2), .Y(n2) );
  INVX1 U3 ( .A(G3), .Y(n3) );
  INVX1 U4 ( .A(G6), .Y(n4) );
  AND2X1 U5 ( .A(n5), .B(n2), .Y(G13) );
  AND2X1 U6 ( .A(G0), .B(G17), .Y(G10) );
  OR2X1 U7 ( .A(n6), .B(n7), .Y(G17) );
  OR2X1 U8 ( .A(n14), .B(n8), .Y(n7) );
  AND2X1 U9 ( .A(n5), .B(n9), .Y(n8) );
  OR2X1 U10 ( .A(G1), .B(n12), .Y(n5) );
  AND2X1 U11 ( .A(n3), .B(n9), .Y(n6) );
  OR2X1 U12 ( .A(G0), .B(n4), .Y(n9) );
  INVX1 U13 ( .A(G7), .Y(n11) );
  INVX1 U14 ( .A(n11), .Y(n12) );
  INVX1 U15 ( .A(G5), .Y(n13) );
  INVX1 U16 ( .A(n13), .Y(n14) );
endmodule
4

1 に答える 1

3

新しく追加された toorder コマンドは、デザイン内のセルをトポロジー順に印刷します(そのような順序が存在する場合)。例えば:

read_verilog test.v
hierarchy -generate * o:Y o:Q i:*
torder -stop DFFSR Q

投稿したコードにこのスクリプトを適用すると、次の出力が生成されます。

module s27
  cell U4
  cell U12
  cell U3
  cell U11
  cell U15
  cell U16
  cell U13
  cell U14
  cell U10
  cell U9
  cell U8
  cell U7
  cell U6
  cell DFF_0/Q_reg
  cell U1
  cell DFF_1/Q_reg
  cell U2
  cell U5
  cell DFF_2/Q_reg

このオプションを指定しないと-stop、コマンドは DFF 出力ポートの依存関係も作成し、ループが発生します。このような場合、コマンドはループを出力し、残りのグラフのトポロジー順序を作成します。

module s27
  loop DFF_2/Q_reg U10 U13 U14 U5
  loop DFF_0/Q_reg U15 U16 U6 U7 U8
  loop DFF_1/Q_reg U1 U11 U12 U4 U7
  cell U1
  cell DFF_1/Q_reg
  cell U4
  cell U12
  cell U3
  cell U11
  cell U15
  cell U16
  cell U2
  cell U5
  cell DFF_2/Q_reg
  cell U13
  cell U14
  cell U10
  cell U9
  cell U8
  cell U7
  cell U6
  cell DFF_0/Q_reg

これが役立つことを願っています。

于 2015-11-19T14:42:08.840 に答える