1. 程式人生 > >數字電路建模 - jchdl

數字電路建模 - jchdl

設計 模式 查看 java虛擬機 輔助 chang 而是 ilog 一次

jchdl:Jianchang Constructed Hardware Description Library,使用Java語言開發的硬件描述庫。(Java是商標不讓用,那就用名字 :-) 一. 設計目標 1.設計目標 打通IC開發和Java生態,以Java生態的賦能IC開發。 2. 當前路徑 當前的路徑是基於Java語言,建立硬件建模庫(library)。使用jchdl建立硬件模型之後,可以直接進行功能驗證。然後轉換為Verilog語言,使用現有的工具集對轉換後的模型進行驗證、仿真等。 ?技術分享圖片? 3. 現實 現實是,目前只實現了很小一部分功能。請視該項目為拋磚引玉,希望借助社區的力量(IC專業領域和Java開發領域的專家)來完善。
4. LICENSE 項目地址:https://github.com/wjcdx/jchdl 該項目使用較為寬松的BSD 3-Clause License。 希望能夠成為一塊好磚。 二. 基於Java
  1. Java語言
a. Java語言是流行的面向對象編程語言(OOP)。 b. Java語言是跨平臺的語言,基於Java語言的代碼可以一次編譯、到處運行。 c. Java語言是編程語言從近代走向現代的象征。
  1. Java生態
Java不只是Java語言,而是Java生態:
  1. 先進的並不斷演進的編程理念。各種設計模式、架構,基於Java衍生出來。
  1. 開放的Java社區。基於Java的開源項目眾多、層出不窮。Java社區奉行開放的文化,源源不斷的產生各種開放的資源。相較之下,IC生態則由於較高的專業門檻,而在很大意義上是封閉的。
  1. 強大的工具支持。開發環境有Eclipse/Netbeans/Intellij IDEA等強大的工具,相較之下Verilog使用的vim和EDA編輯工具猶如處在石器時代。其他如UML建模工具可以實現建模之後直接轉化為Java代碼,代碼結構可視化工具可以直接分析Java代碼生成結構圖等。
  1. 品類繁多且仍在不斷增加的各種庫:每一種庫即是對一個方面的賦能。
  1. 先進的Java虛擬機(JVM):JVM已經成為很多想要實現跨平臺的語言的首選後端。很多新生的語言都是基於JVM設計,代碼最終生成與Java一樣的字節碼(class)文件,供Java虛擬機解釋運行。
?技術分享圖片? 三. 當前實現 由於時間和能力限制,目前僅實現了如下功能:
  1. 門和開關層(GSL)建模模型,可以基於建模方法論(Methodology)進行建模(model a hardware model);
  1. 門和開關層(GSL)模型驗證,可以直接運行查看運行結果進行驗證;
  1. GSL模型轉化為Verilog語言;
  1. RTL層建模模型,與Verilog很貼近;
  1. RTL層模型驗證,可以直接運行查看運行結果進行驗證;
  1. RTL層模型轉化為Verilog語言;
二. 輔助建模 當前實現的功能有限,沒有建模等後續階段的支持,所以當前只能進行輔助建模。 三. 模型驗證 驗證原理:
  1. GSL模型驗證,基於值的傳播。值的變化在線和節點上進行傳播,如果值沒有變化則不會進行傳播(可以避免拓撲中的環導致的死循環)。
  1. RTL模型驗證,基於事件驅動模型,參考Verilog event schedule機制。當有wire或reg的值變化,而又有依賴這個reg和wire的邏輯時,則執行這段邏輯。邏輯的執行又導致新的事件產生。在一個time slot中,一直執行,直到沒有新的事件產生為止。
驗證方法:
  1. 使用Intellj IDEA等IDE提供的斷點功能,在執行時停下來觀察變量的值。也可以單步執行、步入、步出等功能跟蹤代碼執行流程。
  1. 使用Junit庫進行單元測試。
  1. 使用log機制,記錄執行過程中的log,執行完成之後再行分析。

數字電路建模 - jchdl