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

Снова вопросы начинающего... VErilog

Снова нужна помощь.

 

не могу собрать проект для симуляции в алдеке. модуль, который я пытаюсь установить как top-level, компилится без ошибок, но при попытке начать его моделировать алдек пишет:

 

ELBREAD: Error: No design unit found (searched libraries: sdr_model xilinxcorelib sdr_model virtex2, name chan_rec).

# ELBREAD: Error: Elaboration process completed with errors.

# Design: Error: Elaboration failed

 

Проект смешанный, содержит и VHDL и верилог.

 

Помогите плз., кто может.

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


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

Снова нужна помощь.

 

не могу собрать проект для симуляции в алдеке. модуль, который я пытаюсь установить как top-level, компилится без ошибок, но при попытке начать его моделировать алдек пишет:

 

ELBREAD: Error: No design unit found (searched libraries: sdr_model xilinxcorelib sdr_model virtex2, name chan_rec).

# ELBREAD: Error: Elaboration process completed with errors.

# Design: Error: Elaboration failed

 

Проект смешанный, содержит и VHDL и верилог.

 

Помогите плз., кто может.

подключите библиотеки Design settings->compilation->verilog ---------- Verilog libaries

Надеюсь поможет :)

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


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

неа... :05: етот шаманский секрет я уже пробовал...

 

решилась кстати проблема путем шаманской комбинации Workspace/Delete simulation data.

 

но зато появилась другая:

 

в модуле содержится ссылка на функцию CRC16_D16.

BodyTmpCrc_p <= CRC16_D16(MainTrFifoDataOut_p[31:16],BodyTmpCrc_p);

, объявленную в модуле CRC16_D16.

Модуль подключен к проекту и успешно скомпилирован, путь к нему прописан в настройках проекта.

 

Компиляция модуля проходит успешно, а при попытке моделирования

# ELAB2: Fatal Error: ELAB2_0036 Unresolved hierarchical reference to "CRC16_D16" from module

"TranseivChan" (module not found).

 

 

// Info: [email protected]

// http://www.easics.com

module CRC16_D16;

// polynomial: (0 5 12 16)

// data width: 16

// convention: the first serial data bit is D[15]

function [15:0] nextCRC16_D16;

input [15:0] Data;

input [15:0] CRC;

reg [15:0] D;

reg [15:0] C;

reg [15:0] NewCRC;

begin

D = Data;

C = CRC;

NewCRC[0] = D[12] ^ D[11] ^ D[8] ^ D[4] ^ D[0] ^ C[0] ^ C[4] ^

C[8] ^ C[11] ^ C[12];

NewCRC[1] = D[13] ^ D[12] ^ D[9] ^ D[5] ^ D[1] ^ C[1] ^ C[5] ^

C[9] ^ C[12] ^ C[13];

NewCRC[2] = D[14] ^ D[13] ^ D[10] ^ D[6] ^ D[2] ^ C[2] ^ C[6] ^

C[10] ^ C[13] ^ C[14];

NewCRC[3] = D[15] ^ D[14] ^ D[11] ^ D[7] ^ D[3] ^ C[3] ^ C[7] ^

C[11] ^ C[14] ^ C[15];

NewCRC[4] = D[15] ^ D[12] ^ D[8] ^ D[4] ^ C[4] ^ C[8] ^ C[12] ^

C[15];

NewCRC[5] = D[13] ^ D[12] ^ D[11] ^ D[9] ^ D[8] ^ D[5] ^ D[4] ^

D[0] ^ C[0] ^ C[4] ^ C[5] ^ C[8] ^ C[9] ^ C[11] ^ C[12] ^

C[13];

NewCRC[6] = D[14] ^ D[13] ^ D[12] ^ D[10] ^ D[9] ^ D[6] ^ D[5] ^

D[1] ^ C[1] ^ C[5] ^ C[6] ^ C[9] ^ C[10] ^ C[12] ^

C[13] ^ C[14];

NewCRC[7] = D[15] ^ D[14] ^ D[13] ^ D[11] ^ D[10] ^ D[7] ^ D[6] ^

D[2] ^ C[2] ^ C[6] ^ C[7] ^ C[10] ^ C[11] ^ C[13] ^

C[14] ^ C[15];

NewCRC[8] = D[15] ^ D[14] ^ D[12] ^ D[11] ^ D[8] ^ D[7] ^ D[3] ^

C[3] ^ C[7] ^ C[8] ^ C[11] ^ C[12] ^ C[14] ^ C[15];

NewCRC[9] = D[15] ^ D[13] ^ D[12] ^ D[9] ^ D[8] ^ D[4] ^ C[4] ^

C[8] ^ C[9] ^ C[12] ^ C[13] ^ C[15];

NewCRC[10] = D[14] ^ D[13] ^ D[10] ^ D[9] ^ D[5] ^ C[5] ^ C[9] ^

C[10] ^ C[13] ^ C[14];

NewCRC[11] = D[15] ^ D[14] ^ D[11] ^ D[10] ^ D[6] ^ C[6] ^ C[10] ^

C[11] ^ C[14] ^ C[15];

NewCRC[12] = D[15] ^ D[8] ^ D[7] ^ D[4] ^ D[0] ^ C[0] ^ C[4] ^ C[7] ^

C[8] ^ C[15];

NewCRC[13] = D[9] ^ D[8] ^ D[5] ^ D[1] ^ C[1] ^ C[5] ^ C[8] ^ C[9];

NewCRC[14] = D[10] ^ D[9] ^ D[6] ^ D[2] ^ C[2] ^ C[6] ^ C[9] ^ C[10];

NewCRC[15] = D[11] ^ D[10] ^ D[7] ^ D[3] ^ C[3] ^ C[7] ^ C[10] ^

C[11];

nextCRC16_D16 = NewCRC;

end

endfunction

endmodule

 

 

может быть кто-нибудь покажет шаманский бубен для данного случая ?

Изменено пользователем a123-flex

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


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

неа... :05: етот шаманский секрет я уже пробовал...

 

решилась кстати проблема путем шаманской комбинации Workspace/Delete simulation data.

 

но зато появилась другая:

 

в модуле содержится ссылка на функцию CRC16_D16.

BodyTmpCrc_p <= CRC16_D16(MainTrFifoDataOut_p[31:16],BodyTmpCrc_p);

, объявленную в модуле CRC16_D16.

Модуль подключен к проекту и успешно скомпилирован, путь к нему прописан в настройках проекта.

.............

может быть кто-нибудь покажет шаманский бубен для данного случая ?

фигасе! ну Вы и маладец! :07:

обращаетесь к функции которая внутри модуля! класс!

сделайте тогда уж (что проще кстати) - подключите только функцию и все

типа так 'include "path\...\path\xxxx\CRC16_D16.h" во всех модулях где планируете использовать вычисление црц

а из модуля CRC16_D16 нужно все выкинить кроме определения функции

и сам файл CRC16_D16.h нужно сделать не доступным для компиляции в ахдл

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


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

извините, я на verilog писать только учус... а разве верилог хидерные файлы поддерживает :07: ?

да уж кстати гулять так гулять... может есть и механизм управления областями видимости тогда переменных и функций ?

 

может просто нужно published написать ?

Изменено пользователем a123-flex

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


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

извините, я на verilog писать только учус... а разве верилог хидерные файлы поддерживает :07: ?

да уж кстати гулять так гулять... может есть и механизм управления областями видимости тогда переменных и функций ?

 

может просто нужно published написать ?

1)Идея в том чтобы юзать функции которые вы планируете использовать скажем в модуле приема и в модуле передачи - одни и теже функции подсчета црц. тоесть вообщем то можно инклудить любой файл :) . главное чтобы синтаксис верилога соблюдался

 

2)а механизма такого нету. ...в смысле это несинтезируемые конструкции, а для симуляции пожалуйста

правда я сам не юзал скажем такого

 

crc<= externalmodulename.FUNCTIONfromexternal(crc,data);

или

localvariable<= externalmodule.VARIABLEfromexternal;

имхо нужно стандарт читать.

да не понятно зачем эти ЧРЕЗЗАБОРНЫЕНОГОЧЕСАНИЯ :07:

но вот такое точно работает -

@(posedge externalUNITUNDERTEST.internalwiresignal)

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


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

crc<= externalmodulename.FUNCTIONfromexternal(crc,data);

или

localvariable<= externalmodule.VARIABLEfromexternal;

имхо нужно стандарт читать.

да не понятно зачем эти ЧРЕЗЗАБОРНЫЕНОГОЧЕСАНИЯ :07:

 

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

 

GfpPkg GfpPkg ();  //"class" GfpPkg 
....
task automatic Work;
............
    crc16 = GfpPkg.Crc16(0,      length[15:8]);
    crc16 = GfpPkg.Crc16(crc16,  length[ 7:0]);
............
endtask

 

и само описание "класса"

module GfpPkg; 
function bit [15:0] Crc16(input bit [15:0] crc, input bit [7:0] data);
..............
endfunction
endmodule

 

 

Можно было это сделать с помошью настоящих классов SV, но времени разбираться не было, сделал в PV стиле.

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


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

Дело в том, что мне идея организации библиотеки стандартных пользовательских функций не кажется ЧРЕЗЗАБОРНЫМНОГОЧЕСАНИЕМ :) .

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


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

Дело в том, что мне идея организации библиотеки стандартных пользовательских функций не кажется ЧРЕЗЗАБОРНЫМНОГОЧЕСАНИЕМ :) .

о как! :) а мужики то не знают что Вы хотели в итоге то! :(

Я так делаю библиотеку

1) функции в один большой файл(сверху уже описал как юзать)

2) модули тоже но в другой большой файл

вот и всё :)

всё это синтезируемо!

ну или для симуляции как написал Вам уже уважаемый des00

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


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

большой фэнкс :beer: за поддержку всем!!! :yeah:

 

2des00

а если не секрет что значит волшебная фраза "GfpPkg GfpPkg ();" ?

 

действительно, с ней симуляция идет на ура..

Изменено пользователем a123-flex

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


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

а если не секрет что значит волшебная фраза "GfpPkg GfpPkg ();" ?

 

а что секретного то ? вставка модуля у которого нет портов, или от которого не нужны порты.

Рекомендую писать на одном ХДЛ, но читать оба.

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


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

а что секретного то ? вставка модуля у которого нет портов, или от которого не нужны порты.

Рекомендую писать на одном ХДЛ, но читать оба.

 

Буду. Обещаю. :a14:

Изменено пользователем a123-flex

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


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

Мда... благодарствую всем за помощь, но вот наконец-то мегадевайс дописан, пора в плисину заливаться. И Айс (точнее Синплифай) опять отказывается понимать че я от него хочу. А именно:есть модуль с библиотекой FBPackage.v

 

`ifdef _VCP

`else

`define library

`endif

 

`timescale 1ps / 1ps

 

module FarBPackage();

 

function [15:0] nextCRC16_D24;

input [23:0] Data;

input [15:0] CRC;

reg [23:0] D;

reg [15:0] C;

reg [15:0] NewCRC;

begin

D = Data;

C = CRC;

NewCRC[0] = D[22] ^ D[20] ^ D[19] ^ D[12] ^ D[11] ^ D[8] ^ D[4] ^ D[0] ^ C[0] ^ C[3] ^ C[4] ^ C[11] ^ C[12] ^ C[14];

NewCRC[1] = D[23] ^ D[21] ^ D[20] ^ D[13] ^ D[12] ^ D[9] ^ D[5] ^ D[1] ^ C[1] ^ C[4] ^ C[5] ^ C[12] ^ C[13] ^ C[15];

NewCRC[2] = D[22] ^ D[21] ^ D[14] ^ D[13] ^ D[10] ^ D[6] ^ D[2] ^ C[2] ^ C[5] ^ C[6] ^ C[13] ^ C[14];

NewCRC[3] = D[23] ^ D[22] ^ D[15] ^ D[14] ^ D[11] ^ D[7] ^ D[3] ^ C[3] ^ C[6] ^ C[7] ^ C[14] ^ C[15];

NewCRC[4] = D[23] ^ D[16] ^ D[15] ^ D[12] ^ D[8] ^ D[4] ^ C[0] ^ C[4] ^ C[7] ^ C[8] ^ C[15];

NewCRC[5] = D[22] ^ D[20] ^ D[19] ^ D[17] ^ D[16] ^ D[13] ^ D[12] ^ D[11] ^ D[9] ^ D[8] ^ D[5] ^ D[4] ^ D[0] ^ C[0] ^

C[1] ^ C[3] ^ C[4] ^ C[5] ^ C[8] ^ C[9] ^ C[11] ^ C[12] ^ C[14];

NewCRC[6] = D[23] ^ D[21] ^ D[20] ^ D[18] ^ D[17] ^ D[14] ^ D[13] ^ D[12] ^ D[10] ^ D[9] ^ D[6] ^ D[5] ^ D[1] ^ C[1] ^

C[2] ^ C[4] ^ C[5] ^ C[6] ^ C[9] ^ C[10] ^ C[12] ^ C[13] ^ C[15];

NewCRC[7] = D[22] ^ D[21] ^ D[19] ^ D[18] ^ D[15] ^ D[14] ^ D[13] ^ D[11] ^ D[10] ^ D[7] ^ D[6] ^ D[2] ^ C[2] ^ C[3] ^

C[5] ^ C[6] ^ C[7] ^ C[10] ^ C[11] ^ C[13] ^ C[14];

NewCRC[8] = D[23] ^ D[22] ^ D[20] ^ D[19] ^ D[16] ^ D[15] ^ D[14] ^ D[12] ^ D[11] ^ D[8] ^ D[7] ^ D[3] ^ C[0] ^ C[3] ^

C[4] ^ C[6] ^ C[7] ^ C[8] ^ C[11] ^ C[12] ^ C[14] ^ C[15] ;

NewCRC[9] = D[23] ^ D[21] ^ D[20] ^ D[17] ^ D[16] ^ D[15] ^ D[13] ^ D[12] ^ D[9] ^ D[8] ^ D[4] ^ C[0] ^ C[1] ^ C[4] ^

C[5] ^ C[7] ^ C[8] ^ C[9] ^ C[12] ^ C[13] ^ C[15];

NewCRC[10] = D[22] ^ D[21] ^ D[18] ^ D[17] ^ D[16] ^ D[14] ^ D[13] ^ D[10] ^ D[9] ^ D[5] ^ C[1] ^ C[2] ^ C[5] ^ C[6] ^

C[8] ^ C[9] ^ C[10] ^ C[13] ^ C[14];

NewCRC[11] = D[23] ^ D[22] ^ D[19] ^ D[18] ^ D[17] ^ D[15] ^ D[14] ^ D[11] ^ D[10] ^ D[6] ^ C[2] ^ C[3] ^ C[6] ^ C[7] ^

C[9] ^ C[10] ^ C[11] ^ C[14] ^ C[15];

NewCRC[12] = D[23] ^ D[22] ^ D[18] ^ D[16] ^ D[15] ^ D[8] ^ D[7] ^ D[4] ^ D[0] ^ C[0] ^ C[7] ^ C[8] ^ C[10] ^ C[14] ^

C[15];

NewCRC[13] = D[23] ^ D[19] ^ D[17] ^ D[16] ^ D[9] ^ D[8] ^ D[5] ^ D[1] ^ C[0] ^ C[1] ^ C[8] ^ C[9] ^ C[11] ^ C[15];

NewCRC[14] = D[20] ^ D[18] ^ D[17] ^ D[10] ^ D[9] ^ D[6] ^ D[2] ^ C[1] ^ C[2] ^ C[9] ^ C[10] ^ C[12];

NewCRC[15] = D[21] ^ D[19] ^ D[18] ^ D[11] ^ D[10] ^ D[7] ^ D[3] ^ C[2] ^ C[3] ^ C[10] ^ C[11] ^ C[13];

nextCRC16_D24 = NewCRC;

end

endfunction

endmodule

 

Далее есть еще один модуль, в котором я пытаюсь обратиться к функции первого:

 

module fifo_anal_rec_my(

rst,

clk,

din,

rd_en,

wr_en,

data_count,

dout,

empty,

full,

HeadErrorCnt,

BodyErrorCnt

);

 

FarBPackage tObj();

...................................

always @(posedge clk)

if (rst == 1'b1) begin

..................................

end

else begin

..................................

if ((din == FarBPackage.nextCRC16_D24({FifoMemory[WrPntr_p-1],din[15:8]},0))

..................................

 

синплифай говорит

 

@E: CG100 :"C:\My\My_work\Almaz\HDL\FAR_BOS\SDR\SDR_Model_FPGA\fifo_anal_rec_my.v":90:40:90:50|Reference to unknown variable FarBPackage

 

И ЧЕ ТЕПЕРЬ ДЕЛАТЬ ? :07:

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


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

Переместить function [15:0] nextCRC16_D24 из module FarBPackage в module fifo_anal_rec_my вместо инстанциации FarBPackage tObj. Некоторые (все?) синтезаторы не любят, когда вызывается функция из другого модуля - слишком сложная для них конструкция.

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

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


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

Мда... благодарствую всем за помощь, но вот наконец-то мегадевайс дописан, пора в плисину заливаться. И Айс (точнее Синплифай) опять отказывается понимать че я от него хочу. А именно:есть модуль с библиотекой FBPackage.v

 

 

 

FarBPackage tObj();

...................................

always @(posedge clk)

if (rst == 1'b1) begin

..................................

end

else begin

..................................

if ((din == FarBPackage.nextCRC16_D24({FifoMemory[WrPntr_p-1],din[15:8]},0))

..................................

 

синплифай говорит

 

@E: CG100 :"C:\My\My_work\Almaz\HDL\FAR_BOS\SDR\SDR_Model_FPGA\fifo_anal_rec_my.v":90:40:90:50|Reference to unknown variable FarBPackage

 

И ЧЕ ТЕПЕРЬ ДЕЛАТЬ ? :07:

ничего :)

написать вместо

if ((din == FarBPackage.nextCRC16_D24({FifoMemory[WrPntr_p-1],din[15:8]},0))

вот это

if ((din == tObj.nextCRC16_D24({FifoMemory[WrPntr_p-1],din[15:8]},0))

 

з.ы. Скажите а чем вам не понравилось идея подключать (инклудить) функции?

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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