1. rtl内的线网都有默认的强度,一般是(strong1, strong0),连续赋值语句可以让不同强度的信号互相赋值
  2. 阻塞赋值和非阻塞赋值也能让不同强度的信号互相驱动
  3. 通过module的port列表传递的信号不改变强度(例子中led.in1到led的input x, ouput y)
example:
`timescale 1ns/1ns
module led( a, clk , b, c, e, y);
input a, clk;
output b;
output c;
output e;
output y;
wire y;
reg e;
reg b;
wire (pull1,pull0) d = a;
wire (strong1, strong0) c = d;
 
always @( d)
begin
e = d;
end
always@(posedge clk)
begin
b <=d;
end
 
in in1(.x(d), .y(y));
endmodule
 
module in(x,y);
input x;
output y;
wire (weak1,weak0) z =!x;
wire (pull1, pull0) y = z;
endmodule
 
module tb();
reg clk = 0;
reg a = 0;
wire b ;
wire c ;
wire e;
wire y;
initial begin
clk = 0;
repeat(400) clk = #5ns !clk;
end
initial begin
repeat(100) a = #50ns !a;
end
 
led led1(.a(a), .clk(clk),.b(b), .c(c), .e(e));
 
initial begin
$display("tb.a(%v), tb.b(%v),tb.c(%v) ", tb.a, tb.b, tb.c);
$monitor("tb.a(%v), tb.b(%v),tb.c(%v)", tb.a, tb.b, tb.c);
$monitor("tb.e(%v)", tb.e);
$monitor("tb.y(%v)", tb.y);
 
end
initial begin
$display("led.a(%v), led.b(%v), led.c(%v),led.d(%v), led.e(%v),led.y(%v) led.in1.y(%v),led.in1.x(%v) ", led1.a,
  led1.b,led1.c,led.d,led.e,led.y,led.in1.y,led.in1.x);
$monitor("led.a(%v), led.b(%v), led.c(%v),led.d(%v), led.e(%v),led.y(%v) led.in1.y(%v),led.in1.x(%v)", led1.a, led1.b,led1.c,led.d,led.e,led.y,led.in1.y,led.in1.x);
end
initial begin
     $fsdbDumpfile("ceb.fsdb"); 
     $fsdbDumpvars(0,tb.led1);
     $fsdbDumpvars(1,tb);
     $fsdbDumpvars(0,tb);
     $fsdbDumpvars(2,tb );
end
endmodule
 
result:
 
tb.a(St0), tb.b(StX),tb.c(St0)
led.a(St0), led.b(StX), led.c(St0),led.d(Pu0), led.e(StX),led.y(Pu1) led.in1.y(Pu1),led.in1.x(Pu0)
Novas FSDB Dumper for VCS70, Release 6.1v1 (Linux) 01/02/2006
Copyright (C) 1996 - 2006 by Novas Software, Inc.
*Novas* Create FSDB file 'ceb.fsdb'
*Novas* Start dumping the scope(tb.led1), layer(0).
*Novas* End of dumping.
*Novas* Start dumping the scope(tb), layer(1).
*Novas* End of dumping.
*Novas* Start dumping the scope(tb), layer(0).
*Novas* End of dumping.
*Novas* Start dumping the scope(tb), layer(2).
*Novas* End of dumping.
led.a(St0), led.b(StX), led.c(St0),led.d(Pu0), led.e(St0),led.y(Pu1) led.in1.y(Pu1),led.in1.x(Pu0)
led.a(St0), led.b(St0), led.c(St0),led.d(Pu0), led.e(St0),led.y(Pu1) led.in1.y(Pu1),led.in1.x(Pu0)
led.a(St1), led.b(St0), led.c(St1),led.d(Pu1), led.e(St1),led.y(Pu0) led.in1.y(Pu0),led.in1.x(Pu1)
led.a(St1), led.b(St1), led.c(St1),led.d(Pu1), led.e(St1),led.y(Pu0) led.in1.y(Pu0),led.in1.x(Pu1)
led.a(St0), led.b(St1), led.c(St0),led.d(Pu0), led.e(St0),led.y(Pu1) led.in1.y(Pu1),led.in1.x(Pu0)
led.a(St0), led.b(St0), led.c(St0),led.d(Pu0), led.e(St0),led.y(Pu1) led.in1.y(Pu1),led.in1.x(Pu0)
led.a(St1), led.b(St0), led.c(St1),led.d(Pu1), led.e(St1),led.y(Pu0) led.in1.y(Pu0),led.in1.x(Pu1)
led.a(St1), led.b(St1), led.c(St1),led.d(Pu1), led.e(St1),led.y(Pu0) led.in1.y(Pu0),led.in1.x(Pu1)
led.a(St0), led.b(St1), led.c(St0),led.d(Pu0), led.e(St0),led.y(Pu1) led.in1.y(Pu1),led.in1.x(Pu0)
led.a(St0), led.b(St0), led.c(St0),led.d(Pu0), led.e(St0),led.y(Pu1) led.in1.y(Pu1),led.in1.x(Pu0)
led.a(St1), led.b(St0), led.c(St1),led.d(Pu1), led.e(St1),led.y(Pu0) led.in1.y(Pu0),led.in1.x(Pu1)
led.a(St1), led.b(St1), led.c(St1),led.d(Pu1), led.e(St1),led.y(Pu0) led.in1.y(Pu0),led.in1.x(Pu1)
led.a(St0), led.b(St1), led.c(St0),led.d(Pu0), led.e(St0),led.y(Pu1) led.in1.y(Pu1),led.in1.x(Pu0)
led.a(St0), led.b(St0), led.c(St0),led.d(Pu0), led.e(St0),led.y(Pu1) led.in1.y(Pu1),led.in1.x(Pu0)
led.a(St1), led.b(St0), led.c(St1),led.d(Pu1), led.e(St1),led.y(Pu0) led.in1.y(Pu0),led.in1.x(Pu1)
led.a(St1), led.b(St1), led.c(St1),led.d(Pu1), led.e(St1),led.y(Pu0) led.in1.y(Pu0),led.in1.x(Pu1)
led.a(St0), led.b(St1), led.c(St0),led.d(Pu0), led.e(St0),led.y(Pu1) led.in1.y(Pu1),led.in1.x(Pu0)