a123-flex 0 24 августа, 2007 Опубликовано 24 августа, 2007 · Жалоба Снова нужна помощь. не могу собрать проект для симуляции в алдеке. модуль, который я пытаюсь установить как 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 и верилог. Помогите плз., кто может. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Postoroniy_V 0 24 августа, 2007 Опубликовано 24 августа, 2007 · Жалоба Снова нужна помощь. не могу собрать проект для симуляции в алдеке. модуль, который я пытаюсь установить как 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 Надеюсь поможет :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
a123-flex 0 27 августа, 2007 Опубликовано 27 августа, 2007 (изменено) · Жалоба неа... :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 может быть кто-нибудь покажет шаманский бубен для данного случая ? Изменено 27 августа, 2007 пользователем a123-flex Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Postoroniy_V 0 28 августа, 2007 Опубликовано 28 августа, 2007 · Жалоба неа... :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 нужно сделать не доступным для компиляции в ахдл Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
a123-flex 0 28 августа, 2007 Опубликовано 28 августа, 2007 (изменено) · Жалоба извините, я на verilog писать только учус... а разве верилог хидерные файлы поддерживает :07: ? да уж кстати гулять так гулять... может есть и механизм управления областями видимости тогда переменных и функций ? может просто нужно published написать ? Изменено 28 августа, 2007 пользователем a123-flex Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Postoroniy_V 0 28 августа, 2007 Опубликовано 28 августа, 2007 · Жалоба извините, я на verilog писать только учус... а разве верилог хидерные файлы поддерживает :07: ? да уж кстати гулять так гулять... может есть и механизм управления областями видимости тогда переменных и функций ? может просто нужно published написать ? 1)Идея в том чтобы юзать функции которые вы планируете использовать скажем в модуле приема и в модуле передачи - одни и теже функции подсчета црц. тоесть вообщем то можно инклудить любой файл :) . главное чтобы синтаксис верилога соблюдался 2)а механизма такого нету. ...в смысле это несинтезируемые конструкции, а для симуляции пожалуйста правда я сам не юзал скажем такого crc<= externalmodulename.FUNCTIONfromexternal(crc,data); или localvariable<= externalmodule.VARIABLEfromexternal; имхо нужно стандарт читать. да не понятно зачем эти ЧРЕЗЗАБОРНЫЕНОГОЧЕСАНИЯ :07: но вот такое точно работает - @(posedge externalUNITUNDERTEST.internalwiresignal) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 29 августа, 2007 Опубликовано 29 августа, 2007 · Жалоба 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 стиле. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
a123-flex 0 29 августа, 2007 Опубликовано 29 августа, 2007 · Жалоба Дело в том, что мне идея организации библиотеки стандартных пользовательских функций не кажется ЧРЕЗЗАБОРНЫМНОГОЧЕСАНИЕМ :) . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Postoroniy_V 0 29 августа, 2007 Опубликовано 29 августа, 2007 · Жалоба Дело в том, что мне идея организации библиотеки стандартных пользовательских функций не кажется ЧРЕЗЗАБОРНЫМНОГОЧЕСАНИЕМ :) . о как! :) а мужики то не знают что Вы хотели в итоге то! :( Я так делаю библиотеку 1) функции в один большой файл(сверху уже описал как юзать) 2) модули тоже но в другой большой файл вот и всё :) всё это синтезируемо! ну или для симуляции как написал Вам уже уважаемый des00 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
a123-flex 0 29 августа, 2007 Опубликовано 29 августа, 2007 (изменено) · Жалоба большой фэнкс :beer: за поддержку всем!!! :yeah: 2des00 а если не секрет что значит волшебная фраза "GfpPkg GfpPkg ();" ? действительно, с ней симуляция идет на ура.. Изменено 29 августа, 2007 пользователем a123-flex Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 3 сентября, 2007 Опубликовано 3 сентября, 2007 · Жалоба а если не секрет что значит волшебная фраза "GfpPkg GfpPkg ();" ? а что секретного то ? вставка модуля у которого нет портов, или от которого не нужны порты. Рекомендую писать на одном ХДЛ, но читать оба. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
a123-flex 0 6 сентября, 2007 Опубликовано 6 сентября, 2007 (изменено) · Жалоба а что секретного то ? вставка модуля у которого нет портов, или от которого не нужны порты. Рекомендую писать на одном ХДЛ, но читать оба. Буду. Обещаю. :a14: Изменено 6 сентября, 2007 пользователем a123-flex Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
a123-flex 0 18 января, 2008 Опубликовано 18 января, 2008 · Жалоба Мда... благодарствую всем за помощь, но вот наконец-то мегадевайс дописан, пора в плисину заливаться. И Айс (точнее Синплифай) опять отказывается понимать че я от него хочу. А именно:есть модуль с библиотекой 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: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vladv 0 18 января, 2008 Опубликовано 18 января, 2008 (изменено) · Жалоба Переместить function [15:0] nextCRC16_D24 из module FarBPackage в module fifo_anal_rec_my вместо инстанциации FarBPackage tObj. Некоторые (все?) синтезаторы не любят, когда вызывается функция из другого модуля - слишком сложная для них конструкция. Изменено 18 января, 2008 пользователем vladv Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Postoroniy_V 0 20 января, 2008 Опубликовано 20 января, 2008 · Жалоба Мда... благодарствую всем за помощь, но вот наконец-то мегадевайс дописан, пора в плисину заливаться. И Айс (точнее Синплифай) опять отказывается понимать че я от него хочу. А именно:есть модуль с библиотекой 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)) з.ы. Скажите а чем вам не понравилось идея подключать (инклудить) функции? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться