當(dāng)前位置:
首頁(yè) >
jchdl - GSL Node
發(fā)布時(shí)間:2025/5/22
37
豆豆
生活随笔
收集整理的這篇文章主要介紹了
jchdl - GSL Node
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
https://mp.weixin.qq.com/s/Oa4qgjIUccu5Y-Jlqcyn_A org.jchdl.model.gsl.core.meta.Node.java generated by Intellij IDEA powered by yFiles Node為所有節(jié)點(diǎn)的父類。所有用戶創(chuàng)建的節(jié)點(diǎn),必須繼承Node類。Node為用戶創(chuàng)建了節(jié)點(diǎn)提供了很多支持方法,但把logic()方法留給子類自行定義。 一. 類結(jié)構(gòu) 主要屬性: netI:連接在節(jié)點(diǎn)Input接口上的線; netO: 鏈接在節(jié)點(diǎn)Output接口上的線; ioI:節(jié)點(diǎn)的Input接口,與netI中的線一一對(duì)應(yīng); ioO:接口Output接口,與netO中的線一一對(duì)應(yīng); 主要方法: 收集連接在接口Input接口上的線的方法: in(Net): 添加一條輸入線; in(Net[]):添加一組輸入線; 收集連接在接口Output接口上的線的方法: out(Net): 添加一條輸出線; out(Net[]):添加一組輸出線; 獲取節(jié)點(diǎn)Input接口的方法: in(int index): 獲取第index個(gè)Input接口; inputs(): 獲取所有的Input接口; inputs(int from):獲取從from開(kāi)始的所有接口; inputs(int from, int to):[from, to),獲取從from(包含)到to(不包含)的所有接口; 獲取節(jié)點(diǎn)Output接口的方法: out(int index): 獲取第index個(gè)Output接口; outputs(): 獲取所有的Output接口; outputs(int from):獲取從from開(kāi)始的所有接口; outputs(int from, int to):[from, to),獲取從from(包含)到to(不包含)的所有接口; 節(jié)點(diǎn)內(nèi)部邏輯構(gòu)建方法:logic() 該方法為抽象方法,留給子類自行定義,即用戶通過(guò)重新定義該方法,來(lái)實(shí)現(xiàn)節(jié)點(diǎn)的自定義邏輯。 節(jié)點(diǎn)構(gòu)建方法:construct() 輔助方法,下面單講。 轉(zhuǎn)換為Verilog的方法:toVerilog() 把節(jié)點(diǎn)轉(zhuǎn)換為Verilog的(門(mén)和開(kāi)關(guān)層結(jié)構(gòu)建模)實(shí)現(xiàn)。 二. 構(gòu)建節(jié)點(diǎn) 當(dāng)前構(gòu)建節(jié)點(diǎn)的方法如下: 收集節(jié)點(diǎn)構(gòu)造方法中提供的輸入線和輸出線; 調(diào)用construct()方法: 根據(jù)收集的輸入線和輸出線,分別創(chuàng)建足夠數(shù)量的Input接口和Output接口與之對(duì)應(yīng); 調(diào)用用戶自定義的logic()方法構(gòu)建節(jié)點(diǎn)內(nèi)部邏輯; 將輸入線和輸出線與節(jié)點(diǎn)的Input接口和Output接口一一連接; 如此即完成節(jié)點(diǎn)構(gòu)建。 三. 用戶自定義邏輯:logic() 用戶自定義邏輯的方法是在子類中覆蓋logic方法。logic方法主要做以下事情: 創(chuàng)建線或一組線從Input接口牽出。(創(chuàng)建線時(shí)即可自動(dòng)將Input接口連接到新創(chuàng)建的線的Input接口上,從而驅(qū)動(dòng)(driven)線) 創(chuàng)建線或一組線連接到Output接口。(創(chuàng)建線時(shí)即可自動(dòng)把線的Output接口連接到節(jié)點(diǎn)的Output接口上) 創(chuàng)建內(nèi)部子節(jié)點(diǎn);(創(chuàng)建內(nèi)部子節(jié)點(diǎn)時(shí),即可自動(dòng)把Input牽出作為子節(jié)點(diǎn)輸入線的線,連接到子節(jié)點(diǎn)的Input接口上;并且自動(dòng)把子節(jié)點(diǎn)的Output接口連接到子節(jié)點(diǎn)的輸出線上) 另外,可以通過(guò)pullup/pulldown來(lái)處理臨時(shí)需要的線;使用toGround()處理不再需要的線。 注意:logic內(nèi)部使用的線,屬于節(jié)點(diǎn)的一部分,最好是定義為節(jié)點(diǎn)類的屬性。 四. 總結(jié) 可以看出,節(jié)點(diǎn)的構(gòu)建其實(shí)就是連線: 把輸入線連到Input接口上; 從Input接口牽出線連到內(nèi)部子節(jié)點(diǎn)上; 從內(nèi)部子節(jié)點(diǎn)牽出線連接到Output接口上; Output接口牽出線以供后續(xù)使用;(連接到下一個(gè)節(jié)點(diǎn),或者接地,或者懸空供觀察使用) 五. 實(shí)例Mux Mux為二選一。 構(gòu)造函數(shù) 構(gòu)造函數(shù)的參數(shù)為輸入線和輸出線,使用in()和out()分別收集: 收集輸入線 in1, in2, sel; 收集輸出線out; 調(diào)用construct方法構(gòu)建Mux節(jié)點(diǎn); 內(nèi)部邏輯 從輸入口牽出線,比如: in1 = new Wire(in(0)) 其中,in(0)方法為Node類提供的輔助方法,獲取第0個(gè)Input接口; 然后創(chuàng)建一條線,從這第0個(gè)Input接口牽出。 創(chuàng)建線連接到輸出口,比如: out = new Wire(out(0)) out(0)方法為Node類提供的輔助方法,獲取第0個(gè)Output接口; 然后創(chuàng)建一條線,連接到這個(gè)輸出口上; 創(chuàng)建子節(jié)點(diǎn)Not需要的輸出線selNot; 創(chuàng)建字節(jié)點(diǎn)Not:sel作為輸入線,selNot作為輸出線; 同理,逐個(gè)創(chuàng)建子節(jié)點(diǎn):兩個(gè)與門(mén),一個(gè)或門(mén); 節(jié)點(diǎn)內(nèi)部的線 節(jié)點(diǎn)內(nèi)部使用的線,推薦作為節(jié)點(diǎn)屬性聲明: 創(chuàng)建Mux節(jié)點(diǎn) PS. inst靜態(tài)方法可以省略new關(guān)鍵字,使代碼更緊湊。 六. 原子節(jié)點(diǎn)(AtomicNode) 原子節(jié)點(diǎn)是節(jié)點(diǎn)的子類。覆蓋了logic方法,但實(shí)現(xiàn)為空。 該類定義了抽象方法atomic()供子類覆蓋,以實(shí)現(xiàn)從輸入到輸出的轉(zhuǎn)化邏輯。最簡(jiǎn)單的比如非門(mén): atomic()方法調(diào)用not()方法,實(shí)現(xiàn)從輸入到輸出值的轉(zhuǎn)換。
轉(zhuǎn)載于:https://www.cnblogs.com/wjcdx/p/9616068.html
總結(jié)
以上是生活随笔為你收集整理的jchdl - GSL Node的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: jchdl - GSL Port
- 下一篇: protobuf生成