2

パッケージに基づいてさまざまなピン名がリストされている xml 設計ドキュメントを解析して、ピンを dut モデルにインポートしています。

  <pin name="mypin" direction="input">
   <package_list>
    <package package="pkg_a" name="mypin_a" location="XX" direction="input"/>
    <package package="pkg_b" name="mypin_b" location="XX" direction="input"/>
   </package_list>
  </pin>

これは同じピンで、パッケージによって名前が異なるだけです。私の ruby​​ フロー ファイルでは、テストの挿入に応じて、dut モデル ピンにアクセスするときに正しいピンを取得するようにパッケージを設定しました。

現在、同じピンにアクセスする方法はありますが、パッケージによって名前を変更できますか? のように、上記の例を使用する場合、どのようにこの動作を得ることができますか?

Package     Pin Name
--------------------
nil         mypin
pkg_a       mypin_a
pkg_b       mypin_b

origenのドキュメントには、パッケージ スコープの属性と関数スコープの属性があることがわかりますが、ドキュメントを正しく読んでいると仮定すると、表示されているパッケージに基づいてピンの名前を変更する方法はないようです。

この機能には、パッケージ スコープの属性機能の拡張が必要ですか? それとも、派手なエイリアシングによるより簡単な方法はありますか?

ありがとう

4

2 に答える 2

1

もう 1 つのオプションは、ピンのメタデータ ハッシュを使用することです。各ピンには、好きなものを格納できるメタデータ ハッシュがあります。

add_package :pkg_a
add_package :pkg_b

add_pin :mypin, package: :all, direction: :input,
                meta: { names: { pkg_a: "mypin_a", pkg_b: "mypin_b"}}

次に、定義された単一のピンを取得し、アプリケーション コードでパッケージ固有の名前を非常に簡単に取得できます。

origen(main):002:0> dut.package = :pkg_a
=> :pkg_a
origen(main):007:0> dut.pin(:mypin).meta[:names][dut.package.id]
=> "mypin_a"
origen(main):008:0> dut.package = :pkg_b
=> :pkg_b
origen(main):009:0> dut.pin(:mypin).meta[:names][dut.package.id]
=> "mypin_b"
于 2018-06-21T08:48:02.450 に答える