0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

浏览器里编辑代码、仿真、看log、看波形的方法

li5236 来源:ExASIC 作者:ExASIC 2022-03-29 14:44 次阅读

本文介绍了一种在浏览器里编辑代码、仿真、看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
    eda
    +关注

    关注

    71

    文章

    2755

    浏览量

    173185
  • 浏览器
    +关注

    关注

    1

    文章

    1022

    浏览量

    35324
  • 函数
    +关注

    关注

    3

    文章

    4327

    浏览量

    62564
收藏 人收藏

    评论

    相关推荐

    AWTK 最新动态:支持浏览器控件

    导读AWTK浏览器控件,基于webview项目实现,将浏览器嵌入到AWTK应用程序中,让开发者可以方便的集成在线帮助和调用地图等功能。awtk-widget-web-view是基于webview实现的AWTK浏览器控件,使得AW
    的头像 发表于 11-20 01:05 186次阅读
    AWTK 最新动态:支持<b class='flag-5'>浏览器</b>控件

    写一个Chrome浏览器插件

    一、什么是浏览器插件 浏览器插件是依附于浏览器,用来拓展网页能力的程序。插件具有监听浏览器事件、获取和修改网页元素、拦截网络请求、添加快捷菜单等功能。使用
    的头像 发表于 11-18 17:12 291次阅读
    写一个Chrome<b class='flag-5'>浏览器</b>插件

    log114做仿真时,用示波器它的波形却失真了为什么?

    请教各位高手,用log114做仿真时,最后的输出电压值是正确的,但是用示波器它的波形却失真了,怎么回事?
    发表于 08-30 08:09

    跨域问题是由浏览器的同源策略造成的

    浏览器
    jf_62215197
    发布于 :2024年08月27日 07:51:42

    不只是前端,后端、产品和测试也需要了解的浏览器知识(二)

    继上篇《 不只是前端,后端、产品和测试也需要了解的浏览器知识(一)》介绍了浏览器的基本情况、发展历史以及市场占有率。 本篇文章将介绍浏览器基本原理。 在掌握基本原理后,通过技术深入,在研发
    的头像 发表于 08-12 14:32 330次阅读
    不只是前端,后端、产品和测试也需要了解的<b class='flag-5'>浏览器</b>知识(二)

    不只是前端,后端、产品和测试也需要了解的浏览器知识

    一、我们为什么要了解浏览器? 1. 对于前端开发者 1.浏览器是用户体验的第一线。我们需要了解浏览器的工作原理,才能有效地设计和实现用户界面,确保良好的用户体验。 2.好的产品需要考虑浏览器
    的头像 发表于 07-01 18:03 460次阅读
    不只是前端,后端、产品和测试也需要了解的<b class='flag-5'>浏览器</b>知识

    Opera浏览器引领潮流,全球首接端侧AI大模型

    昆仑万维旗下海外平台Opera宣布,其旗舰浏览器Opera One和游戏浏览器Opera GX将正式接入端侧AI大模型,成为全球首个实现这一突破的主流浏览器
    的头像 发表于 06-03 09:18 732次阅读

    微软Edge浏览器新增文本编辑功能:引入Compose和数字书写功能

    除此之外,Edge 浏览器也对 Windows Ink 的手写体验进行了优化提升。现在,用户可在浏览器地址栏、文本区及“contenteditable”属性的区域内使用数字书写功能。
    的头像 发表于 04-24 15:26 660次阅读

    Edge浏览器关闭Microsoft Rewards扩展原因揭晓

    据报道,近期德国等地的Microsoft Edge浏览器用户发现,安装或启动Microsoft Rewards扩展后,会出现“右上角扩展被Edge浏览器禁用以保障您的浏览器安全”的提醒窗口。
    的头像 发表于 04-10 09:55 801次阅读

    鸿蒙实战开发:【浏览器制作】

    使用[@ohos.systemparameter]接口和[Web组件]展示了一个浏览器的基本功能,展示网页,根据页面历史栈前进回退等。
    的头像 发表于 03-19 17:47 579次阅读
    鸿蒙实战开发:【<b class='flag-5'>浏览器</b>制作】

    安卓版Chrome浏览器现已支持第三方密码管理调用

    据报道,数据解析专家Leppeva64近日在安卓版谷歌Chrome浏览器的源代码中透露,该浏览器已在安卓平台上实现了对第三方密码管理的调用支持,并覆盖Stable、Beta及Cana
    的头像 发表于 03-19 11:04 693次阅读

    如何通过浏览器访问Web页面进行固件更新的方法

    如果电脑没有安装 TIA PORTAL 软件,但是 CPU 之前激活了 Web 服务功能,可以通过电脑联网 CPU,然后打开浏览器浏览到 CPU 的方式进行固件更新。
    的头像 发表于 02-25 14:51 1537次阅读

    谷歌Chrome浏览器副总裁对苹果欧洲新规提出异议,称其限制过于严格

    塔布兹指出,苹果从未认真思考过是否在iOS平台上放开浏览器或引擎的权限,其设定的策略实在太过严格,不能给予浏览器开发者真正的选择权。
    的头像 发表于 02-03 09:59 734次阅读

    交流电源List波形编辑功能如何使用?

    List波形编辑功能的使用方法和相关应用。 首先,交流电源List波形编辑功能一般通过电力系统仿真
    的头像 发表于 01-19 15:01 789次阅读

    谷歌宣布放弃Fuchsia OS引入完整Chrome/Chromium浏览器

    此前的Chromium例行代码更新显示,谷歌决定终止将完整Chrome/Chromium浏览器引入至Fuchsia OS的计划。
    的头像 发表于 01-16 14:02 736次阅读