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

Gowin EDA - релизы и общие вопросы

On 2/11/2024 at 11:13 PM, mse said:

доступный ресурс через учебную ИДЕ

- именно это, ведь даже для Gowin-овского настоящего большого процессора RISC-V в GW1NR-9 оказываются доступными десятки (существенно больше 32) килобайтов памяти - как команд так и данных - а в сумме вся память значительно больше 64 килобайтов - и это именно быстродоступная память в самом кристалле FPGA.

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


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

On 2/12/2024 at 1:36 PM, Alex163 said:

память в самом кристалле FPGA

ой нет похоже "user flash" всё-таки в соседнем кристаллике присоединённом через очень параллельный 32-хбитный порт.

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


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

On 2/6/2024 at 3:20 PM, StewartLittle said:

Вышло обновление САПР Gowin EDA v1.9.9.01

Интересный баг заметил (в старых версиях тоже):

 

если на Verilog используется вывод inout и он описывается как:

assign PIO = DIR ? PO : 'bzzz;

и при этом DIR никто не инициализирует, то синтезатор присваивает DIR=Z, а затем крашится с закрытием IDE.

 

Собственно - крашиться с закрытием - нехорошо, надо warning/error писать...

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


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

У них с inout, походу, что-то личное. То ИДЕ меняет на свой вкус констрейны, то крашится.

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


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

4 часа назад, _4afc_ сказал:

то синтезатор присваивает DIR=Z, а затем крашится с закрытием IDE.

А что говорит Mentor?

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


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

12 hours ago, Zversky said:

А что говорит Mentor?

 

Который? Думаю у меня его нет. Посмотрите сами:

module INOUT_TOP ( inout  wire [7:0]  PIO );

wire        DIR;
wire [7:0]  PO;

//assign DIR = 0; // GoWin IDE crash comment 

assign PO = 8'hA5;
assign PIO = DIR ? PO : 8'bz;

endmodule

 

Проблема в том, что работа с inout у меня вынесена TOP, где находятся ещё и Deviсe зависимые модули типа клоков, PLL и прочего.

Поэтому получается, что я уровень TOP не проверяю в Sigasi / Modelsim / Alint-PRO - слишком много варнингов на неизвестные модули.

TOP проверяется уже при сборке всего отлаженного проектв в GoWin, а он падает (окно IDE GoWin - закрывается).

Хорошо ещё что успевает до краша отписать лог:

Quote

GowinSynthesis start
Running parser ...
Analyzing Verilog file 'C:\Work\INOUT_CRUSH\src\INOUT_TOP.v'
Compiling module 'INOUT_TOP'("C:\Work\INOUT_CRUSH\src\INOUT_TOP.v":1)
WARN  (EX1998) : Net 'DIR' does not have a driver("C:\Work\INOUT_CRUSH\src\INOUT_TOP.v":3)
NOTE  (EX0101) : Current top module is "INOUT_TOP"
[5%] Running netlist conversion ...

 

PS: STARC_NETLIST.2.5.1.1 ещё и рекомендует запихнуть assign PIO в отдельный модуль:

STARC2511.thumb.png.6f787fa07b1f17192d2c382268d98094.png

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


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

57 минут назад, _4afc_ сказал:

Посмотрите сами:

Смотрю так:

`define PIO_DIM     8
`define PIO_RNG     [ `PIO_DIM - 1 : 0 ]

module INOUT_TOP ( 
    inout wire `PIO_RNG PIO 
) ;

    wire DIR ;
    wire `PIO_RNG PO ;
    
    // GoWin IDE crash comment
    // assign DIR = 0 ;  

    assign PO = 8'hA5 ;
    assign PIO = DIR ? PO : 8'bz ;
    
    `ifdef MODEL_TECH 
        initial $printtimescale ( INOUT_TOP ) ; 
        always_ff @ ( * )
            $display ( " PIO = x%h ,  DIR = b%b , PO = x%h" ,  PIO , DIR , PO ) ;
    `endif

endmodule : INOUT_TOP

в таком варианте Questax64 2021.1 выводит

# Time scale of (INOUT_TOP) is  1ps /  1ps
#  PIO = xxx ,  DIR = bz , PO = xa5
# Run time was 111 milliseconds : 477 microseconds

если комментирую строку, что валит ваш Gowin, получаю

# Time scale of (INOUT_TOP) is  1ps /  1ps
#  PIO = xzz ,  DIR = b0 , PO = xa5
# Run time was 116 milliseconds : 609 microseconds

что есть правильно. Безо всякого падения. Если хотите, поставьте эту же Questa - расскажу и покажу, что и как делаю. Вы же свои проекты как-то моделируете? Или только GAO? Могу и весь проект (правда, из одного вашего файла, но с навешанными на него bat и tcl для моделирования) прислать. Если, конечно, вам это нужно. А могу, если сгенерируете мне простейший проект из вашего файла для Gowin, в нём и попрособовать, дабы подствержить или опровергнуть ваше падение.
 

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


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

Знатно протрахался.

Кароч, ИДЕшка с приколами. Инициализирую двухпортовую память. Творится дичь. То она есть, то её нет. Синтезатор её то оптимизирует, то ставит, прям так и пишет в консоль. И в репорте, то есть BSRAM, то нет. Потерял несколько дней. Щас просто взял и запустил синтезатор второй раз: о чудо, память появилась. Добавил Энтером пустую строку, записал файлы, компилирую, памяти нет, заоптимизировало. Жму на компиляцию второй раз, память появляется.

Был другой прикол, пока трахался с памятью: закомментирвал её код и словил ошибку переопределения регистровой переменной. Когда в код для Альтеры добавлял память Говин, копипастнул лишнего. Код памяти оказался между этими определениями. А синтезатор на эту ошибку забил, пока был код памяти.

V1.9.9 Beta 5. Linux

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


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

1 час назад, mse сказал:

Кароч, ИДЕшка с приколами.

Кароч, скорее всего приколы не в ИДЕшке, а, скорее всего, в прокладке между ней и стулом.  Выкладывайте проект* (в ответ выложу ссылку на свой тоже с ДПОЗУ, работу с которыми начинал с той же Альтеры и закончил (на текущий момент) на ИДЕШке .. и, да, видел ваши пердимонокли) ..

Но это, если вам ехать,  а не шашешки. Шашечек у всех полно. У меня, например, с Ментором и его утверждениями.

Вы, кстати, свои проекты моделируете?

Gowin FPGA Designer Version 1.9.9.01 x64
QuestaSim64 2021.1

*хотите - в ЛС

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


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

On 2/14/2024 at 7:38 PM, _4afc_ said:

Интересный баг заметил (в старых версиях тоже):

Видать он там не один...
При переносе проекта с ALTERы на GOWIN тоже получил падение IDE. После обрезания кода пришел к такому фрагменту:

module Test
(
    output          a,
    input           csn,
    output  [1:0]   csn_d
);

    assign a = csn;
    assign csn_d = 2'b0;

 endmodule

Логи компиляции показывают следующее:

GowinSynthesis start
Running parser ...
Analyzing Verilog file '/home/_/Projects/FPGA/Test/src/test.v'
Compiling module 'Test'("/home/_/Projects/FPGA/Test/src/test.v":1)
NOTE  (EX0101) : Current top module is "Test"
[5%] Running netlist conversion ...
ERROR (SP00017) : Synthesis process cannot run due to error. error bus name set(gwil.cpp:56)
ERROR (SP00017) : Synthesis process cannot run due to error. NLT: can't create a node without name.(gwil.cpp:45)

Как удалось выяснить, происходит конфликт имен "csn" и "csn_d". Изменение имени или разрядности сигналов избавляет от ошибки.

Gowin FPGA Designer Version 1.9.9 build 69780

Linux 5.15.0-92-generic #102-Ubuntu SMP Wed Jan 10 09:33:48 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux

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


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

Проблема не в прокладке, а в том, что у синтезатора должно быть три варианта реакции на код юзера, каким бы кривым он не был: варнинг, ошибка и нормальный синтез. А если он на лишнюю строку реагирует, то это аномалия. И хорошо бы, чтобы о ней люди знали. Типа, так бывает. Это бета и может быть что угодно. Будь готов.

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


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

Готов всегда, ибо прошёл путь от октябрёнка до комсомольца..
Так там не бета, а альфа, как поняла прокладка в моём лице или ещё какой части тела?
Да, и ко всем (включая меня): когда возникает вопрос, особенно в таком выхолощенном куске кода, как два сообщения выше, лепо было бы дать и остальные два - три файла, составляющие проект, дабы тому, кто вознамерится повторить подвиг героя в борьбе с иноземной гидрой, надлежало бы как можно меньше усилий в пути восстановления всей картины предпринимать, и тем совершить возможно меньше ошибок в воссоздании исходной сути вещей, откуда есть пошла земля Русская ....

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


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

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

И что вам дадут куски кода? Эта память должна работать сама по себе, без учёта остальной логики. Но синтезатор её выкидывает. Или не выкидывает. Шина адреса и данных в логике не участвуют, значит память должна быть сгенерена полюбому. Однако-ж.

 

def.jpg

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


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

16 minutes ago, mse said:

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

Синтезаторы устроены так, что если результат работы модуля не используется - модуль выкидывается при оптимизации.

В данном примере если numSignPtr константа - одна память будет выкинута, если videoData* больше нигде не используется.

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


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

Все модули памяти подключены к двунаправленной шине данных. На память заведены сигналы чтения-зпаиси. Она только поэтому не может быть оптимизированной. Память двухпортовая. Один порт целиком висит на шине процессора, а второй порт, на логике. Там ещё генератор IP для памяти мочит корки, нужно следить за шиной адреса, которой оон устанавливает неправильную ширину.

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


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

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

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

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

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

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

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

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

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

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