0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

瀏覽器里編輯代碼、仿真、看log、看波形的方法

li5236 ? 來源:ExASIC ? 作者:ExASIC ? 2022-03-29 14:44 ? 次閱讀

本文介紹了一種在瀏覽器里編輯代碼、仿真、看log、看波形的方法。

django介紹

django是一個由python實現(xiàn)的web后端框架。這里“后端”就是指在服務器上執(zhí)行的程序(前端程序在瀏覽器里執(zhí)行)。django采用了 MVT 的軟件設計模式,即模型(Model),視圖(View)和模板(Template)。這種MVT的設計思想讓數(shù)據(jù)與表現(xiàn)形式分開,從而編寫的程序更容易理解和維護。

django的結(jié)構(gòu)大致如下圖。簡單地講,瀏覽器提交的請求,經(jīng)apache執(zhí)行后,送給django。django先解析url,根據(jù)url調(diào)用不同view函數(shù)。view函數(shù)操作數(shù)據(jù)庫,把數(shù)據(jù)填進模板得到html,view把html送回給瀏覽器。這里返回的信息不僅僅是html,也可以是text文本、json、圖片、視頻等各種格式的信息。

在“瀏覽器”里實現(xiàn)云端EDA

我們的云端EDA分為三部分:瀏覽器里的IDE(包括代碼編輯器、log顯示、波形查看、操作按鈕等)、web后端實現(xiàn)(處理瀏覽器的請求、調(diào)用EDA服務器api執(zhí)行、返回信息給瀏覽器等)、EDA服務器(接收web后端的eda指令,如編譯、仿真等,調(diào)用eda)。

要實現(xiàn)“瀏覽器里的IDE”,主要需要javascript。代碼編輯器只不過是一個加強版的textarea,實現(xiàn)了行號顯示、代碼高亮、自動縮進等功能。這部分有現(xiàn)成輪子可以調(diào)用,比如CodeMirror等。

點擊“仿真”之后發(fā)生了什么?

當代碼寫完,點擊“Run”按鈕后,瀏覽器把代碼傳輸給web服務器,并將代碼存儲在指定的目錄。這里的目錄可以是“用戶名+項目名”的形式,避免與其他用戶或者其他項目沖突,也可以是“當前時間+隨機數(shù)”的形式。在代碼傳輸時,為了避免特殊字符,可以用base64將代碼編碼。如果需要減小傳輸數(shù)據(jù)量,可以先壓縮后傳輸。

代碼存儲好后,django的view函數(shù)具體實現(xiàn)了仿真調(diào)用,比如用subprocess.Popen(),后臺調(diào)用eda服務器的相關(guān)api(簡單的,可以只是一個sim腳本)。這里一般有幾點需要注意:

view函數(shù)要做成異步執(zhí)行,即eda開始仿真后,立即返回信息通知瀏覽器。仿真過程可能持續(xù)很長時間,比如幾分鐘、幾個小時,瀏覽器不可能一直等在那里。

在仿真的過程中,需要實時顯示仿真的狀態(tài),比如瀏覽器里能實時顯示log。因為上面把仿真設成異步了,就需要瀏覽器定時查詢。比如每2秒或者5秒,查詢仿真的log和狀態(tài)。

當然瀏覽器里也可以用websocket來實現(xiàn)。用websocket有一個好處,就是不會超時,并且服務器可以主動給瀏覽器發(fā)消息。這樣就避免了定時查詢帶來的資源浪費。

下面來討論另一個問題:如何實現(xiàn)在瀏覽器里查看仿真波形?

查看波形仍然是當前數(shù)字設計和驗證最有效、最直觀的調(diào)試方法。但VCD波形一般比較大,很難直接傳遞給瀏覽器,另外也會有很長時間的延遲,影響使用體驗。

幾種可能的解決方案:

壓縮。壓縮成tar.gz,或者其它自定義的格式。如果壓縮后小于5MB,就會感覺不到延遲。如果壓縮后20MB,就會要稍微等一會兒。如果是100M,就需要等較長時間。當然壓縮后100M也可以存儲很多波形信息了,可以應付常見的模塊級設計。

波形切片。在服務器仿真時把波形存儲很多小文件,比如10M左右。用戶瀏覽波形時,需要看前面或者后面的波形時,可以點“向前”或“向后”的按鈕從服務器快速加載。因為文件小,所以速度也快。但有一個問題,就是需要縮放時,比如縮放到full,需要加載全部波形,這會變得很慢。

另外一種可行的方案,瀏覽器把開始時間、結(jié)束時間、波形顯示窗口寬度告訴服務器,在服務器端把指定時間段的波形截出來,并處理成瀏覽器可以顯示的大小的圖片。這樣服務器把處理后的圖片傳送給瀏覽器,一般這樣的矢量圖片,可以控制在幾十K以內(nèi)。瀏覽器收到后,直接顯示。當然瀏覽器需要實現(xiàn)時間刻度和鼠標的放大、縮小、劃選等操作,觸發(fā)這些操作后,從服務器重新取一幅矢量圖替換掉,這樣就實現(xiàn)了波形的放大和縮小。

綜上,方案3是最可行的方案,能滿足幾乎所有的設計場景。有人擔心這個服務器端的波形處理程序會不會太占資源或者太慢?其實,我們可以這樣想,一臺服務器上同時開著20個Verdi肯定不慢。這里的波形處理程序也同樣可以用C/C++來實現(xiàn),不一定要用python。

這樣,我們就簡單實現(xiàn)了在瀏覽器里仿真和調(diào)試。

做這樣一個瀏覽器EDA有什么意義呢?

我覺得,首先,可以用于學習、培訓。教程與實驗融合,邊學邊練,輕量級實驗,無需本地實驗環(huán)境。edaplaygroud是一個很好的例子,這是國外的培訓機構(gòu)doulos提供的學習平臺,支持vcs、xcellium這樣的商業(yè)軟件,也支持常見的開源軟件。

其次,如果可以與國產(chǎn)EDA公司達成合作,在后臺支持這些國產(chǎn)EDA,那么用戶無需安裝就可以立即試用和體驗。勢必可以起到宣傳、促進和普及國產(chǎn)EDA的作用。也會給合作的國產(chǎn)EDA公司帶來新用戶、新訂單和收益。

最后,說一說我對國產(chǎn)EDA的觀點。

當下國產(chǎn)EDA公司如雨后春筍般出現(xiàn),誰能最終勝出,就看EDA產(chǎn)品能否真正解決客戶的問題,能否滿足客戶日益增長的新需求。真正讓客戶感覺到能用、好用、還想用。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • eda
    eda
    +關(guān)注

    關(guān)注

    71

    文章

    2672

    瀏覽量

    172578
  • 瀏覽器
    +關(guān)注

    關(guān)注

    1

    文章

    1007

    瀏覽量

    35175
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4261

    瀏覽量

    62233
收藏 人收藏

    評論

    相關(guān)推薦

    log114做仿真時,用示波器它的波形卻失真了為什么?

    請教各位高手,用log114做仿真時,最后的輸出電壓值是正確的,但是用示波器它的波形卻失真了,怎么回事?
    發(fā)表于 08-30 08:09

    跨域問題是由瀏覽器的同源策略造成的

    瀏覽器
    jf_62215197
    發(fā)布于 :2024年08月27日 07:51:42

    不只是前端,后端、產(chǎn)品和測試也需要了解的瀏覽器知識

    一、我們?yōu)槭裁匆私?b class='flag-5'>瀏覽器? 1. 對于前端開發(fā)者 1.瀏覽器是用戶體驗的第一線。我們需要了解瀏覽器的工作原理,才能有效地設計和實現(xiàn)用戶界面,確保良好的用戶體驗。 2.好的產(chǎn)品需要考慮瀏覽器
    的頭像 發(fā)表于 07-01 18:03 ?376次閱讀
    不只是前端,后端、產(chǎn)品和測試也需要了解的<b class='flag-5'>瀏覽器</b>知識

    Opera瀏覽器引領(lǐng)潮流,全球首接端側(cè)AI大模型

    昆侖萬維旗下海外平臺Opera宣布,其旗艦瀏覽器Opera One和游戲瀏覽器Opera GX將正式接入端側(cè)AI大模型,成為全球首個實現(xiàn)這一突破的主流瀏覽器
    的頭像 發(fā)表于 06-03 09:18 ?614次閱讀

    微軟Edge瀏覽器新增文本編輯功能:引入Compose和數(shù)字書寫功能

    除此之外,Edge 瀏覽器也對 Windows Ink 的手寫體驗進行了優(yōu)化提升?,F(xiàn)在,用戶可在瀏覽器地址欄、文本區(qū)及“contenteditable”屬性的區(qū)域內(nèi)使用數(shù)字書寫功能。
    的頭像 發(fā)表于 04-24 15:26 ?563次閱讀

    Edge瀏覽器關(guān)閉Microsoft Rewards擴展原因揭曉

    據(jù)報道,近期德國等地的Microsoft Edge瀏覽器用戶發(fā)現(xiàn),安裝或啟動Microsoft Rewards擴展后,會出現(xiàn)“右上角擴展被Edge瀏覽器禁用以保障您的瀏覽器安全”的提醒窗口。
    的頭像 發(fā)表于 04-10 09:55 ?664次閱讀

    谷歌宣布放棄Fuchsia OS引入完整Chrome/Chromium瀏覽器

    此前的Chromium例行代碼更新顯示,谷歌決定終止將完整Chrome/Chromium瀏覽器引入至Fuchsia OS的計劃。
    的頭像 發(fā)表于 01-16 14:02 ?633次閱讀

    js腳本怎么在瀏覽器中運行

    瀏覽器中運行JavaScript腳本是一種常見的方式,因為JavaScript是一種在Web瀏覽器中執(zhí)行的腳本語言。下面是一個詳細的,最少1500字的文章,介紹如何在瀏覽器中運行
    的頭像 發(fā)表于 11-27 16:46 ?2569次閱讀

    js文件可以直接瀏覽器運行嗎

    載和運行。 在Web開發(fā)中,JS常被用于實現(xiàn)動態(tài)交互效果和頁面邏輯控制。通過將JS代碼嵌入到網(wǎng)頁的HTML文件中,瀏覽器可以在頁面加載過程中自動執(zhí)行JS,實現(xiàn)網(wǎng)頁的動態(tài)效果和用戶交互。 在HTML文件中,可以使用 當瀏覽器解析到
    的頭像 發(fā)表于 11-27 16:45 ?3599次閱讀

    瀏覽器怎么打開javascript

    JavaScript的基本概念和用途。 首先,值得注意的是,幾乎所有的現(xiàn)代瀏覽器都默認啟用JavaScript功能,這意味著當您打開一個網(wǎng)頁時,其中的JavaScript代碼會自動執(zhí)行。然而,如果您的瀏覽器中禁用了JavaScr
    的頭像 發(fā)表于 11-26 11:25 ?2249次閱讀

    瀏覽器需要支持javascript怎么解決

    JavaScript是一種流行的腳本語言,用于對網(wǎng)頁進行動態(tài)交互和功能增強。幾乎所有現(xiàn)代瀏覽器都支持JavaScript,但在某些情況下,用戶可能需要采取措施來確保瀏覽器支持JavaScript
    的頭像 發(fā)表于 11-26 11:23 ?4636次閱讀

    瀏覽器支持javascript怎么設置

    for Mobile)。瀏覽器可以將HTML、CSS和JavaScript代碼轉(zhuǎn)化為可視化的網(wǎng)頁。 要確保瀏覽器正確地支持JavaS
    的頭像 發(fā)表于 11-26 11:22 ?1320次閱讀

    瀏覽器javascript被禁用怎么解開

    。本文將詳細介紹如何解開禁用瀏覽器JavaScript的方法,希望對您有所幫助。 一、檢查瀏覽器設置 在解決問題之前,我們首先要確認JavaScript是否真的被禁用了。不同的瀏覽器
    的頭像 發(fā)表于 11-26 11:21 ?1.8w次閱讀

    ie瀏覽器限制運行腳本

    IE瀏覽器限制運行腳本是指在Internet Explorer瀏覽器中,存在一些限制和安全策略,以保護用戶的電腦免受惡意腳本的攻擊。這些限制有助于防止在瀏覽器中執(zhí)行惡意代碼,保護用戶的
    的頭像 發(fā)表于 11-26 11:19 ?1367次閱讀

    python控制已經(jīng)打開的瀏覽器

    Python是一種廣泛使用的編程語言,它具有強大的功能和豐富的庫。其中一個功能就是控制已經(jīng)打開的瀏覽器。這篇文章將詳細介紹如何使用Python控制已經(jīng)打開的瀏覽器,并提供一些實際的示例。 一
    的頭像 發(fā)表于 11-22 14:29 ?2919次閱讀