아래의 프로그램은 네 개의 프로세스를 시작합니다. 작업은 먼저 마지막 프로세스가 실행되기를 기다린 다음 첫 번째 프로세스가 종료 될 때까지 대기합니다. 이 시점에서 부모 프로세스는 아직 완료되지 않은 모든 포크 프로세스를 강제 종료합니다.SystemVerilog 프로세스가 종료되지 않는 이유는 무엇입니까?
program automatic test;
initial begin
do_n_ways;
end
task do_n_ways;
process job[1:4];
for(int i=1;i<=4;i++)
fork
automatic int j = i;
job[j] = process::self();
$display("process %d starting...",j);
if(j==2) begin
#100 $display("delay 2ns");
end
join_none
for(int j = 1;j<=4;j++) begin //wait for all process starting
wait(job[j] != null);
end
job[1].await(); //wait for first process finish
for(int j=1;j<=4;j++) begin
if(job[j].status != process::FINISHED) begin
job[j].kill();
$display("process %d killed...",j);
end
end
endtask
endprogram
그것은 내가 결코 보지 않을 때문에 그 과정 # 2가 살해 결코 극복 나타납니다 "과정이 살해 ..."왜이 과정을 계속 실행합니까?
오, 세상에, 미안, 내가 틀렸다 !!! 정말 고마워!!! – crazylk
안녕하세요, 귀하의 프로그램을 시도하지만 "지연 2ns", "프로세스 2 죽인"메시지가 표시되지 않습니다, 그리고 VCS.you는 www.edaplaygroud에서 modelsim을 사용해야합니다. 만약 내가 (j == 2) 추가 .. . 그 밖의. .. 그래서 그것은 옳다! – crazylk