Перейти к содержанию
    

Вопрос по modelsim 6.0с и симуляции чтения файлов из него?

Моделсим 6.0c не понимает функций $fgets,$fscanf и т.д. без подключения доп модуля, т.е. по видимому его компилятор или транслятор не имеет поддержки verilog 2001. Для подключения этих функций необходимо подключить модуль fileio.c к modelsim. Как это сделать ?

Или вообще общий случай : как использовать какие-нибудь функции , описанные где-нибудь в сишном файле, чтобы при симулировании modelsim понимал их. Если кто -нибудь симулировал чтение файлов или просто подключал сишные функции к verilog-у в modelsime , а затем использовал их при симуляции(это очень важно, компилить то он компилит , а симулить не хочет, говорит не понимаю) то подскажите!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

по видимомуего компилятор или транслятор не имеет поддержки verilog 2001

В опциях компилятора она включена?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В modelsime в опциях ничего такого нет. Как я понимаю modelsim версии выше чем 5.5 уже имеет поддержку функций ввода-вывода, об этом гворит еще и следующее HELP-> Technotes-> vlog_2001 , там первой строкой написано что

 

ModelSim supports the following IEEE 1364-2001 features:

 

o New File I/O tasks, command line args $test$plusargs and

$value$plusargs , а на самом деле не понимает при симуляции говорит :

 

Warning: (vsim-PLI-3003) E:/1RAID6_Development/BOOKS_Vegilog/ReadFromFileVerylog/fileio/fileio3.6/compare.v(15): [TOFD] - System task or function '$fopenr' is not defined.

# Region: /compare/file_block

# ** Warning: (vsim-PLI-3003) E:/1RAID6_Development/BOOKS_Vegilog/ReadFromFileVerylog/fileio/fileio3.6/compare.v(21): [TOFD] - System task or function '$fgets' is not defined.

# Region: /compare/file_block

# ** Warning: (vsim-PLI-3003) E:/1RAID6_Development/BOOKS_Vegilog/ReadFromFileVerylog/fileio/fileio3.6/compare.v(24): [TOFD] - System task or function '$feof' is not defined.

# Region: /compare/file_block

# ** Warning: (vsim-PLI-3003) E:/1RAID6_Development/BOOKS_Vegilog/ReadFromFileVerylog/fileio/fileio3.6/compare.v(33): [TOFD] - System task or function '$strobe_compare' is not defined.

# Region: /compare/file_block

# ** Warning: (vsim-PLI-3003) E:/1RAID6_Development/BOOKS_Vegilog/ReadFromFileVerylog/fileio/fileio3.6/compare.v(36): [TOFD] - System task or function '$fcloser' is not defined.

# Region: /compare/file_block

# ** Error: (vsim-PLI-3073) E:/1RAID6_Development/BOOKS_Vegilog/ReadFromFileVerylog/fileio/fileio3.6/compare.v(22): $fgets : Wrong number of arguments.

# Region: /compare/file_block

 

Вот что мне и непонятно?!? Почему он априорно имеет поддежку этих функций работы с файлами, а при сиуляции не понимает их .

текст проги:

 

`define EOF 32'hFFFF_FFFF

`define NULL 0

`define MAX_LINE_LENGTH 1000

module compare;

integer file, r;

reg a, b, expect, clock;

wire out;

reg [8*`MAX_LINE_LENGTH-1:0] line;

parameter cycle = 20;

 

initial

begin : file_block

clock = 0;

 

file = $fopenr("compare.txt");

if (file == `NULL)

disable file_block;

$display(" Time Stim Expect Output");

 

// Skip comments

// r = $fgets(line, `MAX_LINE_LENGTH, file);

// r = $fgets(line, `MAX_LINE_LENGTH, file);

 

while (!$feof(file))

begin

// Wait until rising clock, read stimulus

@(posedge clock)

r = $fscanf(file, " %b %b %b\n", a, b, expect);

 

// Wait just before the end of cycle to compare

#(cycle - 1)

$display("%d %b %b %b %b", $stime, a, b, expect, out);

$strobe_compare(expect, out);

end // while not EOF

 

r = $fcloser(file);

$stop;

end // initial

 

// Clock generator

always #(cycle / 2) clock = !clock;

 

// Circuit under test

and #4 (out, a, b);

 

endmodule // compare

 

Может кто у себя попробует отсимулить эту прогу?

compare.txt

compare.rar

Изменено пользователем Вано

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вано,

а где Вы в 2001 верилоге нашли такие функции:

$fopenr

$fcloser

$strobe_compare

 

Я не копенгаген в IEEE Std 1364-2001, но текстовый поиск по этому документу таких слов не находит :). Да и я как-то обычно использую $fopen() и $fclose().

Вы же сами говорили, что эти функции определены во внешнем PLI-модуле, исходник у Вас есть, нужно его просто скомпилировать и подключить к симулятору. Как - читайте доки к моделсиму, ключевое слово "PLI".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за ответ, сейчас пороюсь в helpe/.

Изменено пользователем Вано

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...