サイト内検索

目次

開発ツールを使用している際にこういう機能があったらいいのに、自動化して効率化したい、と思う場面があるかもしれません。
ただ、さまざまなお客様、使い方があるなかで全ご要望機能を開発ツールへ実装すると、
多機能すぎて複雑になり使いづらくなることやバグが増えてしまうことが懸念されます。
お客様自身にてお客様の使い方に応じた挙動を実現いただく方法としてLibero SoCのtclコマンドについてご紹介します。

     

※ 記載の情報はLibero SoC v2024.1の動作を元にしています。
※ スクリプト言語tcl(Tool Command Language)やコマンドプロンプト、バッチファイル、PowerShellなど一般的な情報についての説明は割愛します。
※ ご紹介例を用いた結果の影響については、責任を負いかねますのであらかじめご了承ください。

tclコマンド例

一例として下記のようなtclコマンドが用意されています。

論理合成(Synthesize)の実行

run_tool -name {SYNTHESIZE}

配置配線(Place and Route)の実行

run_tool -name {PLACEROUTE}

FPGAへの書き込み

configure_tool -name {PROGRAMDEVICE} -params {prog_action:PROGRAM}
run_tool -name {PROGRAMDEVICE}

Flashメモリへの書き込み

configure_tool -name {PROGRAM_SPI_FLASH_IMAGE} -params {spi_flash_prog_action:PROGRAM_SPI_IMAGE}
run_tool -name {PROGRAM_SPI_FLASH_IMAGE}

tclファイルの実行方法

tclファイルは下記2通りの方法で実行可能です。
・Libero SoCのProject > Excute Script...から実行する
・Windowsのコマンドスクリプトから実行する
   (例)

> C:\Microchip\Libero_SoC_v2024.1\Designer\bin\libero.exe SCRIPT:C:\test\test.tcl LOGFILE:C:\test\tclresult.log

※・Libero SoCのインストールパス
   ・実行するtclファイルのパス、ファイル名
   ・生成するログファイルのパス、ファイル名
    は適宜ご変更ください。

ドキュメント、サンプルについて

[ドキュメント]
Libero SoCのtclコマンドの詳細については「Libero SoC Tcl Command Reference Guide」をご参考ください。
下記URLのUser GuidesタブにLibero SoCのバージョンに応じたドキュメントがあります。
https://www.microchip.com/en-us/products/fpgas-and-plds/fpga-and-soc-design-tools/fpga/libero-software-later-versions#Documentation

例えばtclコマンドをコマンドラインから実行する方法については「Running Tcl Scripts from the Command Line」の項目に記載されています。


[サンプル]
Microchip FPGAのデザインファイルをダウンロードするとLibero SoCの実プロジェクトは入っていないことがほとんどです。
基本的には同梱されているtclスクリプトを実行することで0からLibero SoCプロジェクトを作成する形になっています。
そのため xxxxxxx_df.zip ファイル内のtclスクリプトが参考になります。
https://www.microchip.com/en-us/application-notes


[その他]
Libero SoCにて操作を行い
Libero SoC > Project > Export Script File...
を実行すると、自身の操作はどのようなtclとなるか参考のtcl記述を確認できます。

基本動作の確認 : tclを実行してみよう!

tclコマンドを用いて論理合成を実行してみます。

Libero SoCからのtcl実行

(1) 何か既に論理合成可能なLibero SoCプロジェクトを用意します。
   念のためLibero SoCのGUI上でSynthesizeができることを確認します。

(2) テキストファイルを用意しtest.tclとして保存します。
      テキストファイルには下記の内容を記載します。
      C:/lab/top/top.prjx はお手元のLibero SoCプロジェクトに応じて変更してください。

open_project -file {C:/lab/top/top.prjx}
run_tool -name {SYNTHESIZE}
save_project

(3) Libero SoCのProject > Excute Script...から作成したtest.tclを実行します。
     Libero SoCのプロジェクトが開き、Synthesizeが動くことを確認します。
     もし動かない場合はtest.tcl にタイプミスがないかどうか等を見直します。

(4) Libero SoCを閉じます。

Windowsコマンドプロンプトからのtcl実行

(1) 何か既に論理合成可能なLibero SoCプロジェクトを用意します。
   念のためLibero SoCのGUI上でSynthesizeができることを確認します。

(2) Libero SoCのGUI上でSynthesizeを右クリックし、Cleanをクリックします。
      Synthesize済みである緑色のチェックマークが消えたことを確認し、Libero SoCを閉じます。

(3) tclファイルは"Libero SoCからのtcl実行" で使用したものを使用します。

      test.tcl(変更なし)

open_project -file {C:/lab/top/top.prjx}
run_tool -name {SYNTHESIZE}
save_project

(4) Windowsのコマンドプロンプトを起動し、下記のように入力しEnterキーを押します。
      Libero SoCのバージョン、インストールパス、tclファイルやログファイルのパスやファイル名は適宜変更してください。

C:\Microchip\Libero_SoC_v2024.1\Designer\bin\libero.exe SCRIPT:C:\test\test.tcl LOGFILE:C:\test\tclresult.log

(5) 生成されたログファイル tclresult.log を見てSynthesizeが行われたことを確認します。

(6) Libero SoCプロジェクトを開き、Synthesizeの左側に緑のチェックマークが表示されていることを確認します。

※ Libero SoCにてプロジェクトを開いた状態でWindowsのコマンドプロンプトからtclを実行した場合
    GUIも連動して動く場合や動かない場合があるため、ここではLibero SoCを一度閉じる手順を記載しています。

注意 : 
上の例では、tclの動作確認のため既に動くLibero SoCプロジェクトを用いましたが、
実運用の際はtclのcatchコマンドを併用しエラーハンドリングを追記します。

例えばSynthesizeの場合は
Libero SoC Tcl Command Reference Guide  > 2.1.4 Running Synthesis
https://coredocs.s3.amazonaws.com/Libero/2024_1/Tool/libero_soc_tcl_cmd_ref_ug.pdf#page=28
に例が記載されています。

活用例1 : バッチファイルにしてみよう!

一例としてバッチファイルを作成し"基本動作の確認 : tclを実行してみよう!"をダブルクリックで実行できるようにします。

test.tclは"基本動作の確認 : tclを実行してみよう!"と同じもの(動作確認済みのもの)を使用します。

test.tcl(変更なし)

open_project -file {C:/lab/top/top.prjx}
run_tool -name {SYNTHESIZE}
save_project

(1) テキストエディタを開き下記のコードを記述、hogehoge.bat として保存します。
    (Libero SoCのバージョン、インストールパス、tclファイルやログファイルのパスやファイル名を適宜変更します。)

@echo off
rem tclスクリプトの実行
"C:\Microchip\Libero_SoC_v2024.1\Designer\bin\libero.exe" SCRIPT:C:\test\test.tcl LOGFILE:C:\test\tclresult.log
rem キーが押されるまで待つ
pause

(2) hogehoge.batをダブルクリックして実行します。

(3) 生成されたログファイル tclresult.log を見てSynthesizeが行われたことを確認します。


※ batファイル実行後
    続行するには何かキーを押してください...
    メッセージなしでコマンドプロンプトを閉じるようにするには、バッチファイルにて
  rem pause
    とコメントアウトします。

活用例2 : FPGAへの書き込みが終わったら通知音を鳴らそう!

(1) FPGAへ書き込み可能なLibero SoCプロジェクトを用意します。
   念のためLibero SoCのGUI上でRun PROGRAM Actionができることを確認します。

(2) Run PROGRAM Actionを行うtclファイルを用意し、tclコマンドでFPGAへの書き込みができることを確認します。
  C:/lab/top/top.prjx 部分はお手元のLibero SoCプロジェクトに応じて変更します。

      writefpga.tcl

open_project -file {C:/lab/top/top.prjx}
configure_tool -name {PROGRAMDEVICE} -params {prog_action:PROGRAM}
run_tool -name {PROGRAMDEVICE}
save_project

(3) 一例として、PowerShellでシステム音を鳴らすバッチファイルを用意します。
     パスやファイル名はお手元の環境に応じて適宜変更してください。

     finishsound.bat

@echo off
rem tclスクリプトの実行
"C:\Microchip\Libero_SoC_v2024.1\Designer\bin\libero.exe" SCRIPT:C:\test\writefpga.tcl LOGFILE:C:\test\tclresult.log
rem PowerShellでシステム音を鳴らす
powershell -nop -c "[System.Media.SystemSounds]::Exclamation.Play()"
rem キーが押されるまで待つ
rem pause

(4) 作成したバッチファイル finishsound.bat をダブルクリックして実行します。

(5) FPGAへの書き込みが終わるとPCのシステム音が鳴ることを確認します。
     書き込み後のFPGAの動作やログファイルにより、書き込みができていることを確認します。

活用例3 : Design versionをカウントアップしよう!

Auto Updateを使用する場合、Libero SoC左側のDesign Flowタブ内にあるCongigure Programming OptionsでDesign versionを設定します。
このDesign versionをtclを用いて設定してみます。

(1) Design versionを保持しておくためのテキストファイル(C:\test\PrjVer.txt)を用意します。
      ファイルの中にDesign versionを記入します。

      PrjVer.txt

5

(2) バッチファイルを作成します。
      - テキストファイル PrjVer.txtから今の数字を読み込み
      - 新しいバージョンとして読み込んだ数字に1を加算します
      - 加算した数字を引数として渡し、tclファイルを実行します
      - テキストファイル PrjVer.txtに数字を上書きします

    ツールのインストールパス、tclファイルやログファイルの名前やパスなどはお手元の環境に応じて適宜変更してください。
      
      PrjVerCounter.bat

@echo off
rem C:\test\PrjVer.txt から値を読み取る
set /p ReadValue=<C:\test\PrjVer.txt
rem 読み取った値に 1 を加算
set /a UseValue=ReadValue + 1
echo ReadValue : %ReadValue%
echo UseValue : %UseValue%
rem UseValueを C:\test\PrjVer.txt に上書き
echo %UseValue% > C:\test\PrjVer.txt
rem tclスクリプトの実行
"C:\Microchip\Libero_SoC_v2024.1\Designer\bin\libero.exe" SCRIPT:C:\test\PrjVerSetting.tcl "SCRIPT_ARGS:%UseValue%" LOGFILE:C:\test\tclresult.log
rem キーが押されるまで待つ
pause

(3) tclファイルを用意します。
     PrjVerSetting.tcl

set value [lindex $argv 0]
puts $value
open_project -file {C:/lab/top/top.prjx}
configure_tool -name CONFIGURE_PROG_OPTIONS -params "design_version:${value}" -params "silicon_signature:${value}"
save_project

(4) バッチファイルを実行します。  

(5) Libero SoC左側のDesign Flowタブ内にあるCongigure Programming Optionsを開きDesign versionを確認します。
     例えばPrjVer.txtに5が入っていたとしたら、+1カウントアップした6が新しいDesign versionとして設定されています。
     今回の例ではSilicon signatureも同じように設定しています。

お問い合わせ

本記事に関してご質問などありましたら、以下より問い合わせください。

Microchip メーカー情報Topへ

Microchipメーカー情報Topページへ戻りたい方は、以下をクリックください。