module top;
system_clk #400 clk1(a);
system_clk #200 clk2(b);
system_clk #100 clk3(c);
system_clk #50 clk4(d);
number z1(e,a,b,c,d);
endmodule
module number(e,a,b,c,d);
input a,b,c,d;
output e;
wire la,lb,lc,ld,w1,w2,w3,w4,w5;
not(la,a);
not(lb,b);
not(lc,c);
not(ld,d);
and(w1,a,lb,c,d);
and(w2,a,b,c,ld);
and(w3,la,lb,ld);
and(w4,lb,lc,ld);
and(w5,la,b,lc);
or(e,w1,w2,w3,w4,w5);
endmodule
module system_clock (clk);
parameter PERIOD=100;
output clk; reg clk; initial clk=0;
always
begin
#(PERIOD/2)clk=~clk;
#(PERIOD-PERIOD/2)clk=~clk;
end always@(posedge clk)
if($time>1000)#(PERIOD-1)$stop;
endmodule

