задание в verilog - PullRequest
       25

задание в verilog

1 голос
/ 09 апреля 2009

Я пытаюсь написать задачу, которая дает переменным paddr различные значения:

module paddr1 ;
task paddr1;
input [10:0]paddr;
input clock;

 @(posedge clock)
begin
paddr=10
#100; 
paddr=20; 
#100; 
paddr=30; 
#100;  
paddr=40;
#100;   
paddr=50;
#100;   
paddr=60;
#100;  
paddr=70;
#100; 
paddr=80;
#100;

end
endtask
endmodule

Я попытался вызвать эту задачу с тестового стенда и написал: paddr1 (паддр, часы);

проходит компиляцию Но когда я пытаюсь запустить симуляцию, я получаю эрор массаж: Неразрешенная ссылка на «paddr1». Спасибо за ваш ответ задача находится в другом файле, а затем на испытательном стенде

Спасибо Янов

Ответы [ 2 ]

5 голосов
/ 18 апреля 2009

У вас есть задача внутри модуля. Итак, вы создали экземпляр модуля в тестовом стенде? Если вы это сделали, то вам нужно заглянуть внутрь модуля, чтобы вызвать задачу:

module tb();

  paddr1 U0; // instantiate module with the task in it...

  initial begin
     U0.paddr1(paddr,clock);
  end

endmodule

У тебя гораздо более серьезные проблемы. В verilog аргументы передаются задачам по значению. Это означает, что значение 'clock' будет фиксированным в течение всего времени обращения к задаче. Ваша задача никогда не найдет подходящих часов и будет ждать вечно. Кроме того, вы назначаете вход для задачи, что бесполезно.

0 голосов
/ 10 ноября 2009

Полагаю, вам нужен блок initial вместо задачи. Подключите paddr и часы как порты к модулю, затем внутри блока initial begin вы изменяете paddr.

Конечно, вам все равно нужно будет где-нибудь создать экземпляр paddr1.

...