Jump to content
    

Симуляция 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

 

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

 

Share this post


Link to post
Share on other sites

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 ее не видид, т.к.

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

Share this post


Link to post
Share on other sites

В 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

Share this post


Link to post
Share on other sites

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, но он не видит модулей

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

13 minutes ago, dimka76 said:

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

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

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

13 minutes ago, dimka76 said:

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

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

Share this post


Link to post
Share on other sites

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

 

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

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

Share this post


Link to post
Share on other sites

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 включить/выключить если макрос обьявлен.

Share this post


Link to post
Share on other sites

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, который, кстати, тоже используется в моем проекте.

Share this post


Link to post
Share on other sites

2 minutes ago, dimka76 said:

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

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

2 minutes ago, dimka76 said:

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

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

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

 

Share this post


Link to post
Share on other sites

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

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

У 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, но что-то с аргументами тоже не выходит.

Уже не знаю

Share this post


Link to post
Share on other sites

2 hours ago, dimka76 said:

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

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

Share this post


Link to post
Share on other sites

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

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

Спасибо.

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...