upf仿真例子

原文链接
关于什么是UPF以及电源域等等概念赛宝龙在这里就不多说了,有兴趣的可以查阅IEEE1801-2013标准。

先上低功耗要求,即power intent:顶层模块为TOP,而TOP中例化了一个子模块,其例化名为instA1,具体的代码如下所示:
inst

TOP模块的代码:
在这里插入图片描述
顶层TOP 的供电轨道为VDD和VSS,而instA1的供电轨道为VDDA和VSS,并且当VDD掉电后instA1的out1端口也被关掉,out2不受VDD的影响。首先我们编写power intent 文件:
power intent

在power intent文件中,我们根据要求创建了两个电源域,并且为电源域指定了供电端口和供电线,并将供电端口和供电线进行连接构成供电网络,而且我们还为两个电源域显式的指定了主供电线网络,最后根据要求,VDD掉电后instA1的out1也将被关掉,这样我们需要为instA1的out1端口指定相对的供电线VDD。

写好了powerintent文件后,我们需要构建测试平台

tb

按照通常的testbench的写法,同时要模拟电源行为,我们使用了supply_on和supply_off函数,这两个函数是upf标准中定义的两个标准库函数,其中supply_on函数接受两个参数:参数一为字符串常量,所取值应该为power intent文件中定义的供电端口名,参数二为电压值。supply_off函数只有一个字符串常量参数。

写好testbench之后,我们需要使用synopsys公司的mvtool和vcs工具进行仿真:与一般的仿真步骤类似,仿真RTL+UPF也可以分为三步模式,不过赛宝龙更喜欢一步到位,具体命令为:

vcsmvsim -debug_all -upf demo.upf -sverilog $ARCHPRO_ROOT/templates/upf_package.sv *.v &

其中ARCHPRO_ROOT应该在你的.cshrc或者.bashrc中设置为环境变量,指向你的mvtool安装的根路径。

执行上述命令,编译无误后,用dve观察仿真结果为:
o

由仿真图可以看到instA1的out1有一段时间被corrupt掉了,而这段时间正是VDD掉电时,当VDD重新上电instA1的out1又恢复正常了;instA1的out2输出不受VDD掉电的影响。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值