本文介紹了一種在瀏覽器里編輯代碼、仿真、看log、看波形的方法。
django介紹
django是一個由python實現的web后端框架。這里“后端”就是指在服務器上執行的程序(前端程序在瀏覽器里執行)。django采用了 MVT 的軟件設計模式,即模型(Model),視圖(View)和模板(Template)。這種MVT的設計思想讓數據與表現形式分開,從而編寫的程序更容易理解和維護。
django的結構大致如下圖。簡單地講,瀏覽器提交的請求,經apache執行后,送給django。django先解析url,根據url調用不同view函數。view函數操作數據庫,把數據填進模板得到html,view把html送回給瀏覽器。這里返回的信息不僅僅是html,也可以是text文本、json、圖片、視頻等各種格式的信息。
在“瀏覽器”里實現云端EDA
我們的云端EDA分為三部分:瀏覽器里的IDE(包括代碼編輯器、log顯示、波形查看、操作按鈕等)、web后端實現(處理瀏覽器的請求、調用EDA服務器api執行、返回信息給瀏覽器等)、EDA服務器(接收web后端的eda指令,如編譯、仿真等,調用eda)。
要實現“瀏覽器里的IDE”,主要需要javascript。代碼編輯器只不過是一個加強版的textarea,實現了行號顯示、代碼高亮、自動縮進等功能。這部分有現成輪子可以調用,比如CodeMirror等。
點擊“仿真”之后發生了什么?
當代碼寫完,點擊“Run”按鈕后,瀏覽器把代碼傳輸給web服務器,并將代碼存儲在指定的目錄。這里的目錄可以是“用戶名+項目名”的形式,避免與其他用戶或者其他項目沖突,也可以是“當前時間+隨機數”的形式。在代碼傳輸時,為了避免特殊字符,可以用base64將代碼編碼。如果需要減小傳輸數據量,可以先壓縮后傳輸。
代碼存儲好后,django的view函數具體實現了仿真調用,比如用subprocess.Popen(),后臺調用eda服務器的相關api(簡單的,可以只是一個sim腳本)。這里一般有幾點需要注意:
view函數要做成異步執行,即eda開始仿真后,立即返回信息通知瀏覽器。仿真過程可能持續很長時間,比如幾分鐘、幾個小時,瀏覽器不可能一直等在那里。
在仿真的過程中,需要實時顯示仿真的狀態,比如瀏覽器里能實時顯示log。因為上面把仿真設成異步了,就需要瀏覽器定時查詢。比如每2秒或者5秒,查詢仿真的log和狀態。
當然瀏覽器里也可以用websocket來實現。用websocket有一個好處,就是不會超時,并且服務器可以主動給瀏覽器發消息。這樣就避免了定時查詢帶來的資源浪費。
下面來討論另一個問題:如何實現在瀏覽器里查看仿真波形?
查看波形仍然是當前數字設計和驗證最有效、最直觀的調試方法。但VCD波形一般比較大,很難直接傳遞給瀏覽器,另外也會有很長時間的延遲,影響使用體驗。
幾種可能的解決方案:
壓縮。壓縮成tar.gz,或者其它自定義的格式。如果壓縮后小于5MB,就會感覺不到延遲。如果壓縮后20MB,就會要稍微等一會兒。如果是100M,就需要等較長時間。當然壓縮后100M也可以存儲很多波形信息了,可以應付常見的模塊級設計。
波形切片。在服務器仿真時把波形存儲很多小文件,比如10M左右。用戶瀏覽波形時,需要看前面或者后面的波形時,可以點“向前”或“向后”的按鈕從服務器快速加載。因為文件小,所以速度也快。但有一個問題,就是需要縮放時,比如縮放到full,需要加載全部波形,這會變得很慢。
另外一種可行的方案,瀏覽器把開始時間、結束時間、波形顯示窗口寬度告訴服務器,在服務器端把指定時間段的波形截出來,并處理成瀏覽器可以顯示的大小的圖片。這樣服務器把處理后的圖片傳送給瀏覽器,一般這樣的矢量圖片,可以控制在幾十K以內。瀏覽器收到后,直接顯示。當然瀏覽器需要實現時間刻度和鼠標的放大、縮小、劃選等操作,觸發這些操作后,從服務器重新取一幅矢量圖替換掉,這樣就實現了波形的放大和縮小。
綜上,方案3是最可行的方案,能滿足幾乎所有的設計場景。有人擔心這個服務器端的波形處理程序會不會太占資源或者太慢?其實,我們可以這樣想,一臺服務器上同時開著20個Verdi肯定不慢。這里的波形處理程序也同樣可以用C/C++來實現,不一定要用python。
這樣,我們就簡單實現了在瀏覽器里仿真和調試。
做這樣一個瀏覽器EDA有什么意義呢?
我覺得,首先,可以用于學習、培訓。教程與實驗融合,邊學邊練,輕量級實驗,無需本地實驗環境。edaplaygroud是一個很好的例子,這是國外的培訓機構doulos提供的學習平臺,支持vcs、xcellium這樣的商業軟件,也支持常見的開源軟件。
其次,如果可以與國產EDA公司達成合作,在后臺支持這些國產EDA,那么用戶無需安裝就可以立即試用和體驗。勢必可以起到宣傳、促進和普及國產EDA的作用。也會給合作的國產EDA公司帶來新用戶、新訂單和收益。
最后,說一說我對國產EDA的觀點。
當下國產EDA公司如雨后春筍般出現,誰能最終勝出,就看EDA產品能否真正解決客戶的問題,能否滿足客戶日益增長的新需求。真正讓客戶感覺到能用、好用、還想用。
-
eda
+關注
關注
71文章
2769瀏覽量
173464 -
瀏覽器
+關注
關注
1文章
1032瀏覽量
35417 -
函數
+關注
關注
3文章
4338瀏覽量
62787
發布評論請先 登錄
相關推薦
評論