刚入行IC的时候,发现想跑一个简单的Hello world要比学习软件语言困难多了,需要linux环境,需要安装各种工具,而且这些工具一般都是商业版的,需要各种魔法才能让它在自己电脑上工作起来,这样折腾下来,可能一周时间就过去了,还是不能向世界问好。
直到后来我发现了EDA playground这个神奇的免费网站,原来这一切都可以如此简单。这是一个在线eda网站,官方的说明是 ”从您的网络浏览器编辑、保存、仿真、综合 SystemVerilog、Verilog、VHDL和其他HDL。“支持uvm,支持三大eda厂家的仿真工具,包括最流行的VCS,而且是正版的比较新的版本,可以查看波形。
网站上有很多现成的例子,可以直接跑仿真,包括UVM hello word,网站作者还做了很多主题的教学视频,被人搬运到B站并加上了中文字幕,比如verilog系列教程Verilog Tutorial 1 – Ripple Carry Counter
UVM1.2的新特性系列What’s New in SystemVerilog UVM 1.2 – Config DB
对于久经沙场的IC老兵也是很有用的,比如,需要实现一个功能较为独立的小模块,可以先在这个网站上跑一下,没问题了再拷贝到产品代码里,省去了在本地搭建小验证环境的麻烦。另外一个好处是,这段代码将会一直存在你的账号下,跳槽之后也能能看到哦。代码可以设置不同的公开属性,包括完全公开,只对自己可见等。有时候对某个小知识不是很确定,看文档不一定能找到,可以很快的在这里做个测试,比如我自己遇到的一个UVM的小问题:一个子类在实现pre_randomize
的时候要加上super.pre_randomize()
才会执行父类的pre_randomize
,大多数情况下我们都是需要执行父类的这个方法的,所以子类代码如下所示:
class Extend_2 extends Base;
function void pre_randomize;
super.pre_randomize();
$display(" EXTEND_2 PRE_RANDOMIZATION ");
endfunction
function void post_randomize;
super.post_randomize();
$display(" EXTEND_2 POST_RANDOMIZATION ");
endfunction
endclass
那如果父类没有实现pre_randomize
,我们还能这样写吗?所以就写了一段测试的代码: should add super.pre_randomize to pre_randomize ?,打开点run就可以跑我写的代码看到结果了。到这里也就发现了它的又一个优点,就是你写代码可以共享给别人,别人点一下就能看到运行结果,如果你的代码有问题,这样请别人帮忙定位是不是很方便呢?事实上,软件领域最流行的集成开发环境IDEA新推出的 code with me功能与这个有异曲同工之妙,我认为这也是开发环境的发展趋势。
当然这个工具也有一些缺点,比如不支持verdi/FSDB,没有vcs的文档和参考代码,毕竟免费的,这些功能可能需要使用公司购买相应的商业版才行。
如果没有注册强烈建议注册一个试试(听着像广告,特别声明我跟这个网站没有任何利益关系),要使用商业仿真工具比如VCS,必须要使用公司或者学校的邮箱注册完整账号Register for a full account 。
如果你没有公司或者学校的邮箱,可以使用你在本站的用户名@elabtalk.com注册,并在本文后面留言,我会将激活的邮件转发给你。这也算是给有需求的同学一个福利吧~