天天看點

TCL語言控制Modelsim仿真 1

  1,為什麼使用Modelsim仿真

  FPGA調試過程中仿真是不可避免的一個環節,畢竟FPGA屬于硬體,其編譯速度遠遠慢于MCU的編譯速度,如果像開發MCU那樣調試簡單代碼還可以,複雜代碼極為消耗時間,且大部分時間都消耗在等待編譯完成的無效等待中。(筆者就是從事MCU相關工作,習慣編譯之後先在硬體平台觀察現象,然後硬體調試)。而使用Modelsim仿真之後檢視波形,可以更深入的了解代碼中出現的問題,同時隻需要仿真出波形,不需要綜合出實際的電路,是以編譯速度極快。

  2,為什麼使用TCL語言仿真Modelsim

  Modelsim GUI操作界面極為繁瑣而且每次關閉工程之後都需要重複以上步驟重建立立工程(筆者嘗試過使用Open project功能,但是失敗了,還是需要重建立立工程,不知道是否是操作有誤)。而使用TCL語言仿真可以避免這些繁瑣的無意義的勞動,簡化開發過程。

  3,TCL語言基本文法

  TCL語言是指令行時代的産物,基本文法遵循當時文法結構即

  指令 參數,或者指令 參數1 參數2.

  {}與“”的差別{},“”中間都是字元串,但兩者不同{}中的内容不會發生轉換即“轉義\n換行”≠{轉義\n換行},{}中唯一的例外是\表示目前語句沒有結束,其他語句不會産生轉義。

   puts"\\n"表示顯示字元\n,TCL隻會做一次替換。

  方括号為指令替換例如puts [expr "443 + 556"]方括号會替換為expr"..."的結果(方括号有點類似C語言中的小括号,以嵌套最中心的方括号開始執行,然後再執行外圍方括号)。

  在TCL語言中#為注釋符号,因為TCL解釋器總是認為一條指令應該以換行或者分号結束,其他的在同一行的都是參數,是以

  set a 10 # 為錯誤注釋

  set a 10 ; #為正确注釋

  # set a 10 為正确注釋,且整行都被注釋掉了

  4,學習模式

  因為筆者學習TCL語言的目的僅僅是為了仿真Modelsim,從學學起,或者完全掌握TCL語言消耗時間過長,而且筆者的學習習慣更傾向于先使用,然後在使用的過程中查缺補漏,以實用為最終目的,是以學習模式為了解基本文法概念,然後根據網上現有的TCL語言仿真Modelsim腳本一邊學習FPGA,一邊根據自己的需求修改TCL腳本來仿真FPGA。

繼續閱讀