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

Симуляция GOWIN в Active HDL

Здравствуйте.

Не получается запустить симуляцию.

1. Компилирую библиотеки Gowin

    c:\Gowin\Gowin_V1.9.8.05\IDE\simlib\gw1n\prim_sim.v - компилируется без ошибок, но с предупреждениями.

    c:\Gowin\Gowin_V1.9.8.05\IDE\simlib\gw1n\prim_tsim.v - компилируется и c ошибками, и с предупреждениями.

Quote

# Error: VCP7006 c:/Gowin/Gowin_V1.9.8.05/IDE/simlib/gw1n/prim_tsim.v : (126008, 10): Only INPUT/INOUT port can be specified as path source: CLK.
# Warning: VCP7102 c:/Gowin/Gowin_V1.9.8.05/IDE/simlib/gw1n/prim_tsim.v : (126010, 28): OUTPUT NET/REG used as event reference: CLK.

и куча аналогичных, только в разных строчках.

2. Добавил скомпилированную библиотеку gow1n_sim.lib в проект ActiveHDL, но похоже ActiveHDL ее не видид, т.к.

    при попытке оказать модуль верхнего уровня возникают ошибки     

Quote

# ELBREAD: Error: ELBREAD_0081 gowin_rpll_10_50.v (22): Design unit rPLL instantiated in fpga_project_03.rPLL_10_50 not found in searched libraries: fpga_project_03.
# ELBREAD: Error: Elaboration process completed with errors.
# Design: Error: Elaboration failed

Хотя модуль rPLL в библиотеке есть.

image.png.65fd76979ad96b21523ea093c82762a5.png

А вот окно менеджера библиотек

image.thumb.png.c20a814780dc1abf5d3c60053045c268.png

 

Подскажите, что я делаю не так или чего я еще не сделал ?

 

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


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

1 hour ago, dimka76 said:

1. Компилирую библиотеки Gowin

    c:\Gowin\Gowin_V1.9.8.05\IDE\simlib\gw1n\prim_sim.v - компилируется без ошибок, но с предупреждениями.

    c:\Gowin\Gowin_V1.9.8.05\IDE\simlib\gw1n\prim_tsim.v - компилируется и c ошибками, и с предупреждениями.

и куча аналогичных, только в разных строчках.

а по сорцам не понятно что ему не нравиться? 

1 hour ago, dimka76 said:

2. Добавил скомпилированную библиотеку gow1n_sim.lib в проект ActiveHDL, но похоже ActiveHDL ее не видид, т.к.

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

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


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

В 23.01.2023 в 11:32, dimka76 сказал:

    c:\Gowin\Gowin_V1.9.8.05\IDE\simlib\gw1n\prim_sim.v - компилируется без ошибок, но с предупреждениями

 

Может, на версию поновее перейти? Сейчас v1.9.8.10 в ходу.

Во вложении исходники из этой версии - попробуйте, как они будут компилироваться?

simlib_v1.9.8.10.zip

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


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

On 1/23/2023 at 12:46 PM, des00 said:

а по сорцам не понятно что ему не нравиться? 

 

Spoiler
//USB20_PHY
module USB20_PHY(
//utmi interface
                DATAOUT,    //DataOut. 16-bit parallel USB data output bus.
                TXREADY,    //Transmit Data Ready. 
                RXACTIVE,   //Receive Active. Indicates that the receive state machine has detected SYNC and is active.
                RXVLD,      //Receive Data Valid. Indicates that the DataOut bus has valid data. 
                RXVLDH,     //Receive Data Valid High.
                CLK,         //Clock. This output is used for clocking receive and transmit parallel data.
                RXERROR,     //Receive Error.
                DP,          //USB data pin Data+
                DM,          //USB data pin Data–
                LINESTATE,   //Line State. These signals reflect the current state of the single ended receivers.

                DATAIN,    //16-bit parallel USB data input bus.
                TXVLD,     //Transmit Valid. Indicates that the DataIn bus is valid.
                TXVLDH,    //Transmit Valid High.When DataBus16_8 = 1, this signal indicates that the DataIn[15:8] bus contains valid transmit data. 
                RESET,     //Reset. Reset all state machines in the UTM.
                SUSPENDM,  //Suspend. 0:suspend, 1: normal
                XCVRSEL,   //Transceiver Select. This signal selects between the LS, FS and HS transceivers
                TERMSEL,   //Termination Select. This signal selects between the FS and HS terminations
                OPMODE,    //Operational Mode. These signals select between various operational modes

//utmi+ interface
                HOSTDIS,    //This signal is used for all types of peripherals connected to it. 
                IDDIG,     //Indicates whether the connected plug is a mini-A or mini-B. 
                ADPPRB,    //Indicates if the voltage on Vbus (0.6V < Vth < 0.75V).
                ADPSNS,    //Indicates if the voltage on Vbus (0.2V < Vth < 0.55V).
                SESSVLD,    //Indicates if the session for an A/B-peripheral is valid (0.8V < Vth < 2V).
                VBUSVLD,    //Indicates if the voltage on Vbus is at a valid level for operation (4.4V < Vth < 4.75V)
                RXDP,      //Single-ended receive data, positive terminal.This signal is only valid if FsLsSerialMode is set to 1b
                RXDM,      //Single-ended receive data, negative terminal.This signal is only valid if FsLsSerialMode is set to 1b
                RXRCV,     //Receive data.This signal is only valid if FsLsSerialMode is set to 1b

                IDPULLUP,   //Signal that enables the sampling of the analog Id line.
                DPPD,       //This signal enables the 15k Ohm pull-down resistor on the DP line.
                DMPD,       //0b : Pull-down resistor not connected to DM; 1b : Pull-down resistor connected to DM
                CHARGVBUS,  //This signal enables charging Vbus
                DISCHARGVBUS, //The signal enables discharging Vbus.
                TXBITSTUFFEN, //Indicates if the data on the DataOut[7:0] lines needs to be bitstuffed or not.
                TXBITSTUFFENH,//Indicates if the data on the DataOut[15:8] lines needs to be bitstuffed or not.
                TXENN,      //Active low enable signal. Only used when FsLsSerialMode is set to 1b
                TXDAT,           //Differential data at D+/D- output. Only used when FsLsSerialMode is set to 1b
                TXSE0,           //Force Single-Ended Zero. Only used when FsLsSerialMode is set to 1b
                FSLSSERIAL, //0b : FS and LS packets are sent using the parallel interface. 1b : FS and LS packets are sent using the serial interface.

//used for TEST
                LBKERR,

//used for observation
                CLKRDY,  //Observation/debug signal to show that the internal PLL has locked and is ready.

//used for analog circuit adjustment

                INTCLK, //Clock signals provided internally of the SoC

//analog pad
                ID,  //ID signal from the cable
                VBUS, //VBus signals connected with the cable
                REXT,
                XIN,  //Crystal in signals, supported range is 12MHZ~24MHZ
                XOUT, //Crystal out signals
                CLK480PAD,//480MHZ clock output for observation
                TEST, //For IP TESTing purpose.Please leave it unconnected since there are already soft pull-down in the IP

		        SCANOUT1, //Scan chain output
		        SCANOUT2, 
                SCANOUT3, 
		        SCANOUT4, 
		        SCANOUT5, 
                SCANOUT6, 
				SCANCLK, //Clock signals for scan mode
				SCANEN,  //Select to shift mode
				SCANMODE,  //High effective signal to enter scan mode
                TRESETN, //Low effective RESET signal for scan mode
		        SCANIN1,  //Scan chain input
		        SCANIN2, 
		        SCANIN3, 
		        SCANIN4, 
		        SCANIN5, 
		        SCANIN6

);

parameter DATABUS16_8 = 1'b0;//Selects between 8 and 16 bit data transfers.
parameter ADP_PRBEN = 1'b0;//Enables/disables the ADP Probe comparator
parameter TEST_MODE = 5'b00000;//used for testing and debugging purpose
parameter HSDRV1 = 1'b0; //High speed drive adjustment. Please connect to 0 for normal operation.
parameter HSDRV0 = 1'b0; //High speed drive adjustment. Please connect to 0 for normal operation.
parameter CLK_SEL = 1'b0;//Clock source selection signal. 0 to select external clock provided by the crystal connected on XIN, XOUT. 1 to select internal clock provided on INTCLK port
parameter M = 4'b0000; //M divider input data bits
parameter N = 6'b101000; //N divider input data bits
parameter C = 2'b01; //Control charge pump current input data bits, it supports from 30uA (00) to 60uA (11).  
parameter FOC_LOCK = 1'b0;//0: LOCK is generated by PLL lock detector. 1: LOCK is always high(always lock)


//interconnection
input   [15:0]  DATAIN;
input   TXVLD;
input   TXVLDH;
input   RESET;
input   SUSPENDM;
input   [1:0]   XCVRSEL;
input   TERMSEL;
input   [1:0]   OPMODE;

output  [15:0]  DATAOUT;
output  TXREADY;
output  RXACTIVE;
output  RXVLD;
output  RXVLDH;
output  CLK;      //Clock. This output is used for clocking receive and transmit parallel data.
output  RXERROR;
inout   DP;
inout   DM;
output  [1:0]   LINESTATE;

input   IDPULLUP;
input   DPPD;
input   DMPD;
input   CHARGVBUS;
input   DISCHARGVBUS;
input   TXBITSTUFFEN;
input   TXBITSTUFFENH;
input   TXENN;
input   TXDAT;
input   TXSE0;
input   FSLSSERIAL;

output  HOSTDIS;
output  IDDIG;
output  ADPPRB;
output  ADPSNS;
output  SESSVLD;
output  VBUSVLD;
output  RXDP;
output  RXDM;
output  RXRCV;

output  LBKERR;

output  CLKRDY;

//utmi+ interface

//additional signal for analog circuit adjustment

input   INTCLK;
//analog pad
inout   ID;
inout   VBUS;
inout   REXT;
input   XIN;
inout   XOUT;

input	TEST;
output	CLK480PAD;

input        SCANCLK; 
input        SCANEN; 
input        SCANMODE; 
input        TRESETN; 
input        SCANIN1; 
output       SCANOUT1; 
input        SCANIN2; 
output       SCANOUT2; 
input        SCANIN3; 
output       SCANOUT3; 
input        SCANIN4; 
output       SCANOUT4; 
input        SCANIN5; 
output       SCANOUT5; 
input        SCANIN6; 
output       SCANOUT6; 


specify

	(CLK => DATAOUT[0]) = (0:0:0, 0:0:0);
	(CLK => DATAOUT[1]) = (0:0:0, 0:0:0);
	(CLK => DATAOUT[2]) = (0:0:0, 0:0:0);
	(CLK => DATAOUT[3]) = (0:0:0, 0:0:0);
	(CLK => DATAOUT[4]) = (0:0:0, 0:0:0);
	(CLK => DATAOUT[5]) = (0:0:0, 0:0:0);
	(CLK => DATAOUT[6]) = (0:0:0, 0:0:0);
	(CLK => DATAOUT[7]) = (0:0:0, 0:0:0);
	(CLK => DATAOUT[8]) = (0:0:0, 0:0:0);
	(CLK => DATAOUT[9]) = (0:0:0, 0:0:0);
	(CLK => DATAOUT[10]) = (0:0:0, 0:0:0);
	(CLK => DATAOUT[11]) = (0:0:0, 0:0:0);
	(CLK => DATAOUT[12]) = (0:0:0, 0:0:0);
	(CLK => DATAOUT[13]) = (0:0:0, 0:0:0);
	(CLK => DATAOUT[14]) = (0:0:0, 0:0:0);
	(CLK => DATAOUT[15]) = (0:0:0, 0:0:0);
	(CLK => TXREADY) = (0:0:0, 0:0:0);
	(CLK => RXACTIVE) = (0:0:0, 0:0:0);
	(CLK => RXVLD) = (0:0:0, 0:0:0);
	(CLK => RXVLDH) = (0:0:0, 0:0:0);
	(CLK => RXERROR) = (0:0:0, 0:0:0);
	(CLK => DP) = (0:0:0, 0:0:0);
	(CLK => DM) = (0:0:0, 0:0:0);

	$setuphold (posedge CLK, posedge DATAIN[0], 0:0:0, 0:0:0);

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

 

 

Например здесь , все что начинается (CLK =>    - ошибки

А то что начинается с  $setuphold (posedge CLK,  - предупреждения

On 1/23/2023 at 12:46 PM, des00 said:

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

первая скомпилировалась, ее и цепляю к проекту.

 

 

 

On 1/23/2023 at 1:11 PM, StewartLittle said:

Может, на версию поновее перейти? Сейчас v1.9.8.10 в ходу.

Во вложении исходники из этой версии - попробуйте, как они будут компилироваться?

simlib_v1.9.8.10.zip 951.29 kB · 0 downloads

Одна скомпилировалась и прицепилась к Active HDL, но он не видит модулей

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


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

В 23.01.2023 в 13:12, dimka76 сказал:

Одна скомпилировалась и прицепилась к Active HDL, но он не видит модулей

Никогда не имел дела с Альдеком, все больше с Ментором работал. В Моделсме, например, при запуске моделирования, нужно явно указывать путь к библиотеке.

А как в Актив-ХДЛ?

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


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

On 1/23/2023 at 1:11 PM, StewartLittle said:

Во вложении исходники из этой версии

Те же ошибки и предупреждения 

On 1/23/2023 at 1:18 PM, StewartLittle said:

А как в Актив-ХДЛ?

По шпаргалке с сайта

https://www.aldec.com/en/support/resources/documentation/articles/2189

Quote
alib gow1n_sim
alog -work gow1n_sim $GOWIN_PATH\IDE\gow1n\prim_sim.v

Путь только подправил.

И она сразу появилась и в менеджере библиотек и в Design Browser

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


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

13 minutes ago, dimka76 said:

Например здесь , все что начинается (CLK =>    - ошибки

А то что начинается с  $setuphold (posedge CLK,  - предупреждения

А, ну со specify у альдека всегда были проблемы, не умеет он в это. Если их мало, можно макросами обрезать, но если много то мои соболезнования.

13 minutes ago, dimka76 said:

первая скомпилировалась, ее и цепляю к проекту.

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

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


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

On 1/23/2023 at 1:27 PM, des00 said:

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

В менеджере библиотек то я ее вижу. И модули, входящие в нее, тоже вижу. картинки из первого моего сообщения.

On 1/23/2023 at 1:27 PM, des00 said:

А, ну со specify у альдека всегда были проблемы, не умеет он в это. Если их мало, можно макросами обрезать, но если много то мои соболезнования

Compile failure 23 Errors 116 Warnings

 

Только я в макросы не умею )))

Не приведете примерчик ?

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


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

5 minutes ago, dimka76 said:

В менеджере библиотек то я ее вижу. И модули, входящие в нее, тоже вижу. картинки из первого моего сообщения.

Надо руками лезть в либу и смотреть как там описан модуль. То что вы видите, не факт что есть.

5 minutes ago, dimka76 said:

Compile failure 23 Errors 116 Warnings

Только я в макросы не умею )))

Не приведете примерчик ?

ну в моделсиме что-то типа 

  `ifndef MODEL_TECH
    <part to mask>
  `endif 

MODEL_TECH это встроенный define в симуляторе. Незнаю есть ли что похожее в альдеке, но вы можете прописать глобальный макрос сами `define MY_MASK_MACRO и ссылаться на него. А дальше ifdef/ifndef включить/выключить если макрос обьявлен.

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


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

On 1/23/2023 at 1:45 PM, des00 said:

MODEL_TECH это встроенный define в симуляторе. Незнаю есть ли что похожее в альдеке, но вы можете прописать глобальный макрос сами `define MY_MASK_MACRO и ссылаться на него. А дальше ifdef/ifndef включить/выключить если макрос обьявлен.

Я в итоге более радикально избавился от ошибок компиляции библиотеки.

Библиотека в исходниках.

Эти ошибки касались модулей USB и ADC. Я просто удалил описания этих модулей.

По поводу того, что как мне казалось, система не находит модулей в уже скомпилированной библиотеке.

На самом деле это не так.

При компиляции было предупреждение, которого я не замечал. И, при назначении модуля верхнего уровня, это предупреждение превращалось в ошибку.

А именно это связано с IP модулем FIFO.

Вот это предупреждение

Quote

Undefined module: \~fifo_sc.fifo_sc_top was used.

А вот код

 \~fifo_sc.fifo_sc_top  fifo_sc_inst (
    .Clk(Clk),
    .Reset(Reset),
    .WrEn(WrEn),
    .RdEn(RdEn),
    .Data(Data[31:0]),
    .Full(Full),
    .Empty(Empty),
    .Q(Q[31:0])
);

Там есть ряд вложенных файлов. И если пройти по ним, то приходим к файлу .v , содержимое которого зашифровано.

Но Aldec в своей шпаргалке приводит пример именно с FIFO, который, кстати, тоже используется в моем проекте.

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


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

2 minutes ago, dimka76 said:

Эти ошибки качались модулей USB и ADC. Я просто удалил описания этих модулей.

Ну можно и так)

2 minutes ago, dimka76 said:

По поводу того, что как мне казалось, система не находит модулей в уже скомпилированной библиотеке.

На самом деле это не так.

так сразу и говорил) в общем всегда если либа в сорцах и есть проблемы, надо смотреть именно туда)

 

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


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

Удалось запустит симуляцию для этой связки.

Только пришлось перейди на более раннюю версию алдека.

У Gowin есть IP модули есть Hard и Soft.

С симуляцией Hard IP модулей проблем нет, а вот Soft IP похоже зашифрованные.

Пытаюсь пойти следующим путем. В Gowin создаю Generate post-PnR simulation model file. Default: *.vo. 

В Active HDL цепляю его к проекту, создаю тестбенч.

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

ELAB2: Fatal Error: ELAB2_0036 Unresolved hierarchical reference to "GSR.GSRO" from module "tb_fifo_32.tb.\FF1/fifo_sc_inst/Q_r2_30_s0 \" (module not found).

В библиотеке модуль определен так

module GSR (GSRI);

input GSRI;

wire GSRO;

assign GSRO = GSRI;

endmodule //GSR (global set/reset control)

В фале *.vo, сгенерированном в Gowin инстанцирование такое

GSR \FF1/GSR  (
	.GSRI(VCC)
);

DFFCE \FF1/fifo_sc_inst/Q_r2_30_s0  (
	.D(\FF1/fifo_sc_inst/n13_1 ),
	.CLK(clk_d),
	.CE(\FF1/fifo_sc_inst/n11_3 ),
	.CLEAR(rst_d),
	.Q(data_out_d[30])
);

Модуль DFFCE  в библиотеке описан так

module DFFCE (Q, D, CLK, CE, CLEAR);

input D, CLK, CLEAR, CE;
output Q;

parameter INIT = 1'b0;
reg Q_reg;
wire gsrt = GSR.GSRO;

initial Q_reg = INIT;

always @(gsrt or CLEAR) begin
	if(!gsrt)
		assign Q_reg = INIT;
	else if(CLEAR)
		assign Q_reg = 1'b0;
	else
		deassign Q_reg;
end

always @(posedge CLK) begin
	if (CE)
		Q_reg <= D;
end

assign Q = Q_reg;

endmodule // DFFCE (positive clock edge; asynchronous clear; clock enable)

пробовал в тестбенче назначать сигнал GSR.GSRO через assingn, но к успеху это не привело.

Пробовал запускать GSR через asim, но что-то с аргументами тоже не выходит.

Уже не знаю

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


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

2 hours ago, dimka76 said:

Пробовал запускать GSR через asim, но что-то с аргументами тоже не выходит.

это глобальный сброс судя по всему, нечто аналогичное glbl у хилых.  запускали моделирование двух топов типа vsim -novopt work.tb work.glbl или просто в любое место топа бросали неподключенный никуда glbl 

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


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

On 1/25/2023 at 4:43 PM, des00 said:

это глобальный сброс судя по всему, нечто аналогичное glbl у хилых.  запускали моделирование двух топов типа vsim -novopt work.tb work.glbl или просто в любое место топа бросали неподключенный никуда glbl 

Спасибо.

Я тут подумал, что от post-PnR simulation model file толку особого нет.

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

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


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

Доброго времени суток.

По работе вынужден осваивать микросхемы GoWin (раньше работал только с Альтерой) и возникла проблема с моделированием с использованием проприетарных модулей.

Прошу помощи подсказать, как засунуть проект с IP модулями (использую HS_FIFO и ODDR, IDDR) GoWin в Aldec. Нашел инструкцию, которую дает Aldec.
https://www.aldec.com/en/support/resources/documentation/articles/2189

Собственно подскажите пожалуйста, что нужно делать по пункту "Preparing Libraries". Пользователь я бестолковый, к командной строке не привык, привык тыкаться мышкой и к интерфейсам "как для домохозяек".

Инструкция описывает порядок для Verilog, можно ли сделать то же самое на VHDL (привык я к нему и весь проект на нем)? Прекрасно понимаю, что можно встроить Verilog-файл, но мне нравится унификация.

2.thumb.PNG.757045d2a53732da433293a197896c2e.PNG

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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