Jump to content

    
Sign in to follow this  
another_one

Оптимизация quartus

Recommended Posts

On 6/28/2019 at 7:50 PM, Flip-fl0p said:

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

Вот выложил те самые не рабочие на практике исходники, они находятся в рамках общего большого проекта - топ "не рабочих" исходников исходников - TPO

Там же скрины того что пишет оптимизатор и тополоджи мап

https://dropmefiles.com/v6ydt

On 6/29/2019 at 8:09 AM, des00 said:

где то отображение портов на чип побилось, вот и итог

попробовал на другом компе с вновь установленной quartus

Подскажите пожалуйста куда посмотреть

Share this post


Link to post
Share on other sites
On 7/1/2019 at 8:51 AM, Doka said:

эту гипотезу легко проверить синтезнув в режиме out-of-context (или как он в квартус называется)

это как ?, можно поподробнее?

On 7/1/2019 at 5:25 PM, blackfin said:

Нужно сделать все пины (кроме входного clock'а) виртуальными.

 

не подскажите как это сделать?

Share this post


Link to post
Share on other sites
6 часов назад, another_one сказал:

Вот выложил те самые не рабочие на практике исходники, они находятся в рамках общего большого проекта - топ "не рабочих" исходников исходников - TPO

Там же скрины того что пишет оптимизатор и тополоджи мап

https://dropmefiles.com/v6ydt

попробовал на другом компе с вновь установленной quartus

Подскажите пожалуйста куда посмотреть

Смотреть надо на код и очень внимательно. Ткнул я в Ваши файлы. и слегка СИЛЬНО ! ужаснулся.

Например модуль timer8bit - это же тихий ужас. Работа по двум фронтам. Да ещё из разных always блоков с одним регистром...

С модулем timer16bit ситуация та-же. Сделайте правильно один таймер, и меняйте его коэффициент пересчета при помощи параметров.

Бегло просмотрел другие модули - там тоже жуть жуткая. Мало того ,что код абсолютно не читаемый. Комментариев нет. Форматирования нет. Так ещё по стилю похоже что Вы пытаетесь писать на HDL также как и в программировании. Такой подход с FPGA не пройдет. 

if(cnt_g == st_param + k_param + a_param + c_param + d_param + (e_param - b_param))

Я даже представить боюсь во что такое будет синтезироваться. Учитывая, что почти все сигналы формируются в разных доменах, да ещё и по разным фронтам.... :shok:

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

Share this post


Link to post
Share on other sites
14 hours ago, another_one said:

Вот выложил те самые не рабочие на практике исходники, они находятся в рамках общего большого проекта - топ "не рабочих" исходников исходников - TPO

Там же скрины того что пишет оптимизатор и тополоджи мап

https://dropmefiles.com/v6ydt

попробовал на другом компе с вновь установленной quartus

Подскажите пожалуйста куда посмотреть

вы меня за прямоту извините, но

1. Квартус же вам черным по белому пишет : опрокинут в ноль из-за замороженного порта бла-бла-бла

2. Вы просите помочь с сорцами, но вам сложно сделать qar чтоб человек развернул ваш проект и посмотрел?

3. Вот это вот, вам убрать не приходило в голову?

Warning (10236): Verilog HDL Implicit Net warning at Sdram_driver.v(351): created implicit net for "ready"
Warning (10236): Verilog HDL Implicit Net warning at Sdram_driver.v(364): created implicit net for "otrig"
Warning (10236): Verilog HDL Implicit Net warning at star1000.v(150): created implicit net for "trig3"
Warning (10236): Verilog HDL Implicit Net warning at TPO.v(84): created implicit net for "extrig"
Warning (10036): Verilog HDL or VHDL warning at serial.v(48): object "cnt_2c" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at serial.v(49): object "cnt2_2c" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at serial.v(50): object "odatar2" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at serial.v(52): object "en4" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at serial.v(53): object "nas" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at serial.v(55): object "kadr_cnt" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at serial.v(64): object "cen" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at serial.v(65): object "tre" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at serial.v(68): object "tre3" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at serial.v(69): object "tre4" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at serial.v(73): object "comres_reg" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at serial.v(75): object "start" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at serial.v(76): object "cnt_p" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at serial.v(78): object "RESET_reg" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at serial.v(79): object "c_res_flag" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at serial.v(80): object "clk_cnt" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at serial.v(81): object "clk_reg" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at serial.v(82): object "start_X" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at serial.v(83): object "del_cnt" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at serial.v(84): object "CLK_ADC" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at serial.v(85): object "start_2" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at serial.v(86): object "uen" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at serial.v(88): object "clk_reg_was" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at serial.v(90): object "sendcomplt" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at serial.v(91): object "uend" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at serial.v(92): object "fsend" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at serial.v(98): object "delay_param" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at serial.v(104): object "flag_end" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at serial.v(109): object "ttw_transit" assigned a value but never read
Warning (10230): Verilog HDL assignment warning at serial.v(55): truncated value with size 21 to match size of target (1)
Warning (10036): Verilog HDL or VHDL warning at Sdram_driver.v(351): object "ready" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at Sdram_driver.v(90): object "_256cnt" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at Sdram_driver.v(93): object "adc2_rd_en" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at Sdram_driver.v(94): object "adc1_rd_en" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at Sdram_driver.v(95): object "prev_adc1_dout" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at Sdram_driver.v(96): object "sdram_enable" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at Sdram_driver.v(97): object "sdram_wr" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at Sdram_driver.v(98): object "sdram_byte_en" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at Sdram_driver.v(99): object "sdram_adress" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at Sdram_driver.v(100): object "sram_dout" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at Sdram_driver.v(101): object "flag_sram_rd" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at Sdram_driver.v(102): object "rst_flag_sram_rd" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at Sdram_driver.v(103): object "set_flag_sram_rd" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at Sdram_driver.v(104): object "sram_rd_adr" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at Sdram_driver.v(105): object "sram_wr_adr" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at Sdram_driver.v(106): object "set_ack" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at Sdram_driver.v(150): object "parity" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at Sdram_driver.v(193): object "rdcnt" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at Sdram_driver.v(197): object "trig" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at Sdram_driver.v(199): object "rows" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at Sdram_driver.v(200): object "columns" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at Sdram_driver.v(202): object "nLB_Oreg" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at Sdram_driver.v(203): object "nUB_Oreg" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at Sdram_driver.v(205): object "nCS_Oreg" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at Sdram_driver.v(206): object "wcntofpic" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at Sdram_driver.v(207): object "DAT_Oreg" assigned a value but never read
Warning (10230): Verilog HDL assignment warning at Sdram_driver.v(292): truncated value with size 32 to match size of target (8)
Warning (10230): Verilog HDL assignment warning at Sdram_driver.v(297): truncated value with size 32 to match size of target (8)
Warning (10230): Verilog HDL assignment warning at Sdram_driver.v(302): truncated value with size 32 to match size of target (8)
Warning (10230): Verilog HDL assignment warning at Sdram_driver.v(307): truncated value with size 32 to match size of target (8)
Warning (10235): Verilog HDL Always Construct warning at Sdram_driver.v(498): variable "cntof256k" is read inside the Always Construct but isn't in the Always Construct's Event Control
Warning (10230): Verilog HDL assignment warning at Sdram_driver.v(501): truncated value with size 18 to match size of target (4)
Warning (10240): Verilog HDL Always Construct warning at Sdram_driver.v(494): inferring latch(es) for variable "cntof256k", which holds its previous value in one or more paths through the always construct
Warning (10030): Net "rrts" at Sdram_driver.v(40) has no driver or initial value, using a default initial value '0'
Warning (10034): Output port "odata" at Sdram_driver.v(43) has no driver
Warning (10034): Output port "nUB" at Sdram_driver.v(25) has no driver
Warning (10034): Output port "nLB" at Sdram_driver.v(26) has no driver
Warning (10034): Output port "nOE" at Sdram_driver.v(27) has no driver
Warning (10034): Output port "request_to_serial" at Sdram_driver.v(44) has no driver
Warning (10036): Verilog HDL or VHDL warning at star1000.v(42): object "cnttt" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at star1000.v(44): object "cnt" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at star1000.v(45): object "cntt" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at star1000.v(46): object "cnt_2c" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at star1000.v(47): object "cnt2_2c" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at star1000.v(48): object "odatar2" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at star1000.v(51): object "nas" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at star1000.v(52): object "tt_was" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at star1000.v(56): object "uclk" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at star1000.v(61): object "cen" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at star1000.v(62): object "tre" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at star1000.v(63): object "start_send" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at star1000.v(64): object "stop_send" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at star1000.v(66): object "tre2" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at star1000.v(67): object "tre3" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at star1000.v(68): object "tre4" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at star1000.v(91): object "uen" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at star1000.v(92): object "trig_was" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at star1000.v(94): object "entr" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at star1000.v(98): object "capv_param" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at star1000.v(99): object "delay_param" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at star1000.v(100): object "delay2_param" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at star1000.v(108): object "f_param" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at star1000.v(109): object "g_param" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at star1000.v(113): object "l_param" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at star1000.v(114): object "m_param" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at star1000.v(117): object "xy_tout" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at star1000.v(123): object "X_sel" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at star1000.v(125): object "cnt_clr" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at star1000.v(127): object "Y_was" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at star1000.v(131): object "ADC_DATA" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at star1000.v(132): object "Y_2s" assigned a value but never read
Warning (10230): Verilog HDL assignment warning at star1000.v(599): truncated value with size 11 to match size of target (10)
Warning (10235): Verilog HDL Always Construct warning at star1000.v(693): variable "cnt_CA" is read inside the Always Construct but isn't in the Always Construct's Event Control
Warning (10235): Verilog HDL Always Construct warning at star1000.v(694): variable "cnt_CA" is read inside the Always Construct but isn't in the Always Construct's Event Control
Warning (10235): Verilog HDL Always Construct warning at star1000.v(696): variable "start_conversion" is read inside the Always Construct but isn't in the Always Construct's Event Control
Warning (10240): Verilog HDL Always Construct warning at star1000.v(690): inferring latch(es) for variable "cnt_CA", which holds its previous value in one or more paths through the always construct
Warning (10235): Verilog HDL Always Construct warning at star1000.v(705): variable "cnt_CA" is read inside the Always Construct but isn't in the Always Construct's Event Control
Warning (10235): Verilog HDL Always Construct warning at star1000.v(706): variable "S_ADC_DATA" is read inside the Always Construct but isn't in the Always Construct's Event Control
Warning (10034): Output port "oreg" at star1000.v(29) has no driver
Warning (10034): Output port "S_TRI_M1" at star1000.v(23) has no driver
Warning (10034): Output port "S_TRI_M2" at star1000.v(24) has no driver
Warning (10034): Output port "ramen" at star1000.v(28) has no driver

а выбрасывает верно, ответ почему, в одном из предупреждений. Либо вы сами, либо кто-то еще, поправил/испортил сорцы. система контроля версий подскажет.

ЗЫ. Дабы не быть голословным и поверхностным, ответ в 154 ом сообщении из 298, окна Processing, если произвести синтез вашего проекта в 9.1sp2 64 бит, для сыклона 3 пятерки

Share this post


Link to post
Share on other sites
17 hours ago, another_one said:

не подскажите как это сделать?

Попробуйте для начала аккуратно переписать исходники. Вам сам же будет проще разобраться. Вот на примере таймера:

module timer16bit
(
    input bit       clk,
    input bit       reset,
    input bit[15:0] capv,
    input bit       en
    output bit      trig
);
    bit[15:0] counter;

    always_ff @(posedge clk) begin
        if (reset) begin
            counter <= '0;
            trig    <= '0;
        end
        else if (en) begin
            trig    <= '0;
            counter <= counter + 1;
            if (counter == trig) begin
                trig    <= '1;
                counter <= '0;
            end
        end
    end
endmodule

Далее, почитайте книжки по проектированию на HLD (От Альтеры был вроде какой-то Programming Guide, еще рекомендуют HDL chip design), стандарт языка.

Сразу же активно осваивайте симуляторы Questa/Model sim, привыкайте делать тестбенчи.

Share this post


Link to post
Share on other sites
12 hours ago, Flip-fl0p said:

Смотреть надо на код и очень внимательно. Ткнул я в Ваши файлы. и слегка СИЛЬНО ! ужаснулся.

Например модуль timer8bit - это же тихий ужас. Работа по двум фронтам. Да ещё из разных always блоков с одним регистром...

С модулем timer16bit ситуация та-же. Сделайте правильно один таймер, и меняйте его коэффициент пересчета при помощи параметров.

Бегло просмотрел другие модули - там тоже жуть жуткая. Мало того ,что код абсолютно не читаемый. Комментариев нет. Форматирования нет. Так ещё по стилю похоже что Вы пытаетесь писать на HDL также как и в программировании. Такой подход с FPGA не пройдет. 


if(cnt_g == st_param + k_param + a_param + c_param + d_param + (e_param - b_param))

Я даже представить боюсь во что такое будет синтезироваться. Учитывая, что почти все сигналы формируются в разных доменах, да ещё и по разным фронтам.... :shok:

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

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

Share this post


Link to post
Share on other sites
9 minutes ago, another_one said:

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

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

Share this post


Link to post
Share on other sites
13 часов назад, Flip-fl0p сказал:

Бегло просмотрел другие модули - там тоже жуть жуткая. Мало того ,что код абсолютно не читаемый. Комментариев нет. Форматирования нет. Так ещё по стилю похоже что Вы пытаетесь писать на HDL также как и в программировании. Такой подход с FPGA не пройдет. 

Солидарен...

Такой код сложно писать и отлаживать. Это пример "как не надо делать ни в коем случае"... Или по простому "расстрельная статья"...

А на самом деле - метод проектирования надо менять. Все делается гораздо, гораздо легче и быстрее...

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.

Sign in to follow this