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