Krys 2 7 ноября, 2014 Опубликовано 7 ноября, 2014 · Жалоба Здравствуйте. Мне нужно в Active-HDL использовать Verilog-корки коргеновские (и соответствующие Verilog-либы) от Xilinx, симулируя VHDL-исходники, в которых эти корки инстантированы. Я попробовал перегенерить корки с указанием Behavioral как Preferred Simulation Model. Симуляция прошла нормально. Но мне посоветовали, что правильно нужно сделать симуляцию для Structural, а не Behavioral. Я перегенерил корки, подсунул в Active-HDL, скомпилил. Вылезли ошибки по команде Initialize simulation, вот лог: asim -advdataflow -L simprims_ver -L uni9000_ver -L unimacro_ver -L unisims_ver -L xilinxcorelib_ver -L cpld_ver -L cpld_ver -L cpld_ver -L simprims_ver -L simprims_ver -L uni9000_ver -L uni9000_ver -L unimacro_ver -L unimacro_ver -L unisims_ver -L unisims_ver -L xilinxcorelib_ver -L xilinxcorelib_ver -PL simprims_ver -PL unimacro_ver -PL unisims_ver -PL xilinxcorelib_ver -PL uni9000_ver -PL cpld_ver -PL cpld_ver -PL cpld_ver -PL simprims_ver -PL simprims_ver -PL uni9000_ver -PL uni9000_ver -PL unimacro_ver -PL unimacro_ver -PL unisims_ver -PL unisims_ver -PL xilinxcorelib_ver -PL xilinxcorelib_ver +access +w_nets +p+/tb_delay axi_stream_fft_core behav_arch # ELBREAD: Elaboration process. # ELBREAD: Elaboration time 0.2 [s]. # asim: Stack memory: 256MB # asim: Retval memory: 256MB # KERNEL: Main thread initiated. # KERNEL: Kernel process initialization phase. # KERNEL: Time resolution set to 1ps. # ELAB2: Elaboration final pass... # KERNEL: PLI/VHPI kernel's engine initialization done. # PLI: Loading library 'C:\Program Files (x86)\Active-HDL 9.3\bin\systf.dll' # ELAB2: Create instances ... # ELAB2: Fatal Error: ELAB2_0036 Unresolved hierarchical reference to "glbl.GSR" from module "axi_stream_fft_core.x1_fifo.\U0/xst_fifo_generator/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.gl0.rd/gras.rsts/ram_empty_i \" (module not found). # ELAB2: Last instance before error: /axi_stream_fft_core/x1_fifo/\U0/xst_fifo_generator/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.gl0.rd/gras.rsts/ram_empty_i \ # KERNEL: Error: E8005 : Kernel process initialization failed. # Error: Fatal error occurred during simulation initialization. Вот содержимое моего проекта: Вот либы указанные в настройках симуляции проекта: Тут видно не всё, но видно, что есть необходимые либы, где есть glbl.v, на которые оно ругается. Вот исходник коргеновского фифо, на которое ругается ошибка: fft_core_fifo_33_66.v Тут в строчке 318 как раз инстантируется примитив, указанный в ошибке. Открываю этот примитив по адресу C:\Program Files (x86)\Active-HDL 9.3\vlib\xilinx_ise\verilog\unisims_ver\src\FD.v, вот его исходник: // $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/unisims/FD.v,v 1.13 2006/02/13 22:07:02 yanx Exp $ /////////////////////////////////////////////////////////////////////////////// // Copyright © 1995/2004 Xilinx, Inc. // All Right Reserved. /////////////////////////////////////////////////////////////////////////////// // ____ ____ // / /\/ / // /___/ \ / Vendor : Xilinx // \ \ \/ Version : 10.1 // \ \ Description : Xilinx Functional Simulation Library Component // / / D Flip-Flop // /___/ /\ Filename : FD.v // \ \ / \ Timestamp : Thu Mar 25 16:42:16 PST 2004 // \___\/\___\ // // Revision: // 03/23/04 - Initial version. // 02/04/05 - Rev 0.0.1 Remove input/output bufs; Seperate GSR from clock block. // 08/09/05 - Add GSR to main block (CR 215196). // 10/20/05 - Add set & reset check to main block. (CR219794) // 2/07/06 - Remove set & reset from main block and add specify block (CR225119) // 2/10/06 - Change Q from reg to net. (CR ) // End Revision `timescale 1 ps / 1 ps module FD (Q, C, D); parameter INIT = 1'b0; output Q; input C, D; wire Q; reg q_out; tri0 GSR = glbl.GSR; initial q_out = INIT; always @(GSR) if (GSR) assign q_out = INIT; else deassign q_out; always @(posedge C) q_out <= D; assign Q = q_out; specify (posedge C => (Q +: D)) = (100, 100); endspecify endmodule Тут в 38 строчке как раз идёт ссылка на модуль glbl, который коргеновском исходнике фифошки уже объявлен. Но ошибка имеет место. Поэтому я решил явно добавить glbl.v в проект, что и видно в дереве. Модуль у меня по такому пути: c:\Program Files (x86)\Active-HDL 9.3\vlib\xilinx_ise\verilog\unisims_ver\src\glbl.v Поскольку модуля glbl теперь стало 2, то при компиляции возникла ошибка, что один из модулей уже объявлен, поэтому пришлось доработать добавленный модуль в начале строчками условной компиляции по аналогии с тем, как это сделано в одноимённом модуле в исходнике корки фифо. Вот его доработанный исходник: // $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.15 2011/08/25 22:54:30 fphillip Exp $ `ifndef GLBL `define GLBL `timescale 1 ps / 1 ps module glbl (); parameter ROC_WIDTH = 100000; parameter TOC_WIDTH = 0; //-------- STARTUP Globals -------------- wire GSR; wire GTS; wire GWE; wire PRLD; tri1 p_up_tmp; tri (weak1, strong0) PLL_LOCKG = p_up_tmp; wire PROGB_GLBL; wire CCLKO_GLBL; reg GSR_int; reg GTS_int; reg PRLD_int; //-------- JTAG Globals -------------- wire JTAG_TDO_GLBL; wire JTAG_TCK_GLBL; wire JTAG_TDI_GLBL; wire JTAG_TMS_GLBL; wire JTAG_TRST_GLBL; reg JTAG_CAPTURE_GLBL; reg JTAG_RESET_GLBL; reg JTAG_SHIFT_GLBL; reg JTAG_UPDATE_GLBL; reg JTAG_RUNTEST_GLBL; reg JTAG_SEL1_GLBL = 0; reg JTAG_SEL2_GLBL = 0 ; reg JTAG_SEL3_GLBL = 0; reg JTAG_SEL4_GLBL = 0; reg JTAG_USER_TDO1_GLBL = 1'bz; reg JTAG_USER_TDO2_GLBL = 1'bz; reg JTAG_USER_TDO3_GLBL = 1'bz; reg JTAG_USER_TDO4_GLBL = 1'bz; assign (weak1, weak0) GSR = GSR_int; assign (weak1, weak0) GTS = GTS_int; assign (weak1, weak0) PRLD = PRLD_int; initial begin GSR_int = 1'b1; PRLD_int = 1'b1; #(ROC_WIDTH) GSR_int = 1'b0; PRLD_int = 1'b0; end initial begin GTS_int = 1'b1; #(TOC_WIDTH) GTS_int = 1'b0; end endmodule `endif Но это ничего не помогло. Ошибка та же. Помогите, пожалуйста, избавиться от ошибки и запустить симуляцию. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 7 ноября, 2014 Опубликовано 7 ноября, 2014 · Жалоба Вариант 1. Вставить модуль glbl тупо в топ тестбенча. Вариант 2. Запустить его в симулятор параллельно, типа asim <bla bla> tb_top glbl Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 7 ноября, 2014 Опубликовано 7 ноября, 2014 · Жалоба Здравствуйте. Мне нужно в Active-HDL использовать Verilog-корки коргеновские (и соответствующие Verilog-либы) от Xilinx, симулируя VHDL-исходники, в которых эти корки инстантированы. Я попробовал перегенерить корки с указанием Behavioral как Preferred Simulation Model. Помогите, пожалуйста, избавиться от ошибки и запустить симуляцию. Вот в этом месте, в glb Там есть параметр, в котором дается задержка по времени для устаканивания сбросов, загрузки и пр. То-есть большая задержка по времени, которая для симуляции совсем не нужна. И чтобы не ждать симуляцию и не кататься по экрану, я в том файле, который использую только для симуляции эту задержку значительно сокращаю... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krys 2 7 ноября, 2014 Опубликовано 7 ноября, 2014 · Жалоба Вариант 1. Вставить модуль glbl тупо в топ тестбенча. Вариант 2. Запустить его в симулятор параллельно, типа asim <bla bla> tb_top glbl Спасибо, чото сразу не догадался, что модуль объявлен то объявлен, но нигде не инстантируется ни разу... Помогло. Вот в этом месте, в glb Там есть параметр, в котором дается задержка по времени для устаканивания сбросов, загрузки и пр. То-есть большая задержка по времени, которая для симуляции совсем не нужна. И чтобы не ждать симуляцию и не кататься по экрану, я в том файле, который использую только для симуляции эту задержку значительно сокращаю... Там задержка 100 нс, думаю это ни о чём... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sallador 0 7 ноября, 2014 Опубликовано 7 ноября, 2014 · Жалоба Попробуйте в Design setting -> Simulations -> Additional options Вбить: glbl -relax Забыл об этом уточнении в предыдущей теме =) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krys 2 10 ноября, 2014 Опубликовано 10 ноября, 2014 · Жалоба Попробуйте в Design setting -> Simulations -> Additional options Вбить: glbl -relaxНу это я так понимаю относится к тому же, что и:Вариант 2. Запустить его в симулятор параллельно, типа asim <bla bla> tb_top glbl Ещё можно то же самое сделать через Design - Settings - General - Top-level, и там мышкой с зажатым Ctrl выбрать сразу несколько топовых модулей. Минус данного решения в том, что по команде Delete Simulation Data эта настройка так же удаляется... Хотя настройка одинарного топового модуля не забывается. Бага наверное... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
druzhin 7 21 ноября, 2014 Опубликовано 21 ноября, 2014 · Жалоба Попробуйте в Design setting -> Simulations -> Additional options Вбить: vlog -quiet <путь_до_глбл>/glbl.v vsim -c -t ps -novopt -voptargs="+acc" -L xilinxcorelib_ver -L unisims_ver -L simprims_ver -voptargs=+acc work.<module_name_вашего_тестбенча> glbl Например, у меня так: vlog -quiet C:/FPGA/glbl.v vsim -c -t ps -novopt -voptargs="+acc" -L xilinxcorelib_ver -L unisims_ver -L simprims_ver -voptargs=+acc work.TB_user_logic glbl Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krys 2 24 ноября, 2014 Опубликовано 24 ноября, 2014 · Жалоба А не подскажете, что такие тайные строки делают? )) В принципе, тут уже кучу способов привели, осталось выбрать самый простой Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться