【Verilog-41】Verilog中强度strength的用法

除了逻辑值外,net类型的变量还可以定义强度,因而可以更精确的建模。net的强度来自于动态net驱动器的强度。在开关级仿真时,当net由多个驱动器驱动且其值互相矛盾时,可常用强度的概念来描述这种逻辑行为。
(strength0, strength1)
(strength1, strength0)
(strength0)------------pulldown primitives only
(strength1)------------pullup primitives only
(chargestrength)------trireg nets only
strength0 = {supply0/strong0/pull0/weak0/highz0}强度由左至右依次减弱
strength1 = {supply1/strong1/pull1/weak1/highz1}强度由左至右依次减弱
chargestrength = {large/medium/small}

用法:
1.关键词strength0和strength1用于定义net的驱动强度。其中,strength表示强度,与紧跟着的0和1连起来分别表示输出逻辑值为0和1时的强度。
2.在强度声明中可选择不同的强度关键词来代替strength,但(highz0, highz1)和(highz1, highz0)这两种强度定义是不允许的,在pullup和pulldown门的强度声明中highz0和highz1是不允许的。
3.默认的强度定义为strength0和strength1,但是有下列例外:
对于pullup和pulldown门,默认的强度为pull1和pull0;
对于trireg的net,默认的强度为medium。
强度定义为supply0和supply1的net,总是能够提供强度。
4.在仿真期间,net的强度来自于net上的主驱动强度(即具有最大强度值得实例或连续赋值语句)。如果net未被驱动,它会呈现高阻值,但是以下情况例外:
tri0和tri1类型的net分别具有逻辑值0和1,并为pull强度;
trireg类型的net保持它们最后的驱动值。
强度为supply0和supply1的nets分别具有逻辑值0和1,并能提供驱动能力。
5.强度值有强弱顺序,可从supply(最强)依次减弱并排列到highz(最弱)。当需要确定net的实际逻辑值和强度时,或者当net由多个驱动器驱动而且驱动相互间出现冲突时,出现冲突的两个强度值在强弱顺序表中的相对位置就会对该net的真实逻辑值起作用。
6.强度时不可综合的。
7.可以在$display和$monitor等中用特定的格式控制符%V显示其强度值。
例子:

assign (weak1, weak0) f = a + b;
trireg (large) c1,c2;
and (strong1, weak0) u1(x, y, z);
  • 4
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值