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
    +关注

    关注

    72

    文章

    3141

    浏览量

    183667
  • 浏览器
    +关注

    关注

    1

    文章

    1043

    浏览量

    37165
  • 函数
    +关注

    关注

    3

    文章

    4421

    浏览量

    67822
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    JL杰理AC696N开发板PWM波形生成与控制(2):问题排查

    CNT较小时)再操作,或者使用双缓冲机制。 产生PWM波形失败的可能原因 如果配置完发现没有波形输出,按以下顺序排查: IO口被占用 :搜索代码选择的IO口是否在其他地方被配置为其他
    发表于 04-07 14:07

    VF2 Debian image 69 Web 浏览器失败,怎么修复?

    只需启动并运行图像 69。 $ ip 一个 显示互联网连接已建立良好。 单击以运行默认的Web浏览器时,会弹出一条错误消息。 “无法执行默认 Web 浏览器。” 输入/输出错误。 有什么提示需要修复吗?
    发表于 03-24 06:54

    无需安装!在浏览器就能玩转ESP32/ESP8266,这个神器绝了!

    无需安装!在浏览器就能玩转ESP32/ESP8266,这个神器绝了!【往期精选】十年嵌入式最深的痛,不是Bug,而是抓不到日志!vivo宣布原生支持HomeAssistant生态设备接入(含
    的头像 发表于 01-10 10:01 1354次阅读
    无需安装!在<b class='flag-5'>浏览器</b><b class='flag-5'>里</b>就能玩转ESP32/ESP8266,这个神器绝了!

    鸿蒙手机系统6.0用浏览器看视频,视频显示不能横屏。怎么设置?

    鸿蒙手机系统6.0用浏览器看视频,视频显示不能横屏。怎么设置? 如何掂让这个竖屏切换为横屏?
    发表于 12-20 20:10

    “透”工业,还得OCT!

    “透”工业,还得OCT!OCT技术在工业领域的创新应用探索光学相干层析技术(OpticalCoherenceTomography,OCT)是一种三维成像技术,可以在散射介质中进行高分辨率成像,成像
    的头像 发表于 09-17 11:08 1423次阅读
    <b class='flag-5'>看</b>“透”工业,还得OCT!

    Microsoft Edge浏览器iOS端插件功能上线

    在最新发布的 139 版本中,Microsoft Edge 浏览器 iOS 端正式支持插件功能!与此同时,Microsoft Edge 安卓端的插件数量已跃升至近 30 款。广告拦截、双语翻译、资源下载……你的手机浏览器,也能拥有自定义的「超能力」。
    的头像 发表于 08-19 14:29 1991次阅读

    亚马逊云科技推出Amazon Nova Act SDK预览版,加速浏览器自动化Agent落地

    北京2025年8月5日 /美通社/ -- 亚马逊云科技日前宣布,推出Amazon Nova Act SDK有限预览版,可快速帮助客户将基于浏览器的Agent从原型部署至生产环境。该SDK可与亚马逊云
    的头像 发表于 08-06 08:42 955次阅读

    微软Microsoft Edge浏览器构筑立体式安全防线

    在信息爆炸的今天,钓鱼网站、诈骗广告、隐私追踪层出不穷。Microsoft Edge 浏览器为桌面与移动端用户构筑了立体式安全防线。用七大安全护盾,保护你的上网安全。
    的头像 发表于 08-04 15:39 1512次阅读

    Texas Instruments LOG300DEVM和LOG300RGTEVM评估模块数据手册

    Texas Instruments LOG300DEVM和LOG300RGTEVM评估模块 (EVM) 设计用于评估集成对数检波、低噪声放大器 (LNA) 和输入频率检测的性能,所
    的头像 发表于 07-21 10:15 844次阅读
    Texas Instruments <b class='flag-5'>LOG</b>300DEVM和<b class='flag-5'>LOG</b>300RGTEVM评估模块数据手册

    ESP32-P4 C5开发板烧录小智全流程!速

    ,我们文字、视频教程都有!搭配食用更佳!教程在这抓紧码住开发环境搭建打开浏览器,搜索并进入“乐鑫科技官网”;在官网页面中找到“SDKs”选项,点击后选择“ESP-ID
    的头像 发表于 07-04 18:03 2857次阅读
    ESP32-P4 C5开发板烧录小智全流程!速<b class='flag-5'>看</b>!

    ##DevEco Studio##如何让模拟有图片?【图片下载法】

    ​ API9和API12在模拟上,有一个巨大的区别,那就是API9(开发工具3的版本),他的模拟有一个拍照功能(再往前的版本里甚至还有浏览器,可以通过
    发表于 06-29 22:51

    ##DevEco Studio##如何让模拟有图片?【文件拖入法】

    ​ API9和API12在模拟上,有一个巨大的区别,那就是API9(开发工具3的版本),他的模拟有一个拍照功能(再往前的版本里甚至还有浏览器,可以通过
    发表于 06-29 22:49

    老电视如何安装浏览器

    2017年购买的夏普老电视,1.5G+8G存储,网上下的浏览器APK文件在电视内打开就弹出“解析程序包出现问题”。 未知来源选项已打开,存储空间清空到只剩下三个应用(只占用300M左右),基本可
    发表于 06-01 18:57

    从初学到进阶:树莓派上最适合你的代码编辑器推荐!

    之前,你需要安装一些必备工具,代码编辑器便是其中之一。树莓派系统自带了一些代码编辑器,它们功能良好,足以满足基本需求。不过,如果你需要更高级的功能,就必须探索其他
    的头像 发表于 05-15 16:20 1379次阅读
    从初学到进阶:树莓派上最适合你的<b class='flag-5'>代码</b><b class='flag-5'>编辑器</b>推荐!

    Vim编辑器的基本操作

    代码的世界,效率是永恒的追求。无论是新手开发者还是资深工程师,都渴望拥有一款能让自己如虎添翼的编辑器。而在Linux生态中,有一款被无数程序员奉为神器、被誉为“效率之王”的编辑器
    的头像 发表于 05-06 13:41 1434次阅读
    Vim<b class='flag-5'>编辑器</b>的基本操作