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

проблема с модулем glbl.v и коргеновским фифо от Xilinx в Active-HDL

Здравствуйте. Мне нужно в 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.

 

Вот содержимое моего проекта:

post-13271-1415350895_thumb.png

 

Вот либы указанные в настройках симуляции проекта:

post-13271-1415350910_thumb.png

Тут видно не всё, но видно, что есть необходимые либы, где есть 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

Но это ничего не помогло. Ошибка та же.

 

Помогите, пожалуйста, избавиться от ошибки и запустить симуляцию.

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


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

Вариант 1. Вставить модуль glbl тупо в топ тестбенча.

Вариант 2. Запустить его в симулятор параллельно, типа asim <bla bla> tb_top glbl

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


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

Здравствуйте. Мне нужно в Active-HDL использовать Verilog-корки коргеновские (и соответствующие Verilog-либы) от Xilinx, симулируя VHDL-исходники, в которых эти корки инстантированы. Я попробовал перегенерить корки с указанием Behavioral как Preferred Simulation Model.

 

 

Помогите, пожалуйста, избавиться от ошибки и запустить симуляцию.

Вот в этом месте, в glb

 

Там есть параметр, в котором дается задержка по времени для устаканивания сбросов, загрузки и пр.

 

То-есть большая задержка по времени, которая для симуляции совсем не нужна. И чтобы не ждать симуляцию и не кататься по экрану, я в том файле, который использую только для симуляции эту задержку значительно сокращаю...

 

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


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

Вариант 1. Вставить модуль glbl тупо в топ тестбенча.

Вариант 2. Запустить его в симулятор параллельно, типа asim <bla bla> tb_top glbl

Спасибо, чото сразу не догадался, что модуль объявлен то объявлен, но нигде не инстантируется ни разу... Помогло.

 

Вот в этом месте, в glb

 

Там есть параметр, в котором дается задержка по времени для устаканивания сбросов, загрузки и пр.

 

То-есть большая задержка по времени, которая для симуляции совсем не нужна. И чтобы не ждать симуляцию и не кататься по экрану, я в том файле, который использую только для симуляции эту задержку значительно сокращаю...

Там задержка 100 нс, думаю это ни о чём...

 

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


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

Попробуйте в Design setting -> Simulations -> Additional options

 

Вбить: glbl -relax

 

Забыл об этом уточнении в предыдущей теме =)

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


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

Попробуйте в Design setting -> Simulations -> Additional options Вбить: glbl -relax
Ну это я так понимаю относится к тому же, что и:
Вариант 2. Запустить его в симулятор параллельно, типа asim <bla bla> tb_top glbl

 

 

Ещё можно то же самое сделать через Design - Settings - General - Top-level, и там мышкой с зажатым Ctrl выбрать сразу несколько топовых модулей. Минус данного решения в том, что по команде Delete Simulation Data эта настройка так же удаляется... Хотя настройка одинарного топового модуля не забывается. Бага наверное...

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


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

Попробуйте в 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

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


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

А не подскажете, что такие тайные строки делают? ))

 

В принципе, тут уже кучу способов привели, осталось выбрать самый простой

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


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

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

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

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

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

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

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

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

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

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